<?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>149929</bug_id>
          
          <creation_ts>2015-10-08 11:46:16 -0700</creation_ts>
          <short_desc>Restructure generate-js-bindings script to be modular and testable</short_desc>
          <delta_ts>2015-10-21 21:39:45 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>150245</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>achristensen</cc>
    
    <cc>buildbot</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1131692</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-08 11:46:16 -0700</bug_when>
    <thetext>I&apos;d like to start adding regression tests for the builtins generator now that we are starting to use it in more complex ways.
However, the existing generators are difficult to test because they directly write to files instead of producing per-output file strings.

To make the situation better, I&apos;m proposing to restructure the existing generator code, similar to the rewrite of the Inspector Protocol Generator last year.

This should not take very long, since the generators are fairly small. I will put a patch up later today or tomorrow and see what folks think about the approach.
FWIW, the inspector generator (which the restructure would be patterned upon) is very easy to maintain, and its tests have caught many codegen errors and regressions in the past year.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131705</commentid>
    <comment_count>1</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-08 12:39:18 -0700</bug_when>
    <thetext>Sounds really interesting.

There is one refactoring task that I had in mind from the start.
The generation of the methods that create the FunctionExecutable* from the builtins is done in Source/JavaScriptCore/generate-js-builtins (last steps of the script) but is different if targetting WebCore or JavaScriptCore.

It would be clearly better to split that in base code and specialized code dedicated to JSC or WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131793</commentid>
    <comment_count>2</comment_count>
      <attachid>262731</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-08 17:11:01 -0700</bug_when>
    <thetext>Created attachment 262731
WIP - JSC parts done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131794</commentid>
    <comment_count>3</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-08 17:13:47 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created attachment 262731 [details]
&gt; WIP - JSC parts done

Here&apos;s a basic prototype. You can see what it makes with a command like so:

(cd $WEBKIT &amp;&amp; python Source/JavaScriptCore/scripts/generate-js-builtins.py -v -o /tmp -i Source/JavaScriptCore/builtins/)


Things to do yet:

 * integrate into the build system
 * add some test cases and hook up test results writing
 * add test runner stub to Tools/Scripts/
 * add generator/flexibility for WebCore parts

Let me know what you think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131892</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-09 06:04:28 -0700</bug_when>
    <thetext>After a quick look, I like the overall direction.

Just a quick note on BuiltinsGeneratorTemplates.
There could be some common templates, and then some specific ones for JSC and WebCore.
The current one may be mixing JSC-specific templates and templates that could be applicable to WebCore as well.
For instance, no need for namespace parameter if template is JSC specific.

Here are some additional points that may be worth considering while doing the restructuring.

We may want to integrate some of the things done for WebCore:
- Generating one cpp/h file per js file in lieu of one big file (would trigger less compilation when updating js files e.g.). Support is already there in JSC generator with the prefix parameter in the templates. Mac build system may require generating one cpp file including all builtin cpp file though. 
- Add support for @conditionals and @internals. If I am not wrong, JSC js files are already structured that way.
- Add support for helper classes like introduced in WebCore, especially for internals. This could clean-up boring code in JSGlobalObject e.g.

Additional points specific to WebCore generator:
- We should remove XXBuiltinsWrapper.h  and put all its code in XXBuiltins.h. The purpose of this wrapper header was to put as less as possible WebCore specific code in JSC generator.
- XXBuiltinFunctions class declaration in XXBuiltinsWrapper.h should be triggered only if @internals is true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132050</commentid>
    <comment_count>5</comment_count>
      <attachid>262803</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-09 17:16:27 -0700</bug_when>
    <thetext>Created attachment 262803
WIP v2

Integrated into build system, compiles up through JSC so far.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132316</commentid>
    <comment_count>6</comment_count>
      <attachid>262890</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-12 09:10:07 -0700</bug_when>
    <thetext>Created attachment 262890
WIP 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132348</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-12 10:26:07 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created attachment 262890 [details]
&gt; WIP 3

Just a small comment on macro prefixes, deriving from the different generation model between WebCore and JSC (one file for all js vs. one file per js).

In JSC, the prefix is JSC.
In WebCore, the prefix is currently set to WEBCORE+CAPITALIZE(name of the file).
The main reason is that the equivalent of JSC_FOREACH_BUILTIN macro be not redefined in each individual WebCore builtin generated header file.

This is not very elegant and should be cleaned up, once the generation model (one file for all js or one file per js) is aligned between WebCore and JSC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132589</commentid>
    <comment_count>8</comment_count>
      <attachid>262943</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-12 17:14:19 -0700</bug_when>
    <thetext>Created attachment 262943
Just a few loose ends.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132696</commentid>
    <comment_count>9</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-12 22:14:56 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Created attachment 262890 [details]
&gt; &gt; WIP 3
&gt; 
&gt; Just a small comment on macro prefixes, deriving from the different
&gt; generation model between WebCore and JSC (one file for all js vs. one file
&gt; per js).
&gt; 
&gt; In JSC, the prefix is JSC.
&gt; In WebCore, the prefix is currently set to WEBCORE+CAPITALIZE(name of the
&gt; file).
&gt; The main reason is that the equivalent of JSC_FOREACH_BUILTIN macro be not
&gt; redefined in each individual WebCore builtin generated header file.
&gt; 
&gt; This is not very elegant and should be cleaned up, once the generation model
&gt; (one file for all js or one file per js) is aligned between WebCore and JSC.

For now, the macro prefixes for combined vs. separate generated files are slightly different (JSC_FOREACH_BUILTIN vs WEBCORE_FOREACH_XXX_BUILTIN).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132786</commentid>
    <comment_count>10</comment_count>
      <attachid>262943</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-13 10:05:52 -0700</bug_when>
    <thetext>Comment on attachment 262943
Just a few loose ends.

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

&gt; Source/JavaScriptCore/Scripts/builtins/builtins_model.py:49
&gt; +    return str[:1].lower() + str[1:]

Just a small nit, before I forget about it.
This routine should be consistent with WebIDL script version (WK_lcfirst in Source/WebCore/bindings/scripts/CodeGenerator.js).
jS -&gt; js and so on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132787</commentid>
    <comment_count>11</comment_count>
      <attachid>262943</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-13 10:05:57 -0700</bug_when>
    <thetext>Comment on attachment 262943
Just a few loose ends.

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

&gt; Source/JavaScriptCore/Scripts/builtins/builtins_model.py:49
&gt; +    return str[:1].lower() + str[1:]

Just a small nit, before I forget about it.
This routine should be consistent with WebIDL script version (WK_lcfirst in Source/WebCore/bindings/scripts/CodeGenerator.js).
jS -&gt; js and so on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132817</commentid>
    <comment_count>12</comment_count>
      <attachid>262943</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-13 11:17:20 -0700</bug_when>
    <thetext>Comment on attachment 262943
Just a few loose ends.

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

&gt;&gt;&gt; Source/JavaScriptCore/Scripts/builtins/builtins_model.py:49
&gt;&gt;&gt; +    return str[:1].lower() + str[1:]
&gt;&gt; 
&gt;&gt; Just a small nit, before I forget about it.
&gt;&gt; This routine should be consistent with WebIDL script version (WK_lcfirst in Source/WebCore/bindings/scripts/CodeGenerator.js).
&gt;&gt; jS -&gt; js and so on.
&gt; 
&gt; Just a small nit, before I forget about it.
&gt; This routine should be consistent with WebIDL script version (WK_lcfirst in Source/WebCore/bindings/scripts/CodeGenerator.js).
&gt; jS -&gt; js and so on.

I definitely wouldn&apos;t have caught that; thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132989</commentid>
    <comment_count>13</comment_count>
      <attachid>263042</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-13 17:21:26 -0700</bug_when>
    <thetext>Created attachment 263042
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132991</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-13 17:24:16 -0700</bug_when>
    <thetext>Attachment 263042 did not pass style-queue:


ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:111:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:46:  [BuiltinsCombinedImplementationGenerator.output_filename] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:50:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:51:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:55:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:60:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:62:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:90:  [BuiltinsCombinedImplementationGenerator.generate_header_includes] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:94:  [BuiltinsCombinedImplementationGenerator.generate_embedded_code_string_sections] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_header.py:48:  [BuiltinsSeparateHeaderGenerator.macro_prefix] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_header.py:52:  [BuiltinsSeparateHeaderGenerator.generate_output] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_header.py:59:  [BuiltinsSeparateHeaderGenerator.generate_output] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_header.py:86:  [BuiltinsSeparateHeaderGenerator.generate_header_includes] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_header.py:144:  [BuiltinsSeparateHeaderGenerator.generate_section_for_code_table_macro] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:107:  trailing whitespace  [pep8/W291] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:53:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCollection&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:69:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCombinedHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:70:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCombinedImplementationGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:74:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:75:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateImplementationGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:77:  [generate_bindings_for_builtins_files] Undefined variable &apos;Frameworks&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:78:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateWrapperGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:125:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:128:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:160:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:120:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:124:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:125:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:126:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:50:  [BuiltinsSeparateImplementationGenerator.macro_prefix] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:54:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:61:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:66:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:68:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:99:  [BuiltinsSeparateImplementationGenerator.generate_header_includes] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_wrapper.py:48:  [BuiltinsSeparateWrapperGenerator.macro_prefix] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_wrapper.py:52:  [BuiltinsSeparateWrapperGenerator.generate_output] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_wrapper.py:60:  [BuiltinsSeparateWrapperGenerator.generate_output] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_wrapper.py:94:  [BuiltinsSeparateWrapperGenerator.generate_header_includes] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/WebCore/CMakeLists.txt:3386:  No trailing spaces  [whitespace/trailing] [5]
ERROR: Source/WebCore/CMakeLists.txt:3383:  Alphabetical sorting problem. &quot;add_custom_command(&quot; should be before &quot;$(JavaScriptCore_SCRIPTS_DIR)/lazywriter.py&quot;.  [list/order] [5]
ERROR: Source/WebCore/CMakeLists.txt:3390:  The parentheses after the last listitem &quot;VERBATIM&quot; should be in a new line.  [list/parentheses] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:44:  [BuiltinsCombinedHeaderGenerator.output_filename] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:48:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:50:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:54:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:59:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:103:  [BuiltinsCombinedHeaderGenerator.generate_macros_for_object] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:123:  [BuiltinsCombinedHeaderGenerator.generate_defines_for_object] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:133:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_table_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:138:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_table_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:149:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_name_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:154:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_name_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:38:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:48:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:54:  expected 2 blank lines, found 1  [pep8/E302] [5]
Total errors found: 56 in 43 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>1133149</commentid>
    <comment_count>15</comment_count>
      <attachid>263082</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-14 10:04:28 -0700</bug_when>
    <thetext>Created attachment 263082
Fix Mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133151</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-14 10:06:24 -0700</bug_when>
    <thetext>Attachment 263082 did not pass style-queue:


ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:111:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:46:  [BuiltinsCombinedImplementationGenerator.output_filename] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:50:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:51:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:55:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:60:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:62:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:90:  [BuiltinsCombinedImplementationGenerator.generate_header_includes] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:94:  [BuiltinsCombinedImplementationGenerator.generate_embedded_code_string_sections] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_header.py:48:  [BuiltinsSeparateHeaderGenerator.macro_prefix] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_header.py:52:  [BuiltinsSeparateHeaderGenerator.generate_output] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_header.py:59:  [BuiltinsSeparateHeaderGenerator.generate_output] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_header.py:86:  [BuiltinsSeparateHeaderGenerator.generate_header_includes] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_header.py:144:  [BuiltinsSeparateHeaderGenerator.generate_section_for_code_table_macro] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:107:  trailing whitespace  [pep8/W291] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:53:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCollection&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:69:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCombinedHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:70:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCombinedImplementationGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:74:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:75:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateImplementationGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:77:  [generate_bindings_for_builtins_files] Undefined variable &apos;Frameworks&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:78:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateWrapperGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:125:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:128:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:160:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:120:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:124:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:125:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:126:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:50:  [BuiltinsSeparateImplementationGenerator.macro_prefix] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:54:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:61:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:66:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:68:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:99:  [BuiltinsSeparateImplementationGenerator.generate_header_includes] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_wrapper.py:48:  [BuiltinsSeparateWrapperGenerator.macro_prefix] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_wrapper.py:52:  [BuiltinsSeparateWrapperGenerator.generate_output] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_wrapper.py:60:  [BuiltinsSeparateWrapperGenerator.generate_output] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_wrapper.py:94:  [BuiltinsSeparateWrapperGenerator.generate_header_includes] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/WebCore/CMakeLists.txt:3386:  No trailing spaces  [whitespace/trailing] [5]
ERROR: Source/WebCore/CMakeLists.txt:3383:  Alphabetical sorting problem. &quot;add_custom_command(&quot; should be before &quot;$(JavaScriptCore_SCRIPTS_DIR)/lazywriter.py&quot;.  [list/order] [5]
ERROR: Source/WebCore/CMakeLists.txt:3390:  The parentheses after the last listitem &quot;VERBATIM&quot; should be in a new line.  [list/parentheses] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:44:  [BuiltinsCombinedHeaderGenerator.output_filename] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:48:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:50:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:54:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:59:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:103:  [BuiltinsCombinedHeaderGenerator.generate_macros_for_object] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:123:  [BuiltinsCombinedHeaderGenerator.generate_defines_for_object] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:133:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_table_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:138:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_table_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:149:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_name_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:154:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_name_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:38:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:48:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:54:  expected 2 blank lines, found 1  [pep8/E302] [5]
Total errors found: 56 in 43 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>1133167</commentid>
    <comment_count>17</comment_count>
      <attachid>263082</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2015-10-14 10:38:50 -0700</bug_when>
    <thetext>Comment on attachment 263082
Fix Mac

Attachment 263082 did not pass mac-ews (mac):
Output: http://webkit-queues.webkit.org/results/287431

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133168</commentid>
    <comment_count>18</comment_count>
      <attachid>263086</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2015-10-14 10:38:54 -0700</bug_when>
    <thetext>Created attachment 263086
Archive of layout-test-results from ews100 for mac-mavericks

The attached test failures were seen while running run-webkit-tests on the mac-ews.
Bot: ews100  Port: mac-mavericks  Platform: Mac OS X 10.9.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133169</commentid>
    <comment_count>19</comment_count>
      <attachid>263082</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2015-10-14 10:39:44 -0700</bug_when>
    <thetext>Comment on attachment 263082
Fix Mac

Attachment 263082 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.webkit.org/results/287429

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133170</commentid>
    <comment_count>20</comment_count>
      <attachid>263087</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2015-10-14 10:39:47 -0700</bug_when>
    <thetext>Created attachment 263087
Archive of layout-test-results from ews107 for mac-mavericks-wk2

The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews.
Bot: ews107  Port: mac-mavericks-wk2  Platform: Mac OS X 10.9.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133233</commentid>
    <comment_count>21</comment_count>
      <attachid>263102</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-14 13:05:41 -0700</bug_when>
    <thetext>Created attachment 263102
Fix Mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133240</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-14 13:08:49 -0700</bug_when>
    <thetext>Attachment 263102 did not pass style-queue:


ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:45:  [BuiltinsCombinedImplementationGenerator.output_filename] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:49:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:50:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:54:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:58:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:59:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;generate_embedded_code_string_section_for_function&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:60:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:62:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:90:  [BuiltinsCombinedImplementationGenerator.generate_header_includes] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_header.py:48:  [BuiltinsSeparateHeaderGenerator.macro_prefix] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_header.py:52:  [BuiltinsSeparateHeaderGenerator.generate_output] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_header.py:59:  [BuiltinsSeparateHeaderGenerator.generate_output] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_header.py:86:  [BuiltinsSeparateHeaderGenerator.generate_header_includes] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_header.py:144:  [BuiltinsSeparateHeaderGenerator.generate_section_for_code_table_macro] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:107:  trailing whitespace  [pep8/W291] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:53:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCollection&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:69:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCombinedHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:70:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCombinedImplementationGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:74:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:75:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateImplementationGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:77:  [generate_bindings_for_builtins_files] Undefined variable &apos;Frameworks&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:78:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateWrapperGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:125:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:128:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:160:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:49:  [BuiltinsSeparateImplementationGenerator.macro_prefix] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:53:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:60:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:65:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_embedded_code_string_section_for_function&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:66:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:68:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:99:  [BuiltinsSeparateImplementationGenerator.generate_header_includes] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_wrapper.py:48:  [BuiltinsSeparateWrapperGenerator.macro_prefix] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_wrapper.py:52:  [BuiltinsSeparateWrapperGenerator.generate_output] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_wrapper.py:60:  [BuiltinsSeparateWrapperGenerator.generate_output] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_wrapper.py:94:  [BuiltinsSeparateWrapperGenerator.generate_header_includes] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/WebCore/CMakeLists.txt:3386:  No trailing spaces  [whitespace/trailing] [5]
ERROR: Source/WebCore/CMakeLists.txt:3383:  Alphabetical sorting problem. &quot;add_custom_command(&quot; should be before &quot;$(JavaScriptCore_SCRIPTS_DIR)/lazywriter.py&quot;.  [list/order] [5]
ERROR: Source/WebCore/CMakeLists.txt:3390:  The parentheses after the last listitem &quot;VERBATIM&quot; should be in a new line.  [list/parentheses] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:44:  [BuiltinsCombinedHeaderGenerator.output_filename] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:48:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:50:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:54:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:59:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:103:  [BuiltinsCombinedHeaderGenerator.generate_macros_for_object] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:123:  [BuiltinsCombinedHeaderGenerator.generate_defines_for_object] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:133:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_table_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:138:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_table_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:149:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_name_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:154:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_name_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:39:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:49:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:55:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:72:  too many blank lines (2)  [pep8/E303] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:134:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:138:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:139:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:140:  multiple statements on one line (semicolon)  [pep8/E702] [5]
Total errors found: 58 in 43 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>1133267</commentid>
    <comment_count>23</comment_count>
      <attachid>263109</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-14 14:36:44 -0700</bug_when>
    <thetext>Created attachment 263109
Fix Mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133269</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-14 14:39:33 -0700</bug_when>
    <thetext>Attachment 263109 did not pass style-queue:


ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:45:  [BuiltinsCombinedImplementationGenerator.output_filename] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:49:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:50:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:54:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:58:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:59:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;generate_embedded_code_string_section_for_function&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:60:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:62:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:90:  [BuiltinsCombinedImplementationGenerator.generate_header_includes] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_header.py:48:  [BuiltinsSeparateHeaderGenerator.macro_prefix] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_header.py:52:  [BuiltinsSeparateHeaderGenerator.generate_output] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_header.py:59:  [BuiltinsSeparateHeaderGenerator.generate_output] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_header.py:86:  [BuiltinsSeparateHeaderGenerator.generate_header_includes] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_header.py:144:  [BuiltinsSeparateHeaderGenerator.generate_section_for_code_table_macro] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:107:  trailing whitespace  [pep8/W291] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:53:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCollection&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:69:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCombinedHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:70:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCombinedImplementationGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:74:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:75:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateImplementationGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:77:  [generate_bindings_for_builtins_files] Undefined variable &apos;Frameworks&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:78:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateWrapperGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:125:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:128:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:160:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:49:  [BuiltinsSeparateImplementationGenerator.macro_prefix] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:53:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:60:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:65:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_embedded_code_string_section_for_function&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:66:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:68:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:99:  [BuiltinsSeparateImplementationGenerator.generate_header_includes] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_wrapper.py:48:  [BuiltinsSeparateWrapperGenerator.macro_prefix] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_wrapper.py:52:  [BuiltinsSeparateWrapperGenerator.generate_output] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_wrapper.py:60:  [BuiltinsSeparateWrapperGenerator.generate_output] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_wrapper.py:94:  [BuiltinsSeparateWrapperGenerator.generate_header_includes] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/WebCore/CMakeLists.txt:3386:  No trailing spaces  [whitespace/trailing] [5]
ERROR: Source/WebCore/CMakeLists.txt:3383:  Alphabetical sorting problem. &quot;add_custom_command(&quot; should be before &quot;$(JavaScriptCore_SCRIPTS_DIR)/lazywriter.py&quot;.  [list/order] [5]
ERROR: Source/WebCore/CMakeLists.txt:3390:  The parentheses after the last listitem &quot;VERBATIM&quot; should be in a new line.  [list/parentheses] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:44:  [BuiltinsCombinedHeaderGenerator.output_filename] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:48:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:50:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:54:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:59:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:103:  [BuiltinsCombinedHeaderGenerator.generate_macros_for_object] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:123:  [BuiltinsCombinedHeaderGenerator.generate_defines_for_object] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:133:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_table_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:138:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_table_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:149:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_name_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:154:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_name_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:39:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:49:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:55:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:72:  too many blank lines (2)  [pep8/E303] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:134:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:138:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:139:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:140:  multiple statements on one line (semicolon)  [pep8/E702] [5]
Total errors found: 58 in 43 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>1133304</commentid>
    <comment_count>25</comment_count>
      <attachid>263121</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-14 16:32:28 -0700</bug_when>
    <thetext>Created attachment 263121
Try again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133306</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-14 16:34:41 -0700</bug_when>
    <thetext>Attachment 263121 did not pass style-queue:


ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:45:  [BuiltinsCombinedImplementationGenerator.output_filename] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:49:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:50:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:54:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:58:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:59:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;generate_embedded_code_string_section_for_function&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:60:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:62:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_implementation.py:90:  [BuiltinsCombinedImplementationGenerator.generate_header_includes] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_header.py:48:  [BuiltinsSeparateHeaderGenerator.macro_prefix] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_header.py:52:  [BuiltinsSeparateHeaderGenerator.generate_output] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_header.py:59:  [BuiltinsSeparateHeaderGenerator.generate_output] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_header.py:86:  [BuiltinsSeparateHeaderGenerator.generate_header_includes] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_header.py:144:  [BuiltinsSeparateHeaderGenerator.generate_section_for_code_table_macro] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:107:  trailing whitespace  [pep8/W291] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:53:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCollection&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:69:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCombinedHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:70:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCombinedImplementationGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:74:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:75:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateImplementationGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:77:  [generate_bindings_for_builtins_files] Undefined variable &apos;Frameworks&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:78:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateWrapperGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:125:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:128:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:160:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:49:  [BuiltinsSeparateImplementationGenerator.macro_prefix] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:53:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:60:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:65:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_embedded_code_string_section_for_function&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:66:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:68:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_implementation.py:99:  [BuiltinsSeparateImplementationGenerator.generate_header_includes] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_wrapper.py:48:  [BuiltinsSeparateWrapperGenerator.macro_prefix] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_wrapper.py:52:  [BuiltinsSeparateWrapperGenerator.generate_output] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_wrapper.py:60:  [BuiltinsSeparateWrapperGenerator.generate_output] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_separate_wrapper.py:94:  [BuiltinsSeparateWrapperGenerator.generate_header_includes] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/WebCore/CMakeLists.txt:3387:  No trailing spaces  [whitespace/trailing] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:44:  [BuiltinsCombinedHeaderGenerator.output_filename] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:48:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:50:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:54:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:59:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:103:  [BuiltinsCombinedHeaderGenerator.generate_macros_for_object] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:123:  [BuiltinsCombinedHeaderGenerator.generate_defines_for_object] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:133:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_table_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:138:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_table_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:149:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_name_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/generate_builtins_combined_header.py:154:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_name_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:39:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:49:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:55:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:72:  too many blank lines (2)  [pep8/E303] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:134:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:138:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:139:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:140:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:156:  too many blank lines (2)  [pep8/E303] [5]
Total errors found: 57 in 50 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>1133309</commentid>
    <comment_count>27</comment_count>
      <attachid>263121</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-14 16:49:06 -0700</bug_when>
    <thetext>Comment on attachment 263121
Try again

This patch is ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133340</commentid>
    <comment_count>28</comment_count>
      <attachid>263121</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-14 18:11:19 -0700</bug_when>
    <thetext>Comment on attachment 263121
Try again

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

&gt; Source/WebCore/CMakeLists.txt:828
&gt;  if (WIN32)
&gt;      if (INTERNAL_BUILD)
&gt;          set(WebCore_INSPECTOR_SCRIPTS_DIR &quot;${CMAKE_BINARY_DIR}/../include/private/JavaScriptCore&quot;)
&gt; -        set(WebCore_GENERATE_JS_BUILTINS_SCRIPTS_DIR &quot;${CMAKE_BINARY_DIR}/../include/private/JavaScriptCore&quot;)
&gt; +        set(JavaScriptCore_SCRIPTS_DIR &quot;${CMAKE_BINARY_DIR}/../include/private/JavaScriptCore&quot;)
&gt;      else ()
&gt;          set(WebCore_INSPECTOR_SCRIPTS_DIR &quot;${JAVASCRIPTCORE_DIR}/inspector/scripts&quot;)
&gt; -        set(WebCore_GENERATE_JS_BUILTINS_SCRIPTS_DIR &quot;${JAVASCRIPTCORE_DIR}&quot;)
&gt; +        set(JavaScriptCore_SCRIPTS_DIR &quot;${JAVASCRIPTCORE_DIR}/Scripts&quot;)
&gt;      endif ()

We cannot use ${JAVASCRIPTCORE_DIR} in WebCore because it is not there in the internal Windows build.  The reason those scripts are there is because they are copied there by JavaScriptCore/PlatformWin.cmake.  Please add directories there if there are any new directories that contain scripts, then let&apos;s use ${DERIVED_SOURCES_DIR}/ForwardingHeaders/JavaScriptCore instead of ${JAVASCRIPTCORE_DIR} to make the non-internal Windows build more like the internal build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133424</commentid>
    <comment_count>29</comment_count>
      <attachid>263121</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-15 02:36:05 -0700</bug_when>
    <thetext>Comment on attachment 263121
Try again

Thanks again for moving that forward, I look forward to start hacking it :)

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

&gt; Source/WebCore/ChangeLog:32
&gt; +        * generate-js-builtins: Removed.

What is somehow a bit annoying is that the script is now entirely in JavaScriptCore.
It therefore contains more code that is currently specific to WebCore than it used to be.

I guess it might be better for script infrastructure/authoring.
In the future, we should also align more and more JSC and WebCore generated code.

&gt; Source/JavaScriptCore/Scripts/builtins/builtins_model.py:102
&gt; +        is_constructor = functionIsConstructorRegExp.match(function_source) != None

I have not seen any use of constructor in the current JS builtins.
If so, is it worth adding (in a later patch) a test for this case and check what the old Source/JavaScriptCore/generate-js-bindings would have produced?

&gt; Source/JavaScriptCore/Scripts/builtins/builtins_templates.py:96
&gt; +    return vm.builtinExecutables()-&gt;codeName##Executable()-&gt;link(vm, vm.builtinExecutables()-&gt;codeName##Source()); \

Might be missing an additional &apos;\&apos;

&gt; Source/JavaScriptCore/Scripts/builtins/builtins_templates.py:107
&gt; +    return vm.builtinExecutables()-&gt;codeName##Executable()-&gt;link(vm, vm.builtinExecutables()-&gt;codeName##Source()); \

Might be missing an additional &apos;\&apos;

&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:97
&gt; +        WEBCORE_FOREACH_READABLESTREAMINTERNALS_BUILTIN_FUNCTION_NAME(DECLARE_GLOBAL_STATIC)

This is a nicer name indeed :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133503</commentid>
    <comment_count>30</comment_count>
      <attachid>263121</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-15 10:02:57 -0700</bug_when>
    <thetext>Comment on attachment 263121
Try again

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

&gt;&gt; Source/WebCore/ChangeLog:32
&gt;&gt; +        * generate-js-builtins: Removed.
&gt; 
&gt; What is somehow a bit annoying is that the script is now entirely in JavaScriptCore.
&gt; It therefore contains more code that is currently specific to WebCore than it used to be.
&gt; 
&gt; I guess it might be better for script infrastructure/authoring.
&gt; In the future, we should also align more and more JSC and WebCore generated code.

On the first point, this is actually a plus: it means we can have one directory of tests, and only worry about running scripts from one place.

The WebCore specific code is limited to a separate generated file currently, and when that&apos;s merged into the XXObjectBulitins.h file, it will be one method guarded by a framework check.

&gt;&gt; Source/JavaScriptCore/Scripts/builtins/builtins_model.py:102
&gt;&gt; +        is_constructor = functionIsConstructorRegExp.match(function_source) != None
&gt; 
&gt; I have not seen any use of constructor in the current JS builtins.
&gt; If so, is it worth adding (in a later patch) a test for this case and check what the old Source/JavaScriptCore/generate-js-bindings would have produced?

I could not find any either, which is strange considering all the machinery in place (JSC::ConstructAbility etc). This code might have to be amended once it&apos;s actually used. Yusuke, are there some constructors we have forgotten about?

&gt;&gt; Source/JavaScriptCore/Scripts/builtins/builtins_templates.py:96
&gt;&gt; +    return vm.builtinExecutables()-&gt;codeName##Executable()-&gt;link(vm, vm.builtinExecutables()-&gt;codeName##Source()); \
&gt; 
&gt; Might be missing an additional &apos;\&apos;

Good catch.

&gt;&gt; Source/WebCore/CMakeLists.txt:828
&gt;&gt;      endif ()
&gt; 
&gt; We cannot use ${JAVASCRIPTCORE_DIR} in WebCore because it is not there in the internal Windows build.  The reason those scripts are there is because they are copied there by JavaScriptCore/PlatformWin.cmake.  Please add directories there if there are any new directories that contain scripts, then let&apos;s use ${DERIVED_SOURCES_DIR}/ForwardingHeaders/JavaScriptCore instead of ${JAVASCRIPTCORE_DIR} to make the non-internal Windows build more like the internal build.

I am not sure how to tell CMake about dependencies on the generator scripts. In JSC, there&apos;s a directory structure like so:

JavaScriptCore/
    Scripts/
        generate-js-builtins.py
        builtins/
            builtins_models.py
            ...

In the Mac build, all the scripts are copied into PrivateHeaders and the directory structure is flattened. (A special builtins.py file makes it possible to blithely import python classes whether the directory structure is flat or not). In the CMake build, it would seem that the directory structure is only flattened for internal builds. How can I conditionalize BUILTINS_GENERATOR_SCRIPTS so these dependencies work on internal and other CMake ports? (Putting all the top-level scripts and python classes into the same directory is going to become unmanageable once inspector scripts move over to this directory.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133508</commentid>
    <comment_count>31</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-15 10:12:43 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; In the Mac build, all the scripts are copied into PrivateHeaders and the
&gt; directory structure is flattened. (A special builtins.py file makes it
&gt; possible to blithely import python classes whether the directory structure
&gt; is flat or not). In the CMake build, it would seem that the directory
&gt; structure is only flattened for internal builds. How can I conditionalize
&gt; BUILTINS_GENERATOR_SCRIPTS so these dependencies work on internal and other
&gt; CMake ports? (Putting all the top-level scripts and python classes into the
&gt; same directory is going to become unmanageable once inspector scripts move
&gt; over to this directory.)
I think the best solution is to have every CMake port copy the scripts to DerivedSources/JavaScriptCore and use that copy of the scripts (with the flattened directory structure) from WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133512</commentid>
    <comment_count>32</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-10-15 10:22:12 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; I think the best solution is to have every CMake port copy the scripts to
&gt; DerivedSources/JavaScriptCore and use that copy of the scripts (with the
&gt; flattened directory structure) from WebCore.

OMG, it would be a terrible hack and might cause incremental build failures
if you don&apos;t add proper cmake dependencies for copying steps too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133514</commentid>
    <comment_count>33</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-15 10:25:22 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; (In reply to comment #31)
&gt; &gt; I think the best solution is to have every CMake port copy the scripts to
&gt; &gt; DerivedSources/JavaScriptCore and use that copy of the scripts (with the
&gt; &gt; flattened directory structure) from WebCore.
&gt; 
&gt; OMG, it would be a terrible hack and might cause incremental build failures
&gt; if you don&apos;t add proper cmake dependencies for copying steps too.
Do you have a better idea?  One strict requirement of the internal AppleWin build is that it needs to be able to build WebCore without the JavaScriptCore directory being there.  We cannot add dependencies for files in the JavaScriptCore directory from the WebCore directory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133529</commentid>
    <comment_count>34</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-15 10:58:09 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; (In reply to comment #32)
&gt; &gt; (In reply to comment #31)
&gt; &gt; &gt; I think the best solution is to have every CMake port copy the scripts to
&gt; &gt; &gt; DerivedSources/JavaScriptCore and use that copy of the scripts (with the
&gt; &gt; &gt; flattened directory structure) from WebCore.
&gt; &gt; 
&gt; &gt; OMG, it would be a terrible hack and might cause incremental build failures
&gt; &gt; if you don&apos;t add proper cmake dependencies for copying steps too.
&gt; Do you have a better idea?  One strict requirement of the internal AppleWin
&gt; build is that it needs to be able to build WebCore without the
&gt; JavaScriptCore directory being there.  We cannot add dependencies for files
&gt; in the JavaScriptCore directory from the WebCore directory.

It would be much less risky to replicate the Scripts directory structure in DerivedSources/ForwardingHeaders for the AppleWin build and set JavaScriptCore_SCRIPTS_DIR appropriately as we do now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134758</commentid>
    <comment_count>35</comment_count>
      <attachid>263532</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-19 17:10:41 -0700</bug_when>
    <thetext>Created attachment 263532
Proposed Fix (Rebased)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134759</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-19 17:12:49 -0700</bug_when>
    <thetext>Attachment 263532 did not pass style-queue:


ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:49:  [BuiltinsSeparateImplementationGenerator.macro_prefix] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:53:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:60:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:65:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_embedded_code_string_section_for_function&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:66:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:68:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:99:  [BuiltinsSeparateImplementationGenerator.generate_header_includes] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:107:  trailing whitespace  [pep8/W291] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:53:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCollection&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:69:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCombinedHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:70:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCombinedImplementationGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:74:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:75:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateImplementationGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:77:  [generate_bindings_for_builtins_files] Undefined variable &apos;Frameworks&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:78:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateWrapperGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:125:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:128:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:160:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/WebCore/CMakeLists.txt:3628:  No trailing spaces  [whitespace/trailing] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:45:  [BuiltinsCombinedImplementationGenerator.output_filename] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:49:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:50:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:54:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:58:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:59:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;generate_embedded_code_string_section_for_function&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:60:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:62:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:90:  [BuiltinsCombinedImplementationGenerator.generate_header_includes] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_wrapper.py:48:  [BuiltinsSeparateWrapperGenerator.macro_prefix] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_wrapper.py:52:  [BuiltinsSeparateWrapperGenerator.generate_output] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_wrapper.py:60:  [BuiltinsSeparateWrapperGenerator.generate_output] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_wrapper.py:94:  [BuiltinsSeparateWrapperGenerator.generate_header_includes] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:44:  [BuiltinsCombinedHeaderGenerator.output_filename] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:48:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:50:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:54:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:59:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:103:  [BuiltinsCombinedHeaderGenerator.generate_macros_for_object] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:123:  [BuiltinsCombinedHeaderGenerator.generate_defines_for_object] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:133:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_table_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:138:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_table_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:149:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_name_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:154:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_name_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:39:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:49:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:55:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:72:  too many blank lines (2)  [pep8/E303] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:134:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:138:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:139:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:140:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:156:  too many blank lines (2)  [pep8/E303] [5]
Total errors found: 52 in 51 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>1134956</commentid>
    <comment_count>37</comment_count>
      <attachid>263597</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-20 11:52:31 -0700</bug_when>
    <thetext>Created attachment 263597
Proposed Fix (rebased)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134957</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-20 11:56:41 -0700</bug_when>
    <thetext>Attachment 263597 did not pass style-queue:


ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:49:  [BuiltinsSeparateImplementationGenerator.macro_prefix] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:53:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:60:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:65:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_embedded_code_string_section_for_function&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:66:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:68:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:99:  [BuiltinsSeparateImplementationGenerator.generate_header_includes] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:107:  trailing whitespace  [pep8/W291] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:53:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCollection&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:69:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCombinedHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:70:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCombinedImplementationGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:74:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:75:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateImplementationGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:77:  [generate_bindings_for_builtins_files] Undefined variable &apos;Frameworks&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:78:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateWrapperGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:125:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:128:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:160:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/WebCore/CMakeLists.txt:3620:  No trailing spaces  [whitespace/trailing] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:45:  [BuiltinsCombinedImplementationGenerator.output_filename] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:49:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:50:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:54:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:58:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:59:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;generate_embedded_code_string_section_for_function&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:60:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:62:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:90:  [BuiltinsCombinedImplementationGenerator.generate_header_includes] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_wrapper.py:48:  [BuiltinsSeparateWrapperGenerator.macro_prefix] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_wrapper.py:52:  [BuiltinsSeparateWrapperGenerator.generate_output] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_wrapper.py:60:  [BuiltinsSeparateWrapperGenerator.generate_output] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_wrapper.py:94:  [BuiltinsSeparateWrapperGenerator.generate_header_includes] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:44:  [BuiltinsCombinedHeaderGenerator.output_filename] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:48:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:50:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:54:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:59:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:103:  [BuiltinsCombinedHeaderGenerator.generate_macros_for_object] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:123:  [BuiltinsCombinedHeaderGenerator.generate_defines_for_object] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:133:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_table_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:138:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_table_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:149:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_name_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:154:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_name_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:39:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:49:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:55:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:72:  too many blank lines (2)  [pep8/E303] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:134:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:138:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:139:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:140:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:156:  too many blank lines (2)  [pep8/E303] [5]
Total errors found: 52 in 51 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>1134968</commentid>
    <comment_count>39</comment_count>
      <attachid>263597</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-20 12:50:59 -0700</bug_when>
    <thetext>Comment on attachment 263597
Proposed Fix (rebased)

Still having path issues for EFL and GTK since they don&apos;t flatten the Scripts directories. I&apos;ll try moving the Windows-specific code that copies Scripts into ForwardingHeaders into the main CMakeLists.txt file so everyone using CMake does it the same way except Windows Internal builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135046</commentid>
    <comment_count>40</comment_count>
      <attachid>263632</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-20 16:39:08 -0700</bug_when>
    <thetext>Created attachment 263632
Proposed Fix (rebased)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135054</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-20 16:42:06 -0700</bug_when>
    <thetext>Attachment 263632 did not pass style-queue:


ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:49:  [BuiltinsSeparateImplementationGenerator.macro_prefix] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:53:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:60:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:65:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_embedded_code_string_section_for_function&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:66:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:68:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:99:  [BuiltinsSeparateImplementationGenerator.generate_header_includes] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:107:  trailing whitespace  [pep8/W291] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:53:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCollection&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:69:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCombinedHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:70:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCombinedImplementationGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:74:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:75:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateImplementationGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:77:  [generate_bindings_for_builtins_files] Undefined variable &apos;Frameworks&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:78:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateWrapperGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:125:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:128:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:160:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/WebCore/CMakeLists.txt:3616:  No trailing spaces  [whitespace/trailing] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:45:  [BuiltinsCombinedImplementationGenerator.output_filename] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:49:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:50:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:54:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:58:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:59:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;generate_embedded_code_string_section_for_function&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:60:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:62:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:90:  [BuiltinsCombinedImplementationGenerator.generate_header_includes] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_wrapper.py:48:  [BuiltinsSeparateWrapperGenerator.macro_prefix] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_wrapper.py:52:  [BuiltinsSeparateWrapperGenerator.generate_output] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_wrapper.py:60:  [BuiltinsSeparateWrapperGenerator.generate_output] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_wrapper.py:94:  [BuiltinsSeparateWrapperGenerator.generate_header_includes] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:44:  [BuiltinsCombinedHeaderGenerator.output_filename] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:48:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:50:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:54:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:59:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:103:  [BuiltinsCombinedHeaderGenerator.generate_macros_for_object] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:123:  [BuiltinsCombinedHeaderGenerator.generate_defines_for_object] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:133:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_table_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:138:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_table_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:149:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_name_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:154:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_name_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:39:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:49:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:55:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:72:  too many blank lines (2)  [pep8/E303] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:134:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:138:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:139:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:140:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:156:  too many blank lines (2)  [pep8/E303] [5]
Total errors found: 52 in 51 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>1135064</commentid>
    <comment_count>42</comment_count>
      <attachid>263632</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-20 16:57:45 -0700</bug_when>
    <thetext>Comment on attachment 263632
Proposed Fix (rebased)

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

&gt; Source/JavaScriptCore/CMakeLists.txt:724
&gt; +file(GLOB JavaScriptCore_SCRIPTS ${JavaScriptCore_SCRIPTS_PATHS})
&gt; +foreach (_script ${JavaScriptCore_SCRIPTS})
&gt; +    file(COPY ${_script} DESTINATION ${DERIVED_SOURCES_DIR}/ForwardingHeaders/JavaScriptCore/Scripts)
&gt; +endforeach ()

This will cause problems with incremental builds because file(COPY ...) is only done when CMake is run.  If you change any of the scripts without touching a CMakeLists.txt file, it won&apos;t run CMake and WebCore will be looking at an old copy of the scripts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135349</commentid>
    <comment_count>43</comment_count>
      <attachid>263720</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-21 13:04:27 -0700</bug_when>
    <thetext>Created attachment 263720
Proposed Fix (different CMake strategy)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135406</commentid>
    <comment_count>44</comment_count>
      <attachid>263720</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-21 14:50:31 -0700</bug_when>
    <thetext>Comment on attachment 263720
Proposed Fix (different CMake strategy)

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

This seems good, but I&apos;d really like to see successful EWS with a change like this.

&gt; Source/JavaScriptCore/CMakeLists.txt:727
&gt; +  get_filename_component(_script &quot;${_file}&quot; NAME)

4 space indent

&gt; Source/JavaScriptCore/PlatformWin.cmake:38
&gt; -file(APPEND &quot;${JavaScriptCore_POST_BUILD_COMMAND}&quot; &quot;@xcopy /y /d /f \&quot;${JavaScriptCore_SCRIPTS_DIR}/*.*\&quot; \&quot;${DERIVED_SOURCES_DIR}/ForwardingHeaders/JavaScriptCore/Scripts\&quot; &gt;nul 2&gt;nul\n&quot;)
&gt; +foreach (_script ${JavaScriptCore_SCRIPTS})
&gt; +    file(APPEND &quot;${JavaScriptCore_POST_BUILD_COMMAND}&quot; &quot;@xcopy /y /f \&quot;${_script}\&quot; \&quot;${DERIVED_SOURCES_DIR}/ForwardingHeaders/JavaScriptCore/Scripts\&quot; &gt;nul 2&gt;nul\n&quot;)
&gt; +endforeach ()

This shouldn&apos;t be necessary any more with your custom commands that copy the scripts.  Just remove the copy lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135449</commentid>
    <comment_count>45</comment_count>
      <attachid>263757</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-21 16:14:01 -0700</bug_when>
    <thetext>Created attachment 263757
Proposed Fix (re-re-rebased)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135453</commentid>
    <comment_count>46</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-21 16:18:07 -0700</bug_when>
    <thetext>Attachment 263757 did not pass style-queue:


ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:49:  [BuiltinsSeparateImplementationGenerator.macro_prefix] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:53:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:60:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:65:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_embedded_code_string_section_for_function&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:66:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:68:  [BuiltinsSeparateImplementationGenerator.generate_output] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py:99:  [BuiltinsSeparateImplementationGenerator.generate_header_includes] Instance of &apos;BuiltinsSeparateImplementationGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:107:  trailing whitespace  [pep8/W291] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:53:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCollection&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:69:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCombinedHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:70:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsCombinedImplementationGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:74:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:75:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateImplementationGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:77:  [generate_bindings_for_builtins_files] Undefined variable &apos;Frameworks&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:78:  [generate_bindings_for_builtins_files] Undefined variable &apos;BuiltinsSeparateWrapperGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:125:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:128:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/Scripts/generate-js-builtins.py:160:  Undefined variable &apos;ParseException&apos;  [pylint/E0602] [5]
ERROR: Source/WebCore/CMakeLists.txt:3617:  No trailing spaces  [whitespace/trailing] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:45:  [BuiltinsCombinedImplementationGenerator.output_filename] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:49:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:50:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:54:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:58:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:59:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;generate_embedded_code_string_section_for_function&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:60:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:62:  [BuiltinsCombinedImplementationGenerator.generate_output] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py:90:  [BuiltinsCombinedImplementationGenerator.generate_header_includes] Instance of &apos;BuiltinsCombinedImplementationGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_wrapper.py:48:  [BuiltinsSeparateWrapperGenerator.macro_prefix] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_wrapper.py:52:  [BuiltinsSeparateWrapperGenerator.generate_output] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_wrapper.py:60:  [BuiltinsSeparateWrapperGenerator.generate_output] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_wrapper.py:94:  [BuiltinsSeparateWrapperGenerator.generate_header_includes] Instance of &apos;BuiltinsSeparateWrapperGenerator&apos; has no &apos;generate_includes_from_entries&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:44:  [BuiltinsCombinedHeaderGenerator.output_filename] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:48:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:50:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:54:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:59:  [BuiltinsCombinedHeaderGenerator.generate_output] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:103:  [BuiltinsCombinedHeaderGenerator.generate_macros_for_object] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:123:  [BuiltinsCombinedHeaderGenerator.generate_defines_for_object] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:133:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_table_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:138:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_table_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:149:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_name_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py:154:  [BuiltinsCombinedHeaderGenerator.generate_section_for_code_name_macro] Instance of &apos;BuiltinsCombinedHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:39:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:49:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:55:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:72:  too many blank lines (2)  [pep8/E303] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:134:  whitespace before &apos;}&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:138:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:139:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:140:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generator.py:156:  too many blank lines (2)  [pep8/E303] [5]
Total errors found: 52 in 51 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>1135482</commentid>
    <comment_count>47</comment_count>
      <attachid>263757</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-21 17:23:04 -0700</bug_when>
    <thetext>Comment on attachment 263757
Proposed Fix (re-re-rebased)

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

&gt; Source/JavaScriptCore/CMakeLists.txt:720
&gt; +set(JavaScriptCore_SCRIPTS_DIR &quot;${DERIVED_SOURCES_DIR}/ForwardingHeaders/JavaScriptCore/Scripts&quot;)

I think you need a file(MAKE_DIRECTORY ${JavaScriptCore_SCRIPTS_DIR}) somewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135562</commentid>
    <comment_count>48</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-21 21:25:12 -0700</bug_when>
    <thetext>(In reply to comment #47)
&gt; Comment on attachment 263757 [details]
&gt; Proposed Fix (re-re-rebased)
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=263757&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/CMakeLists.txt:720
&gt; &gt; +set(JavaScriptCore_SCRIPTS_DIR &quot;${DERIVED_SOURCES_DIR}/ForwardingHeaders/JavaScriptCore/Scripts&quot;)
&gt; 
&gt; I think you need a file(MAKE_DIRECTORY ${JavaScriptCore_SCRIPTS_DIR})
&gt; somewhere.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135566</commentid>
    <comment_count>49</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-21 21:39:45 -0700</bug_when>
    <thetext>Committed r191433: &lt;http://trac.webkit.org/changeset/191433&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262731</attachid>
            <date>2015-10-08 17:11:01 -0700</date>
            <delta_ts>2015-10-09 17:16:23 -0700</delta_ts>
            <desc>WIP - JSC parts done</desc>
            <filename>bug-149929-20151008171028.patch</filename>
            <type>text/plain</type>
            <size>38764</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwNzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZmE2OTIwOGM2NzZlOGNlM2I2MWY4YmJmZDQ1OWE0N2JmNGNjODhiLi5iOTNmN2JkYzI1OGJlOGFh
NDA0M2VhODhkMzQ2OWU2MGNlMzRiOTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAxNS0xMC0wOCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXN0cnVjdHVyZSBnZW5lcmF0ZS1qcy1iaW5kaW5ncyBzY3JpcHQgdG8gYmUgbW9k
dWxhciBhbmQgdGVzdGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0OTkyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogc2NyaXB0cy9jb2RlZ2VuL19faW5pdF9fLnB5OiBBZGRlZC4KKyAgICAgICAg
KiBzY3JpcHRzL2NvZGVnZW4vYnVpbHRpbnNfZ2VuZXJhdG9yLnB5OiBBZGRlZC4KKyAgICAgICAg
KHVjZmlyc3QpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3IpOgorICAgICAgICAoQnVpbHRp
bnNHZW5lcmF0b3IuX19pbml0X18pOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3IubW9kZWwp
OgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3IuZ2VuZXJhdGVfbGljZW5zZSk6CisgICAgICAg
IChCdWlsdGluc0dlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAoQnVpbHRpbnNH
ZW5lcmF0b3Iub3V0cHV0X2ZpbGVuYW1lKToKKyAgICAgICAgKiBzY3JpcHRzL2NvZGVnZW4vYnVp
bHRpbnNfbW9kZWwucHk6IEFkZGVkLgorICAgICAgICAobGNmaXJzdCk6CisgICAgICAgIChQYXJz
ZUV4Y2VwdGlvbik6CisgICAgICAgIChGdW5jdGlvbik6CisgICAgICAgIChGdW5jdGlvbi5fX2lu
aXRfXyk6CisgICAgICAgIChGdW5jdGlvbi5mcm9tU3RyaW5nKToKKyAgICAgICAgKEZ1bmN0aW9u
Lm1hbmdsZWROYW1lKToKKyAgICAgICAgKEZ1bmN0aW9uLm1hbmdsZWROYW1lRm9yQ29kZSk6Cisg
ICAgICAgIChGdW5jdGlvbi5fX3N0cl9fKToKKyAgICAgICAgKEJ1aWx0aW5zKToKKyAgICAgICAg
KEJ1aWx0aW5zLl9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0aW5zLnBhcnNlX2J1aWx0aW5zX2Zp
bGUpOgorICAgICAgICAoQnVpbHRpbnMuY29weXJpZ2h0cyk6CisgICAgICAgIChCdWlsdGlucy5h
bGxfZnVuY3Rpb25zKToKKyAgICAgICAgKEJ1aWx0aW5zLl9wYXJzZV9jb3B5cmlnaHRfbGluZXMp
OgorICAgICAgICAoQnVpbHRpbnMuX3BhcnNlX2Z1bmN0aW9ucyk6CisgICAgICAgICogc2NyaXB0
cy9jb2RlZ2VuL2J1aWx0aW5zX3RlbXBsYXRlcy5weTogQWRkZWQuCisgICAgICAgIChCdWlsdGlu
c0dlbmVyYXRvclRlbXBsYXRlcyk6CisgICAgICAgIChKU0NCdWlsdGluc19oKToKKyAgICAgICAg
KiBzY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaGVhZGVyLnB5OiBB
ZGRlZC4KKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJHZW5lcmF0b3IpOgorICAgICAg
ICAoQnVpbHRpbnNDb21iaW5lZEhlYWRlckdlbmVyYXRvci5fX2luaXRfXyk6CisgICAgICAgIChC
dWlsdGluc0NvbWJpbmVkSGVhZGVyR2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSk6CisgICAgICAg
IChCdWlsdGluc0NvbWJpbmVkSGVhZGVyR2VuZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAg
ICAgIChCdWlsdGluc0NvbWJpbmVkSGVhZGVyR2VuZXJhdG9yLmdlbmVyYXRlX2ZvcndhcmRfZGVj
bGFyYXRpb25zKToKKyAgICAgICAgKEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChnZW5l
cmF0ZV9zZWN0aW9uX2Zvcl9vYmplY3QpOgorICAgICAgICAoZ2VuZXJhdGVfZXh0ZXJuc19mb3Jf
b2JqZWN0KToKKyAgICAgICAgKGdlbmVyYXRlX21hY3Jvc19mb3Jfb2JqZWN0KToKKyAgICAgICAg
KGdlbmVyYXRlX2RlZmluZXNfZm9yX29iamVjdCk6CisgICAgICAgIChnZW5lcmF0ZV9zZWN0aW9u
X2Zvcl9jb2RlX3RhYmxlX21hY3JvKToKKyAgICAgICAgKGdlbmVyYXRlX3NlY3Rpb25fZm9yX2Nv
ZGVfbmFtZV9tYWNybyk6CisgICAgICAgICogc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2J1aWx0
aW5zX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5OiBBZGRlZC4KKyAgICAgICAgKEJ1aWx0aW5z
Q29tYmluZWRJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChCdWlsdGluc0NvbWJp
bmVkSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX19pbml0X18pOgorICAgICAgICAoQnVpbHRpbnND
b21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSk6CisgICAgICAg
IChCdWlsdGluc0NvbWJpbmVkSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0
KToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5nZW5l
cmF0ZV9lbWJlZGRlZF9jb2RlX3N0cmluZ19zZWN0aW9ucyk6CisgICAgICAgICogc2NyaXB0cy9j
b2RlZ2VuL2xhenl3cml0ZXIucHk6IEFkZGVkLgorICAgICAgICAoTGF6eUZpbGVXcml0ZXIpOgor
ICAgICAgICAoTGF6eUZpbGVXcml0ZXIuX19pbml0X18pOgorICAgICAgICAoTGF6eUZpbGVXcml0
ZXIud3JpdGUpOgorICAgICAgICAoTGF6eUZpbGVXcml0ZXIuY2xvc2UpOgorICAgICAgICAqIHNj
cmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHk6IEFkZGVkLgorICAgICAgICAoZ2VuZXJhdGVf
YmluZGluZ3NfZm9yX2J1aWx0aW5zX2ZpbGVzKToKKwogMjAxNS0xMC0wOCAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjE5MDcxNi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9zY3JpcHRz
L2NvZGVnZW4vX19pbml0X18ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvc2NyaXB0cy9jb2Rl
Z2VuL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjMTFmNzQ5MDQ0N2VlMjllZGJkODAxODdiZGJk
ODc5N2ViNjgyNTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvc2Ny
aXB0cy9jb2RlZ2VuL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsOSBAQAorIyBSZXF1aXJlZCBmb3Ig
UHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlIGZpbGVzCisKK2Zyb20g
YnVpbHRpbnNfbW9kZWwgaW1wb3J0ICoKK2Zyb20gYnVpbHRpbnNfdGVtcGxhdGVzIGltcG9ydCAq
Citmcm9tIGxhenl3cml0ZXIgaW1wb3J0ICoKKworZnJvbSBidWlsdGluc19nZW5lcmF0b3IgaW1w
b3J0ICoKK2Zyb20gZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaGVhZGVyIGltcG9ydCAqCitm
cm9tIGdlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uIGltcG9ydCAqClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3NjcmlwdHMvY29kZWdlbi9idWlsdGluc19nZW5lcmF0b3IucHkgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvc2NyaXB0cy9jb2RlZ2VuL2J1aWx0aW5zX2dlbmVyYXRvci5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zN2U4MzE1Y2JmN2FmZGNhYWVkOGJhMGE3MGFmMjAzODFiZGE2OWNhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3NjcmlwdHMvY29kZWdlbi9idWlsdGluc19nZW5l
cmF0b3IucHkKQEAgLTAsMCArMSw3MiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENv
cHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBv
cnQgbG9nZ2luZworaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCByZQorZnJvbSBzdHJpbmcgaW1wb3J0
IFRlbXBsYXRlCisKK2Zyb20gYnVpbHRpbnNfdGVtcGxhdGVzIGltcG9ydCBCdWlsdGluc0dlbmVy
YXRvclRlbXBsYXRlcyBhcyBUZW1wbGF0ZXMKKworbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2ds
b2JhbCcpCisKKworZGVmIHVjZmlyc3Qoc3RyKToKKyAgICByZXR1cm4gc3RyWzoxXS51cHBlcigp
ICsgc3RyWzE6XQorCisKK2NsYXNzIEJ1aWx0aW5zR2VuZXJhdG9yOgorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBtb2RlbCk6CisgICAgICAgIHNlbGYuX21vZGVsID0gbW9kZWwKKworICAgIGRlZiBt
b2RlbChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX21vZGVsCisKKyAgICBkZWYgZ2VuZXJh
dGVfbGljZW5zZShzZWxmKToKKyAgICAgICAgcmF3X2xpY2Vuc2UgPSBUZW1wbGF0ZShUZW1wbGF0
ZXMuTGljZW5zZVRleHQpLnN1YnN0aXR1dGUoTm9uZSkKKyAgICAgICAgY29weXJpZ2h0cyA9IHNl
bGYuX21vZGVsLmNvcHlyaWdodHMoKQorICAgICAgICBjb3B5cmlnaHRzLnNvcnQoKQorCisgICAg
ICAgIGxpY2Vuc2VfYmxvY2sgPSBbXTsKKyAgICAgICAgbGljZW5zZV9ibG9jay5hcHBlbmQoIi8q
IikKKyAgICAgICAgZm9yIGNvcHlyaWdodCBpbiBjb3B5cmlnaHRzOgorICAgICAgICAgICAgbGlj
ZW5zZV9ibG9jay5hcHBlbmQoIiAqIENvcHlyaWdodCAoYykgJXMiICUgY29weXJpZ2h0KQorICAg
ICAgICBpZiBsZW4oY29weXJpZ2h0cykgPiAwOgorICAgICAgICAgICAgbGljZW5zZV9ibG9jay5h
cHBlbmQoIiAqICIpCisKKyAgICAgICAgZm9yIGxpbmUgaW4gcmF3X2xpY2Vuc2Uuc3BsaXQoJ1xu
Jyk6CisgICAgICAgICAgICBsaWNlbnNlX2Jsb2NrLmFwcGVuZCgiICogIiArIGxpbmUpCisKKyAg
ICAgICAgbGljZW5zZV9ibG9jay5hcHBlbmQoIiAqLyIpCisKKyAgICAgICAgcmV0dXJuICdcbicu
am9pbihsaWNlbnNlX2Jsb2NrKQorCisgICAgIyBUaGVzZSBtZXRob2RzIGFyZSBvdmVycmlkZGVu
IGJ5IHN1YmNsYXNzZXMuCisgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKKyAgICAgICAg
cGFzcworCisgICAgZGVmIG91dHB1dF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgcGFzcwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3NjcmlwdHMvY29kZWdlbi9idWlsdGluc19t
b2RlbC5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9zY3JpcHRzL2NvZGVnZW4vYnVpbHRpbnNf
bW9kZWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjA5OTExYjVjNjM1Y2UzZTIyYjZkMWM2ZGM3OGFlMTdjYmVi
NzY3NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9zY3JpcHRzL2Nv
ZGVnZW4vYnVpbHRpbnNfbW9kZWwucHkKQEAgLTAsMCArMSwyMDkgQEAKKyMhL3Vzci9iaW4vZW52
IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisj
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0
IGxvZ2dpbmcKK2ltcG9ydCByZQoraW1wb3J0IG9zCisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KCdnbG9iYWwnKQorCitkZWYgbGNmaXJzdChzdHIpOgorICAgIHJldHVybiBzdHJbOjFdLmxvd2Vy
KCkgKyBzdHJbMTpdCisKKworZnVuY3Rpb25IZWFkUmVnRXhwID0gcmUuY29tcGlsZShyIig/OmZ1
bmN0aW9ufGNvbnN0cnVjdG9yKVxzK1x3K1xzKlwoLio/XCkiLCByZS5NVUxUSUxJTkUgfCByZS5T
KQorZnVuY3Rpb25OYW1lUmVnRXhwID0gcmUuY29tcGlsZShyIig/OmZ1bmN0aW9ufGNvbnN0cnVj
dG9yKVxzKyhcdyspXHMqXCgiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25Jc0NvbnN0
cnVjdG9yUmVnRXhwID0gcmUuY29tcGlsZShyIl5jb25zdHJ1Y3RvciIsIHJlLk1VTFRJTElORSB8
IHJlLlMpCitmdW5jdGlvblBhcmFtZXRlckZpbmRlciA9IHJlLmNvbXBpbGUociJeKD86ZnVuY3Rp
b258Y29uc3RydWN0b3IpXHMrKD86XHcrKVxzKlwoKCg/OlxzKlx3Kyk/XHMqKD86XHMqLFxzKlx3
KykqKT9ccypcKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCisKK211bHRpbGluZUNvbW1lbnRSZWdF
eHAgPSByZS5jb21waWxlKHIiXC9cKi4qP1wqXC8iLCByZS5NVUxUSUxJTkUgfCByZS5TKQorc2lu
Z2xlTGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cLy4qP1xuIiwgcmUuTVVMVElM
SU5FIHwgcmUuUykKKworCitjbGFzcyBQYXJzZUV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgIHBh
c3MKKworCitjbGFzcyBGdW5jdGlvbjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgc291
cmNlLCBpc0NvbnN0cnVjdG9yLCBwYXJhbWV0ZXJzKToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFt
ZQorICAgICAgICBzZWxmLnNvdXJjZSA9IHNvdXJjZQorICAgICAgICBzZWxmLmlzQ29uc3RydWN0
b3IgPSBpc0NvbnN0cnVjdG9yCisgICAgICAgIHNlbGYucGFyYW1ldGVycyA9IHBhcmFtZXRlcnMK
KyAgICAgICAgc2VsZi5vYmplY3QgPSBOb25lICAjIFNldCBieSB0aGUgb3duaW5nIE9iamVjdAor
CisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBmcm9tU3RyaW5nKGZ1bmN0aW9uU3RyaW5nKToK
KyAgICAgICAgZnVuY3Rpb25TdHJpbmcgPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiIiwg
ZnVuY3Rpb25TdHJpbmcpCisgICAgICAgIGZ1bmN0aW9uTmFtZSA9IGZ1bmN0aW9uTmFtZVJlZ0V4
cC5maW5kYWxsKGZ1bmN0aW9uU3RyaW5nKVswXQorICAgICAgICBmdW5jdGlvbklzQ29uc3RydWN0
b3IgPSBmdW5jdGlvbklzQ29uc3RydWN0b3JSZWdFeHAubWF0Y2goZnVuY3Rpb25TdHJpbmcpICE9
IE5vbmUKKyAgICAgICAgZnVuY3Rpb25QYXJhbWV0ZXJzID0gW3Muc3RyaXAoKSBmb3IgcyBpbiBm
dW5jdGlvblBhcmFtZXRlckZpbmRlci5maW5kYWxsKGZ1bmN0aW9uU3RyaW5nKVswXS5zcGxpdCgn
LCcpXQorICAgICAgICBpZiBsZW4oZnVuY3Rpb25QYXJhbWV0ZXJzWzBdKSA9PSAwOgorICAgICAg
ICAgICAgZnVuY3Rpb25QYXJhbWV0ZXJzID0gW10KKworICAgICAgICByZXR1cm4gRnVuY3Rpb24o
ZnVuY3Rpb25OYW1lLCBmdW5jdGlvblN0cmluZywgZnVuY3Rpb25Jc0NvbnN0cnVjdG9yLCBmdW5j
dGlvblBhcmFtZXRlcnMpCisKKyAgICBkZWYgbWFuZ2xlZE5hbWUoc2VsZik6CisgICAgICAgIHFO
YW1lID0gIiVzLiVzIiAlIChzZWxmLm9iamVjdCwgc2VsZi5uYW1lKQorICAgICAgICBtYW5nbGVk
TmFtZSA9ICIiCisgICAgICAgIGkgPSAwCisgICAgICAgIHdoaWxlIGkgPCBsZW4ocU5hbWUpOgor
ICAgICAgICAgICAgaWYgcU5hbWVbaV0gPT0gJy4nOgorICAgICAgICAgICAgICAgIG1hbmdsZWRO
YW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtpICsgMV0udXBwZXIoKQorICAgICAgICAgICAgICAg
IGkgPSBpICsgMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtYW5nbGVkTmFt
ZSA9IG1hbmdsZWROYW1lICsgcU5hbWVbaV0KKyAgICAgICAgICAgIGkgPSBpICsgMQorICAgICAg
ICBpZiBzZWxmLmlzQ29uc3RydWN0b3I6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmds
ZWROYW1lICsgIkNvbnN0cnVjdG9yIgorICAgICAgICByZXR1cm4gbWFuZ2xlZE5hbWUKKworICAg
IGRlZiBtYW5nbGVkTmFtZUZvckNvZGUoc2VsZik6CisgICAgICAgIHJldHVybiBsY2ZpcnN0KHNl
bGYubWFuZ2xlZE5hbWUoKSkgKyAiQ29kZSIKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAg
ICAgICBpbnRlcmZhY2UgPSAiJXMoJXMpIiAlIChzZWxmLm5hbWUsICcsICcuam9pbihzZWxmLnBh
cmFtZXRlcnMpKQorICAgICAgICBpZiBzZWxmLmlzQ29uc3RydWN0b3I6CisgICAgICAgICAgICBp
bnRlcmZhY2UgPSBpbnRlcmZhY2UgKyAiIFtDb25zdHJ1Y3Rvcl0iCisKKyAgICAgICAgcmV0dXJu
IGludGVyZmFjZQorCitjbGFzcyBCdWlsdGluczoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFt
ZXNwYWNlPSIiLCBtYWNyb19wcmVmaXg9IiIpOgorICAgICAgICBzZWxmLl9jb3B5cmlnaHRfbGlu
ZXMgPSBzZXQoKQorCisgICAgICAgIHNlbGYub2JqZWN0cyA9IGRpY3QoKSAgIyBmcm9tIG9iamVj
dF9uYW1lIHRvIGxpc3QoRnVuY3Rpb24pCisgICAgICAgIHNlbGYubmFtZXNwYWNlID0gbmFtZXNw
YWNlCisgICAgICAgIHNlbGYubWFjcm9fcHJlZml4ID0gbWFjcm9fcHJlZml4CisgICAgICAgIGxv
Zy5kZWJ1ZygiQ3JlYXRlZCBuZXcgQnVpbHRpbnMgbW9kZWwuIikKKworCisgICAgZGVmIHBhcnNl
X2J1aWx0aW5zX2ZpbGUoc2VsZiwgZmlsZW5hbWUsIHRleHQpOgorICAgICAgICBsb2cuZGVidWco
IlBhcnNpbmcgYnVpbHRpbnMgZmlsZTogJXMiICUgZmlsZW5hbWUpCisKKyAgICAgICAgcGFyc2Vk
X2NvcHlyaWdodHMgPSBzZXQoc2VsZi5fcGFyc2VfY29weXJpZ2h0X2xpbmVzKHRleHQpKQorICAg
ICAgICBzZWxmLl9jb3B5cmlnaHRfbGluZXMgPSBzZWxmLl9jb3B5cmlnaHRfbGluZXMudW5pb24o
cGFyc2VkX2NvcHlyaWdodHMpCisKKyAgICAgICAgbG9nLmRlYnVnKCJGb3VuZCBjb3B5cmlnaHQg
bGluZXM6IikKKyAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5fY29weXJpZ2h0X2xpbmVzOgorICAg
ICAgICAgICAgbG9nLmRlYnVnKGxpbmUpOworICAgICAgICBsb2cuZGVidWcoIiIpCisKKyAgICAg
ICAgb2JqZWN0X25hbWUsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShm
aWxlbmFtZSkpCisgICAgICAgIGxvZy5kZWJ1ZygiQ3JlYXRpbmcgb2JqZWN0OiAlcyIgJSBvYmpl
Y3RfbmFtZSkKKworICAgICAgICBwYXJzZWRfZnVuY3Rpb25zID0gc2VsZi5fcGFyc2VfZnVuY3Rp
b25zKHRleHQpCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBwYXJzZWRfZnVuY3Rpb25zOgorICAg
ICAgICAgICAgZnVuY3Rpb24ub2JqZWN0ID0gb2JqZWN0X25hbWUKKyAgICAgICAgc2VsZi5vYmpl
Y3RzW29iamVjdF9uYW1lXSA9IHBhcnNlZF9mdW5jdGlvbnMKKworICAgICAgICBsb2cuZGVidWco
IkZvdW5kIGZ1bmN0aW9uczoiKQorICAgICAgICBmb3IgZnVuYyBpbiBwYXJzZWRfZnVuY3Rpb25z
OgorICAgICAgICAgICAgbG9nLmRlYnVnKGZ1bmMpCisgICAgICAgIGxvZy5kZWJ1ZygiIikKKwor
ICAgIGRlZiBjb3B5cmlnaHRzKHNlbGYpOgorICAgICAgICBvd25lcl90b195ZWFycyA9IGRpY3Qo
KQorICAgICAgICBjb3B5cmlnaHRZZWFyUmVnRXhwID0gcmUuY29tcGlsZShyIihcZHs0fSlbLCBd
ezAsMn0iKQorICAgICAgICBvd25lclN0YXJ0UmVnRXhwID0gcmUuY29tcGlsZShyIlteXGQsIF0i
KQorCisgICAgICAgICMgUmV0dXJucyBkZWR1cGxpY2F0ZWQgY29weXJpZ2h0cyBrZXllZCBvbiB0
aGUgb3duZXIuCisgICAgICAgIGZvciBsaW5lIGluIHNlbGYuX2NvcHlyaWdodF9saW5lczoKKyAg
ICAgICAgICAgIHllYXJzID0gc2V0KGNvcHlyaWdodFllYXJSZWdFeHAuZmluZGFsbChsaW5lKSkK
KyAgICAgICAgICAgIG93bmVySW5kZXggPSBvd25lclN0YXJ0UmVnRXhwLnNlYXJjaChsaW5lKS5z
dGFydCgpCisgICAgICAgICAgICBvd25lciA9IGxpbmVbb3duZXJJbmRleDpdCisgICAgICAgICAg
ICBsb2cuZGVidWcoIkZvdW5kIHllYXJzOiAlcyBhbmQgb3duZXI6ICVzIiAlICh5ZWFycywgb3du
ZXIpKQorICAgICAgICAgICAgaWYgb3duZXIgbm90IGluIG93bmVyX3RvX3llYXJzOgorICAgICAg
ICAgICAgICAgIG93bmVyX3RvX3llYXJzW293bmVyXSA9IHNldCgpCisKKyAgICAgICAgICAgIG93
bmVyX3RvX3llYXJzW293bmVyXSA9IG93bmVyX3RvX3llYXJzW293bmVyXS51bmlvbih5ZWFycykK
KworICAgICAgICByZXN1bHQgPSBbXQorCisgICAgICAgIGZvciBvd25lciwgeWVhcnMgaW4gb3du
ZXJfdG9feWVhcnMuaXRlbXMoKToKKyAgICAgICAgICAgIHNvcnRlZF95ZWFycyA9IGxpc3QoeWVh
cnMpCisgICAgICAgICAgICBzb3J0ZWRfeWVhcnMuc29ydCgpCisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCIlcyAlcyIgJSAoJywgJy5qb2luKHNvcnRlZF95ZWFycyksIG93bmVyKSkKKworICAg
ICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgYWxsX2Z1bmN0aW9ucyhzZWxmKToKKyAgICAg
ICAgcmVzdWx0ID0gW10KKyAgICAgICAgZm9yIGZ1bmN0aW9ucyBpbiBzZWxmLm9iamVjdHMudmFs
dWVzKCk6CisgICAgICAgICAgICByZXN1bHQuZXh0ZW5kKGZ1bmN0aW9ucykKKworICAgICAgICBy
ZXN1bHQuc29ydCgpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgICMgUHJpdmF0ZSBtZXRo
b2RzLgorCisgICAgZGVmIF9wYXJzZV9jb3B5cmlnaHRfbGluZXMoc2VsZiwgdGV4dCk6CisgICAg
ICAgIGxpY2Vuc2VCbG9jayA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuZmluZGFsbCh0ZXh0KVsw
XQorICAgICAgICBsaWNlbnNlQmxvY2sgPSBsaWNlbnNlQmxvY2tbOmxpY2Vuc2VCbG9jay5pbmRl
eCgiUmVkaXN0cmlidXRpb24iKV0KKworICAgICAgICBjb3B5cmlnaHRMaW5lcyA9IFtdCisgICAg
ICAgIGZvciBsaW5lIGluIGxpY2Vuc2VCbG9jay5zcGxpdCgiXG4iKToKKyAgICAgICAgICAgIGxp
bmUgPSBsaW5lLnJlcGxhY2UoIi8qIiwgIiIpCisgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBs
YWNlKCIqLyIsICIiKQorICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKiIsICIiKQor
ICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiQ29weXJpZ2h0IiwgIiIpCisgICAgICAg
ICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJjb3B5cmlnaHQiLCAiIikKKyAgICAgICAgICAgIGxp
bmUgPSBsaW5lLnJlcGxhY2UoIihDKSIsICIiKQorICAgICAgICAgICAgbGluZSA9IGxpbmUucmVw
bGFjZSgiKGMpIiwgIiIpCisgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpOworCisgICAg
ICAgICAgICBpZiBsZW4obGluZSkgPT0gMDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisg
ICAgICAgICAgICBjb3B5cmlnaHRMaW5lcy5hcHBlbmQobGluZSkKKyAgICAgICAgCisgICAgICAg
IHJldHVybiBjb3B5cmlnaHRMaW5lcworCisgICAgZGVmIF9wYXJzZV9mdW5jdGlvbnMoc2VsZiwg
dGV4dCk6CisgICAgICAgIHRleHQgPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiLyoqLyIs
IHNpbmdsZUxpbmVDb21tZW50UmVnRXhwLnN1YigiLy9cbiIsIHRleHQpKQorCisgICAgICAgIG1h
dGNoZXMgPSBbZnVuYyBmb3IgZnVuYyBpbiBmdW5jdGlvbkhlYWRSZWdFeHAuZmluZGl0ZXIodGV4
dCldCisgICAgICAgIGZ1bmN0aW9uQm91bmRzID0gW10KKyAgICAgICAgc3RhcnQgPSAwCisgICAg
ICAgIGVuZCA9IDAKKyAgICAgICAgZm9yIG1hdGNoIGluIG1hdGNoZXM6CisgICAgICAgICAgICBz
dGFydCA9IG1hdGNoLnN0YXJ0KCkKKyAgICAgICAgICAgIGlmIHN0YXJ0IDwgZW5kOgorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBlbmQgPSBtYXRjaC5lbmQoKQorICAgICAg
ICAgICAgd2hpbGUgdGV4dFtlbmRdICE9ICd7JzoKKyAgICAgICAgICAgICAgICBlbmQgPSBlbmQg
KyAxCisgICAgICAgICAgICBkZXB0aCA9IDEKKyAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAg
ICAgICAgICAgIHdoaWxlIGRlcHRoID4gMDoKKyAgICAgICAgICAgICAgICBpZiB0ZXh0W2VuZF0g
PT0gJ3snOgorICAgICAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRoICsgMQorICAgICAgICAg
ICAgICAgIGVsaWYgdGV4dFtlbmRdID09ICd9JzoKKyAgICAgICAgICAgICAgICAgICAgZGVwdGgg
PSBkZXB0aCAtIDEKKyAgICAgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAgICBm
dW5jdGlvbkJvdW5kcy5hcHBlbmQoKHN0YXJ0LCBlbmQpKQorCisgICAgICAgIGZ1bmN0aW9uU3Ry
aW5ncyA9IFt0ZXh0W3N0YXJ0OmVuZF0uc3RyaXAoKSBmb3IgKHN0YXJ0LCBlbmQpIGluIGZ1bmN0
aW9uQm91bmRzXQorICAgICAgICByZXR1cm4gbWFwKEZ1bmN0aW9uLmZyb21TdHJpbmcsIGZ1bmN0
aW9uU3RyaW5ncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvc2NyaXB0cy9j
b2RlZ2VuL2J1aWx0aW5zX3RlbXBsYXRlcy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9zY3Jp
cHRzL2NvZGVnZW4vYnVpbHRpbnNfdGVtcGxhdGVzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiOTQ0MDBkOTRh
NDQ2NDJmYWU0NTY5MDZmMmIyYWM4YjY0NWM4ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvc2NyaXB0cy9jb2RlZ2VuL2J1aWx0aW5zX3RlbXBsYXRlcy5weQpAQCAt
MCwwICsxLDEwMSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIEJ1aWx0aW5zIGdlbmVyYXRvciB0ZW1wbGF0ZXMsIHdo
aWNoIGNhbiBiZSBmaWxsZWQgd2l0aCBzdHJpbmcuVGVtcGxhdGUuCisKK2NsYXNzIEJ1aWx0aW5z
R2VuZXJhdG9yVGVtcGxhdGVzOgorCisgICAgTGljZW5zZVRleHQgPSAoCisgICAgIiIiUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKK2FyZSBtZXQ6CisxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKK0FORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCitCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCitDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCitJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
K0FSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKK1RIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIikKKwor
ICAgIERvTm90RWRpdFdhcm5pbmcgPSAoCisgICAgIiIiLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxF
LiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9y
CisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvc2NyaXB0
cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weSIiIikKKworICAgIEhlYWRlclByZWx1ZGUgPSAoCisg
ICAgIiIiI2lmbmRlZiBKU0NCdWlsdGluc19oCisjZGVmaW5lIEpTQ0J1aWx0aW5zX2giIiIpCisK
KyAgICBIZWFkZXJQb3N0bHVkZSA9ICgKKyAgICAiIiJ9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIEpTQ0J1aWx0aW5zX2gKKyIiIikKKworICAgIEltcGxlbWVudGF0aW9uUHJlbHVkZSA9
ICgKKyIiIiNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisK
KyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgi
CisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFj
ZSAke25hbWVzcGFjZX0geyIiIikKKworICAgIEltcGxlbWVudGF0aW9uUG9zdGx1ZGUgPSAoCisg
ICAgIiIifSAvLyBuYW1lc3BhY2UgJHtuYW1lc3BhY2V9CisiIiIpCisKKyAgICBIZWFkZXJTdGF0
aWNNYWNyb3MgPSAoCisgICAgIiIiI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNv
ZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCisgICAgSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCitKU0NfRk9SRUFD
SF9CVUlMVElOKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlM
VElOX0dFTkVSQVRPUgorCisjZGVmaW5lIEpTQ19CVUlMVElOX0VYSVNUUyhuYW1lKSBkZWZpbmVk
IEpTQ19CVUlMVElOXyAjIyBuYW1lIiIiKQorCisgICAgSW1wbGVtZW50YXRpb25TdGF0aWNNYWNy
b3MgPSAoCisgICAgIiIiCisjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFt
ZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCit7XFwKKyAgICByZXR1cm4g
dm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0s
IHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyBcCit9CitKU0Nf
Rk9SRUFDSF9CVUlMVElOKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVf
QlVJTFRJTl9HRU5FUkFUT1IKKyIiIikKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2J1
aWx0aW5zX2NvbWJpbmVkX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaGVhZGVyLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI0NjgzZTU4ZTJhNWFhYWM5ZDBhZjkxN2Y3ZjcyMjEyZjdkYWZiZTgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2J1aWx0
aW5zX2NvbWJpbmVkX2hlYWRlci5weQpAQCAtMCwwICsxLDE1NCBAQAorIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgcmUKK2ltcG9ydCBzdHJpbmcKK2Zy
b20gc3RyaW5nIGltcG9ydCBUZW1wbGF0ZQorCitmcm9tIGJ1aWx0aW5zX2dlbmVyYXRvciBpbXBv
cnQgQnVpbHRpbnNHZW5lcmF0b3IKK2Zyb20gYnVpbHRpbnNfdGVtcGxhdGVzIGltcG9ydCBCdWls
dGluc0dlbmVyYXRvclRlbXBsYXRlcyBhcyBUZW1wbGF0ZXMKKworbG9nID0gbG9nZ2luZy5nZXRM
b2dnZXIoJ2dsb2JhbCcpCisKKworY2xhc3MgQnVpbHRpbnNDb21iaW5lZEhlYWRlckdlbmVyYXRv
cihCdWlsdGluc0dlbmVyYXRvcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZGVsKToKKyAg
ICAgICAgQnVpbHRpbnNHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWwpCisKKyAgICBkZWYg
b3V0cHV0X2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gIkpTQ0J1aWx0aW5zLmgiCisK
KyAgICBkZWYgZ2VuZXJhdGVfb3V0cHV0KHNlbGYpOgorICAgICAgICBhcmdzID0geworICAgICAg
ICAgICAgJ25hbWVzcGFjZSc6IHNlbGYubW9kZWwoKS5uYW1lc3BhY2UKKyAgICAgICAgfQorCisg
ICAgICAgIHNlY3Rpb25zID0gW10KKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJh
dGVfbGljZW5zZSgpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVz
LkRvTm90RWRpdFdhcm5pbmcpLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFw
cGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuSGVhZGVyUHJlbHVkZSkuc3Vic3RpdHV0ZShhcmdzKSkK
KyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlv
bnMoKSkKKyAgICAgICAgZm9yIG9iaiwgZnVuY3Rpb25zIGluIHNlbGYubW9kZWwoKS5vYmplY3Rz
Lml0ZW1zKCk6CisgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9zZWN0
aW9uX2Zvcl9vYmplY3Qob2JqLCBmdW5jdGlvbnMpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQo
c2VsZi5nZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX3RhYmxlX21hY3JvKCkpCisgICAgICAgIHNl
Y3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfbmFtZV9tYWNybygp
KQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkhlYWRlclN0YXRp
Y01hY3Jvcykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBs
YXRlKFRlbXBsYXRlcy5IZWFkZXJQb3N0bHVkZSkuc3Vic3RpdHV0ZShhcmdzKSkKKworICAgICAg
ICByZXR1cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMpCisKKyAgICBkZWYgZ2VuZXJhdGVfZm9yd2Fy
ZF9kZWNsYXJhdGlvbnMoc2VsZik6CisgICAgICAgIHJldHVybiAiIiJuYW1lc3BhY2UgSlNDIHsK
K2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK30KKworbmFtZXNwYWNlICVzIHsiIiIgJSBzZWxm
Lm1vZGVsKCkubmFtZXNwYWNlCisKKyAgICBkZWYgZ2VuZXJhdGVfc2VjdGlvbl9mb3Jfb2JqZWN0
KHNlbGYsIG9iaiwgZnVuY3Rpb25zKToKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBsaW5l
cy5hcHBlbmQoJy8qICVzICovJyAlIG9iaikKKyAgICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2Vu
ZXJhdGVfZXh0ZXJuc19mb3Jfb2JqZWN0KG9iaiwgZnVuY3Rpb25zKSkKKyAgICAgICAgbGluZXMu
YXBwZW5kKCIiKQorICAgICAgICBsaW5lcy5leHRlbmQoc2VsZi5nZW5lcmF0ZV9tYWNyb3NfZm9y
X29iamVjdChvYmosIGZ1bmN0aW9ucykpCisgICAgICAgIGxpbmVzLmFwcGVuZCgiIikKKyAgICAg
ICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2VuZXJhdGVfZGVmaW5lc19mb3Jfb2JqZWN0KG9iaiwgZnVu
Y3Rpb25zKSkKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKKworICAgIGRlZiBnZW5l
cmF0ZV9leHRlcm5zX2Zvcl9vYmplY3Qoc2VsZiwgb2JqLCBmdW5jdGlvbnMpOgorICAgICAgICBs
aW5lcyA9IFtdCisKKyAgICAgICAgZm9yIGZ1bmN0aW9uIGluIGZ1bmN0aW9uczoKKyAgICAgICAg
ICAgIGZ1bmN0aW9uX2FyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ2NvZGVOYW1lJzogZnVuY3Rp
b24ubWFuZ2xlZE5hbWVGb3JDb2RlKCkKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGlu
ZXMuYXBwZW5kKCIiImV4dGVybiBjb25zdCBjaGFyKiBzXyUoY29kZU5hbWUpczsKK2V4dGVybiBj
b25zdCBpbnQgc18lKGNvZGVOYW1lKXNMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5IHNfJShjb2RlTmFtZSlzQ29uc3RydWN0QWJpbGl0eTsiIiIgJSBmdW5jdGlvbl9h
cmdzKQorCisgICAgICAgIHJldHVybiBsaW5lcworCisgICAgZGVmIGdlbmVyYXRlX21hY3Jvc19m
b3Jfb2JqZWN0KHNlbGYsIG9iaiwgZnVuY3Rpb25zKToKKyAgICAgICAgYXJncyA9IHsKKyAgICAg
ICAgICAgICdwcmVmaXgnOiBzZWxmLm1vZGVsKCkubWFjcm9fcHJlZml4LAorICAgICAgICAgICAg
J29iamVjdE1hY3JvJzogb2JqLnJlcGxhY2UoJy4nLCAnXycpLnVwcGVyKCkKKyAgICAgICAgfQor
CisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCIjZGVmaW5lICUocHJl
Zml4KXNfRk9SRUFDSF8lKG9iamVjdE1hY3JvKXNfQlVJTFRJTihtYWNybykgXFwiICUgYXJncykK
KyAgICAgICAgZm9yIGZ1bmN0aW9uIGluIGZ1bmN0aW9uczoKKyAgICAgICAgICAgIGZ1bmN0aW9u
X2FyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ2Z1bmNOYW1lJzogZnVuY3Rpb24ubmFtZSwKKyAg
ICAgICAgICAgICAgICAnbWFuZ2xlZE5hbWUnOiBmdW5jdGlvbi5tYW5nbGVkTmFtZSgpLAorICAg
ICAgICAgICAgICAgICdwYXJhbUNvdW50JzogbGVuKGZ1bmN0aW9uLnBhcmFtZXRlcnMpCisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiICAgIG1hY3JvKCUoZnVuY05h
bWUpcywgJShtYW5nbGVkTmFtZSlzLCAlKHBhcmFtQ291bnQpZCkgXFwiICUgZnVuY3Rpb25fYXJn
cykKKyAgICAgICAgcmV0dXJuIGxpbmVzCisKKyAgICBkZWYgZ2VuZXJhdGVfZGVmaW5lc19mb3Jf
b2JqZWN0KHNlbGYsIG9iaiwgZnVuY3Rpb25zKToKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAg
ICBmb3IgZnVuY3Rpb24gaW4gZnVuY3Rpb25zOgorICAgICAgICAgICAgYXJncyA9IHsKKyAgICAg
ICAgICAgICAgICAncHJlZml4Jzogc2VsZi5tb2RlbCgpLm1hY3JvX3ByZWZpeCwKKyAgICAgICAg
ICAgICAgICAnbWFuZ2xlZE5hbWUnOiBmdW5jdGlvbi5tYW5nbGVkTmFtZSgpLnVwcGVyKCksCisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiNkZWZpbmUgJShwcmVmaXgp
c19CVUlMVElOXyUobWFuZ2xlZE5hbWUpcyAxIiAlIGFyZ3MpCisKKyAgICAgICAgcmV0dXJuIGxp
bmVzCisKKyAgICBkZWYgZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV90YWJsZV9tYWNybyhzZWxm
KToKKyAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICdwcmVmaXgnOiBzZWxmLm1vZGVsKCku
bWFjcm9fcHJlZml4LAorICAgICAgICB9CisKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBs
aW5lcy5hcHBlbmQoIiNkZWZpbmUgJShwcmVmaXgpc19GT1JFQUNIX0JVSUxUSU4obWFjcm8pIFxc
IiAlIGFyZ3MpCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBzZWxmLm1vZGVsKCkuYWxsX2Z1bmN0
aW9ucygpOgorICAgICAgICAgICAgZnVuY3Rpb25fYXJncyA9IHsKKyAgICAgICAgICAgICAgICAn
ZnVuY05hbWUnOiBmdW5jdGlvbi5uYW1lLAorICAgICAgICAgICAgICAgICdjb2RlTmFtZSc6IGZ1
bmN0aW9uLm1hbmdsZWROYW1lRm9yQ29kZSgpCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGxpbmVzLmFwcGVuZCgiICAgIG1hY3JvKCUoY29kZU5hbWUpcywgJShmdW5jTmFtZSlzLCBzXyUo
Y29kZU5hbWUpc0xlbmd0aCkgXFwiICUgZnVuY3Rpb25fYXJncykKKyAgICAgICAgcmV0dXJuICdc
bicuam9pbihsaW5lcykKKworICAgIGRlZiBnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX25hbWVf
bWFjcm8oc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAncHJlZml4Jzogc2Vs
Zi5tb2RlbCgpLm1hY3JvX3ByZWZpeCwKKyAgICAgICAgfQorCisgICAgICAgIGxpbmVzID0gW10K
KyAgICAgICAgbGluZXMuYXBwZW5kKCIjZGVmaW5lICUocHJlZml4KXNfRk9SRUFDSF9CVUlMVElO
X0ZVTkNUSU9OX05BTUUobWFjcm8pIFxcIiAlIGFyZ3MpCisgICAgICAgIGZvciBmdW5jdGlvbiBp
biBzZWxmLm1vZGVsKCkuYWxsX2Z1bmN0aW9ucygpOgorICAgICAgICAgICAgZnVuY3Rpb25fYXJn
cyA9IHsKKyAgICAgICAgICAgICAgICAnZnVuY05hbWUnOiBmdW5jdGlvbi5uYW1lLAorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiAgICBtYWNybyglKGZ1bmNOYW1l
KXMpIFxcIiAlIGZ1bmN0aW9uX2FyZ3MpCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvc2NyaXB0cy9jb2RlZ2VuL2dlbmVy
YXRlX2J1aWx0aW5zX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1l
bnRhdGlvbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OGUwODg1ZDJhYzRlYTA4NzAwODk0NjgxOWUzOWEyZTUx
MWMyOWViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3NjcmlwdHMv
Y29kZWdlbi9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weQpAQCAt
MCwwICsxLDkwIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IChjKSAy
MDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChj
KSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworaW1wb3J0IGxvZ2dpbmcK
K2ltcG9ydCByZQoraW1wb3J0IHN0cmluZworZnJvbSBzdHJpbmcgaW1wb3J0IFRlbXBsYXRlCitp
bXBvcnQganNvbgorCitmcm9tIGJ1aWx0aW5zX2dlbmVyYXRvciBpbXBvcnQgQnVpbHRpbnNHZW5l
cmF0b3IsIHVjZmlyc3QKK2Zyb20gYnVpbHRpbnNfdGVtcGxhdGVzIGltcG9ydCBCdWlsdGluc0dl
bmVyYXRvclRlbXBsYXRlcyBhcyBUZW1wbGF0ZXMKKworbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIo
J2dsb2JhbCcpCisKKworY2xhc3MgQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJh
dG9yKEJ1aWx0aW5zR2VuZXJhdG9yKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZWwpOgor
ICAgICAgICBCdWlsdGluc0dlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBtb2RlbCkKKworICAgIGRl
ZiBvdXRwdXRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiAiSlNDQnVpbHRpbnMuY3Bw
IgorCisgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKKyAgICAgICAgYXJncyA9IHsKKyAg
ICAgICAgICAgICduYW1lc3BhY2UnOiBzZWxmLm1vZGVsKCkubmFtZXNwYWNlCisgICAgICAgIH0K
KworICAgICAgICBzZWN0aW9ucyA9IFtdCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdl
bmVyYXRlX2xpY2Vuc2UoKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBs
YXRlcy5Eb05vdEVkaXRXYXJuaW5nKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9u
cy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkltcGxlbWVudGF0aW9uUHJlbHVkZSkuc3Vic3Rp
dHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuZXh0ZW5kKHNlbGYuZ2VuZXJhdGVfZW1iZWRk
ZWRfY29kZV9zdHJpbmdfc2VjdGlvbnMoKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBs
YXRlKFRlbXBsYXRlcy5JbXBsZW1lbnRhdGlvblN0YXRpY01hY3Jvcykuc3Vic3RpdHV0ZShhcmdz
KSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5JbXBsZW1lbnRh
dGlvblBvc3RsdWRlKS5zdWJzdGl0dXRlKGFyZ3MpKQorCisgICAgICAgIHJldHVybiAiXG5cbiIu
am9pbihzZWN0aW9ucykKKworICAgIGRlZiBnZW5lcmF0ZV9lbWJlZGRlZF9jb2RlX3N0cmluZ19z
ZWN0aW9ucyhzZWxmKToKKyAgICAgICAgc3Vic2VjdGlvbnMgPSBbXQorICAgICAgICBmb3IgZnVu
Y3Rpb24gaW4gc2VsZi5tb2RlbCgpLmFsbF9mdW5jdGlvbnMoKToKKyAgICAgICAgICAgIHRleHQg
PSBmdW5jdGlvbi5zb3VyY2UKKyAgICAgICAgICAgICMgV3JhcCBpdCBpbiBwYXJlbnMgdG8gYXZv
aWQgYWRkaW5nIHRvIGdsb2JhbCBzY29wZS4KKyAgICAgICAgICAgIHRleHQgPSAiKGZ1bmN0aW9u
ICIgKyB0ZXh0W3RleHQuaW5kZXgoIigiKTpdICsgIikiCisgICAgICAgICAgICAjIExhenkgd2F5
IHRvIGVzY2FwZSBxdW90ZXMsIEkgdGhpbms/CisgICAgICAgICAgICB0ZXh0TGluZXMgPSBqc29u
LmR1bXBzKHRleHQpWzE6LTFdLnNwbGl0KCJcXG4iKQorICAgICAgICAgICAgIyBUaGlzIGxvb2tz
IHNjYXJ5IGJlY2F1c2Ugd2UgbmVlZCB0aGUgSlMgc291cmNlIGl0c2VsZiB0byBoYXZlIG5ld2xp
bmVzLgorICAgICAgICAgICAgZW1iZWRkZWRTb3VyY2UgPSAnXG4nLmpvaW4oWycgICAiJXNcXG4i
IFxcJyAlIGxpbmUgZm9yIGxpbmUgaW4gdGV4dExpbmVzXSkKKworICAgICAgICAgICAgY29uc3Ry
dWN0QWJpbGl0eSA9ICJDYW5ub3RDb25zdHJ1Y3QiCisgICAgICAgICAgICBpZiBmdW5jdGlvbi5p
c0NvbnN0cnVjdG9yOgorICAgICAgICAgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSAiQ2FuQ29u
c3RydWN0IgorCisgICAgICAgICAgICBhcmdzID0geworICAgICAgICAgICAgICAgICdjb2RlTmFt
ZSc6IGZ1bmN0aW9uLm1hbmdsZWROYW1lRm9yQ29kZSgpLAorICAgICAgICAgICAgICAgICdlbWJl
ZGRlZFNvdXJjZSc6IGVtYmVkZGVkU291cmNlLAorICAgICAgICAgICAgICAgICdlbWJlZGRlZFNv
dXJjZUxlbmd0aCc6IGxlbihlbWJlZGRlZFNvdXJjZSkgKyAxLAorICAgICAgICAgICAgICAgICdj
YW5Db25zdHJ1Y3QnOiBjb25zdHJ1Y3RBYmlsaXR5CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGxpbmVzID0gW10KKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiY29uc3QgSlNDOjpDb25z
dHJ1Y3RBYmlsaXR5IHNfJShjb2RlTmFtZSlzQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3Ry
dWN0QWJpbGl0eTo6JShjYW5Db25zdHJ1Y3QpczsiICUgYXJncyk7CisgICAgICAgICAgICBsaW5l
cy5hcHBlbmQoImNvbnN0IGludCBzXyUoY29kZU5hbWUpc0xlbmd0aCA9ICUoZW1iZWRkZWRTb3Vy
Y2VMZW5ndGgpZDsiICUgYXJncyk7CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoImNvbnN0IGNo
YXIqIHNfJShjb2RlTmFtZSlzID1cbiUoZW1iZWRkZWRTb3VyY2Upc1xuOyIgJSBhcmdzKTsKKyAg
ICAgICAgICAgIHN1YnNlY3Rpb25zLmFwcGVuZCgnXG4nLmpvaW4obGluZXMpKQorCisgICAgICAg
IHJldHVybiBzdWJzZWN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Nj
cmlwdHMvY29kZWdlbi9sYXp5d3JpdGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Njcmlw
dHMvY29kZWdlbi9sYXp5d3JpdGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwMWZhNDNkZDQyZDg4MmRkMmZl
MWRkNTY1ZjdkNmUxODllNjMxNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvc2NyaXB0cy9jb2RlZ2VuL2xhenl3cml0ZXIucHkKQEAgLTAsMCArMSw1NiBAQAorIyEv
dXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworIyBBIHdyaXRlciB0aGF0IG9ubHkgdXBkYXRlcyBmaWxlIGlmIGl0IGFjdHVhbGx5IGNoYW5n
ZWQuCitjbGFzcyBMYXp5RmlsZVdyaXRlcjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZXBh
dGgsIGZvcmNlX291dHB1dCk6CisgICAgICAgIHNlbGYuX2ZpbGVwYXRoID0gZmlsZXBhdGgKKyAg
ICAgICAgc2VsZi5fb3V0cHV0ID0gIiIKKyAgICAgICAgc2VsZi5mb3JjZV9vdXRwdXQgPSBmb3Jj
ZV9vdXRwdXQKKworICAgIGRlZiB3cml0ZShzZWxmLCB0ZXh0KToKKyAgICAgICAgc2VsZi5fb3V0
cHV0ICs9IHRleHQKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgdGV4dF9jaGFuZ2Vk
ID0gVHJ1ZQorICAgICAgICBzZWxmLl9vdXRwdXQgPSBzZWxmLl9vdXRwdXQucnN0cmlwKCkgKyAi
XG4iCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgc2VsZi5mb3JjZV9vdXRwdXQ6Cisg
ICAgICAgICAgICAgICAgcmFpc2UKKworICAgICAgICAgICAgcmVhZF9maWxlID0gb3BlbihzZWxm
Ll9maWxlcGF0aCwgInIiKQorICAgICAgICAgICAgb2xkX3RleHQgPSByZWFkX2ZpbGUucmVhZCgp
CisgICAgICAgICAgICByZWFkX2ZpbGUuY2xvc2UoKQorICAgICAgICAgICAgdGV4dF9jaGFuZ2Vk
ID0gb2xkX3RleHQgIT0gc2VsZi5fb3V0cHV0CisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAg
ICMgSWdub3JlLCBqdXN0IG92ZXJ3cml0ZSBieSBkZWZhdWx0CisgICAgICAgICAgICBwYXNzCisK
KyAgICAgICAgaWYgdGV4dF9jaGFuZ2VkIG9yIHNlbGYuZm9yY2Vfb3V0cHV0OgorICAgICAgICAg
ICAgb3V0X2ZpbGUgPSBvcGVuKHNlbGYuX2ZpbGVwYXRoLCAidyIpCisgICAgICAgICAgICBvdXRf
ZmlsZS53cml0ZShzZWxmLl9vdXRwdXQpCisgICAgICAgICAgICBvdXRfZmlsZS5jbG9zZSgpClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvc2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjMxMmEzMWM1
N2M3MmUzMGRjZWEwYzZiMGY3ZjA4ZWJiYWIyY2VkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKQEAgLTAsMCAr
MSwxMjYgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIw
MTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBUaGlzIHNjcmlwdCBnZW5lcmF0
ZXMgQysrIGJpbmRpbmdzIGZvciBKYXZhU2NyaXB0IGJ1aWx0aW5zLgorIyBHZW5lcmF0b3JzIGZv
ciBpbmRpdmlkdWFsIGZpbGVzIGFyZSBsb2NhdGVkIGluIHRoZSBjb2RlZ2VuLyBkaXJlY3Rvcnku
CisKK2ltcG9ydCBmbm1hdGNoCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9wdHBhcnNlCitpbXBv
cnQgb3MKKworbG9nZ2luZy5iYXNpY0NvbmZpZyhmb3JtYXQ9JyUobGV2ZWxuYW1lKXM6ICUobWVz
c2FnZSlzJywgbGV2ZWw9bG9nZ2luZy5FUlJPUikKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdn
bG9iYWwnKQorCitmcm9tIGNvZGVnZW4gaW1wb3J0ICoKKworIyBGSVhNRTogaWYgdGhpcyBzY3Jp
cHQgaXMgdXNlZCBmcm9tIFdlYkNvcmUsIHdlIHdpbGwgbmVlZCB0byBkdXBsaWNhdGUKKyMgdGhl
IGNvbnRlbnRzIG9mIGNvZGVnZW4vX19pbml0X18ucHkgdG8gaGVyZSBzaW5jZSBzY3JpcHRzIGNv
cGllZCB0bworIyBwcml2YXRlIGhlYWRlcnMgaGF2ZSB0aGVpciBkaXJlY3RvcmllcyBmbGF0dGVu
ZWQuCisKK2RlZiBnZW5lcmF0ZV9iaW5kaW5nc19mb3JfYnVpbHRpbnNfZmlsZXMoYnVpbHRpbnNf
ZmlsZXM9W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1
dF9wYXRoPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h
Y3JvX3ByZWZpeD0iIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bmFtZXNwYWNlPSIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
b3JjZV9vdXRwdXQ9RmFsc2UpOgorCisgICAgbW9kZWwgPSBidWlsdGluc19tb2RlbC5CdWlsdGlu
cyhuYW1lc3BhY2U9bmFtZXNwYWNlLCBtYWNyb19wcmVmaXg9bWFjcm9fcHJlZml4KQorICAgIGZv
ciBmaWxlcGF0aCBpbiBidWlsdGluc19maWxlczoKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVwYXRo
LCAiciIpIGFzIGZpbGU6CisgICAgICAgICAgICBmaWxlX3RleHQgPSBmaWxlLnJlYWQoKQorICAg
ICAgICAgICAgZmlsZV9uYW1lID0gb3MucGF0aC5iYXNlbmFtZShmaWxlcGF0aCkKKyAgICAgICAg
ICAgIG1vZGVsLnBhcnNlX2J1aWx0aW5zX2ZpbGUoZmlsZV9uYW1lLCBmaWxlX3RleHQpCisKKyAg
ICBnZW5lcmF0b3JzID0gW10KKyAgICBnZW5lcmF0b3JzLmFwcGVuZChCdWlsdGluc0NvbWJpbmVk
SGVhZGVyR2VuZXJhdG9yKG1vZGVsKSkKKyAgICBnZW5lcmF0b3JzLmFwcGVuZChCdWlsdGluc0Nv
bWJpbmVkSW1wbGVtZW50YXRpb25HZW5lcmF0b3IobW9kZWwpKQorCisgICAgbG9nLmRlYnVnKCIi
KQorICAgIGxvZy5kZWJ1ZygiR2VuZXJhdGluZyBiaW5kaW5ncyBmb3IgYnVpbHRpbnMuIikKKwor
ICAgIGZvciBnZW5lcmF0b3IgaW4gZ2VuZXJhdG9yczoKKyAgICAgICAgb3V0cHV0X2ZpbGVwYXRo
ID0gb3MucGF0aC5qb2luKG91dHB1dF9wYXRoLCBnZW5lcmF0b3Iub3V0cHV0X2ZpbGVuYW1lKCkp
CisgICAgICAgIGxvZy5kZWJ1ZygiR2VuZXJhdGluZyBvdXRwdXQgZmlsZTogJXMiICUgb3V0cHV0
X2ZpbGVwYXRoKQorICAgICAgICBvdXRwdXQgPSBnZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KCkK
KworICAgICAgICBsb2cuZGVidWcoIi0tLSIpCisgICAgICAgIGxvZy5kZWJ1ZygiXG4iICsgb3V0
cHV0KQorICAgICAgICBsb2cuZGVidWcoIi0tLSIpCisgICAgICAgIG91dHB1dF9maWxlID0gTGF6
eUZpbGVXcml0ZXIob3V0cHV0X2ZpbGVwYXRoLCBmb3JjZV9vdXRwdXQpCisgICAgICAgIG91dHB1
dF9maWxlLndyaXRlKG91dHB1dCkKKyAgICAgICAgb3V0cHV0X2ZpbGUuY2xvc2UoKQorCisKK2lm
IF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgY2xpX3BhcnNlciA9IG9wdHBhcnNlLk9wdGlv
blBhcnNlcih1c2FnZT0idXNhZ2U6ICVwcm9nIFtvcHRpb25zXSBCdWlsdGluMS5qcyBbLCBCdWls
dGluMi5qcywgLi4uXSIpCisgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9uKCItaSIsICItLWlucHV0
LWRpcmVjdG9yeSIsIGhlbHA9IklmIHNwZWNpZmllZCwgZ2VuZXJhdGVzIGJ1aWx0aW5zIGZyb20g
YWxsIEphdmFTY3JpcHQgZmlsZXMgaW4gdGhlIHNwZWNpZmllZCBkaXJlY3RvcnkgaW4gYWRkaXRp
b24gdG8gc3BlY2lmaWMgZmlsZXMgcGFzc2VkIGFzIGFyZ3VtZW50cy4iKQorICAgIGNsaV9wYXJz
ZXIuYWRkX29wdGlvbigiLW8iLCAiLS1vdXRwdXQtZGlyZWN0b3J5IiwgaGVscD0iRGlyZWN0b3J5
IHdoZXJlIGdlbmVyYXRlZCBmaWxlcyBzaG91bGQgYmUgd3JpdHRlbi4iKQorICAgIGNsaV9wYXJz
ZXIuYWRkX29wdGlvbigiLS1wcmVmaXgiLCBkZWZhdWx0PSJKU0MiLCBoZWxwPSJOYW1lc3BhY2lu
ZyBwcmVmaXggdG8gdXNlIGZvciBwdWJsaWMgbWFjcm9zLiIpCisgICAgY2xpX3BhcnNlci5hZGRf
b3B0aW9uKCItLW5hbWVzcGFjZSIsIGRlZmF1bHQ9IkpTQyIsIGhlbHA9Ik5hbWVzcGFjZSB0byB1
c2Ugd2l0aGluIGdlbmVyYXRlZCBDKysgZmlsZXMuIikKKyAgICBjbGlfcGFyc2VyLmFkZF9vcHRp
b24oIi0tZm9yY2UiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJGb3JjZSBvdXRwdXQgb2Yg
Z2VuZXJhdGVkIHNjcmlwdHMsIGV2ZW4gaWYgbm90aGluZyBjaGFuZ2VkLiIpCisgICAgY2xpX3Bh
cnNlci5hZGRfb3B0aW9uKCItdiIsICItLWRlYnVnIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVs
cD0iTG9nIGV4dHJhIG91dHB1dCBmb3IgZGVidWdnaW5nIHRoZSBnZW5lcmF0b3IgaXRzZWxmLiIp
CisgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9uKCItdCIsICItLXRlc3QiLCBhY3Rpb249InN0b3Jl
X3RydWUiLCBoZWxwPSJFbmFibGUgdGVzdCBtb2RlLiIpCisKKyAgICBhcmdfb3B0aW9ucywgYXJn
X3ZhbHVlcyA9IGNsaV9wYXJzZXIucGFyc2VfYXJncygpCisgICAgaWYgbGVuKGFyZ192YWx1ZXMp
IGlzIDAgYW5kIG5vdCBhcmdfb3B0aW9ucy5pbnB1dF9kaXJlY3Rvcnk6CisgICAgICAgIHJhaXNl
IFBhcnNlRXhjZXB0aW9uKCJBdCBsZWFzdCBvbmUgaW5wdXQgZmlsZSBvciBkaXJlY3RvcnkgZXhw
ZWN0ZWQuIikKKworICAgIGlmIG5vdCBhcmdfb3B0aW9ucy5vdXRwdXRfZGlyZWN0b3J5OgorICAg
ICAgICByYWlzZSBQYXJzZUV4Y2VwdGlvbigiTWlzc2luZyBvdXRwdXQgZGlyZWN0b3J5LiIpCisK
KyAgICBpZiBhcmdfb3B0aW9ucy5kZWJ1ZzoKKyAgICAgICAgbG9nLnNldExldmVsKGxvZ2dpbmcu
REVCVUcpCisKKyAgICBpbnB1dF9maWxlcGF0aHMgPSBhcmdfdmFsdWVzWzpdCisgICAgaWYgYXJn
X29wdGlvbnMuaW5wdXRfZGlyZWN0b3J5OgorICAgICAgICBmb3IgZmlsZXBhdGggaW4gb3MubGlz
dGRpcihhcmdfb3B0aW9ucy5pbnB1dF9kaXJlY3RvcnkpOgorICAgICAgICAgICAgaW5wdXRfZmls
ZXBhdGhzLmFwcGVuZChvcy5wYXRoLmpvaW4oYXJnX29wdGlvbnMuaW5wdXRfZGlyZWN0b3J5LCBm
aWxlcGF0aCkpCisKKyAgICBpbnB1dF9maWxlcGF0aHMgPSBmaWx0ZXIobGFtYmRhIG5hbWU6IGZu
bWF0Y2guZm5tYXRjaChuYW1lLCAnKi5qcycpLCBpbnB1dF9maWxlcGF0aHMpOworCisgICAgb3B0
aW9ucyA9IHsKKyAgICAgICAgJ291dHB1dF9wYXRoJzogYXJnX29wdGlvbnMub3V0cHV0X2RpcmVj
dG9yeSwKKyAgICAgICAgJ21hY3JvX3ByZWZpeCc6IGFyZ19vcHRpb25zLnByZWZpeCwKKyAgICAg
ICAgJ25hbWVzcGFjZSc6IGFyZ19vcHRpb25zLm5hbWVzcGFjZSwKKyAgICB9CisKKyAgICBsb2cu
ZGVidWcoIkdlbmVyYXRpbmcgY29kZSBmb3IgYnVpbHRpbnMuIikKKyAgICBsb2cuZGVidWcoIlBh
cnNlZCBvcHRpb25zOiIpCisgICAgZm9yIG9wdGlvbiwgdmFsdWUgaW4gb3B0aW9ucy5pdGVtcygp
OgorICAgICAgICBsb2cuZGVidWcoIiAgICAlczogJXMiICUgKG9wdGlvbiwgdmFsdWUpKQorICAg
IGxvZy5kZWJ1ZygiIikKKyAgICBsb2cuZGVidWcoIklucHV0IGZpbGVzOiIpCisgICAgZm9yIGZp
bGVwYXRoIGluIGlucHV0X2ZpbGVwYXRoczoKKyAgICAgICAgbG9nLmRlYnVnKCIgICAgJXMiICUg
ZmlsZXBhdGgpCisgICAgbG9nLmRlYnVnKCIiKQorCisgICAgdHJ5OgorICAgICAgICBnZW5lcmF0
ZV9iaW5kaW5nc19mb3JfYnVpbHRpbnNfZmlsZXMoYnVpbHRpbnNfZmlsZXM9aW5wdXRfZmlsZXBh
dGhzLCAqKm9wdGlvbnMpCisgICAgZXhjZXB0IFBhcnNlRXhjZXB0aW9uIGFzIGU6CisgICAgICAg
IGlmIGFyZ19vcHRpb25zLnRlc3Q6CisgICAgICAgICAgICBsb2cuZXJyb3IoZS5tZXNzYWdlKQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgICMgRm9yY2UgdGhlIGJ1aWxkIHRvIGZh
aWwuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262803</attachid>
            <date>2015-10-09 17:16:27 -0700</date>
            <delta_ts>2015-10-12 09:10:03 -0700</delta_ts>
            <desc>WIP v2</desc>
            <filename>bug-149929-20151009171553.patch</filename>
            <type>text/plain</type>
            <size>41742</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwODEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ODNmYjE0YzU1OWViODdkNjY0ZDQ1MWRkYjliZmM5MGIyNDk2NGU3Li5hYjVkYjhiYTYxOWVlNGIy
ZThjZjRjNjVmOWE5MmIxZDhlNzM5YjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAxNS0xMC0wOSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXN0cnVjdHVyZSBnZW5lcmF0ZS1qcy1iaW5kaW5ncyBzY3JpcHQgdG8gYmUgbW9k
dWxhciBhbmQgdGVzdGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0OTkyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBzY3JpcHRzL2NvZGVn
ZW4vX19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIHNjcmlwdHMvY29kZWdlbi9idWlsdGlu
c19nZW5lcmF0b3IucHk6IEFkZGVkLgorICAgICAgICAodWNmaXJzdCk6CisgICAgICAgIChCdWls
dGluc0dlbmVyYXRvcik6CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvci5fX2luaXRfXyk6Cisg
ICAgICAgIChCdWlsdGluc0dlbmVyYXRvci5tb2RlbCk6CisgICAgICAgIChCdWlsdGluc0dlbmVy
YXRvci5nZW5lcmF0ZV9saWNlbnNlKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yLmdlbmVy
YXRlX291dHB1dCk6CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvci5vdXRwdXRfZmlsZW5hbWUp
OgorICAgICAgICAqIHNjcmlwdHMvY29kZWdlbi9idWlsdGluc19tb2RlbC5weTogQWRkZWQuCisg
ICAgICAgIChsY2ZpcnN0KToKKyAgICAgICAgKFBhcnNlRXhjZXB0aW9uKToKKyAgICAgICAgKEZ1
bmN0aW9uKToKKyAgICAgICAgKEZ1bmN0aW9uLl9faW5pdF9fKToKKyAgICAgICAgKEZ1bmN0aW9u
LmZyb21TdHJpbmcpOgorICAgICAgICAoRnVuY3Rpb24ubWFuZ2xlZE5hbWUpOgorICAgICAgICAo
RnVuY3Rpb24ubWFuZ2xlZE5hbWVGb3JDb2RlKToKKyAgICAgICAgKEZ1bmN0aW9uLl9fc3RyX18p
OgorICAgICAgICAoQnVpbHRpbnMpOgorICAgICAgICAoQnVpbHRpbnMuX19pbml0X18pOgorICAg
ICAgICAoQnVpbHRpbnMucGFyc2VfYnVpbHRpbnNfZmlsZSk6CisgICAgICAgIChCdWlsdGlucy5j
b3B5cmlnaHRzKToKKyAgICAgICAgKEJ1aWx0aW5zLmFsbF9mdW5jdGlvbnMpOgorICAgICAgICAo
QnVpbHRpbnMuX3BhcnNlX2NvcHlyaWdodF9saW5lcyk6CisgICAgICAgIChCdWlsdGlucy5fcGFy
c2VfZnVuY3Rpb25zKToKKyAgICAgICAgKiBzY3JpcHRzL2NvZGVnZW4vYnVpbHRpbnNfdGVtcGxh
dGVzLnB5OiBBZGRlZC4KKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVzKToKKyAg
ICAgICAgKEpTQ0J1aWx0aW5zX2gpOgorICAgICAgICAqIHNjcmlwdHMvY29kZWdlbi9nZW5lcmF0
ZV9idWlsdGluc19jb21iaW5lZF9oZWFkZXIucHk6IEFkZGVkLgorICAgICAgICAoQnVpbHRpbnND
b21iaW5lZEhlYWRlckdlbmVyYXRvcik6CisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSGVhZGVy
R2VuZXJhdG9yLl9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJHZW5l
cmF0b3Iub3V0cHV0X2ZpbGVuYW1lKToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJH
ZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFk
ZXJHZW5lcmF0b3IuZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlvbnMpOgorICAgICAgICAoRnVu
Y3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAgICAgICAgKENvbnN0cnVjdEFiaWxp
dHkpOgorICAgICAgICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3Jfb2JqZWN0KToKKyAgICAgICAgKGdl
bmVyYXRlX2V4dGVybnNfZm9yX29iamVjdCk6CisgICAgICAgIChnZW5lcmF0ZV9tYWNyb3NfZm9y
X29iamVjdCk6CisgICAgICAgIChnZW5lcmF0ZV9kZWZpbmVzX2Zvcl9vYmplY3QpOgorICAgICAg
ICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV90YWJsZV9tYWNybyk6CisgICAgICAgIChnZW5l
cmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX25hbWVfbWFjcm8pOgorICAgICAgICAqIHNjcmlwdHMvY29k
ZWdlbi9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weTogQWRkZWQu
CisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSW1wbGVtZW50YXRpb25HZW5lcmF0b3IpOgorICAg
ICAgICAoQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9faW5pdF9fKToK
KyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5vdXRwdXRf
ZmlsZW5hbWUpOgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJh
dG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSW1wbGVtZW50
YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVfZW1iZWRkZWRfY29kZV9zdHJpbmdfc2VjdGlvbnMpOgor
ICAgICAgICAqIHNjcmlwdHMvY29kZWdlbi9sYXp5d3JpdGVyLnB5OiBBZGRlZC4KKyAgICAgICAg
KExhenlGaWxlV3JpdGVyKToKKyAgICAgICAgKExhenlGaWxlV3JpdGVyLl9faW5pdF9fKToKKyAg
ICAgICAgKExhenlGaWxlV3JpdGVyLndyaXRlKToKKyAgICAgICAgKExhenlGaWxlV3JpdGVyLmNs
b3NlKToKKyAgICAgICAgKiBzY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5OiBBZGRlZC4K
KyAgICAgICAgKGdlbmVyYXRlX2JpbmRpbmdzX2Zvcl9idWlsdGluc19maWxlcyk6CisKIDIwMTUt
MTAtMDkgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMTkwNjk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCmluZGV4IDEwMTVkZGM3Nzk4NzgwZWU5NzI2MjNmNGM4ZThkM2M3NWE5ZTRi
NzEuLjEyZTM0MGI5YzI4MTE4MWNjZTBhZmUxZDUwODE4ZWRiODM2ZTljYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC03MSwxMCArNzEsOSBAQCBhbGwg
OiBcCiAgICAgdWRpczg2X2l0YWIuaCBcCiAgICAgQnl0ZWNvZGVzLmggXAogICAgIEluaXRCeXRl
Y29kZXMuYXNtIFwKLSAgICBKU0NCdWlsdGlucyBcCisgICAgSlNDQnVpbHRpbnMuaCBcCiAjCiAK
LSMgYnVpbHRpbiBmdW5jdGlvbnMKIFBZVEhPTiA9IHB5dGhvbgogUEVSTCA9IHBlcmwKIApAQCAt
ODUsMTUgKzg0LDIwIEBAIGVsc2UKIGVuZGlmCiAjIC0tLS0tLS0tCiAKLS5QSE9OWTogSlNDQnVp
bHRpbnMKLUpTQ0J1aWx0aW5zOiAkKEphdmFTY3JpcHRDb3JlKS9nZW5lcmF0ZS1qcy1idWlsdGlu
cyBKU0NCdWlsdGlucy5oIEpTQ0J1aWx0aW5zLmNwcAotSlNDQnVpbHRpbnMuaDogJChKYXZhU2Ny
aXB0Q29yZSkvZ2VuZXJhdGUtanMtYnVpbHRpbnMgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMg
SlNDQnVpbHRpbnNTb3VyY2VzCi0JJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRl
LWpzLWJ1aWx0aW5zIC0taW5wdXQtZGlyZWN0b3J5ICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5z
IC0tb3V0cHV0ICRACi0KLUpTQ0J1aWx0aW5zLmNwcDogSlNDQnVpbHRpbnMuaAorIyBKYXZhU2Ny
aXB0IGJ1aWx0aW5zLgorCitCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUyA9IFwKKyAgICAkKEph
dmFTY3JpcHRDb3JlKS9zY3JpcHRzL2NvZGVnZW4vX19pbml0X18ucHkgXAorICAgICQoSmF2YVNj
cmlwdENvcmUpL3NjcmlwdHMvY29kZWdlbi9idWlsdGluc19nZW5lcmF0b3IucHkgXAorICAgICQo
SmF2YVNjcmlwdENvcmUpL3NjcmlwdHMvY29kZWdlbi9idWlsdGluc19tb2RlbC5weSBcCisgICAg
JChKYXZhU2NyaXB0Q29yZSkvc2NyaXB0cy9jb2RlZ2VuL2J1aWx0aW5zX3RlbXBsYXRlcy5weSBc
CisgICAgJChKYXZhU2NyaXB0Q29yZSkvc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2J1aWx0aW5z
X2NvbWJpbmVkX2hlYWRlci5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZSkvc2NyaXB0cy9jb2Rl
Z2VuL2dlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5IFwKKyAgICAk
KEphdmFTY3JpcHRDb3JlKS9zY3JpcHRzL2NvZGVnZW4vbGF6eXdyaXRlci5weSBcCisgICAgJChK
YXZhU2NyaXB0Q29yZSkvc2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weSBcCisjCiAKLS5Q
SE9OWTogSlNDQnVpbHRpbnNTb3VyY2VzCi1KU0NCdWlsdGluc1NvdXJjZXM6IFwKK0pTQ19CVUlM
VElOU19TT1VSQ0VTID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0FycmF5Q29u
c3RydWN0b3IuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0FycmF5SXRlcmF0
b3IucHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9BcnJheS5w
cm90b3R5cGUuanMgXApAQCAtMTEwLDggKzExNCwxOSBAQCBKU0NCdWlsdGluc1NvdXJjZXM6IFwK
ICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9SZWZsZWN0T2JqZWN0LmpzIFwKICAgICAk
KEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TdHJpbmdDb25zdHJ1Y3Rvci5qcyBcCiAgICAgJChK
YXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvU3RyaW5nSXRlcmF0b3IucHJvdG90eXBlLmpzIFwKKyAg
ICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9UeXBlZEFycmF5LnByb3RvdHlwZS5qcyBcCiAj
CiAKKyMgVGhlIGNvbWJpbmVkIG91dHB1dCBmaWxlIGRlcGVuZHMgb24gdGhlIHNldCBvZiBidWls
dGlucyBhbmQgdGhlaXIgZmlsZSBjb250ZW50cywgc28gdGhhdAorIyBhZGRpbmcsIG1vZGlmeWlu
Zywgb3IgcmVtb3ZpbmcgYnVpbHRpbnMgd2lsbCB0cmlnZ2VyIHJlZ2VuZXJhdGlvbiBvZiBjb21i
aW5lZCBmaWxlcy4KKworLlBIT05ZOiBmb3JjZQorSW5jbHVkZWRKU0NCdWlsdGlucyA6ICQoSmF2
YVNjcmlwdENvcmUpL1VwZGF0ZUNvbnRlbnRzLnB5IGZvcmNlCisJJChQWVRIT04pICQoSmF2YVNj
cmlwdENvcmUpL1VwZGF0ZUNvbnRlbnRzLnB5ICckKEpTQ19CVUlMVElOU19TT1VSQ0VTKScgJEAK
KworSlNDQnVpbHRpbnMuaDogJChCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUykgJChKU0NfQlVJ
TFRJTlNfU09VUkNFUykgSW5jbHVkZWRKU0NCdWlsdGlucworCSQoUFlUSE9OKSAkKEphdmFTY3Jp
cHRDb3JlKS9zY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5IC0tb3V0cHV0LWRpcmVjdG9y
eSAuIC0tcHJlZml4IEpTQyAtLW5hbWVzcGFjZSBKU0MgJChKU0NfQlVJTFRJTlNfU09VUkNFUykK
KwogIyBsb29rdXAgdGFibGVzIGZvciBjbGFzc2VzCiAKICUubHV0Lmg6IGNyZWF0ZV9oYXNoX3Rh
YmxlICUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvc2NyaXB0cy9jb2Rl
Z2VuL19faW5pdF9fLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3NjcmlwdHMvY29kZWdlbi9f
X2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzExZjc0OTA0NDdlZTI5ZWRiZDgwMTg3YmRiZDg3OTdl
YjY4MjU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3NjcmlwdHMv
Y29kZWdlbi9fX2luaXRfXy5weQpAQCAtMCwwICsxLDkgQEAKKyMgUmVxdWlyZWQgZm9yIFB5dGhv
biB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZSBmaWxlcworCitmcm9tIGJ1aWx0
aW5zX21vZGVsIGltcG9ydCAqCitmcm9tIGJ1aWx0aW5zX3RlbXBsYXRlcyBpbXBvcnQgKgorZnJv
bSBsYXp5d3JpdGVyIGltcG9ydCAqCisKK2Zyb20gYnVpbHRpbnNfZ2VuZXJhdG9yIGltcG9ydCAq
Citmcm9tIGdlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2hlYWRlciBpbXBvcnQgKgorZnJvbSBn
ZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRhdGlvbiBpbXBvcnQgKgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9z
Y3JpcHRzL2NvZGVnZW4vYnVpbHRpbnNfZ2VuZXJhdG9yLnB5IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3NjcmlwdHMvY29kZWdlbi9idWlsdGluc19nZW5lcmF0b3IucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzdl
ODMxNWNiZjdhZmRjYWFlZDhiYTBhNzBhZjIwMzgxYmRhNjljYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9zY3JpcHRzL2NvZGVnZW4vYnVpbHRpbnNfZ2VuZXJhdG9y
LnB5CkBAIC0wLDAgKzEsNzIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmln
aHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5
cmlnaHQgKGMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGxv
Z2dpbmcKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgcmUKK2Zyb20gc3RyaW5nIGltcG9ydCBUZW1w
bGF0ZQorCitmcm9tIGJ1aWx0aW5zX3RlbXBsYXRlcyBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3JU
ZW1wbGF0ZXMgYXMgVGVtcGxhdGVzCisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwn
KQorCisKK2RlZiB1Y2ZpcnN0KHN0cik6CisgICAgcmV0dXJuIHN0cls6MV0udXBwZXIoKSArIHN0
clsxOl0KKworCitjbGFzcyBCdWlsdGluc0dlbmVyYXRvcjoKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbW9kZWwpOgorICAgICAgICBzZWxmLl9tb2RlbCA9IG1vZGVsCisKKyAgICBkZWYgbW9kZWwo
c2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9tb2RlbAorCisgICAgZGVmIGdlbmVyYXRlX2xp
Y2Vuc2Uoc2VsZik6CisgICAgICAgIHJhd19saWNlbnNlID0gVGVtcGxhdGUoVGVtcGxhdGVzLkxp
Y2Vuc2VUZXh0KS5zdWJzdGl0dXRlKE5vbmUpCisgICAgICAgIGNvcHlyaWdodHMgPSBzZWxmLl9t
b2RlbC5jb3B5cmlnaHRzKCkKKyAgICAgICAgY29weXJpZ2h0cy5zb3J0KCkKKworICAgICAgICBs
aWNlbnNlX2Jsb2NrID0gW107CisgICAgICAgIGxpY2Vuc2VfYmxvY2suYXBwZW5kKCIvKiIpCisg
ICAgICAgIGZvciBjb3B5cmlnaHQgaW4gY29weXJpZ2h0czoKKyAgICAgICAgICAgIGxpY2Vuc2Vf
YmxvY2suYXBwZW5kKCIgKiBDb3B5cmlnaHQgKGMpICVzIiAlIGNvcHlyaWdodCkKKyAgICAgICAg
aWYgbGVuKGNvcHlyaWdodHMpID4gMDoKKyAgICAgICAgICAgIGxpY2Vuc2VfYmxvY2suYXBwZW5k
KCIgKiAiKQorCisgICAgICAgIGZvciBsaW5lIGluIHJhd19saWNlbnNlLnNwbGl0KCdcbicpOgor
ICAgICAgICAgICAgbGljZW5zZV9ibG9jay5hcHBlbmQoIiAqICIgKyBsaW5lKQorCisgICAgICAg
IGxpY2Vuc2VfYmxvY2suYXBwZW5kKCIgKi8iKQorCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4o
bGljZW5zZV9ibG9jaykKKworICAgICMgVGhlc2UgbWV0aG9kcyBhcmUgb3ZlcnJpZGRlbiBieSBz
dWJjbGFzc2VzLgorICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6CisgICAgICAgIHBhc3MK
KworICAgIGRlZiBvdXRwdXRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHBhc3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9zY3JpcHRzL2NvZGVnZW4vYnVpbHRpbnNfbW9kZWwu
cHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvc2NyaXB0cy9jb2RlZ2VuL2J1aWx0aW5zX21vZGVs
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmYwOTkxMWI1YzYzNWNlM2UyMmI2ZDFjNmRjNzhhZTE3Y2JlYjc2NzQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvc2NyaXB0cy9jb2RlZ2Vu
L2J1aWx0aW5zX21vZGVsLnB5CkBAIC0wLDAgKzEsMjA5IEBACisjIS91c3IvYmluL2VudiBweXRo
b24KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBsb2dn
aW5nCitpbXBvcnQgcmUKK2ltcG9ydCBvcworCitsb2cgPSBsb2dnaW5nLmdldExvZ2dlcignZ2xv
YmFsJykKKworZGVmIGxjZmlyc3Qoc3RyKToKKyAgICByZXR1cm4gc3RyWzoxXS5sb3dlcigpICsg
c3RyWzE6XQorCisKK2Z1bmN0aW9uSGVhZFJlZ0V4cCA9IHJlLmNvbXBpbGUociIoPzpmdW5jdGlv
bnxjb25zdHJ1Y3RvcilccytcdytccypcKC4qP1wpIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2Z1
bmN0aW9uTmFtZVJlZ0V4cCA9IHJlLmNvbXBpbGUociIoPzpmdW5jdGlvbnxjb25zdHJ1Y3Rvcilc
cysoXHcrKVxzKlwoIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uSXNDb25zdHJ1Y3Rv
clJlZ0V4cCA9IHJlLmNvbXBpbGUociJeY29uc3RydWN0b3IiLCByZS5NVUxUSUxJTkUgfCByZS5T
KQorZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIgPSByZS5jb21waWxlKHIiXig/OmZ1bmN0aW9ufGNv
bnN0cnVjdG9yKVxzKyg/Olx3KylccypcKCgoPzpccypcdyspP1xzKig/OlxzKixccypcdyspKik/
XHMqXCkiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorCittdWx0aWxpbmVDb21tZW50UmVnRXhwID0g
cmUuY29tcGlsZShyIlwvXCouKj9cKlwvIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK3NpbmdsZUxp
bmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXC8uKj9cbiIsIHJlLk1VTFRJTElORSB8
IHJlLlMpCisKKworY2xhc3MgUGFyc2VFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICBwYXNzCisK
KworY2xhc3MgRnVuY3Rpb246CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHNvdXJjZSwg
aXNDb25zdHJ1Y3RvciwgcGFyYW1ldGVycyk6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAg
ICAgICAgc2VsZi5zb3VyY2UgPSBzb3VyY2UKKyAgICAgICAgc2VsZi5pc0NvbnN0cnVjdG9yID0g
aXNDb25zdHJ1Y3RvcgorICAgICAgICBzZWxmLnBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzCisgICAg
ICAgIHNlbGYub2JqZWN0ID0gTm9uZSAgIyBTZXQgYnkgdGhlIG93bmluZyBPYmplY3QKKworICAg
IEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZnJvbVN0cmluZyhmdW5jdGlvblN0cmluZyk6CisgICAg
ICAgIGZ1bmN0aW9uU3RyaW5nID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5zdWIoIiIsIGZ1bmN0
aW9uU3RyaW5nKQorICAgICAgICBmdW5jdGlvbk5hbWUgPSBmdW5jdGlvbk5hbWVSZWdFeHAuZmlu
ZGFsbChmdW5jdGlvblN0cmluZylbMF0KKyAgICAgICAgZnVuY3Rpb25Jc0NvbnN0cnVjdG9yID0g
ZnVuY3Rpb25Jc0NvbnN0cnVjdG9yUmVnRXhwLm1hdGNoKGZ1bmN0aW9uU3RyaW5nKSAhPSBOb25l
CisgICAgICAgIGZ1bmN0aW9uUGFyYW1ldGVycyA9IFtzLnN0cmlwKCkgZm9yIHMgaW4gZnVuY3Rp
b25QYXJhbWV0ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlvblN0cmluZylbMF0uc3BsaXQoJywnKV0K
KyAgICAgICAgaWYgbGVuKGZ1bmN0aW9uUGFyYW1ldGVyc1swXSkgPT0gMDoKKyAgICAgICAgICAg
IGZ1bmN0aW9uUGFyYW1ldGVycyA9IFtdCisKKyAgICAgICAgcmV0dXJuIEZ1bmN0aW9uKGZ1bmN0
aW9uTmFtZSwgZnVuY3Rpb25TdHJpbmcsIGZ1bmN0aW9uSXNDb25zdHJ1Y3RvciwgZnVuY3Rpb25Q
YXJhbWV0ZXJzKQorCisgICAgZGVmIG1hbmdsZWROYW1lKHNlbGYpOgorICAgICAgICBxTmFtZSA9
ICIlcy4lcyIgJSAoc2VsZi5vYmplY3QsIHNlbGYubmFtZSkKKyAgICAgICAgbWFuZ2xlZE5hbWUg
PSAiIgorICAgICAgICBpID0gMAorICAgICAgICB3aGlsZSBpIDwgbGVuKHFOYW1lKToKKyAgICAg
ICAgICAgIGlmIHFOYW1lW2ldID09ICcuJzoKKyAgICAgICAgICAgICAgICBtYW5nbGVkTmFtZSA9
IG1hbmdsZWROYW1lICsgcU5hbWVbaSArIDFdLnVwcGVyKCkKKyAgICAgICAgICAgICAgICBpID0g
aSArIDEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBt
YW5nbGVkTmFtZSArIHFOYW1lW2ldCisgICAgICAgICAgICBpID0gaSArIDEKKyAgICAgICAgaWYg
c2VsZi5pc0NvbnN0cnVjdG9yOgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFt
ZSArICJDb25zdHJ1Y3RvciIKKyAgICAgICAgcmV0dXJuIG1hbmdsZWROYW1lCisKKyAgICBkZWYg
bWFuZ2xlZE5hbWVGb3JDb2RlKHNlbGYpOgorICAgICAgICByZXR1cm4gbGNmaXJzdChzZWxmLm1h
bmdsZWROYW1lKCkpICsgIkNvZGUiCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAg
aW50ZXJmYWNlID0gIiVzKCVzKSIgJSAoc2VsZi5uYW1lLCAnLCAnLmpvaW4oc2VsZi5wYXJhbWV0
ZXJzKSkKKyAgICAgICAgaWYgc2VsZi5pc0NvbnN0cnVjdG9yOgorICAgICAgICAgICAgaW50ZXJm
YWNlID0gaW50ZXJmYWNlICsgIiBbQ29uc3RydWN0b3JdIgorCisgICAgICAgIHJldHVybiBpbnRl
cmZhY2UKKworY2xhc3MgQnVpbHRpbnM6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWVzcGFj
ZT0iIiwgbWFjcm9fcHJlZml4PSIiKToKKyAgICAgICAgc2VsZi5fY29weXJpZ2h0X2xpbmVzID0g
c2V0KCkKKworICAgICAgICBzZWxmLm9iamVjdHMgPSBkaWN0KCkgICMgZnJvbSBvYmplY3RfbmFt
ZSB0byBsaXN0KEZ1bmN0aW9uKQorICAgICAgICBzZWxmLm5hbWVzcGFjZSA9IG5hbWVzcGFjZQor
ICAgICAgICBzZWxmLm1hY3JvX3ByZWZpeCA9IG1hY3JvX3ByZWZpeAorICAgICAgICBsb2cuZGVi
dWcoIkNyZWF0ZWQgbmV3IEJ1aWx0aW5zIG1vZGVsLiIpCisKKworICAgIGRlZiBwYXJzZV9idWls
dGluc19maWxlKHNlbGYsIGZpbGVuYW1lLCB0ZXh0KToKKyAgICAgICAgbG9nLmRlYnVnKCJQYXJz
aW5nIGJ1aWx0aW5zIGZpbGU6ICVzIiAlIGZpbGVuYW1lKQorCisgICAgICAgIHBhcnNlZF9jb3B5
cmlnaHRzID0gc2V0KHNlbGYuX3BhcnNlX2NvcHlyaWdodF9saW5lcyh0ZXh0KSkKKyAgICAgICAg
c2VsZi5fY29weXJpZ2h0X2xpbmVzID0gc2VsZi5fY29weXJpZ2h0X2xpbmVzLnVuaW9uKHBhcnNl
ZF9jb3B5cmlnaHRzKQorCisgICAgICAgIGxvZy5kZWJ1ZygiRm91bmQgY29weXJpZ2h0IGxpbmVz
OiIpCisgICAgICAgIGZvciBsaW5lIGluIHNlbGYuX2NvcHlyaWdodF9saW5lczoKKyAgICAgICAg
ICAgIGxvZy5kZWJ1ZyhsaW5lKTsKKyAgICAgICAgbG9nLmRlYnVnKCIiKQorCisgICAgICAgIG9i
amVjdF9uYW1lLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoZmlsZW5h
bWUpKQorICAgICAgICBsb2cuZGVidWcoIkNyZWF0aW5nIG9iamVjdDogJXMiICUgb2JqZWN0X25h
bWUpCisKKyAgICAgICAgcGFyc2VkX2Z1bmN0aW9ucyA9IHNlbGYuX3BhcnNlX2Z1bmN0aW9ucyh0
ZXh0KQorICAgICAgICBmb3IgZnVuY3Rpb24gaW4gcGFyc2VkX2Z1bmN0aW9uczoKKyAgICAgICAg
ICAgIGZ1bmN0aW9uLm9iamVjdCA9IG9iamVjdF9uYW1lCisgICAgICAgIHNlbGYub2JqZWN0c1tv
YmplY3RfbmFtZV0gPSBwYXJzZWRfZnVuY3Rpb25zCisKKyAgICAgICAgbG9nLmRlYnVnKCJGb3Vu
ZCBmdW5jdGlvbnM6IikKKyAgICAgICAgZm9yIGZ1bmMgaW4gcGFyc2VkX2Z1bmN0aW9uczoKKyAg
ICAgICAgICAgIGxvZy5kZWJ1ZyhmdW5jKQorICAgICAgICBsb2cuZGVidWcoIiIpCisKKyAgICBk
ZWYgY29weXJpZ2h0cyhzZWxmKToKKyAgICAgICAgb3duZXJfdG9feWVhcnMgPSBkaWN0KCkKKyAg
ICAgICAgY29weXJpZ2h0WWVhclJlZ0V4cCA9IHJlLmNvbXBpbGUociIoXGR7NH0pWywgXXswLDJ9
IikKKyAgICAgICAgb3duZXJTdGFydFJlZ0V4cCA9IHJlLmNvbXBpbGUociJbXlxkLCBdIikKKwor
ICAgICAgICAjIFJldHVybnMgZGVkdXBsaWNhdGVkIGNvcHlyaWdodHMga2V5ZWQgb24gdGhlIG93
bmVyLgorICAgICAgICBmb3IgbGluZSBpbiBzZWxmLl9jb3B5cmlnaHRfbGluZXM6CisgICAgICAg
ICAgICB5ZWFycyA9IHNldChjb3B5cmlnaHRZZWFyUmVnRXhwLmZpbmRhbGwobGluZSkpCisgICAg
ICAgICAgICBvd25lckluZGV4ID0gb3duZXJTdGFydFJlZ0V4cC5zZWFyY2gobGluZSkuc3RhcnQo
KQorICAgICAgICAgICAgb3duZXIgPSBsaW5lW293bmVySW5kZXg6XQorICAgICAgICAgICAgbG9n
LmRlYnVnKCJGb3VuZCB5ZWFyczogJXMgYW5kIG93bmVyOiAlcyIgJSAoeWVhcnMsIG93bmVyKSkK
KyAgICAgICAgICAgIGlmIG93bmVyIG5vdCBpbiBvd25lcl90b195ZWFyczoKKyAgICAgICAgICAg
ICAgICBvd25lcl90b195ZWFyc1tvd25lcl0gPSBzZXQoKQorCisgICAgICAgICAgICBvd25lcl90
b195ZWFyc1tvd25lcl0gPSBvd25lcl90b195ZWFyc1tvd25lcl0udW5pb24oeWVhcnMpCisKKyAg
ICAgICAgcmVzdWx0ID0gW10KKworICAgICAgICBmb3Igb3duZXIsIHllYXJzIGluIG93bmVyX3Rv
X3llYXJzLml0ZW1zKCk6CisgICAgICAgICAgICBzb3J0ZWRfeWVhcnMgPSBsaXN0KHllYXJzKQor
ICAgICAgICAgICAgc29ydGVkX3llYXJzLnNvcnQoKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgiJXMgJXMiICUgKCcsICcuam9pbihzb3J0ZWRfeWVhcnMpLCBvd25lcikpCisKKyAgICAgICAg
cmV0dXJuIHJlc3VsdAorCisgICAgZGVmIGFsbF9mdW5jdGlvbnMoc2VsZik6CisgICAgICAgIHJl
c3VsdCA9IFtdCisgICAgICAgIGZvciBmdW5jdGlvbnMgaW4gc2VsZi5vYmplY3RzLnZhbHVlcygp
OgorICAgICAgICAgICAgcmVzdWx0LmV4dGVuZChmdW5jdGlvbnMpCisKKyAgICAgICAgcmVzdWx0
LnNvcnQoKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICAjIFByaXZhdGUgbWV0aG9kcy4K
KworICAgIGRlZiBfcGFyc2VfY29weXJpZ2h0X2xpbmVzKHNlbGYsIHRleHQpOgorICAgICAgICBs
aWNlbnNlQmxvY2sgPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLmZpbmRhbGwodGV4dClbMF0KKyAg
ICAgICAgbGljZW5zZUJsb2NrID0gbGljZW5zZUJsb2NrWzpsaWNlbnNlQmxvY2suaW5kZXgoIlJl
ZGlzdHJpYnV0aW9uIildCisKKyAgICAgICAgY29weXJpZ2h0TGluZXMgPSBbXQorICAgICAgICBm
b3IgbGluZSBpbiBsaWNlbnNlQmxvY2suc3BsaXQoIlxuIik6CisgICAgICAgICAgICBsaW5lID0g
bGluZS5yZXBsYWNlKCIvKiIsICIiKQorICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgi
Ki8iLCAiIikKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIioiLCAiIikKKyAgICAg
ICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIkNvcHlyaWdodCIsICIiKQorICAgICAgICAgICAg
bGluZSA9IGxpbmUucmVwbGFjZSgiY29weXJpZ2h0IiwgIiIpCisgICAgICAgICAgICBsaW5lID0g
bGluZS5yZXBsYWNlKCIoQykiLCAiIikKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2Uo
IihjKSIsICIiKQorICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKTsKKworICAgICAgICAg
ICAgaWYgbGVuKGxpbmUpID09IDA6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAg
ICAgICAgY29weXJpZ2h0TGluZXMuYXBwZW5kKGxpbmUpCisgICAgICAgIAorICAgICAgICByZXR1
cm4gY29weXJpZ2h0TGluZXMKKworICAgIGRlZiBfcGFyc2VfZnVuY3Rpb25zKHNlbGYsIHRleHQp
OgorICAgICAgICB0ZXh0ID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5zdWIoIi8qKi8iLCBzaW5n
bGVMaW5lQ29tbWVudFJlZ0V4cC5zdWIoIi8vXG4iLCB0ZXh0KSkKKworICAgICAgICBtYXRjaGVz
ID0gW2Z1bmMgZm9yIGZ1bmMgaW4gZnVuY3Rpb25IZWFkUmVnRXhwLmZpbmRpdGVyKHRleHQpXQor
ICAgICAgICBmdW5jdGlvbkJvdW5kcyA9IFtdCisgICAgICAgIHN0YXJ0ID0gMAorICAgICAgICBl
bmQgPSAwCisgICAgICAgIGZvciBtYXRjaCBpbiBtYXRjaGVzOgorICAgICAgICAgICAgc3RhcnQg
PSBtYXRjaC5zdGFydCgpCisgICAgICAgICAgICBpZiBzdGFydCA8IGVuZDoKKyAgICAgICAgICAg
ICAgICBjb250aW51ZQorICAgICAgICAgICAgZW5kID0gbWF0Y2guZW5kKCkKKyAgICAgICAgICAg
IHdoaWxlIHRleHRbZW5kXSAhPSAneyc6CisgICAgICAgICAgICAgICAgZW5kID0gZW5kICsgMQor
ICAgICAgICAgICAgZGVwdGggPSAxCisgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAg
ICAgICB3aGlsZSBkZXB0aCA+IDA6CisgICAgICAgICAgICAgICAgaWYgdGV4dFtlbmRdID09ICd7
JzoKKyAgICAgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCArIDEKKyAgICAgICAgICAgICAg
ICBlbGlmIHRleHRbZW5kXSA9PSAnfSc6CisgICAgICAgICAgICAgICAgICAgIGRlcHRoID0gZGVw
dGggLSAxCisgICAgICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICAgICAgZnVuY3Rp
b25Cb3VuZHMuYXBwZW5kKChzdGFydCwgZW5kKSkKKworICAgICAgICBmdW5jdGlvblN0cmluZ3Mg
PSBbdGV4dFtzdGFydDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwgZW5kKSBpbiBmdW5jdGlvbkJv
dW5kc10KKyAgICAgICAgcmV0dXJuIG1hcChGdW5jdGlvbi5mcm9tU3RyaW5nLCBmdW5jdGlvblN0
cmluZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3NjcmlwdHMvY29kZWdl
bi9idWlsdGluc190ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvc2NyaXB0cy9j
b2RlZ2VuL2J1aWx0aW5zX3RlbXBsYXRlcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Yjk0NDAwZDk0YTQ0NjQy
ZmFlNDU2OTA2ZjJiMmFjOGI2NDVjOGY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3NjcmlwdHMvY29kZWdlbi9idWlsdGluc190ZW1wbGF0ZXMucHkKQEAgLTAsMCAr
MSwxMDEgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworIyBCdWlsdGlucyBnZW5lcmF0b3IgdGVtcGxhdGVzLCB3aGljaCBj
YW4gYmUgZmlsbGVkIHdpdGggc3RyaW5nLlRlbXBsYXRlLgorCitjbGFzcyBCdWlsdGluc0dlbmVy
YXRvclRlbXBsYXRlczoKKworICAgIExpY2Vuc2VUZXh0ID0gKAorICAgICIiIlJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCithcmUgbWV0OgorMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKzIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCitBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
K1RIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKK1BVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKK1NVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KK0NPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCitBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCitUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiIpCisKKyAgICBE
b05vdEVkaXRXYXJuaW5nID0gKAorICAgICIiIi8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQg
aXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8g
YnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL3NjcmlwdHMvZ2Vu
ZXJhdGUtanMtYnVpbHRpbnMucHkiIiIpCisKKyAgICBIZWFkZXJQcmVsdWRlID0gKAorICAgICIi
IiNpZm5kZWYgSlNDQnVpbHRpbnNfaAorI2RlZmluZSBKU0NCdWlsdGluc19oIiIiKQorCisgICAg
SGVhZGVyUG9zdGx1ZGUgPSAoCisgICAgIiIifSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAv
LyBKU0NCdWlsdGluc19oCisiIiIpCisKKyAgICBJbXBsZW1lbnRhdGlvblByZWx1ZGUgPSAoCisi
IiIjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorCisjaW5j
bHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2lu
Y2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgJHtu
YW1lc3BhY2V9IHsiIiIpCisKKyAgICBJbXBsZW1lbnRhdGlvblBvc3RsdWRlID0gKAorICAgICIi
In0gLy8gbmFtZXNwYWNlICR7bmFtZXNwYWNlfQorIiIiKQorCisgICAgSGVhZGVyU3RhdGljTWFj
cm9zID0gKAorICAgICIiIiNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFt
ZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAorICAgIEpTQzo6RnVuY3Rpb25FeGVj
dXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKworSlNDX0ZPUkVBQ0hfQlVJ
TFRJTihERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9H
RU5FUkFUT1IKKworI2RlZmluZSBKU0NfQlVJTFRJTl9FWElTVFMobmFtZSkgZGVmaW5lZCBKU0Nf
QlVJTFRJTl8gIyMgbmFtZSIiIikKKworICAgIEltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9zID0g
KAorICAgICIiIgorI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1
bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBj
b2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAore1xcCisgICAgcmV0dXJuIHZtLmJ1
aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5i
dWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsgXAorfQorSlNDX0ZPUkVB
Q0hfQlVJTFRJTihERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxU
SU5fR0VORVJBVE9SCisiIiIpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9idWlsdGlu
c19jb21iaW5lZF9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvc2NyaXB0cy9jb2Rl
Z2VuL2dlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2hlYWRlci5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Mjhh
ZTdhNDg0MjgxODFhYzkyMTY0MjY1ZjQ2NDQ0ZTllZTNjYzdkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9idWlsdGluc19j
b21iaW5lZF9oZWFkZXIucHkKQEAgLTAsMCArMSwxNTkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
IyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHJlCitpbXBvcnQgc3RyaW5nCitmcm9tIHN0
cmluZyBpbXBvcnQgVGVtcGxhdGUKKworZnJvbSBidWlsdGluc19nZW5lcmF0b3IgaW1wb3J0IEJ1
aWx0aW5zR2VuZXJhdG9yCitmcm9tIGJ1aWx0aW5zX3RlbXBsYXRlcyBpbXBvcnQgQnVpbHRpbnNH
ZW5lcmF0b3JUZW1wbGF0ZXMgYXMgVGVtcGxhdGVzCisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KCdnbG9iYWwnKQorCisKK2NsYXNzIEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJHZW5lcmF0b3IoQnVp
bHRpbnNHZW5lcmF0b3IpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCk6CisgICAgICAg
IEJ1aWx0aW5zR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYsIG1vZGVsKQorCisgICAgZGVmIG91dHB1
dF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuICIlc0J1aWx0aW5zLmgiICUgc2VsZi5t
b2RlbCgpLm5hbWVzcGFjZQorCisgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKKyAgICAg
ICAgYXJncyA9IHsKKyAgICAgICAgICAgICduYW1lc3BhY2UnOiBzZWxmLm1vZGVsKCkubmFtZXNw
YWNlCisgICAgICAgIH0KKworICAgICAgICBzZWN0aW9ucyA9IFtdCisgICAgICAgIHNlY3Rpb25z
LmFwcGVuZChzZWxmLmdlbmVyYXRlX2xpY2Vuc2UoKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5k
KFRlbXBsYXRlKFRlbXBsYXRlcy5Eb05vdEVkaXRXYXJuaW5nKS5zdWJzdGl0dXRlKGFyZ3MpKQor
ICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkhlYWRlclByZWx1ZGUp
LnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRl
X2ZvcndhcmRfZGVjbGFyYXRpb25zKCkpCisgICAgICAgIGZvciBvYmosIGZ1bmN0aW9ucyBpbiBz
ZWxmLm1vZGVsKCkub2JqZWN0cy5pdGVtcygpOgorICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5k
KHNlbGYuZ2VuZXJhdGVfc2VjdGlvbl9mb3Jfb2JqZWN0KG9iaiwgZnVuY3Rpb25zKSkKKyAgICAg
ICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV90YWJsZV9t
YWNybygpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9zZWN0aW9uX2Zv
cl9jb2RlX25hbWVfbWFjcm8oKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRl
bXBsYXRlcy5IZWFkZXJTdGF0aWNNYWNyb3MpLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNl
Y3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuSGVhZGVyUG9zdGx1ZGUpLnN1YnN0aXR1
dGUoYXJncykpCisKKyAgICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNlY3Rpb25zKQorCisgICAg
ZGVmIGdlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4g
IiIibmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBWTTsK
KworZW51bSBjbGFzcyBDb25zdHJ1Y3RBYmlsaXR5IDogdW5zaWduZWQ7Cit9CisKK25hbWVzcGFj
ZSAlcyB7IiIiICUgc2VsZi5tb2RlbCgpLm5hbWVzcGFjZQorCisgICAgZGVmIGdlbmVyYXRlX3Nl
Y3Rpb25fZm9yX29iamVjdChzZWxmLCBvYmosIGZ1bmN0aW9ucyk6CisgICAgICAgIGxpbmVzID0g
W10KKyAgICAgICAgbGluZXMuYXBwZW5kKCcvKiAlcyAqLycgJSBvYmopCisgICAgICAgIGxpbmVz
LmV4dGVuZChzZWxmLmdlbmVyYXRlX2V4dGVybnNfZm9yX29iamVjdChvYmosIGZ1bmN0aW9ucykp
CisgICAgICAgIGxpbmVzLmFwcGVuZCgiIikKKyAgICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2Vu
ZXJhdGVfbWFjcm9zX2Zvcl9vYmplY3Qob2JqLCBmdW5jdGlvbnMpKQorICAgICAgICBsaW5lcy5h
cHBlbmQoIiIpCisgICAgICAgIGxpbmVzLmV4dGVuZChzZWxmLmdlbmVyYXRlX2RlZmluZXNfZm9y
X29iamVjdChvYmosIGZ1bmN0aW9ucykpCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMp
CisKKyAgICBkZWYgZ2VuZXJhdGVfZXh0ZXJuc19mb3Jfb2JqZWN0KHNlbGYsIG9iaiwgZnVuY3Rp
b25zKToKKyAgICAgICAgbGluZXMgPSBbXQorCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBmdW5j
dGlvbnM6CisgICAgICAgICAgICBmdW5jdGlvbl9hcmdzID0geworICAgICAgICAgICAgICAgICdj
b2RlTmFtZSc6IGZ1bmN0aW9uLm1hbmdsZWROYW1lRm9yQ29kZSgpCisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiIiJleHRlcm4gY29uc3QgY2hhciogc18lKGNvZGVO
YW1lKXM7CitleHRlcm4gY29uc3QgaW50IHNfJShjb2RlTmFtZSlzTGVuZ3RoOworZXh0ZXJuIGNv
bnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzXyUoY29kZU5hbWUpc0NvbnN0cnVjdEFiaWxpdHk7
IiIiICUgZnVuY3Rpb25fYXJncykKKworICAgICAgICByZXR1cm4gbGluZXMKKworICAgIGRlZiBn
ZW5lcmF0ZV9tYWNyb3NfZm9yX29iamVjdChzZWxmLCBvYmosIGZ1bmN0aW9ucyk6CisgICAgICAg
IGFyZ3MgPSB7CisgICAgICAgICAgICAncHJlZml4Jzogc2VsZi5tb2RlbCgpLm1hY3JvX3ByZWZp
eCwKKyAgICAgICAgICAgICdvYmplY3RNYWNybyc6IG9iai5yZXBsYWNlKCcuJywgJ18nKS51cHBl
cigpCisgICAgICAgIH0KKworICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVu
ZCgiI2RlZmluZSAlKHByZWZpeClzX0ZPUkVBQ0hfJShvYmplY3RNYWNybylzX0JVSUxUSU4obWFj
cm8pIFxcIiAlIGFyZ3MpCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBmdW5jdGlvbnM6CisgICAg
ICAgICAgICBmdW5jdGlvbl9hcmdzID0geworICAgICAgICAgICAgICAgICdmdW5jTmFtZSc6IGZ1
bmN0aW9uLm5hbWUsCisgICAgICAgICAgICAgICAgJ21hbmdsZWROYW1lJzogZnVuY3Rpb24ubWFu
Z2xlZE5hbWUoKSwKKyAgICAgICAgICAgICAgICAncGFyYW1Db3VudCc6IGxlbihmdW5jdGlvbi5w
YXJhbWV0ZXJzKQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiAg
ICBtYWNybyglKGZ1bmNOYW1lKXMsICUobWFuZ2xlZE5hbWUpcywgJShwYXJhbUNvdW50KWQpIFxc
IiAlIGZ1bmN0aW9uX2FyZ3MpCisgICAgICAgIHJldHVybiBsaW5lcworCisgICAgZGVmIGdlbmVy
YXRlX2RlZmluZXNfZm9yX29iamVjdChzZWxmLCBvYmosIGZ1bmN0aW9ucyk6CisgICAgICAgIGxp
bmVzID0gW10KKyAgICAgICAgZm9yIGZ1bmN0aW9uIGluIGZ1bmN0aW9uczoKKyAgICAgICAgICAg
IGFyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ3ByZWZpeCc6IHNlbGYubW9kZWwoKS5tYWNyb19w
cmVmaXgsCisgICAgICAgICAgICAgICAgJ21hbmdsZWROYW1lJzogZnVuY3Rpb24ubWFuZ2xlZE5h
bWUoKS51cHBlcigpLAorICAgICAgICAgICAgfQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIj
ZGVmaW5lICUocHJlZml4KXNfQlVJTFRJTl8lKG1hbmdsZWROYW1lKXMgMSIgJSBhcmdzKQorCisg
ICAgICAgIHJldHVybiBsaW5lcworCisgICAgZGVmIGdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVf
dGFibGVfbWFjcm8oc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAncHJlZml4
Jzogc2VsZi5tb2RlbCgpLm1hY3JvX3ByZWZpeCwKKyAgICAgICAgfQorCisgICAgICAgIGxpbmVz
ID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCIjZGVmaW5lICUocHJlZml4KXNfRk9SRUFDSF9C
VUlMVElOKG1hY3JvKSBcXCIgJSBhcmdzKQorICAgICAgICBmb3IgZnVuY3Rpb24gaW4gc2VsZi5t
b2RlbCgpLmFsbF9mdW5jdGlvbnMoKToKKyAgICAgICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSB7Cisg
ICAgICAgICAgICAgICAgJ2Z1bmNOYW1lJzogZnVuY3Rpb24ubmFtZSwKKyAgICAgICAgICAgICAg
ICAnY29kZU5hbWUnOiBmdW5jdGlvbi5tYW5nbGVkTmFtZUZvckNvZGUoKQorICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiAgICBtYWNybyglKGNvZGVOYW1lKXMsICUo
ZnVuY05hbWUpcywgc18lKGNvZGVOYW1lKXNMZW5ndGgpIFxcIiAlIGZ1bmN0aW9uX2FyZ3MpCisg
ICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCisKKyAgICBkZWYgZ2VuZXJhdGVfc2VjdGlv
bl9mb3JfY29kZV9uYW1lX21hY3JvKHNlbGYpOgorICAgICAgICBhcmdzID0geworICAgICAgICAg
ICAgJ3ByZWZpeCc6IHNlbGYubW9kZWwoKS5tYWNyb19wcmVmaXgsCisgICAgICAgIH0KKworICAg
ICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZCgiI2RlZmluZSAlKHByZWZpeClz
X0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcXCIgJSBhcmdzKQorICAgICAg
ICB1bmlxdWVfbmFtZXMgPSBsaXN0KHNldChbZnVuY3Rpb24ubmFtZSBmb3IgZnVuY3Rpb24gaW4g
c2VsZi5tb2RlbCgpLmFsbF9mdW5jdGlvbnMoKV0pKQorICAgICAgICB1bmlxdWVfbmFtZXMuc29y
dCgpCisgICAgICAgIGZvciBmdW5jdGlvbl9uYW1lIGluIHVuaXF1ZV9uYW1lczoKKyAgICAgICAg
ICAgIGZ1bmN0aW9uX2FyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ2Z1bmNOYW1lJzogZnVuY3Rp
b25fbmFtZSwKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIgICAg
bWFjcm8oJShmdW5jTmFtZSlzKSBcXCIgJSBmdW5jdGlvbl9hcmdzKQorICAgICAgICByZXR1cm4g
J1xuJy5qb2luKGxpbmVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Njcmlw
dHMvY29kZWdlbi9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfYnVpbHRpbnNf
Y29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjBhZWU4Nzg5NzJiNzU5OTM5
ZDRkY2Q5ZGFkNWQ2NjA1OWI0YjQwYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaW1wbGVt
ZW50YXRpb24ucHkKQEAgLTAsMCArMSw5MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisj
IENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisK
K2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgcmUKK2ltcG9ydCBzdHJpbmcKK2Zyb20gc3RyaW5nIGlt
cG9ydCBUZW1wbGF0ZQoraW1wb3J0IGpzb24KKworZnJvbSBidWlsdGluc19nZW5lcmF0b3IgaW1w
b3J0IEJ1aWx0aW5zR2VuZXJhdG9yLCB1Y2ZpcnN0Citmcm9tIGJ1aWx0aW5zX3RlbXBsYXRlcyBp
bXBvcnQgQnVpbHRpbnNHZW5lcmF0b3JUZW1wbGF0ZXMgYXMgVGVtcGxhdGVzCisKK2xvZyA9IGxv
Z2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwnKQorCisKK2NsYXNzIEJ1aWx0aW5zQ29tYmluZWRJbXBs
ZW1lbnRhdGlvbkdlbmVyYXRvcihCdWlsdGluc0dlbmVyYXRvcik6CisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIG1vZGVsKToKKyAgICAgICAgQnVpbHRpbnNHZW5lcmF0b3IuX19pbml0X18oc2VsZiwg
bW9kZWwpCisKKyAgICBkZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4g
IiVzQnVpbHRpbnMuY3BwIiAlIHNlbGYubW9kZWwoKS5uYW1lc3BhY2UKKworICAgIGRlZiBnZW5l
cmF0ZV9vdXRwdXQoc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbmFtZXNw
YWNlJzogc2VsZi5tb2RlbCgpLm5hbWVzcGFjZQorICAgICAgICB9CisKKyAgICAgICAgc2VjdGlv
bnMgPSBbXQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9saWNlbnNlKCkp
CisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuRG9Ob3RFZGl0V2Fy
bmluZykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRl
KFRlbXBsYXRlcy5JbXBsZW1lbnRhdGlvblByZWx1ZGUpLnN1YnN0aXR1dGUoYXJncykpCisgICAg
ICAgIHNlY3Rpb25zLmV4dGVuZChzZWxmLmdlbmVyYXRlX2VtYmVkZGVkX2NvZGVfc3RyaW5nX3Nl
Y3Rpb25zKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuSW1w
bGVtZW50YXRpb25TdGF0aWNNYWNyb3MpLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rp
b25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuSW1wbGVtZW50YXRpb25Qb3N0bHVkZSkuc3Vi
c3RpdHV0ZShhcmdzKSkKKworICAgICAgICByZXR1cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMpCisK
KyAgICBkZWYgZ2VuZXJhdGVfZW1iZWRkZWRfY29kZV9zdHJpbmdfc2VjdGlvbnMoc2VsZik6Cisg
ICAgICAgIHN1YnNlY3Rpb25zID0gW10KKyAgICAgICAgZm9yIGZ1bmN0aW9uIGluIHNlbGYubW9k
ZWwoKS5hbGxfZnVuY3Rpb25zKCk6CisgICAgICAgICAgICB0ZXh0ID0gZnVuY3Rpb24uc291cmNl
CisgICAgICAgICAgICAjIFdyYXAgaXQgaW4gcGFyZW5zIHRvIGF2b2lkIGFkZGluZyB0byBnbG9i
YWwgc2NvcGUuCisgICAgICAgICAgICB0ZXh0ID0gIihmdW5jdGlvbiAiICsgdGV4dFt0ZXh0Lmlu
ZGV4KCIoIik6XSArICIpIgorICAgICAgICAgICAgIyBMYXp5IHdheSB0byBlc2NhcGUgcXVvdGVz
LCBJIHRoaW5rPworICAgICAgICAgICAgdGV4dExpbmVzID0ganNvbi5kdW1wcyh0ZXh0KVsxOi0x
XS5zcGxpdCgiXFxuIikKKyAgICAgICAgICAgICMgVGhpcyBsb29rcyBzY2FyeSBiZWNhdXNlIHdl
IG5lZWQgdGhlIEpTIHNvdXJjZSBpdHNlbGYgdG8gaGF2ZSBuZXdsaW5lcy4KKyAgICAgICAgICAg
IGVtYmVkZGVkU291cmNlID0gJ1xuJy5qb2luKFsnICAgIiVzXFxuIiBcXCcgJSBsaW5lIGZvciBs
aW5lIGluIHRleHRMaW5lc10pCisKKyAgICAgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSAiQ2Fu
bm90Q29uc3RydWN0IgorICAgICAgICAgICAgaWYgZnVuY3Rpb24uaXNDb25zdHJ1Y3RvcjoKKyAg
ICAgICAgICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gIkNhbkNvbnN0cnVjdCIKKworICAgICAg
ICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICAgICAnY29kZU5hbWUnOiBmdW5jdGlvbi5tYW5n
bGVkTmFtZUZvckNvZGUoKSwKKyAgICAgICAgICAgICAgICAnZW1iZWRkZWRTb3VyY2UnOiBlbWJl
ZGRlZFNvdXJjZSwKKyAgICAgICAgICAgICAgICAnZW1iZWRkZWRTb3VyY2VMZW5ndGgnOiBsZW4o
ZW1iZWRkZWRTb3VyY2UpICsgMSwKKyAgICAgICAgICAgICAgICAnY2FuQ29uc3RydWN0JzogY29u
c3RydWN0QWJpbGl0eQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsaW5lcyA9IFtdCisg
ICAgICAgICAgICBsaW5lcy5hcHBlbmQoImNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzXyUo
Y29kZU5hbWUpc0NvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OiUoY2Fu
Q29uc3RydWN0KXM7IiAlIGFyZ3MpOworICAgICAgICAgICAgbGluZXMuYXBwZW5kKCJjb25zdCBp
bnQgc18lKGNvZGVOYW1lKXNMZW5ndGggPSAlKGVtYmVkZGVkU291cmNlTGVuZ3RoKWQ7IiAlIGFy
Z3MpOworICAgICAgICAgICAgbGluZXMuYXBwZW5kKCJjb25zdCBjaGFyKiBzXyUoY29kZU5hbWUp
cyA9XG4lKGVtYmVkZGVkU291cmNlKXNcbjsiICUgYXJncyk7CisgICAgICAgICAgICBzdWJzZWN0
aW9ucy5hcHBlbmQoJ1xuJy5qb2luKGxpbmVzKSkKKworICAgICAgICByZXR1cm4gc3Vic2VjdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9zY3JpcHRzL2NvZGVnZW4vbGF6
eXdyaXRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9zY3JpcHRzL2NvZGVnZW4vbGF6eXdy
aXRlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mMDFmYTQzZGQ0MmQ4ODJkZDJmZTFkZDU2NWY3ZDZlMTg5ZTYz
MTU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3NjcmlwdHMvY29k
ZWdlbi9sYXp5d3JpdGVyLnB5CkBAIC0wLDAgKzEsNTYgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgQSB3cml0ZXIgdGhh
dCBvbmx5IHVwZGF0ZXMgZmlsZSBpZiBpdCBhY3R1YWxseSBjaGFuZ2VkLgorY2xhc3MgTGF6eUZp
bGVXcml0ZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVwYXRoLCBmb3JjZV9vdXRwdXQp
OgorICAgICAgICBzZWxmLl9maWxlcGF0aCA9IGZpbGVwYXRoCisgICAgICAgIHNlbGYuX291dHB1
dCA9ICIiCisgICAgICAgIHNlbGYuZm9yY2Vfb3V0cHV0ID0gZm9yY2Vfb3V0cHV0CisKKyAgICBk
ZWYgd3JpdGUoc2VsZiwgdGV4dCk6CisgICAgICAgIHNlbGYuX291dHB1dCArPSB0ZXh0CisKKyAg
ICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgIHRleHRfY2hhbmdlZCA9IFRydWUKKyAgICAgICAg
c2VsZi5fb3V0cHV0ID0gc2VsZi5fb3V0cHV0LnJzdHJpcCgpICsgIlxuIgorCisgICAgICAgIHRy
eToKKyAgICAgICAgICAgIGlmIHNlbGYuZm9yY2Vfb3V0cHV0OgorICAgICAgICAgICAgICAgIHJh
aXNlCisKKyAgICAgICAgICAgIHJlYWRfZmlsZSA9IG9wZW4oc2VsZi5fZmlsZXBhdGgsICJyIikK
KyAgICAgICAgICAgIG9sZF90ZXh0ID0gcmVhZF9maWxlLnJlYWQoKQorICAgICAgICAgICAgcmVh
ZF9maWxlLmNsb3NlKCkKKyAgICAgICAgICAgIHRleHRfY2hhbmdlZCA9IG9sZF90ZXh0ICE9IHNl
bGYuX291dHB1dAorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAjIElnbm9yZSwganVzdCBv
dmVyd3JpdGUgYnkgZGVmYXVsdAorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGlmIHRleHRf
Y2hhbmdlZCBvciBzZWxmLmZvcmNlX291dHB1dDoKKyAgICAgICAgICAgIG91dF9maWxlID0gb3Bl
bihzZWxmLl9maWxlcGF0aCwgInciKQorICAgICAgICAgICAgb3V0X2ZpbGUud3JpdGUoc2VsZi5f
b3V0cHV0KQorICAgICAgICAgICAgb3V0X2ZpbGUuY2xvc2UoKQpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9zY3JpcHRzL2dlbmVy
YXRlLWpzLWJ1aWx0aW5zLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3NjcmlwdHMvZ2VuZXJh
dGUtanMtYnVpbHRpbnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmNlNDIwNTliN2FlZWJlODk0Yjc4NzUwMGQ1
MWY5NDdhYmQ2NjM4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9z
Y3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CkBAIC0wLDAgKzEsMTI3IEBACisjIS91c3Iv
YmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2Yg
V2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKyMgVGhpcyBzY3JpcHQgZ2VuZXJhdGVzIEMrKyBiaW5kaW5ncyBm
b3IgSmF2YVNjcmlwdCBidWlsdGlucy4KKyMgR2VuZXJhdG9ycyBmb3IgaW5kaXZpZHVhbCBmaWxl
cyBhcmUgbG9jYXRlZCBpbiB0aGUgY29kZWdlbi8gZGlyZWN0b3J5LgorCitpbXBvcnQgZm5tYXRj
aAoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcHRwYXJzZQoraW1wb3J0IG9zCisKK2xvZ2dpbmcu
YmFzaWNDb25maWcoZm9ybWF0PSclKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcycsIGxldmVsPWxv
Z2dpbmcuRVJST1IpCitsb2cgPSBsb2dnaW5nLmdldExvZ2dlcignZ2xvYmFsJykKKworZnJvbSBj
b2RlZ2VuIGltcG9ydCAqCisKKyMgRklYTUU6IGlmIHRoaXMgc2NyaXB0IGlzIHVzZWQgZnJvbSBX
ZWJDb3JlLCB3ZSB3aWxsIG5lZWQgdG8gZHVwbGljYXRlCisjIHRoZSBjb250ZW50cyBvZiBjb2Rl
Z2VuL19faW5pdF9fLnB5IHRvIGhlcmUgc2luY2Ugc2NyaXB0cyBjb3BpZWQgdG8KKyMgcHJpdmF0
ZSBoZWFkZXJzIGhhdmUgdGhlaXIgZGlyZWN0b3JpZXMgZmxhdHRlbmVkLgorCitkZWYgZ2VuZXJh
dGVfYmluZGluZ3NfZm9yX2J1aWx0aW5zX2ZpbGVzKGJ1aWx0aW5zX2ZpbGVzPVtdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfcGF0aD1Ob25lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNyb19wcmVmaXg9IiIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZT0iIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2Vfb3V0cHV0PUZhbHNl
KToKKworICAgIG1vZGVsID0gYnVpbHRpbnNfbW9kZWwuQnVpbHRpbnMobmFtZXNwYWNlPW5hbWVz
cGFjZSwgbWFjcm9fcHJlZml4PW1hY3JvX3ByZWZpeCkKKyAgICBmb3IgZmlsZXBhdGggaW4gYnVp
bHRpbnNfZmlsZXM6CisgICAgICAgIHdpdGggb3BlbihmaWxlcGF0aCwgInIiKSBhcyBmaWxlOgor
ICAgICAgICAgICAgZmlsZV90ZXh0ID0gZmlsZS5yZWFkKCkKKyAgICAgICAgICAgIGZpbGVfbmFt
ZSA9IG9zLnBhdGguYmFzZW5hbWUoZmlsZXBhdGgpCisgICAgICAgICAgICBtb2RlbC5wYXJzZV9i
dWlsdGluc19maWxlKGZpbGVfbmFtZSwgZmlsZV90ZXh0KQorCisgICAgZ2VuZXJhdG9ycyA9IFtd
CisgICAgZ2VuZXJhdG9ycy5hcHBlbmQoQnVpbHRpbnNDb21iaW5lZEhlYWRlckdlbmVyYXRvciht
b2RlbCkpCisgICAgZ2VuZXJhdG9ycy5hcHBlbmQoQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0
aW9uR2VuZXJhdG9yKG1vZGVsKSkKKworICAgIGxvZy5kZWJ1ZygiIikKKyAgICBsb2cuZGVidWco
IkdlbmVyYXRpbmcgYmluZGluZ3MgZm9yIGJ1aWx0aW5zLiIpCisKKyAgICBmb3IgZ2VuZXJhdG9y
IGluIGdlbmVyYXRvcnM6CisgICAgICAgIG91dHB1dF9maWxlcGF0aCA9IG9zLnBhdGguam9pbihv
dXRwdXRfcGF0aCwgZ2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSgpKQorICAgICAgICBsb2cuZGVi
dWcoIkdlbmVyYXRpbmcgb3V0cHV0IGZpbGU6ICVzIiAlIG91dHB1dF9maWxlcGF0aCkKKyAgICAg
ICAgb3V0cHV0ID0gZ2VuZXJhdG9yLmdlbmVyYXRlX291dHB1dCgpCisKKyAgICAgICAgbG9nLmRl
YnVnKCItLS0iKQorICAgICAgICBsb2cuZGVidWcoIlxuIiArIG91dHB1dCkKKyAgICAgICAgbG9n
LmRlYnVnKCItLS0iKQorICAgICAgICBvdXRwdXRfZmlsZSA9IExhenlGaWxlV3JpdGVyKG91dHB1
dF9maWxlcGF0aCwgZm9yY2Vfb3V0cHV0KQorICAgICAgICBvdXRwdXRfZmlsZS53cml0ZShvdXRw
dXQpCisgICAgICAgIG91dHB1dF9maWxlLmNsb3NlKCkKKworCitpZiBfX25hbWVfXyA9PSAnX19t
YWluX18nOgorICAgIGNsaV9wYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2U9InVz
YWdlOiAlcHJvZyBbb3B0aW9uc10gQnVpbHRpbjEuanMgWywgQnVpbHRpbjIuanMsIC4uLl0iKQor
ICAgIGNsaV9wYXJzZXIuYWRkX29wdGlvbigiLWkiLCAiLS1pbnB1dC1kaXJlY3RvcnkiLCBoZWxw
PSJJZiBzcGVjaWZpZWQsIGdlbmVyYXRlcyBidWlsdGlucyBmcm9tIGFsbCBKYXZhU2NyaXB0IGZp
bGVzIGluIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5IGluIGFkZGl0aW9uIHRvIHNwZWNpZmljIGZp
bGVzIHBhc3NlZCBhcyBhcmd1bWVudHMuIikKKyAgICAjIEZJWE1FOiB0YWtlIGFuIG91dHB1dCBk
aXJlY3RvcnksIGFuZCBkZWNpZGUgdGhlIGZpbGVuYW1lIGJhc2VkIG9uIHRoZSBmcmFtZXdvcmsu
CisgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9uKCItbyIsICItLW91dHB1dC1kaXJlY3RvcnkiLCBo
ZWxwPSJEaXJlY3Rvcnkgd2hlcmUgZ2VuZXJhdGVkIGZpbGVzIHNob3VsZCBiZSB3cml0dGVuLiIp
CisgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9uKCItLXByZWZpeCIsIGRlZmF1bHQ9IkpTQyIsIGhl
bHA9Ik5hbWVzcGFjaW5nIHByZWZpeCB0byB1c2UgZm9yIHB1YmxpYyBtYWNyb3MuIikKKyAgICBj
bGlfcGFyc2VyLmFkZF9vcHRpb24oIi0tbmFtZXNwYWNlIiwgZGVmYXVsdD0iSlNDIiwgaGVscD0i
TmFtZXNwYWNlIHRvIHVzZSB3aXRoaW4gZ2VuZXJhdGVkIEMrKyBmaWxlcy4iKQorICAgIGNsaV9w
YXJzZXIuYWRkX29wdGlvbigiLS1mb3JjZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IkZv
cmNlIG91dHB1dCBvZiBnZW5lcmF0ZWQgc2NyaXB0cywgZXZlbiBpZiBub3RoaW5nIGNoYW5nZWQu
IikKKyAgICBjbGlfcGFyc2VyLmFkZF9vcHRpb24oIi12IiwgIi0tZGVidWciLCBhY3Rpb249InN0
b3JlX3RydWUiLCBoZWxwPSJMb2cgZXh0cmEgb3V0cHV0IGZvciBkZWJ1Z2dpbmcgdGhlIGdlbmVy
YXRvciBpdHNlbGYuIikKKyAgICBjbGlfcGFyc2VyLmFkZF9vcHRpb24oIi10IiwgIi0tdGVzdCIs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IkVuYWJsZSB0ZXN0IG1vZGUuIikKKworICAgIGFy
Z19vcHRpb25zLCBhcmdfdmFsdWVzID0gY2xpX3BhcnNlci5wYXJzZV9hcmdzKCkKKyAgICBpZiBs
ZW4oYXJnX3ZhbHVlcykgaXMgMCBhbmQgbm90IGFyZ19vcHRpb25zLmlucHV0X2RpcmVjdG9yeToK
KyAgICAgICAgcmFpc2UgUGFyc2VFeGNlcHRpb24oIkF0IGxlYXN0IG9uZSBpbnB1dCBmaWxlIG9y
IGRpcmVjdG9yeSBleHBlY3RlZC4iKQorCisgICAgaWYgbm90IGFyZ19vcHRpb25zLm91dHB1dF9k
aXJlY3Rvcnk6CisgICAgICAgIHJhaXNlIFBhcnNlRXhjZXB0aW9uKCJNaXNzaW5nIG91dHB1dCBk
aXJlY3RvcnkuIikKKworICAgIGlmIGFyZ19vcHRpb25zLmRlYnVnOgorICAgICAgICBsb2cuc2V0
TGV2ZWwobG9nZ2luZy5ERUJVRykKKworICAgIGlucHV0X2ZpbGVwYXRocyA9IGFyZ192YWx1ZXNb
Ol0KKyAgICBpZiBhcmdfb3B0aW9ucy5pbnB1dF9kaXJlY3Rvcnk6CisgICAgICAgIGZvciBmaWxl
cGF0aCBpbiBvcy5saXN0ZGlyKGFyZ19vcHRpb25zLmlucHV0X2RpcmVjdG9yeSk6CisgICAgICAg
ICAgICBpbnB1dF9maWxlcGF0aHMuYXBwZW5kKG9zLnBhdGguam9pbihhcmdfb3B0aW9ucy5pbnB1
dF9kaXJlY3RvcnksIGZpbGVwYXRoKSkKKworICAgIGlucHV0X2ZpbGVwYXRocyA9IGZpbHRlcihs
YW1iZGEgbmFtZTogZm5tYXRjaC5mbm1hdGNoKG5hbWUsICcqLmpzJyksIGlucHV0X2ZpbGVwYXRo
cyk7CisKKyAgICBvcHRpb25zID0geworICAgICAgICAnb3V0cHV0X3BhdGgnOiBhcmdfb3B0aW9u
cy5vdXRwdXRfZGlyZWN0b3J5LAorICAgICAgICAnbWFjcm9fcHJlZml4JzogYXJnX29wdGlvbnMu
cHJlZml4LAorICAgICAgICAnbmFtZXNwYWNlJzogYXJnX29wdGlvbnMubmFtZXNwYWNlLAorICAg
IH0KKworICAgIGxvZy5kZWJ1ZygiR2VuZXJhdGluZyBjb2RlIGZvciBidWlsdGlucy4iKQorICAg
IGxvZy5kZWJ1ZygiUGFyc2VkIG9wdGlvbnM6IikKKyAgICBmb3Igb3B0aW9uLCB2YWx1ZSBpbiBv
cHRpb25zLml0ZW1zKCk6CisgICAgICAgIGxvZy5kZWJ1ZygiICAgICVzOiAlcyIgJSAob3B0aW9u
LCB2YWx1ZSkpCisgICAgbG9nLmRlYnVnKCIiKQorICAgIGxvZy5kZWJ1ZygiSW5wdXQgZmlsZXM6
IikKKyAgICBmb3IgZmlsZXBhdGggaW4gaW5wdXRfZmlsZXBhdGhzOgorICAgICAgICBsb2cuZGVi
dWcoIiAgICAlcyIgJSBmaWxlcGF0aCkKKyAgICBsb2cuZGVidWcoIiIpCisKKyAgICB0cnk6Cisg
ICAgICAgIGdlbmVyYXRlX2JpbmRpbmdzX2Zvcl9idWlsdGluc19maWxlcyhidWlsdGluc19maWxl
cz1pbnB1dF9maWxlcGF0aHMsICoqb3B0aW9ucykKKyAgICBleGNlcHQgUGFyc2VFeGNlcHRpb24g
YXMgZToKKyAgICAgICAgaWYgYXJnX29wdGlvbnMudGVzdDoKKyAgICAgICAgICAgIGxvZy5lcnJv
cihlLm1lc3NhZ2UpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSAgIyBGb3JjZSB0
aGUgYnVpbGQgdG8gZmFpbC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262890</attachid>
            <date>2015-10-12 09:10:07 -0700</date>
            <delta_ts>2015-10-12 17:14:07 -0700</delta_ts>
            <desc>WIP 3</desc>
            <filename>bug-149929-20151012090933.patch</filename>
            <type>text/plain</type>
            <size>42924</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwODQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YjczMmYzMTQwZjg5MjMzN2RjYTI4NjQ2MDk4OTljNjAxNzVlNzA1Li5lOWFiZTBmYzA0MTBkOThj
Y2YxZGUzMjRlOWYyODkxYjAzZDc0MmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAxNS0xMC0xMCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXN0cnVjdHVyZSBnZW5lcmF0ZS1qcy1iaW5kaW5ncyBzY3JpcHQgdG8gYmUgbW9k
dWxhciBhbmQgdGVzdGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0OTkyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBzY3JpcHRzL2NvZGVn
ZW4vX19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIHNjcmlwdHMvY29kZWdlbi9idWlsdGlu
c19nZW5lcmF0b3IucHk6IEFkZGVkLgorICAgICAgICAodWNmaXJzdCk6CisgICAgICAgIChCdWls
dGluc0dlbmVyYXRvcik6CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvci5fX2luaXRfXyk6Cisg
ICAgICAgIChCdWlsdGluc0dlbmVyYXRvci5tb2RlbCk6CisgICAgICAgIChCdWlsdGluc0dlbmVy
YXRvci5nZW5lcmF0ZV9saWNlbnNlKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yLmdlbmVy
YXRlX291dHB1dCk6CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvci5vdXRwdXRfZmlsZW5hbWUp
OgorICAgICAgICAqIHNjcmlwdHMvY29kZWdlbi9idWlsdGluc19tb2RlbC5weTogQWRkZWQuCisg
ICAgICAgIChsY2ZpcnN0KToKKyAgICAgICAgKFBhcnNlRXhjZXB0aW9uKToKKyAgICAgICAgKEZ1
bmN0aW9uKToKKyAgICAgICAgKEZ1bmN0aW9uLl9faW5pdF9fKToKKyAgICAgICAgKEZ1bmN0aW9u
LmZyb21TdHJpbmcpOgorICAgICAgICAoRnVuY3Rpb24ubWFuZ2xlZE5hbWUpOgorICAgICAgICAo
RnVuY3Rpb24ubWFuZ2xlZE5hbWVGb3JDb2RlKToKKyAgICAgICAgKEZ1bmN0aW9uLl9fc3RyX18p
OgorICAgICAgICAoQnVpbHRpbnMpOgorICAgICAgICAoQnVpbHRpbnMuX19pbml0X18pOgorICAg
ICAgICAoQnVpbHRpbnMucGFyc2VfYnVpbHRpbnNfZmlsZSk6CisgICAgICAgIChCdWlsdGlucy5j
b3B5cmlnaHRzKToKKyAgICAgICAgKEJ1aWx0aW5zLmFsbF9mdW5jdGlvbnMpOgorICAgICAgICAo
QnVpbHRpbnMuX3BhcnNlX2NvcHlyaWdodF9saW5lcyk6CisgICAgICAgIChCdWlsdGlucy5fcGFy
c2VfZnVuY3Rpb25zKToKKyAgICAgICAgKiBzY3JpcHRzL2NvZGVnZW4vYnVpbHRpbnNfdGVtcGxh
dGVzLnB5OiBBZGRlZC4KKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVzKToKKyAg
ICAgICAgKEpTQ0J1aWx0aW5zX2gpOgorICAgICAgICAqIHNjcmlwdHMvY29kZWdlbi9nZW5lcmF0
ZV9idWlsdGluc19jb21iaW5lZF9oZWFkZXIucHk6IEFkZGVkLgorICAgICAgICAoQnVpbHRpbnND
b21iaW5lZEhlYWRlckdlbmVyYXRvcik6CisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSGVhZGVy
R2VuZXJhdG9yLl9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJHZW5l
cmF0b3Iub3V0cHV0X2ZpbGVuYW1lKToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJH
ZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFk
ZXJHZW5lcmF0b3IuZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlvbnMpOgorICAgICAgICAoRnVu
Y3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAgICAgICAgKENvbnN0cnVjdEFiaWxp
dHkpOgorICAgICAgICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3Jfb2JqZWN0KToKKyAgICAgICAgKGdl
bmVyYXRlX2V4dGVybnNfZm9yX29iamVjdCk6CisgICAgICAgIChnZW5lcmF0ZV9tYWNyb3NfZm9y
X29iamVjdCk6CisgICAgICAgIChnZW5lcmF0ZV9kZWZpbmVzX2Zvcl9vYmplY3QpOgorICAgICAg
ICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV90YWJsZV9tYWNybyk6CisgICAgICAgIChnZW5l
cmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX25hbWVfbWFjcm8pOgorICAgICAgICAqIHNjcmlwdHMvY29k
ZWdlbi9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weTogQWRkZWQu
CisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSW1wbGVtZW50YXRpb25HZW5lcmF0b3IpOgorICAg
ICAgICAoQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9faW5pdF9fKToK
KyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5vdXRwdXRf
ZmlsZW5hbWUpOgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJh
dG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSW1wbGVtZW50
YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVfZW1iZWRkZWRfY29kZV9zdHJpbmdfc2VjdGlvbnMpOgor
ICAgICAgICAqIHNjcmlwdHMvY29kZWdlbi9sYXp5d3JpdGVyLnB5OiBBZGRlZC4KKyAgICAgICAg
KExhenlGaWxlV3JpdGVyKToKKyAgICAgICAgKExhenlGaWxlV3JpdGVyLl9faW5pdF9fKToKKyAg
ICAgICAgKExhenlGaWxlV3JpdGVyLndyaXRlKToKKyAgICAgICAgKExhenlGaWxlV3JpdGVyLmNs
b3NlKToKKyAgICAgICAgKiBzY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5OiBBZGRlZC4K
KyAgICAgICAgKGdlbmVyYXRlX2JpbmRpbmdzX2Zvcl9idWlsdGluc19maWxlcyk6CisKIDIwMTUt
MTAtMTAgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZHVj
ZSBwb2ludGxlc3MgbWFsbG9jIHRyYWZmaWMgaW4gQ29kZUJsb2NrIGNvbnN0cnVjdGlvbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMTAxNWRkYzc3OTg3
ODBlZTk3MjYyM2Y0YzhlOGQzYzc1YTllNGI3MS4uYTA3MDJlYTQyNjk0NzQ3ZTEwMTAyNjBjOWQw
M2VkMmUyYTUwYmVmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTcxLDEwICs3MSw5IEBAIGFsbCA6IFwKICAgICB1ZGlzODZfaXRhYi5oIFwKICAgICBC
eXRlY29kZXMuaCBcCiAgICAgSW5pdEJ5dGVjb2Rlcy5hc20gXAotICAgIEpTQ0J1aWx0aW5zIFwK
KyAgICBKU0NCdWlsdGlucy5oIFwKICMKIAotIyBidWlsdGluIGZ1bmN0aW9ucwogUFlUSE9OID0g
cHl0aG9uCiBQRVJMID0gcGVybAogCkBAIC04NSwxNSArODQsMjAgQEAgZWxzZQogZW5kaWYKICMg
LS0tLS0tLS0KIAotLlBIT05ZOiBKU0NCdWlsdGlucwotSlNDQnVpbHRpbnM6ICQoSmF2YVNjcmlw
dENvcmUpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zIEpTQ0J1aWx0aW5zLmggSlNDQnVpbHRpbnMuY3Bw
Ci1KU0NCdWlsdGlucy5oOiAkKEphdmFTY3JpcHRDb3JlKS9nZW5lcmF0ZS1qcy1idWlsdGlucyAk
KEphdmFTY3JpcHRDb3JlKS9idWlsdGlucyBKU0NCdWlsdGluc1NvdXJjZXMKLQkkKFBZVEhPTikg
JChKYXZhU2NyaXB0Q29yZSkvZ2VuZXJhdGUtanMtYnVpbHRpbnMgLS1pbnB1dC1kaXJlY3Rvcnkg
JChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMgLS1vdXRwdXQgJEAKLQotSlNDQnVpbHRpbnMuY3Bw
OiBKU0NCdWlsdGlucy5oCisjIEphdmFTY3JpcHQgYnVpbHRpbnMuCisKK0JVSUxUSU5TX0dFTkVS
QVRPUl9TQ1JJUFRTID0gXAorICAgICQoSmF2YVNjcmlwdENvcmUpL3NjcmlwdHMvY29kZWdlbi9f
X2luaXRfXy5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZSkvc2NyaXB0cy9jb2RlZ2VuL2J1aWx0
aW5zX2dlbmVyYXRvci5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZSkvc2NyaXB0cy9jb2RlZ2Vu
L2J1aWx0aW5zX21vZGVsLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9zY3JpcHRzL2NvZGVn
ZW4vYnVpbHRpbnNfdGVtcGxhdGVzLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaGVhZGVyLnB5IFwKKyAgICAkKEph
dmFTY3JpcHRDb3JlKS9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRf
aW1wbGVtZW50YXRpb24ucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmUpL3NjcmlwdHMvY29kZWdl
bi9sYXp5d3JpdGVyLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9zY3JpcHRzL2dlbmVyYXRl
LWpzLWJ1aWx0aW5zLnB5IFwKKyMKIAotLlBIT05ZOiBKU0NCdWlsdGluc1NvdXJjZXMKLUpTQ0J1
aWx0aW5zU291cmNlczogXAorSlNDX0JVSUxUSU5TX1NPVVJDRVMgPSBcCiAgICAgJChKYXZhU2Ny
aXB0Q29yZSkvYnVpbHRpbnMvQXJyYXlDb25zdHJ1Y3Rvci5qcyBcCiAgICAgJChKYXZhU2NyaXB0
Q29yZSkvYnVpbHRpbnMvQXJyYXlJdGVyYXRvci5wcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNj
cmlwdENvcmUpL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcyBcCkBAIC0xMTAsOCArMTE0LDE5
IEBAIEpTQ0J1aWx0aW5zU291cmNlczogXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5z
L1JlZmxlY3RPYmplY3QuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1N0cmlu
Z0NvbnN0cnVjdG9yLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TdHJpbmdJ
dGVyYXRvci5wcm90b3R5cGUuanMgXAorICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1R5
cGVkQXJyYXkucHJvdG90eXBlLmpzIFwKICMKIAorIyBUaGUgY29tYmluZWQgb3V0cHV0IGZpbGUg
ZGVwZW5kcyBvbiB0aGUgY29udGVudHMgb2YgYnVpbHRpbnMgYW5kIGdlbmVyYXRvciBzY3JpcHRz
LCBzbyB0aGF0CisjIGFkZGluZywgbW9kaWZ5aW5nLCBvciByZW1vdmluZyBidWlsdGlucyBvciBz
Y3JpcHRzIHdpbGwgdHJpZ2dlciByZWdlbmVyYXRpb24gb2YgZmlsZXMuCisKKy5QSE9OWTogZm9y
Y2UKK0pTQ0J1aWx0aW5zRmlsZUxpc3QgOiAkKEphdmFTY3JpcHRDb3JlKS9VcGRhdGVDb250ZW50
cy5weSBmb3JjZQorCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlKS9VcGRhdGVDb250ZW50cy5w
eSAnJChKU0NfQlVJTFRJTlNfU09VUkNFUykgJChCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUykn
ICRACisKK0pTQ0J1aWx0aW5zLmg6ICQoQlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMpICQoSlND
X0JVSUxUSU5TX1NPVVJDRVMpIEpTQ0J1aWx0aW5zRmlsZUxpc3QKKwkkKFBZVEhPTikgJChKYXZh
U2NyaXB0Q29yZSkvc2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weSAtLW91dHB1dC1kaXJl
Y3RvcnkgLiAtLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAkKEpTQ19CVUlMVElOU19TT1VSQ0VT
KQorCiAjIGxvb2t1cCB0YWJsZXMgZm9yIGNsYXNzZXMKIAogJS5sdXQuaDogY3JlYXRlX2hhc2hf
dGFibGUgJS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9zY3JpcHRzL2Nv
ZGVnZW4vX19pbml0X18ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvc2NyaXB0cy9jb2RlZ2Vu
L19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjMTFmNzQ5MDQ0N2VlMjllZGJkODAxODdiZGJkODc5
N2ViNjgyNTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvc2NyaXB0
cy9jb2RlZ2VuL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsOSBAQAorIyBSZXF1aXJlZCBmb3IgUHl0
aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlIGZpbGVzCisKK2Zyb20gYnVp
bHRpbnNfbW9kZWwgaW1wb3J0ICoKK2Zyb20gYnVpbHRpbnNfdGVtcGxhdGVzIGltcG9ydCAqCitm
cm9tIGxhenl3cml0ZXIgaW1wb3J0ICoKKworZnJvbSBidWlsdGluc19nZW5lcmF0b3IgaW1wb3J0
ICoKK2Zyb20gZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaGVhZGVyIGltcG9ydCAqCitmcm9t
IGdlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uIGltcG9ydCAqClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3NjcmlwdHMvY29kZWdlbi9idWlsdGluc19nZW5lcmF0b3IucHkgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvc2NyaXB0cy9jb2RlZ2VuL2J1aWx0aW5zX2dlbmVyYXRvci5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
N2U4MzE1Y2JmN2FmZGNhYWVkOGJhMGE3MGFmMjAzODFiZGE2OWNhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3NjcmlwdHMvY29kZWdlbi9idWlsdGluc19nZW5lcmF0
b3IucHkKQEAgLTAsMCArMSw3MiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHly
aWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENv
cHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQg
bG9nZ2luZworaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCByZQorZnJvbSBzdHJpbmcgaW1wb3J0IFRl
bXBsYXRlCisKK2Zyb20gYnVpbHRpbnNfdGVtcGxhdGVzIGltcG9ydCBCdWlsdGluc0dlbmVyYXRv
clRlbXBsYXRlcyBhcyBUZW1wbGF0ZXMKKworbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2Jh
bCcpCisKKworZGVmIHVjZmlyc3Qoc3RyKToKKyAgICByZXR1cm4gc3RyWzoxXS51cHBlcigpICsg
c3RyWzE6XQorCisKK2NsYXNzIEJ1aWx0aW5zR2VuZXJhdG9yOgorICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBtb2RlbCk6CisgICAgICAgIHNlbGYuX21vZGVsID0gbW9kZWwKKworICAgIGRlZiBtb2Rl
bChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX21vZGVsCisKKyAgICBkZWYgZ2VuZXJhdGVf
bGljZW5zZShzZWxmKToKKyAgICAgICAgcmF3X2xpY2Vuc2UgPSBUZW1wbGF0ZShUZW1wbGF0ZXMu
TGljZW5zZVRleHQpLnN1YnN0aXR1dGUoTm9uZSkKKyAgICAgICAgY29weXJpZ2h0cyA9IHNlbGYu
X21vZGVsLmNvcHlyaWdodHMoKQorICAgICAgICBjb3B5cmlnaHRzLnNvcnQoKQorCisgICAgICAg
IGxpY2Vuc2VfYmxvY2sgPSBbXTsKKyAgICAgICAgbGljZW5zZV9ibG9jay5hcHBlbmQoIi8qIikK
KyAgICAgICAgZm9yIGNvcHlyaWdodCBpbiBjb3B5cmlnaHRzOgorICAgICAgICAgICAgbGljZW5z
ZV9ibG9jay5hcHBlbmQoIiAqIENvcHlyaWdodCAoYykgJXMiICUgY29weXJpZ2h0KQorICAgICAg
ICBpZiBsZW4oY29weXJpZ2h0cykgPiAwOgorICAgICAgICAgICAgbGljZW5zZV9ibG9jay5hcHBl
bmQoIiAqICIpCisKKyAgICAgICAgZm9yIGxpbmUgaW4gcmF3X2xpY2Vuc2Uuc3BsaXQoJ1xuJyk6
CisgICAgICAgICAgICBsaWNlbnNlX2Jsb2NrLmFwcGVuZCgiICogIiArIGxpbmUpCisKKyAgICAg
ICAgbGljZW5zZV9ibG9jay5hcHBlbmQoIiAqLyIpCisKKyAgICAgICAgcmV0dXJuICdcbicuam9p
bihsaWNlbnNlX2Jsb2NrKQorCisgICAgIyBUaGVzZSBtZXRob2RzIGFyZSBvdmVycmlkZGVuIGJ5
IHN1YmNsYXNzZXMuCisgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKKyAgICAgICAgcGFz
cworCisgICAgZGVmIG91dHB1dF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgcGFzcwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3NjcmlwdHMvY29kZWdlbi9idWlsdGluc19tb2Rl
bC5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9zY3JpcHRzL2NvZGVnZW4vYnVpbHRpbnNfbW9k
ZWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjc2ZmUzZTYxMzU3ODYxN2E5NzE3ZmZhYmQyY2M1ZTIzY2FhZmUx
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9zY3JpcHRzL2NvZGVn
ZW4vYnVpbHRpbnNfbW9kZWwucHkKQEAgLTAsMCArMSwyNTUgQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGxv
Z2dpbmcKK2ltcG9ydCByZQoraW1wb3J0IG9zCisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdn
bG9iYWwnKQorCitfRlJBTUVXT1JLX0NPTkZJR19NQVAgPSB7CisgICAgIkdsb2JhbCI6IHsKKyAg
ICB9LAorICAgICJKYXZhU2NyaXB0Q29yZSI6IHsKKyAgICAgICAgIm1hY3JvX3ByZWZpeCI6ICJK
U0MiLAorICAgICAgICAibmFtZXNwYWNlIjogIkpTQyIKKyAgICB9LAorICAgICJXZWJDb3JlIjog
eworICAgICAgICAibWFjcm9fcHJlZml4IjogIldFQkNPUkUiLAorICAgICAgICAibmFtZXNwYWNl
IjogIldlYkNvcmUiCisgICAgfSwKKyAgICAjIFVzZWQgZm9yIGNvZGUgZ2VuZXJhdG9yIHRlc3Rz
LgorICAgICJUZXN0IjogeworICAgIH0KK30KKworZGVmIGxjZmlyc3Qoc3RyKToKKyAgICByZXR1
cm4gc3RyWzoxXS5sb3dlcigpICsgc3RyWzE6XQorCisKK2Z1bmN0aW9uSGVhZFJlZ0V4cCA9IHJl
LmNvbXBpbGUociIoPzpmdW5jdGlvbnxjb25zdHJ1Y3RvcilccytcdytccypcKC4qP1wpIiwgcmUu
TVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uTmFtZVJlZ0V4cCA9IHJlLmNvbXBpbGUociIoPzpm
dW5jdGlvbnxjb25zdHJ1Y3RvcilccysoXHcrKVxzKlwoIiwgcmUuTVVMVElMSU5FIHwgcmUuUykK
K2Z1bmN0aW9uSXNDb25zdHJ1Y3RvclJlZ0V4cCA9IHJlLmNvbXBpbGUociJeY29uc3RydWN0b3Ii
LCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIgPSByZS5jb21w
aWxlKHIiXig/OmZ1bmN0aW9ufGNvbnN0cnVjdG9yKVxzKyg/Olx3KylccypcKCgoPzpccypcdysp
P1xzKig/OlxzKixccypcdyspKik/XHMqXCkiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorCittdWx0
aWxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXCouKj9cKlwvIiwgcmUuTVVMVElM
SU5FIHwgcmUuUykKK3NpbmdsZUxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXC8u
Kj9cbiIsIHJlLk1VTFRJTElORSB8IHJlLlMpCisKKworY2xhc3MgUGFyc2VFeGNlcHRpb24oRXhj
ZXB0aW9uKToKKyAgICBwYXNzCisKKworY2xhc3MgRnJhbWV3b3JrOgorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBuYW1lKToKKyAgICAgICAgc2VsZi5fc2V0dGluZ3MgPSBfRlJBTUVXT1JLX0NPTkZJ
R19NQVBbbmFtZV0KKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisgICAgZGVmIHNldHRpbmco
c2VsZiwga2V5LCBkZWZhdWx0PScnKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NldHRpbmdzLmdl
dChrZXksIGRlZmF1bHQpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGZyb21TdHJpbmco
ZnJhbWV3b3JrU3RyaW5nKToKKyAgICAgICAgaWYgZnJhbWV3b3JrU3RyaW5nID09ICJHbG9iYWwi
OgorICAgICAgICAgICAgcmV0dXJuIEZyYW1ld29ya3MuR2xvYmFsCisKKyAgICAgICAgaWYgZnJh
bWV3b3JrU3RyaW5nID09ICJKYXZhU2NyaXB0Q29yZSI6CisgICAgICAgICAgICByZXR1cm4gRnJh
bWV3b3Jrcy5KYXZhU2NyaXB0Q29yZQorCisgICAgICAgIGlmIGZyYW1ld29ya1N0cmluZyA9PSAi
V2ViQ29yZSI6CisgICAgICAgICAgICByZXR1cm4gRnJhbWV3b3Jrcy5XZWJDb3JlCisKKyAgICAg
ICAgaWYgZnJhbWV3b3JrU3RyaW5nID09ICJUZXN0IjoKKyAgICAgICAgICAgIHJldHVybiBGcmFt
ZXdvcmtzLlRlc3QKKworICAgICAgICByYWlzZSBQYXJzZUV4Y2VwdGlvbigiVW5rbm93biBmcmFt
ZXdvcms6ICVzIiAlIGZyYW1ld29ya1N0cmluZykKKworCitjbGFzcyBGcmFtZXdvcmtzOgorICAg
IEdsb2JhbCA9IEZyYW1ld29yaygiR2xvYmFsIikKKyAgICBKYXZhU2NyaXB0Q29yZSA9IEZyYW1l
d29yaygiSmF2YVNjcmlwdENvcmUiKQorICAgIFdlYkNvcmUgPSBGcmFtZXdvcmsoIldlYkNvcmUi
KQorICAgIFRlc3QgPSBGcmFtZXdvcmsoIlRlc3QiKQorCitjbGFzcyBGdW5jdGlvbjoKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgbmFtZSwgc291cmNlLCBpc0NvbnN0cnVjdG9yLCBwYXJhbWV0ZXJz
KToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLnNvdXJjZSA9IHNvdXJj
ZQorICAgICAgICBzZWxmLmlzQ29uc3RydWN0b3IgPSBpc0NvbnN0cnVjdG9yCisgICAgICAgIHNl
bGYucGFyYW1ldGVycyA9IHBhcmFtZXRlcnMKKyAgICAgICAgc2VsZi5vYmplY3QgPSBOb25lICAj
IFNldCBieSB0aGUgb3duaW5nIE9iamVjdAorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBm
cm9tU3RyaW5nKGZ1bmN0aW9uU3RyaW5nKToKKyAgICAgICAgZnVuY3Rpb25TdHJpbmcgPSBtdWx0
aWxpbmVDb21tZW50UmVnRXhwLnN1YigiIiwgZnVuY3Rpb25TdHJpbmcpCisgICAgICAgIGZ1bmN0
aW9uTmFtZSA9IGZ1bmN0aW9uTmFtZVJlZ0V4cC5maW5kYWxsKGZ1bmN0aW9uU3RyaW5nKVswXQor
ICAgICAgICBmdW5jdGlvbklzQ29uc3RydWN0b3IgPSBmdW5jdGlvbklzQ29uc3RydWN0b3JSZWdF
eHAubWF0Y2goZnVuY3Rpb25TdHJpbmcpICE9IE5vbmUKKyAgICAgICAgZnVuY3Rpb25QYXJhbWV0
ZXJzID0gW3Muc3RyaXAoKSBmb3IgcyBpbiBmdW5jdGlvblBhcmFtZXRlckZpbmRlci5maW5kYWxs
KGZ1bmN0aW9uU3RyaW5nKVswXS5zcGxpdCgnLCcpXQorICAgICAgICBpZiBsZW4oZnVuY3Rpb25Q
YXJhbWV0ZXJzWzBdKSA9PSAwOgorICAgICAgICAgICAgZnVuY3Rpb25QYXJhbWV0ZXJzID0gW10K
KworICAgICAgICByZXR1cm4gRnVuY3Rpb24oZnVuY3Rpb25OYW1lLCBmdW5jdGlvblN0cmluZywg
ZnVuY3Rpb25Jc0NvbnN0cnVjdG9yLCBmdW5jdGlvblBhcmFtZXRlcnMpCisKKyAgICBkZWYgbWFu
Z2xlZE5hbWUoc2VsZik6CisgICAgICAgIHFOYW1lID0gIiVzLiVzIiAlIChzZWxmLm9iamVjdCwg
c2VsZi5uYW1lKQorICAgICAgICBtYW5nbGVkTmFtZSA9ICIiCisgICAgICAgIGkgPSAwCisgICAg
ICAgIHdoaWxlIGkgPCBsZW4ocU5hbWUpOgorICAgICAgICAgICAgaWYgcU5hbWVbaV0gPT0gJy4n
OgorICAgICAgICAgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtpICsg
MV0udXBwZXIoKQorICAgICAgICAgICAgICAgIGkgPSBpICsgMQorICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lICsgcU5hbWVbaV0KKyAg
ICAgICAgICAgIGkgPSBpICsgMQorICAgICAgICBpZiBzZWxmLmlzQ29uc3RydWN0b3I6CisgICAg
ICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lICsgIkNvbnN0cnVjdG9yIgorICAgICAg
ICByZXR1cm4gbWFuZ2xlZE5hbWUKKworICAgIGRlZiBtYW5nbGVkTmFtZUZvckNvZGUoc2VsZik6
CisgICAgICAgIHJldHVybiBsY2ZpcnN0KHNlbGYubWFuZ2xlZE5hbWUoKSkgKyAiQ29kZSIKKwor
ICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBpbnRlcmZhY2UgPSAiJXMoJXMpIiAlIChz
ZWxmLm5hbWUsICcsICcuam9pbihzZWxmLnBhcmFtZXRlcnMpKQorICAgICAgICBpZiBzZWxmLmlz
Q29uc3RydWN0b3I6CisgICAgICAgICAgICBpbnRlcmZhY2UgPSBpbnRlcmZhY2UgKyAiIFtDb25z
dHJ1Y3Rvcl0iCisKKyAgICAgICAgcmV0dXJuIGludGVyZmFjZQorCitjbGFzcyBCdWlsdGluczoK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgZnJhbWV3b3JrX25hbWUpOgorICAgICAgICBzZWxmLl9j
b3B5cmlnaHRfbGluZXMgPSBzZXQoKQorCisgICAgICAgIHNlbGYub2JqZWN0cyA9IGRpY3QoKSAg
IyBmcm9tIG9iamVjdF9uYW1lIHRvIGxpc3QoRnVuY3Rpb24pCisgICAgICAgIHNlbGYuZnJhbWV3
b3JrID0gRnJhbWV3b3JrLmZyb21TdHJpbmcoZnJhbWV3b3JrX25hbWUpCisgICAgICAgIGxvZy5k
ZWJ1ZygiQ3JlYXRlZCBuZXcgQnVpbHRpbnMgbW9kZWwuIikKKworCisgICAgZGVmIHBhcnNlX2J1
aWx0aW5zX2ZpbGUoc2VsZiwgZmlsZW5hbWUsIHRleHQpOgorICAgICAgICBsb2cuZGVidWcoIlBh
cnNpbmcgYnVpbHRpbnMgZmlsZTogJXMiICUgZmlsZW5hbWUpCisKKyAgICAgICAgcGFyc2VkX2Nv
cHlyaWdodHMgPSBzZXQoc2VsZi5fcGFyc2VfY29weXJpZ2h0X2xpbmVzKHRleHQpKQorICAgICAg
ICBzZWxmLl9jb3B5cmlnaHRfbGluZXMgPSBzZWxmLl9jb3B5cmlnaHRfbGluZXMudW5pb24ocGFy
c2VkX2NvcHlyaWdodHMpCisKKyAgICAgICAgbG9nLmRlYnVnKCJGb3VuZCBjb3B5cmlnaHQgbGlu
ZXM6IikKKyAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5fY29weXJpZ2h0X2xpbmVzOgorICAgICAg
ICAgICAgbG9nLmRlYnVnKGxpbmUpOworICAgICAgICBsb2cuZGVidWcoIiIpCisKKyAgICAgICAg
b2JqZWN0X25hbWUsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShmaWxl
bmFtZSkpCisgICAgICAgIGxvZy5kZWJ1ZygiQ3JlYXRpbmcgb2JqZWN0OiAlcyIgJSBvYmplY3Rf
bmFtZSkKKworICAgICAgICBwYXJzZWRfZnVuY3Rpb25zID0gc2VsZi5fcGFyc2VfZnVuY3Rpb25z
KHRleHQpCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBwYXJzZWRfZnVuY3Rpb25zOgorICAgICAg
ICAgICAgZnVuY3Rpb24ub2JqZWN0ID0gb2JqZWN0X25hbWUKKyAgICAgICAgc2VsZi5vYmplY3Rz
W29iamVjdF9uYW1lXSA9IHBhcnNlZF9mdW5jdGlvbnMKKworICAgICAgICBsb2cuZGVidWcoIkZv
dW5kIGZ1bmN0aW9uczoiKQorICAgICAgICBmb3IgZnVuYyBpbiBwYXJzZWRfZnVuY3Rpb25zOgor
ICAgICAgICAgICAgbG9nLmRlYnVnKGZ1bmMpCisgICAgICAgIGxvZy5kZWJ1ZygiIikKKworICAg
IGRlZiBjb3B5cmlnaHRzKHNlbGYpOgorICAgICAgICBvd25lcl90b195ZWFycyA9IGRpY3QoKQor
ICAgICAgICBjb3B5cmlnaHRZZWFyUmVnRXhwID0gcmUuY29tcGlsZShyIihcZHs0fSlbLCBdezAs
Mn0iKQorICAgICAgICBvd25lclN0YXJ0UmVnRXhwID0gcmUuY29tcGlsZShyIlteXGQsIF0iKQor
CisgICAgICAgICMgUmV0dXJucyBkZWR1cGxpY2F0ZWQgY29weXJpZ2h0cyBrZXllZCBvbiB0aGUg
b3duZXIuCisgICAgICAgIGZvciBsaW5lIGluIHNlbGYuX2NvcHlyaWdodF9saW5lczoKKyAgICAg
ICAgICAgIHllYXJzID0gc2V0KGNvcHlyaWdodFllYXJSZWdFeHAuZmluZGFsbChsaW5lKSkKKyAg
ICAgICAgICAgIG93bmVySW5kZXggPSBvd25lclN0YXJ0UmVnRXhwLnNlYXJjaChsaW5lKS5zdGFy
dCgpCisgICAgICAgICAgICBvd25lciA9IGxpbmVbb3duZXJJbmRleDpdCisgICAgICAgICAgICBs
b2cuZGVidWcoIkZvdW5kIHllYXJzOiAlcyBhbmQgb3duZXI6ICVzIiAlICh5ZWFycywgb3duZXIp
KQorICAgICAgICAgICAgaWYgb3duZXIgbm90IGluIG93bmVyX3RvX3llYXJzOgorICAgICAgICAg
ICAgICAgIG93bmVyX3RvX3llYXJzW293bmVyXSA9IHNldCgpCisKKyAgICAgICAgICAgIG93bmVy
X3RvX3llYXJzW293bmVyXSA9IG93bmVyX3RvX3llYXJzW293bmVyXS51bmlvbih5ZWFycykKKwor
ICAgICAgICByZXN1bHQgPSBbXQorCisgICAgICAgIGZvciBvd25lciwgeWVhcnMgaW4gb3duZXJf
dG9feWVhcnMuaXRlbXMoKToKKyAgICAgICAgICAgIHNvcnRlZF95ZWFycyA9IGxpc3QoeWVhcnMp
CisgICAgICAgICAgICBzb3J0ZWRfeWVhcnMuc29ydCgpCisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCIlcyAlcyIgJSAoJywgJy5qb2luKHNvcnRlZF95ZWFycyksIG93bmVyKSkKKworICAgICAg
ICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgYWxsX2Z1bmN0aW9ucyhzZWxmKToKKyAgICAgICAg
cmVzdWx0ID0gW10KKyAgICAgICAgZm9yIGZ1bmN0aW9ucyBpbiBzZWxmLm9iamVjdHMudmFsdWVz
KCk6CisgICAgICAgICAgICByZXN1bHQuZXh0ZW5kKGZ1bmN0aW9ucykKKworICAgICAgICByZXN1
bHQuc29ydCgpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgICMgUHJpdmF0ZSBtZXRob2Rz
LgorCisgICAgZGVmIF9wYXJzZV9jb3B5cmlnaHRfbGluZXMoc2VsZiwgdGV4dCk6CisgICAgICAg
IGxpY2Vuc2VCbG9jayA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuZmluZGFsbCh0ZXh0KVswXQor
ICAgICAgICBsaWNlbnNlQmxvY2sgPSBsaWNlbnNlQmxvY2tbOmxpY2Vuc2VCbG9jay5pbmRleCgi
UmVkaXN0cmlidXRpb24iKV0KKworICAgICAgICBjb3B5cmlnaHRMaW5lcyA9IFtdCisgICAgICAg
IGZvciBsaW5lIGluIGxpY2Vuc2VCbG9jay5zcGxpdCgiXG4iKToKKyAgICAgICAgICAgIGxpbmUg
PSBsaW5lLnJlcGxhY2UoIi8qIiwgIiIpCisgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNl
KCIqLyIsICIiKQorICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKiIsICIiKQorICAg
ICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiQ29weXJpZ2h0IiwgIiIpCisgICAgICAgICAg
ICBsaW5lID0gbGluZS5yZXBsYWNlKCJjb3B5cmlnaHQiLCAiIikKKyAgICAgICAgICAgIGxpbmUg
PSBsaW5lLnJlcGxhY2UoIihDKSIsICIiKQorICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFj
ZSgiKGMpIiwgIiIpCisgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpOworCisgICAgICAg
ICAgICBpZiBsZW4obGluZSkgPT0gMDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAg
ICAgICAgICBjb3B5cmlnaHRMaW5lcy5hcHBlbmQobGluZSkKKyAgICAgICAgCisgICAgICAgIHJl
dHVybiBjb3B5cmlnaHRMaW5lcworCisgICAgZGVmIF9wYXJzZV9mdW5jdGlvbnMoc2VsZiwgdGV4
dCk6CisgICAgICAgIHRleHQgPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiLyoqLyIsIHNp
bmdsZUxpbmVDb21tZW50UmVnRXhwLnN1YigiLy9cbiIsIHRleHQpKQorCisgICAgICAgIG1hdGNo
ZXMgPSBbZnVuYyBmb3IgZnVuYyBpbiBmdW5jdGlvbkhlYWRSZWdFeHAuZmluZGl0ZXIodGV4dCld
CisgICAgICAgIGZ1bmN0aW9uQm91bmRzID0gW10KKyAgICAgICAgc3RhcnQgPSAwCisgICAgICAg
IGVuZCA9IDAKKyAgICAgICAgZm9yIG1hdGNoIGluIG1hdGNoZXM6CisgICAgICAgICAgICBzdGFy
dCA9IG1hdGNoLnN0YXJ0KCkKKyAgICAgICAgICAgIGlmIHN0YXJ0IDwgZW5kOgorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBlbmQgPSBtYXRjaC5lbmQoKQorICAgICAgICAg
ICAgd2hpbGUgdGV4dFtlbmRdICE9ICd7JzoKKyAgICAgICAgICAgICAgICBlbmQgPSBlbmQgKyAx
CisgICAgICAgICAgICBkZXB0aCA9IDEKKyAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAg
ICAgICAgIHdoaWxlIGRlcHRoID4gMDoKKyAgICAgICAgICAgICAgICBpZiB0ZXh0W2VuZF0gPT0g
J3snOgorICAgICAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRoICsgMQorICAgICAgICAgICAg
ICAgIGVsaWYgdGV4dFtlbmRdID09ICd9JzoKKyAgICAgICAgICAgICAgICAgICAgZGVwdGggPSBk
ZXB0aCAtIDEKKyAgICAgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAgICBmdW5j
dGlvbkJvdW5kcy5hcHBlbmQoKHN0YXJ0LCBlbmQpKQorCisgICAgICAgIGZ1bmN0aW9uU3RyaW5n
cyA9IFt0ZXh0W3N0YXJ0OmVuZF0uc3RyaXAoKSBmb3IgKHN0YXJ0LCBlbmQpIGluIGZ1bmN0aW9u
Qm91bmRzXQorICAgICAgICByZXR1cm4gbWFwKEZ1bmN0aW9uLmZyb21TdHJpbmcsIGZ1bmN0aW9u
U3RyaW5ncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvc2NyaXB0cy9jb2Rl
Z2VuL2J1aWx0aW5zX3RlbXBsYXRlcy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9zY3JpcHRz
L2NvZGVnZW4vYnVpbHRpbnNfdGVtcGxhdGVzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiOTQ0MDBkOTRhNDQ2
NDJmYWU0NTY5MDZmMmIyYWM4YjY0NWM4ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvc2NyaXB0cy9jb2RlZ2VuL2J1aWx0aW5zX3RlbXBsYXRlcy5weQpAQCAtMCww
ICsxLDEwMSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisjIEJ1aWx0aW5zIGdlbmVyYXRvciB0ZW1wbGF0ZXMsIHdoaWNo
IGNhbiBiZSBmaWxsZWQgd2l0aCBzdHJpbmcuVGVtcGxhdGUuCisKK2NsYXNzIEJ1aWx0aW5zR2Vu
ZXJhdG9yVGVtcGxhdGVzOgorCisgICAgTGljZW5zZVRleHQgPSAoCisgICAgIiIiUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKK2FyZSBtZXQ6CisxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKK0FORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCitCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCitDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCitJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKK0FS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKK1RIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIikKKworICAg
IERvTm90RWRpdFdhcm5pbmcgPSAoCisgICAgIiIiLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJ
dCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisv
LyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvc2NyaXB0cy9n
ZW5lcmF0ZS1qcy1idWlsdGlucy5weSIiIikKKworICAgIEhlYWRlclByZWx1ZGUgPSAoCisgICAg
IiIiI2lmbmRlZiBKU0NCdWlsdGluc19oCisjZGVmaW5lIEpTQ0J1aWx0aW5zX2giIiIpCisKKyAg
ICBIZWFkZXJQb3N0bHVkZSA9ICgKKyAgICAiIiJ9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIEpTQ0J1aWx0aW5zX2gKKyIiIikKKworICAgIEltcGxlbWVudGF0aW9uUHJlbHVkZSA9ICgK
KyIiIiNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisKKyNp
bmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisj
aW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSAk
e25hbWVzcGFjZX0geyIiIikKKworICAgIEltcGxlbWVudGF0aW9uUG9zdGx1ZGUgPSAoCisgICAg
IiIifSAvLyBuYW1lc3BhY2UgJHtuYW1lc3BhY2V9CisiIiIpCisKKyAgICBIZWFkZXJTdGF0aWNN
YWNyb3MgPSAoCisgICAgIiIiI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVO
YW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCisgICAgSlNDOjpGdW5jdGlvbkV4
ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCitKU0NfRk9SRUFDSF9C
VUlMVElOKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlMVElO
X0dFTkVSQVRPUgorCisjZGVmaW5lIEpTQ19CVUlMVElOX0VYSVNUUyhuYW1lKSBkZWZpbmVkIEpT
Q19CVUlMVElOXyAjIyBuYW1lIiIiKQorCisgICAgSW1wbGVtZW50YXRpb25TdGF0aWNNYWNyb3Mg
PSAoCisgICAgIiIiCisjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwg
ZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUq
IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCit7XFwKKyAgICByZXR1cm4gdm0u
YnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZt
LmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyBcCit9CitKU0NfRk9S
RUFDSF9CVUlMVElOKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJ
TFRJTl9HRU5FUkFUT1IKKyIiIikKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2J1aWx0
aW5zX2NvbWJpbmVkX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9zY3JpcHRzL2Nv
ZGVnZW4vZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaGVhZGVyLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUy
NGYxOWVmMGY5OWQ1MWJlNDhkNDYwNjJiMjJhOTQ5MmI1ZjEwNDkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2J1aWx0aW5z
X2NvbWJpbmVkX2hlYWRlci5weQpAQCAtMCwwICsxLDE1OSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgcmUKK2ltcG9ydCBzdHJpbmcKK2Zyb20g
c3RyaW5nIGltcG9ydCBUZW1wbGF0ZQorCitmcm9tIGJ1aWx0aW5zX2dlbmVyYXRvciBpbXBvcnQg
QnVpbHRpbnNHZW5lcmF0b3IKK2Zyb20gYnVpbHRpbnNfdGVtcGxhdGVzIGltcG9ydCBCdWlsdGlu
c0dlbmVyYXRvclRlbXBsYXRlcyBhcyBUZW1wbGF0ZXMKKworbG9nID0gbG9nZ2luZy5nZXRMb2dn
ZXIoJ2dsb2JhbCcpCisKKworY2xhc3MgQnVpbHRpbnNDb21iaW5lZEhlYWRlckdlbmVyYXRvcihC
dWlsdGluc0dlbmVyYXRvcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZGVsKToKKyAgICAg
ICAgQnVpbHRpbnNHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWwpCisKKyAgICBkZWYgb3V0
cHV0X2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gIiVzQnVpbHRpbnMuaCIgJSBzZWxm
Lm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpCisKKyAgICBkZWYgZ2VuZXJh
dGVfb3V0cHV0KHNlbGYpOgorICAgICAgICBhcmdzID0geworICAgICAgICAgICAgJ25hbWVzcGFj
ZSc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNlJykKKyAgICAgICAg
fQorCisgICAgICAgIHNlY3Rpb25zID0gW10KKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYu
Z2VuZXJhdGVfbGljZW5zZSgpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVt
cGxhdGVzLkRvTm90RWRpdFdhcm5pbmcpLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rp
b25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuSGVhZGVyUHJlbHVkZSkuc3Vic3RpdHV0ZShh
cmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfZm9yd2FyZF9kZWNs
YXJhdGlvbnMoKSkKKyAgICAgICAgZm9yIG9iaiwgZnVuY3Rpb25zIGluIHNlbGYubW9kZWwoKS5v
YmplY3RzLml0ZW1zKCk6CisgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0
ZV9zZWN0aW9uX2Zvcl9vYmplY3Qob2JqLCBmdW5jdGlvbnMpKQorICAgICAgICBzZWN0aW9ucy5h
cHBlbmQoc2VsZi5nZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX3RhYmxlX21hY3JvKCkpCisgICAg
ICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfbmFtZV9t
YWNybygpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkhlYWRl
clN0YXRpY01hY3Jvcykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5k
KFRlbXBsYXRlKFRlbXBsYXRlcy5IZWFkZXJQb3N0bHVkZSkuc3Vic3RpdHV0ZShhcmdzKSkKKwor
ICAgICAgICByZXR1cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMpCisKKyAgICBkZWYgZ2VuZXJhdGVf
Zm9yd2FyZF9kZWNsYXJhdGlvbnMoc2VsZik6CisgICAgICAgIHJldHVybiAiIiJuYW1lc3BhY2Ug
SlNDIHsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIFZNOworCitlbnVtIGNsYXNz
IENvbnN0cnVjdEFiaWxpdHkgOiB1bnNpZ25lZDsKK30KKworbmFtZXNwYWNlICVzIHsiIiIgJSBz
ZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpCisKKyAgICBkZWYgZ2Vu
ZXJhdGVfc2VjdGlvbl9mb3Jfb2JqZWN0KHNlbGYsIG9iaiwgZnVuY3Rpb25zKToKKyAgICAgICAg
bGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoJy8qICVzICovJyAlIG9iaikKKyAgICAg
ICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2VuZXJhdGVfZXh0ZXJuc19mb3Jfb2JqZWN0KG9iaiwgZnVu
Y3Rpb25zKSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCIiKQorICAgICAgICBsaW5lcy5leHRlbmQo
c2VsZi5nZW5lcmF0ZV9tYWNyb3NfZm9yX29iamVjdChvYmosIGZ1bmN0aW9ucykpCisgICAgICAg
IGxpbmVzLmFwcGVuZCgiIikKKyAgICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2VuZXJhdGVfZGVm
aW5lc19mb3Jfb2JqZWN0KG9iaiwgZnVuY3Rpb25zKSkKKyAgICAgICAgcmV0dXJuICdcbicuam9p
bihsaW5lcykKKworICAgIGRlZiBnZW5lcmF0ZV9leHRlcm5zX2Zvcl9vYmplY3Qoc2VsZiwgb2Jq
LCBmdW5jdGlvbnMpOgorICAgICAgICBsaW5lcyA9IFtdCisKKyAgICAgICAgZm9yIGZ1bmN0aW9u
IGluIGZ1bmN0aW9uczoKKyAgICAgICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSB7CisgICAgICAgICAg
ICAgICAgJ2NvZGVOYW1lJzogZnVuY3Rpb24ubWFuZ2xlZE5hbWVGb3JDb2RlKCkKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIiImV4dGVybiBjb25zdCBjaGFyKiBz
XyUoY29kZU5hbWUpczsKK2V4dGVybiBjb25zdCBpbnQgc18lKGNvZGVOYW1lKXNMZW5ndGg7Citl
eHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfJShjb2RlTmFtZSlzQ29uc3RydWN0
QWJpbGl0eTsiIiIgJSBmdW5jdGlvbl9hcmdzKQorCisgICAgICAgIHJldHVybiBsaW5lcworCisg
ICAgZGVmIGdlbmVyYXRlX21hY3Jvc19mb3Jfb2JqZWN0KHNlbGYsIG9iaiwgZnVuY3Rpb25zKToK
KyAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICdwcmVmaXgnOiBzZWxmLm1vZGVsKCkuZnJh
bWV3b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZpeCcpLAorICAgICAgICAgICAgJ29iamVjdE1hY3Jv
Jzogb2JqLnJlcGxhY2UoJy4nLCAnXycpLnVwcGVyKCkKKyAgICAgICAgfQorCisgICAgICAgIGxp
bmVzID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCIjZGVmaW5lICUocHJlZml4KXNfRk9SRUFD
SF8lKG9iamVjdE1hY3JvKXNfQlVJTFRJTihtYWNybykgXFwiICUgYXJncykKKyAgICAgICAgZm9y
IGZ1bmN0aW9uIGluIGZ1bmN0aW9uczoKKyAgICAgICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSB7Cisg
ICAgICAgICAgICAgICAgJ2Z1bmNOYW1lJzogZnVuY3Rpb24ubmFtZSwKKyAgICAgICAgICAgICAg
ICAnbWFuZ2xlZE5hbWUnOiBmdW5jdGlvbi5tYW5nbGVkTmFtZSgpLAorICAgICAgICAgICAgICAg
ICdwYXJhbUNvdW50JzogbGVuKGZ1bmN0aW9uLnBhcmFtZXRlcnMpCisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiICAgIG1hY3JvKCUoZnVuY05hbWUpcywgJShtYW5n
bGVkTmFtZSlzLCAlKHBhcmFtQ291bnQpZCkgXFwiICUgZnVuY3Rpb25fYXJncykKKyAgICAgICAg
cmV0dXJuIGxpbmVzCisKKyAgICBkZWYgZ2VuZXJhdGVfZGVmaW5lc19mb3Jfb2JqZWN0KHNlbGYs
IG9iaiwgZnVuY3Rpb25zKToKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBmb3IgZnVuY3Rp
b24gaW4gZnVuY3Rpb25zOgorICAgICAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICAgICAn
cHJlZml4Jzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdtYWNyb19wcmVmaXgnKSwK
KyAgICAgICAgICAgICAgICAnbWFuZ2xlZE5hbWUnOiBmdW5jdGlvbi5tYW5nbGVkTmFtZSgpLnVw
cGVyKCksCisgICAgICAgICAgICB9CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiNkZWZpbmUg
JShwcmVmaXgpc19CVUlMVElOXyUobWFuZ2xlZE5hbWUpcyAxIiAlIGFyZ3MpCisKKyAgICAgICAg
cmV0dXJuIGxpbmVzCisKKyAgICBkZWYgZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV90YWJsZV9t
YWNybyhzZWxmKToKKyAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICdwcmVmaXgnOiBzZWxm
Lm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZpeCcpLAorICAgICAgICB9CisK
KyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoIiNkZWZpbmUgJShwcmVm
aXgpc19GT1JFQUNIX0JVSUxUSU4obWFjcm8pIFxcIiAlIGFyZ3MpCisgICAgICAgIGZvciBmdW5j
dGlvbiBpbiBzZWxmLm1vZGVsKCkuYWxsX2Z1bmN0aW9ucygpOgorICAgICAgICAgICAgZnVuY3Rp
b25fYXJncyA9IHsKKyAgICAgICAgICAgICAgICAnZnVuY05hbWUnOiBmdW5jdGlvbi5uYW1lLAor
ICAgICAgICAgICAgICAgICdjb2RlTmFtZSc6IGZ1bmN0aW9uLm1hbmdsZWROYW1lRm9yQ29kZSgp
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiICAgIG1hY3JvKCUo
Y29kZU5hbWUpcywgJShmdW5jTmFtZSlzLCBzXyUoY29kZU5hbWUpc0xlbmd0aCkgXFwiICUgZnVu
Y3Rpb25fYXJncykKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKKworICAgIGRlZiBn
ZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX25hbWVfbWFjcm8oc2VsZik6CisgICAgICAgIGFyZ3Mg
PSB7CisgICAgICAgICAgICAncHJlZml4Jzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5n
KCdtYWNyb19wcmVmaXgnKSwKKyAgICAgICAgfQorCisgICAgICAgIGxpbmVzID0gW10KKyAgICAg
ICAgbGluZXMuYXBwZW5kKCIjZGVmaW5lICUocHJlZml4KXNfRk9SRUFDSF9CVUlMVElOX0ZVTkNU
SU9OX05BTUUobWFjcm8pIFxcIiAlIGFyZ3MpCisgICAgICAgIHVuaXF1ZV9uYW1lcyA9IGxpc3Qo
c2V0KFtmdW5jdGlvbi5uYW1lIGZvciBmdW5jdGlvbiBpbiBzZWxmLm1vZGVsKCkuYWxsX2Z1bmN0
aW9ucygpXSkpCisgICAgICAgIHVuaXF1ZV9uYW1lcy5zb3J0KCkKKyAgICAgICAgZm9yIGZ1bmN0
aW9uX25hbWUgaW4gdW5pcXVlX25hbWVzOgorICAgICAgICAgICAgZnVuY3Rpb25fYXJncyA9IHsK
KyAgICAgICAgICAgICAgICAnZnVuY05hbWUnOiBmdW5jdGlvbl9uYW1lLAorICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiAgICBtYWNybyglKGZ1bmNOYW1lKXMpIFxc
IiAlIGZ1bmN0aW9uX2FyZ3MpCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2J1
aWx0aW5zX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRhdGlv
bi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jNmRkYWQ3NjA4OTJiN2I5MWM5NzM4MjUzMjIzNTljYWUwY2M3YTAz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3NjcmlwdHMvY29kZWdl
bi9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weQpAQCAtMCwwICsx
LDkwIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE0LCAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDE0
IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9y
dCByZQoraW1wb3J0IHN0cmluZworZnJvbSBzdHJpbmcgaW1wb3J0IFRlbXBsYXRlCitpbXBvcnQg
anNvbgorCitmcm9tIGJ1aWx0aW5zX2dlbmVyYXRvciBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3Is
IHVjZmlyc3QKK2Zyb20gYnVpbHRpbnNfdGVtcGxhdGVzIGltcG9ydCBCdWlsdGluc0dlbmVyYXRv
clRlbXBsYXRlcyBhcyBUZW1wbGF0ZXMKKworbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2Jh
bCcpCisKKworY2xhc3MgQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEJ1
aWx0aW5zR2VuZXJhdG9yKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZWwpOgorICAgICAg
ICBCdWlsdGluc0dlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBtb2RlbCkKKworICAgIGRlZiBvdXRw
dXRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiAiJXNCdWlsdGlucy5jcHAiICUgc2Vs
Zi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCduYW1lc3BhY2UnKQorCisgICAgZGVmIGdlbmVy
YXRlX291dHB1dChzZWxmKToKKyAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICduYW1lc3Bh
Y2UnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpCisgICAgICAg
IH0KKworICAgICAgICBzZWN0aW9ucyA9IFtdCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxm
LmdlbmVyYXRlX2xpY2Vuc2UoKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRl
bXBsYXRlcy5Eb05vdEVkaXRXYXJuaW5nKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0
aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkltcGxlbWVudGF0aW9uUHJlbHVkZSkuc3Vi
c3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuZXh0ZW5kKHNlbGYuZ2VuZXJhdGVfZW1i
ZWRkZWRfY29kZV9zdHJpbmdfc2VjdGlvbnMoKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRl
bXBsYXRlKFRlbXBsYXRlcy5JbXBsZW1lbnRhdGlvblN0YXRpY01hY3Jvcykuc3Vic3RpdHV0ZShh
cmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5JbXBsZW1l
bnRhdGlvblBvc3RsdWRlKS5zdWJzdGl0dXRlKGFyZ3MpKQorCisgICAgICAgIHJldHVybiAiXG5c
biIuam9pbihzZWN0aW9ucykKKworICAgIGRlZiBnZW5lcmF0ZV9lbWJlZGRlZF9jb2RlX3N0cmlu
Z19zZWN0aW9ucyhzZWxmKToKKyAgICAgICAgc3Vic2VjdGlvbnMgPSBbXQorICAgICAgICBmb3Ig
ZnVuY3Rpb24gaW4gc2VsZi5tb2RlbCgpLmFsbF9mdW5jdGlvbnMoKToKKyAgICAgICAgICAgIHRl
eHQgPSBmdW5jdGlvbi5zb3VyY2UKKyAgICAgICAgICAgICMgV3JhcCBpdCBpbiBwYXJlbnMgdG8g
YXZvaWQgYWRkaW5nIHRvIGdsb2JhbCBzY29wZS4KKyAgICAgICAgICAgIHRleHQgPSAiKGZ1bmN0
aW9uICIgKyB0ZXh0W3RleHQuaW5kZXgoIigiKTpdICsgIikiCisgICAgICAgICAgICAjIExhenkg
d2F5IHRvIGVzY2FwZSBxdW90ZXMsIEkgdGhpbms/CisgICAgICAgICAgICB0ZXh0TGluZXMgPSBq
c29uLmR1bXBzKHRleHQpWzE6LTFdLnNwbGl0KCJcXG4iKQorICAgICAgICAgICAgIyBUaGlzIGxv
b2tzIHNjYXJ5IGJlY2F1c2Ugd2UgbmVlZCB0aGUgSlMgc291cmNlIGl0c2VsZiB0byBoYXZlIG5l
d2xpbmVzLgorICAgICAgICAgICAgZW1iZWRkZWRTb3VyY2UgPSAnXG4nLmpvaW4oWycgICAiJXNc
XG4iIFxcJyAlIGxpbmUgZm9yIGxpbmUgaW4gdGV4dExpbmVzXSkKKworICAgICAgICAgICAgY29u
c3RydWN0QWJpbGl0eSA9ICJDYW5ub3RDb25zdHJ1Y3QiCisgICAgICAgICAgICBpZiBmdW5jdGlv
bi5pc0NvbnN0cnVjdG9yOgorICAgICAgICAgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSAiQ2Fu
Q29uc3RydWN0IgorCisgICAgICAgICAgICBhcmdzID0geworICAgICAgICAgICAgICAgICdjb2Rl
TmFtZSc6IGZ1bmN0aW9uLm1hbmdsZWROYW1lRm9yQ29kZSgpLAorICAgICAgICAgICAgICAgICdl
bWJlZGRlZFNvdXJjZSc6IGVtYmVkZGVkU291cmNlLAorICAgICAgICAgICAgICAgICdlbWJlZGRl
ZFNvdXJjZUxlbmd0aCc6IGxlbihlbWJlZGRlZFNvdXJjZSkgKyAxLAorICAgICAgICAgICAgICAg
ICdjYW5Db25zdHJ1Y3QnOiBjb25zdHJ1Y3RBYmlsaXR5CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiY29uc3QgSlNDOjpD
b25zdHJ1Y3RBYmlsaXR5IHNfJShjb2RlTmFtZSlzQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29u
c3RydWN0QWJpbGl0eTo6JShjYW5Db25zdHJ1Y3QpczsiICUgYXJncyk7CisgICAgICAgICAgICBs
aW5lcy5hcHBlbmQoImNvbnN0IGludCBzXyUoY29kZU5hbWUpc0xlbmd0aCA9ICUoZW1iZWRkZWRT
b3VyY2VMZW5ndGgpZDsiICUgYXJncyk7CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoImNvbnN0
IGNoYXIqIHNfJShjb2RlTmFtZSlzID1cbiUoZW1iZWRkZWRTb3VyY2Upc1xuOyIgJSBhcmdzKTsK
KyAgICAgICAgICAgIHN1YnNlY3Rpb25zLmFwcGVuZCgnXG4nLmpvaW4obGluZXMpKQorCisgICAg
ICAgIHJldHVybiBzdWJzZWN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3NjcmlwdHMvY29kZWdlbi9sYXp5d3JpdGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Nj
cmlwdHMvY29kZWdlbi9sYXp5d3JpdGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwMWZhNDNkZDQyZDg4MmRk
MmZlMWRkNTY1ZjdkNmUxODllNjMxNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvc2NyaXB0cy9jb2RlZ2VuL2xhenl3cml0ZXIucHkKQEAgLTAsMCArMSw1NiBAQAor
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
IyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworIyBBIHdyaXRlciB0aGF0IG9ubHkgdXBkYXRlcyBmaWxlIGlmIGl0IGFjdHVhbGx5IGNo
YW5nZWQuCitjbGFzcyBMYXp5RmlsZVdyaXRlcjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmls
ZXBhdGgsIGZvcmNlX291dHB1dCk6CisgICAgICAgIHNlbGYuX2ZpbGVwYXRoID0gZmlsZXBhdGgK
KyAgICAgICAgc2VsZi5fb3V0cHV0ID0gIiIKKyAgICAgICAgc2VsZi5mb3JjZV9vdXRwdXQgPSBm
b3JjZV9vdXRwdXQKKworICAgIGRlZiB3cml0ZShzZWxmLCB0ZXh0KToKKyAgICAgICAgc2VsZi5f
b3V0cHV0ICs9IHRleHQKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgdGV4dF9jaGFu
Z2VkID0gVHJ1ZQorICAgICAgICBzZWxmLl9vdXRwdXQgPSBzZWxmLl9vdXRwdXQucnN0cmlwKCkg
KyAiXG4iCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgc2VsZi5mb3JjZV9vdXRwdXQ6
CisgICAgICAgICAgICAgICAgcmFpc2UKKworICAgICAgICAgICAgcmVhZF9maWxlID0gb3Blbihz
ZWxmLl9maWxlcGF0aCwgInIiKQorICAgICAgICAgICAgb2xkX3RleHQgPSByZWFkX2ZpbGUucmVh
ZCgpCisgICAgICAgICAgICByZWFkX2ZpbGUuY2xvc2UoKQorICAgICAgICAgICAgdGV4dF9jaGFu
Z2VkID0gb2xkX3RleHQgIT0gc2VsZi5fb3V0cHV0CisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAg
ICAgICMgSWdub3JlLCBqdXN0IG92ZXJ3cml0ZSBieSBkZWZhdWx0CisgICAgICAgICAgICBwYXNz
CisKKyAgICAgICAgaWYgdGV4dF9jaGFuZ2VkIG9yIHNlbGYuZm9yY2Vfb3V0cHV0OgorICAgICAg
ICAgICAgb3V0X2ZpbGUgPSBvcGVuKHNlbGYuX2ZpbGVwYXRoLCAidyIpCisgICAgICAgICAgICBv
dXRfZmlsZS53cml0ZShzZWxmLl9vdXRwdXQpCisgICAgICAgICAgICBvdXRfZmlsZS5jbG9zZSgp
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvc2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YWU0YTUx
Yjk1YTY0OGFiODNkZDcyZDQ5ZGJmNjFlNWU0YThmOWI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKQEAgLTAs
MCArMSwxMjQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIw
MTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMp
IDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBUaGlzIHNjcmlwdCBnZW5l
cmF0ZXMgQysrIGJpbmRpbmdzIGZvciBKYXZhU2NyaXB0IGJ1aWx0aW5zLgorIyBHZW5lcmF0b3Jz
IGZvciBpbmRpdmlkdWFsIGZpbGVzIGFyZSBsb2NhdGVkIGluIHRoZSBjb2RlZ2VuLyBkaXJlY3Rv
cnkuCisKK2ltcG9ydCBmbm1hdGNoCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9wdHBhcnNlCitp
bXBvcnQgb3MKKworbG9nZ2luZy5iYXNpY0NvbmZpZyhmb3JtYXQ9JyUobGV2ZWxuYW1lKXM6ICUo
bWVzc2FnZSlzJywgbGV2ZWw9bG9nZ2luZy5FUlJPUikKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KCdnbG9iYWwnKQorCitmcm9tIGNvZGVnZW4gaW1wb3J0ICoKKworIyBGSVhNRTogaWYgdGhpcyBz
Y3JpcHQgaXMgdXNlZCBmcm9tIFdlYkNvcmUsIHdlIHdpbGwgbmVlZCB0byBkdXBsaWNhdGUKKyMg
dGhlIGNvbnRlbnRzIG9mIGNvZGVnZW4vX19pbml0X18ucHkgdG8gaGVyZSBzaW5jZSBzY3JpcHRz
IGNvcGllZCB0bworIyBwcml2YXRlIGhlYWRlcnMgaGF2ZSB0aGVpciBkaXJlY3RvcmllcyBmbGF0
dGVuZWQuCisKK2RlZiBnZW5lcmF0ZV9iaW5kaW5nc19mb3JfYnVpbHRpbnNfZmlsZXMoYnVpbHRp
bnNfZmlsZXM9W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91
dHB1dF9wYXRoPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZyYW1ld29ya19uYW1lPSIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3JjZV9vdXRwdXQ9RmFsc2UpOgorCisgICAgbW9kZWwgPSBidWlsdGluc19tb2RlbC5C
dWlsdGlucyhmcmFtZXdvcmtfbmFtZT1mcmFtZXdvcmtfbmFtZSkKKyAgICBmb3IgZmlsZXBhdGgg
aW4gYnVpbHRpbnNfZmlsZXM6CisgICAgICAgIHdpdGggb3BlbihmaWxlcGF0aCwgInIiKSBhcyBm
aWxlOgorICAgICAgICAgICAgZmlsZV90ZXh0ID0gZmlsZS5yZWFkKCkKKyAgICAgICAgICAgIGZp
bGVfbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoZmlsZXBhdGgpCisgICAgICAgICAgICBtb2RlbC5w
YXJzZV9idWlsdGluc19maWxlKGZpbGVfbmFtZSwgZmlsZV90ZXh0KQorCisgICAgZ2VuZXJhdG9y
cyA9IFtdCisgICAgZ2VuZXJhdG9ycy5hcHBlbmQoQnVpbHRpbnNDb21iaW5lZEhlYWRlckdlbmVy
YXRvcihtb2RlbCkpCisgICAgZ2VuZXJhdG9ycy5hcHBlbmQoQnVpbHRpbnNDb21iaW5lZEltcGxl
bWVudGF0aW9uR2VuZXJhdG9yKG1vZGVsKSkKKworICAgIGxvZy5kZWJ1ZygiIikKKyAgICBsb2cu
ZGVidWcoIkdlbmVyYXRpbmcgYmluZGluZ3MgZm9yIGJ1aWx0aW5zLiIpCisKKyAgICBmb3IgZ2Vu
ZXJhdG9yIGluIGdlbmVyYXRvcnM6CisgICAgICAgIG91dHB1dF9maWxlcGF0aCA9IG9zLnBhdGgu
am9pbihvdXRwdXRfcGF0aCwgZ2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSgpKQorICAgICAgICBs
b2cuZGVidWcoIkdlbmVyYXRpbmcgb3V0cHV0IGZpbGU6ICVzIiAlIG91dHB1dF9maWxlcGF0aCkK
KyAgICAgICAgb3V0cHV0ID0gZ2VuZXJhdG9yLmdlbmVyYXRlX291dHB1dCgpCisKKyAgICAgICAg
bG9nLmRlYnVnKCItLS0iKQorICAgICAgICBsb2cuZGVidWcoIlxuIiArIG91dHB1dCkKKyAgICAg
ICAgbG9nLmRlYnVnKCItLS0iKQorICAgICAgICBvdXRwdXRfZmlsZSA9IExhenlGaWxlV3JpdGVy
KG91dHB1dF9maWxlcGF0aCwgZm9yY2Vfb3V0cHV0KQorICAgICAgICBvdXRwdXRfZmlsZS53cml0
ZShvdXRwdXQpCisgICAgICAgIG91dHB1dF9maWxlLmNsb3NlKCkKKworCitpZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgorICAgIGFsbG93ZWRfZnJhbWV3b3JrX25hbWVzID0gWydKYXZhU2NyaXB0
Q29yZScsICdXZWJDb3JlJywgJ1Rlc3QnXQorICAgIGNsaV9wYXJzZXIgPSBvcHRwYXJzZS5PcHRp
b25QYXJzZXIodXNhZ2U9InVzYWdlOiAlcHJvZyBbb3B0aW9uc10gQnVpbHRpbjEuanMgWywgQnVp
bHRpbjIuanMsIC4uLl0iKQorICAgIGNsaV9wYXJzZXIuYWRkX29wdGlvbigiLWkiLCAiLS1pbnB1
dC1kaXJlY3RvcnkiLCBoZWxwPSJJZiBzcGVjaWZpZWQsIGdlbmVyYXRlcyBidWlsdGlucyBmcm9t
IGFsbCBKYXZhU2NyaXB0IGZpbGVzIGluIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5IGluIGFkZGl0
aW9uIHRvIHNwZWNpZmljIGZpbGVzIHBhc3NlZCBhcyBhcmd1bWVudHMuIikKKyAgICBjbGlfcGFy
c2VyLmFkZF9vcHRpb24oIi1vIiwgIi0tb3V0cHV0LWRpcmVjdG9yeSIsIGhlbHA9IkRpcmVjdG9y
eSB3aGVyZSBnZW5lcmF0ZWQgZmlsZXMgc2hvdWxkIGJlIHdyaXR0ZW4uIikKKyAgICBjbGlfcGFy
c2VyLmFkZF9vcHRpb24oIi0tZnJhbWV3b3JrIiwgdHlwZT0iY2hvaWNlIiwgY2hvaWNlcz1hbGxv
d2VkX2ZyYW1ld29ya19uYW1lcywgaGVscD0iRGVzdGluYXRpb24gZnJhbWV3b3JrIGZvciBnZW5l
cmF0ZWQgZmlsZXMuIikKKyAgICBjbGlfcGFyc2VyLmFkZF9vcHRpb24oIi0tZm9yY2UiLCBhY3Rp
b249InN0b3JlX3RydWUiLCBoZWxwPSJGb3JjZSBvdXRwdXQgb2YgZ2VuZXJhdGVkIHNjcmlwdHMs
IGV2ZW4gaWYgbm90aGluZyBjaGFuZ2VkLiIpCisgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9uKCIt
diIsICItLWRlYnVnIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iTG9nIGV4dHJhIG91dHB1
dCBmb3IgZGVidWdnaW5nIHRoZSBnZW5lcmF0b3IgaXRzZWxmLiIpCisgICAgY2xpX3BhcnNlci5h
ZGRfb3B0aW9uKCItdCIsICItLXRlc3QiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJFbmFi
bGUgdGVzdCBtb2RlLiIpCisKKyAgICBhcmdfb3B0aW9ucywgYXJnX3ZhbHVlcyA9IGNsaV9wYXJz
ZXIucGFyc2VfYXJncygpCisgICAgaWYgbGVuKGFyZ192YWx1ZXMpIGlzIDAgYW5kIG5vdCBhcmdf
b3B0aW9ucy5pbnB1dF9kaXJlY3Rvcnk6CisgICAgICAgIHJhaXNlIFBhcnNlRXhjZXB0aW9uKCJB
dCBsZWFzdCBvbmUgaW5wdXQgZmlsZSBvciBkaXJlY3RvcnkgZXhwZWN0ZWQuIikKKworICAgIGlm
IG5vdCBhcmdfb3B0aW9ucy5vdXRwdXRfZGlyZWN0b3J5OgorICAgICAgICByYWlzZSBQYXJzZUV4
Y2VwdGlvbigiTWlzc2luZyBvdXRwdXQgZGlyZWN0b3J5LiIpCisKKyAgICBpZiBhcmdfb3B0aW9u
cy5kZWJ1ZzoKKyAgICAgICAgbG9nLnNldExldmVsKGxvZ2dpbmcuREVCVUcpCisKKyAgICBpbnB1
dF9maWxlcGF0aHMgPSBhcmdfdmFsdWVzWzpdCisgICAgaWYgYXJnX29wdGlvbnMuaW5wdXRfZGly
ZWN0b3J5OgorICAgICAgICBmb3IgZmlsZXBhdGggaW4gb3MubGlzdGRpcihhcmdfb3B0aW9ucy5p
bnB1dF9kaXJlY3RvcnkpOgorICAgICAgICAgICAgaW5wdXRfZmlsZXBhdGhzLmFwcGVuZChvcy5w
YXRoLmpvaW4oYXJnX29wdGlvbnMuaW5wdXRfZGlyZWN0b3J5LCBmaWxlcGF0aCkpCisKKyAgICBp
bnB1dF9maWxlcGF0aHMgPSBmaWx0ZXIobGFtYmRhIG5hbWU6IGZubWF0Y2guZm5tYXRjaChuYW1l
LCAnKi5qcycpLCBpbnB1dF9maWxlcGF0aHMpOworCisgICAgb3B0aW9ucyA9IHsKKyAgICAgICAg
J291dHB1dF9wYXRoJzogYXJnX29wdGlvbnMub3V0cHV0X2RpcmVjdG9yeSwKKyAgICAgICAgJ2Zy
YW1ld29ya19uYW1lJzogYXJnX29wdGlvbnMuZnJhbWV3b3JrLAorICAgIH0KKworICAgIGxvZy5k
ZWJ1ZygiR2VuZXJhdGluZyBjb2RlIGZvciBidWlsdGlucy4iKQorICAgIGxvZy5kZWJ1ZygiUGFy
c2VkIG9wdGlvbnM6IikKKyAgICBmb3Igb3B0aW9uLCB2YWx1ZSBpbiBvcHRpb25zLml0ZW1zKCk6
CisgICAgICAgIGxvZy5kZWJ1ZygiICAgICVzOiAlcyIgJSAob3B0aW9uLCB2YWx1ZSkpCisgICAg
bG9nLmRlYnVnKCIiKQorICAgIGxvZy5kZWJ1ZygiSW5wdXQgZmlsZXM6IikKKyAgICBmb3IgZmls
ZXBhdGggaW4gaW5wdXRfZmlsZXBhdGhzOgorICAgICAgICBsb2cuZGVidWcoIiAgICAlcyIgJSBm
aWxlcGF0aCkKKyAgICBsb2cuZGVidWcoIiIpCisKKyAgICB0cnk6CisgICAgICAgIGdlbmVyYXRl
X2JpbmRpbmdzX2Zvcl9idWlsdGluc19maWxlcyhidWlsdGluc19maWxlcz1pbnB1dF9maWxlcGF0
aHMsICoqb3B0aW9ucykKKyAgICBleGNlcHQgUGFyc2VFeGNlcHRpb24gYXMgZToKKyAgICAgICAg
aWYgYXJnX29wdGlvbnMudGVzdDoKKyAgICAgICAgICAgIGxvZy5lcnJvcihlLm1lc3NhZ2UpCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSAgIyBGb3JjZSB0aGUgYnVpbGQgdG8gZmFp
bC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262943</attachid>
            <date>2015-10-12 17:14:19 -0700</date>
            <delta_ts>2015-10-13 17:21:23 -0700</delta_ts>
            <desc>Just a few loose ends.</desc>
            <filename>bug-149929-20151012171343.patch</filename>
            <type>text/plain</type>
            <size>108654</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwODU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MTU2OWY2NzlmNWE1NzZhOTU0OTlkM2QwYjA2ZGM3ZDI2NGE0ZmZhLi5lOGNhYjJiNDMwZTU5MzE3
NmQyZDk5ODQ5OGZhODBkZTVkZTFjYTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAxNS0xMC0xMiAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXN0cnVjdHVyZSBnZW5lcmF0ZS1qcy1iaW5kaW5ncyBzY3JpcHQgdG8gYmUgbW9k
dWxhciBhbmQgdGVzdGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0OTkyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBzY3JpcHRzL2NvZGVn
ZW4vX19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIHNjcmlwdHMvY29kZWdlbi9idWlsdGlu
c19nZW5lcmF0b3IucHk6IEFkZGVkLgorICAgICAgICAodWNmaXJzdCk6CisgICAgICAgIChCdWls
dGluc0dlbmVyYXRvcik6CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvci5fX2luaXRfXyk6Cisg
ICAgICAgIChCdWlsdGluc0dlbmVyYXRvci5tb2RlbCk6CisgICAgICAgIChCdWlsdGluc0dlbmVy
YXRvci5nZW5lcmF0ZV9saWNlbnNlKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yLmdlbmVy
YXRlX291dHB1dCk6CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvci5vdXRwdXRfZmlsZW5hbWUp
OgorICAgICAgICAqIHNjcmlwdHMvY29kZWdlbi9idWlsdGluc19tb2RlbC5weTogQWRkZWQuCisg
ICAgICAgIChsY2ZpcnN0KToKKyAgICAgICAgKFBhcnNlRXhjZXB0aW9uKToKKyAgICAgICAgKEZ1
bmN0aW9uKToKKyAgICAgICAgKEZ1bmN0aW9uLl9faW5pdF9fKToKKyAgICAgICAgKEZ1bmN0aW9u
LmZyb21TdHJpbmcpOgorICAgICAgICAoRnVuY3Rpb24ubWFuZ2xlZE5hbWUpOgorICAgICAgICAo
RnVuY3Rpb24ubWFuZ2xlZE5hbWVGb3JDb2RlKToKKyAgICAgICAgKEZ1bmN0aW9uLl9fc3RyX18p
OgorICAgICAgICAoQnVpbHRpbnMpOgorICAgICAgICAoQnVpbHRpbnMuX19pbml0X18pOgorICAg
ICAgICAoQnVpbHRpbnMucGFyc2VfYnVpbHRpbnNfZmlsZSk6CisgICAgICAgIChCdWlsdGlucy5j
b3B5cmlnaHRzKToKKyAgICAgICAgKEJ1aWx0aW5zLmFsbF9mdW5jdGlvbnMpOgorICAgICAgICAo
QnVpbHRpbnMuX3BhcnNlX2NvcHlyaWdodF9saW5lcyk6CisgICAgICAgIChCdWlsdGlucy5fcGFy
c2VfZnVuY3Rpb25zKToKKyAgICAgICAgKiBzY3JpcHRzL2NvZGVnZW4vYnVpbHRpbnNfdGVtcGxh
dGVzLnB5OiBBZGRlZC4KKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVzKToKKyAg
ICAgICAgKEpTQ0J1aWx0aW5zX2gpOgorICAgICAgICAqIHNjcmlwdHMvY29kZWdlbi9nZW5lcmF0
ZV9idWlsdGluc19jb21iaW5lZF9oZWFkZXIucHk6IEFkZGVkLgorICAgICAgICAoQnVpbHRpbnND
b21iaW5lZEhlYWRlckdlbmVyYXRvcik6CisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSGVhZGVy
R2VuZXJhdG9yLl9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJHZW5l
cmF0b3Iub3V0cHV0X2ZpbGVuYW1lKToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJH
ZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFk
ZXJHZW5lcmF0b3IuZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlvbnMpOgorICAgICAgICAoRnVu
Y3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAgICAgICAgKENvbnN0cnVjdEFiaWxp
dHkpOgorICAgICAgICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3Jfb2JqZWN0KToKKyAgICAgICAgKGdl
bmVyYXRlX2V4dGVybnNfZm9yX29iamVjdCk6CisgICAgICAgIChnZW5lcmF0ZV9tYWNyb3NfZm9y
X29iamVjdCk6CisgICAgICAgIChnZW5lcmF0ZV9kZWZpbmVzX2Zvcl9vYmplY3QpOgorICAgICAg
ICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV90YWJsZV9tYWNybyk6CisgICAgICAgIChnZW5l
cmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX25hbWVfbWFjcm8pOgorICAgICAgICAqIHNjcmlwdHMvY29k
ZWdlbi9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weTogQWRkZWQu
CisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSW1wbGVtZW50YXRpb25HZW5lcmF0b3IpOgorICAg
ICAgICAoQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9faW5pdF9fKToK
KyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5vdXRwdXRf
ZmlsZW5hbWUpOgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJh
dG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSW1wbGVtZW50
YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVfZW1iZWRkZWRfY29kZV9zdHJpbmdfc2VjdGlvbnMpOgor
ICAgICAgICAqIHNjcmlwdHMvY29kZWdlbi9sYXp5d3JpdGVyLnB5OiBBZGRlZC4KKyAgICAgICAg
KExhenlGaWxlV3JpdGVyKToKKyAgICAgICAgKExhenlGaWxlV3JpdGVyLl9faW5pdF9fKToKKyAg
ICAgICAgKExhenlGaWxlV3JpdGVyLndyaXRlKToKKyAgICAgICAgKExhenlGaWxlV3JpdGVyLmNs
b3NlKToKKyAgICAgICAgKiBzY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5OiBBZGRlZC4K
KyAgICAgICAgKGdlbmVyYXRlX2JpbmRpbmdzX2Zvcl9idWlsdGluc19maWxlcyk6CisKIDIwMTUt
MTAtMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAg
RVM2IGNsYXNzZXM6IFdoZW4gYSBjbGFzcyBleHRlbmRzIEIsIHN1cGVyKCkgaW52b2tlcyBCLnBy
b3RvdHlwZS5jb25zdHJ1Y3RvcigpIGluc3RlYWQgb2YgQigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDEwMTVkZGM3Nzk4NzgwZWU5NzI2MjNmNGM4ZThk
M2M3NWE5ZTRiNzEuLjhkZDc3YjAyYTE3YTU0Mjk2NWFlZTVkNzc3NTVlNjk2OTA2OTA5ZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC03MSwxMiArNzEs
MTIgQEAgYWxsIDogXAogICAgIHVkaXM4Nl9pdGFiLmggXAogICAgIEJ5dGVjb2Rlcy5oIFwKICAg
ICBJbml0Qnl0ZWNvZGVzLmFzbSBcCi0gICAgSlNDQnVpbHRpbnMgXAorICAgIEpTQ0J1aWx0aW5z
LmggXAogIwogCi0jIGJ1aWx0aW4gZnVuY3Rpb25zCiBQWVRIT04gPSBweXRob24KIFBFUkwgPSBw
ZXJsCitKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTID0gJChKYXZhU2NyaXB0Q29yZSkvU2NyaXB0cwog
CiBpZmVxICgkKE9TKSxXaW5kb3dzX05UKQogICAgIERFTEVURSA9IGNtZCAvL0MgZGVsCkBAIC04
NSwxNSArODUsMjMgQEAgZWxzZQogZW5kaWYKICMgLS0tLS0tLS0KIAotLlBIT05ZOiBKU0NCdWls
dGlucwotSlNDQnVpbHRpbnM6ICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRlLWpzLWJ1aWx0aW5z
IEpTQ0J1aWx0aW5zLmggSlNDQnVpbHRpbnMuY3BwCi1KU0NCdWlsdGlucy5oOiAkKEphdmFTY3Jp
cHRDb3JlKS9nZW5lcmF0ZS1qcy1idWlsdGlucyAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucyBK
U0NCdWlsdGluc1NvdXJjZXMKLQkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZSkvZ2VuZXJhdGUt
anMtYnVpbHRpbnMgLS1pbnB1dC1kaXJlY3RvcnkgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMg
LS1vdXRwdXQgJEAKLQotSlNDQnVpbHRpbnMuY3BwOiBKU0NCdWlsdGlucy5oCisjIEphdmFTY3Jp
cHQgYnVpbHRpbnMuCisKK0JVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTID0gXAorICAgICQoSmF2
YVNjcmlwdENvcmVfU0NSSVBUUykvYnVpbHRpbnMvX19pbml0X18ucHkgXAorICAgICQoSmF2YVNj
cmlwdENvcmVfU0NSSVBUUykvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5IFwKKyAgICAk
KEphdmFTY3JpcHRDb3JlX1NDUklQVFMpL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5IFwKKyAg
ICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFMpL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5w
eSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTKS9idWlsdGlucy9nZW5lcmF0ZV9idWls
dGluc19jb21iaW5lZF9oZWFkZXIucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUUykv
YnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkgXAor
ICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUUykvYnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNf
c2VwYXJhdGVfaGVhZGVyLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFMpL2J1aWx0
aW5zL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5IFwKKyAgICAk
KEphdmFTY3JpcHRDb3JlX1NDUklQVFMpL2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFy
YXRlX3dyYXBwZXIucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUUykvZ2VuZXJhdGUt
anMtYnVpbHRpbnMucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUUykvbGF6eXdyaXRl
ci5weSBcCisjCiAKLS5QSE9OWTogSlNDQnVpbHRpbnNTb3VyY2VzCi1KU0NCdWlsdGluc1NvdXJj
ZXM6IFwKK0phdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMgPSBcCiAgICAgJChKYXZhU2Ny
aXB0Q29yZSkvYnVpbHRpbnMvQXJyYXlDb25zdHJ1Y3Rvci5qcyBcCiAgICAgJChKYXZhU2NyaXB0
Q29yZSkvYnVpbHRpbnMvQXJyYXlJdGVyYXRvci5wcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNj
cmlwdENvcmUpL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcyBcCkBAIC0xMTAsOCArMTE4LDE5
IEBAIEpTQ0J1aWx0aW5zU291cmNlczogXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5z
L1JlZmxlY3RPYmplY3QuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1N0cmlu
Z0NvbnN0cnVjdG9yLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TdHJpbmdJ
dGVyYXRvci5wcm90b3R5cGUuanMgXAorICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1R5
cGVkQXJyYXkucHJvdG90eXBlLmpzIFwKICMKIAorIyBUaGUgY29tYmluZWQgb3V0cHV0IGZpbGUg
ZGVwZW5kcyBvbiB0aGUgY29udGVudHMgb2YgYnVpbHRpbnMgYW5kIGdlbmVyYXRvciBzY3JpcHRz
LCBzbworIyBhZGRpbmcsIG1vZGlmeWluZywgb3IgcmVtb3ZpbmcgYnVpbHRpbnMgb3Igc2NyaXB0
cyB3aWxsIHRyaWdnZXIgcmVnZW5lcmF0aW9uIG9mIGZpbGVzLgorCisuUEhPTlk6IGZvcmNlCitK
YXZhU2NyaXB0Q29yZV9CVUlMVElOU19ERVBFTkRFTkNJRVNfTElTVCA6ICQoSmF2YVNjcmlwdENv
cmVfU0NSSVBUUykvVXBkYXRlQ29udGVudHMucHkgZm9yY2UKKwkkKFBZVEhPTikgJChKYXZhU2Ny
aXB0Q29yZV9TQ1JJUFRTKS9VcGRhdGVDb250ZW50cy5weSAnJChKYXZhU2NyaXB0Q29yZV9CVUlM
VElOU19TT1VSQ0VTKSAkKEJVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTKScgJEAKKworSlNDQnVp
bHRpbnMuaDogJChCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUykgJChKYXZhU2NyaXB0Q29yZV9C
VUlMVElOU19TT1VSQ0VTKSBKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19ERVBFTkRFTkNJRVNfTElT
VAorCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFMpL2dlbmVyYXRlLWpzLWJ1aWx0
aW5zLnB5IC0tY29tYmluZWQgLS1vdXRwdXQtZGlyZWN0b3J5IC4gLS1mcmFtZXdvcmsgSmF2YVNj
cmlwdENvcmUgJChKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTKQorCiAjIGxvb2t1cCB0
YWJsZXMgZm9yIGNsYXNzZXMKIAogJS5sdXQuaDogY3JlYXRlX2hhc2hfdGFibGUgJS5jcHAKQEAg
LTE5OCw4ICsyMTcsOCBAQCBhbGwgOiBcCiAjIGFkZGluZywgbW9kaWZ5aW5nLCBvciByZW1vdmlu
ZyBkb21haW5zIHdpbGwgdHJpZ2dlciByZWdlbmVyYXRpb24gb2YgaW5zcGVjdG9yIGZpbGVzLgog
CiAuUEhPTlk6IGZvcmNlCi1FbmFibGVkSW5zcGVjdG9yRG9tYWlucyA6ICQoSmF2YVNjcmlwdENv
cmUpL1VwZGF0ZUNvbnRlbnRzLnB5IGZvcmNlCi0JJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmUp
L1VwZGF0ZUNvbnRlbnRzLnB5ICckKElOU1BFQ1RPUl9ET01BSU5TKScgJEAKK0VuYWJsZWRJbnNw
ZWN0b3JEb21haW5zIDogJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTKS9VcGRhdGVDb250ZW50cy5w
eSBmb3JjZQorCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFMpL1VwZGF0ZUNvbnRl
bnRzLnB5ICckKElOU1BFQ1RPUl9ET01BSU5TKScgJEAKIAogQ29tYmluZWREb21haW5zLmpzb24g
OiBpbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSAk
KElOU1BFQ1RPUl9ET01BSU5TKSBFbmFibGVkSW5zcGVjdG9yRG9tYWlucwogCSQoUFlUSE9OKSAk
KEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1jb21iaW5lZC1pbnNw
ZWN0b3ItanNvbi5weSAkKElOU1BFQ1RPUl9ET01BSU5TKSA+IC4vQ29tYmluZWREb21haW5zLmpz
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDMyYzIzYWRlMzkzNDI1OTM1NWE1
M2FlZTM4YzI5NzMzZDM3ZTJkZC4uZWEzNTlhNWI1YjBkY2M0NDQ4YjhiZmM2Mzc1NDYyN2ZkNmNl
ODM3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMDYsNiArMTIwNiwxOCBA
QAogCQk5NjlBMDc5QjBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDc5NTBFRDFEM0FFMDBGMUY2ODEg
LyogT3Bjb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTc4ODAxNDAxNDcxQUQ5MjAwNDFCMDE2IC8qIEpTRGF0ZU1hdGguY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc4OEZDMjIxNDcxQUQwQzAw
NjhDRTJEIC8qIEpTRGF0ZU1hdGguY3BwICovOyB9OwogCQk5Nzg4MDE0MTE0NzFBRDkyMDA0MUIw
MTYgLyogSlNEYXRlTWF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTc4OEZDMjMxNDcxQUQwQzAwNjhDRTJEIC8qIEpTRGF0ZU1hdGguaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OTFENUVENDFCQ0Mz
NUFBMDBFNEMyNUQgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTA0NEIzMTFCQ0MyM0RDMDA3QzI1MEQgLyog
Z2VuZXJhdGUtanMtYnVpbHRpbnMucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJOTkxRDVFRDUxQkNDMzVCMTAwRTRDMjVEIC8qIGJ1aWx0aW5zX2dl
bmVyYXRvci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk5MDQ0QjNCMUJDQzI0OTEwMDdDMjUwRCAvKiBidWlsdGluc19nZW5lcmF0b3IucHkgKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTkxRDVFRDYxQkND
MzVCMTAwRTRDMjVEIC8qIGJ1aWx0aW5zX21vZGVsLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkwNDRCM0MxQkNDMjQ5MTAwN0MyNTBEIC8qIGJ1aWx0
aW5zX21vZGVsLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTk5MUQ1RUQ3MUJDQzM1QjEwMEU0QzI1RCAvKiBidWlsdGluc190ZW1wbGF0ZXMucHkg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTA0NEIzRDFC
Q0MyNDkxMDA3QzI1MEQgLyogYnVpbHRpbnNfdGVtcGxhdGVzLnB5ICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5MUQ1RUQ4MUJDQzM1QjEwMEU0QzI1
RCAvKiBnZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9oZWFkZXIucHkgaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTA0NEIzRTFCQ0MyNDkxMDA3QzI1MEQg
LyogZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaGVhZGVyLnB5ICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5MUQ1RUQ5MUJDQzM1QjEwMEU0QzI1
RCAvKiBnZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MDQ0QjNGMUJDQzI0OTEw
MDdDMjUwRCAvKiBnZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weSAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OTFENUVE
QTFCQ0MzNUIxMDBFNEMyNUQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaGVhZGVyLnB5
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkwNDRCNDEx
QkNDMkIwNTAwN0MyNTBEIC8qIGdlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2hlYWRlci5weSAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OTFENUVE
QjFCQ0MzNUIxMDBFNEMyNUQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaW1wbGVtZW50
YXRpb24ucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
OTA0NEI0MjFCQ0MyQjA1MDA3QzI1MEQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaW1w
bGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJOTkxRDVFREMxQkNDMzVCMTAwRTRDMjVEIC8qIGdlbmVyYXRlX2J1aWx0aW5zX3Nl
cGFyYXRlX3dyYXBwZXIucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5OTA0NEI0MzFCQ0MyQjA1MDA3QzI1MEQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2Vw
YXJhdGVfd3JhcHBlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk5OTFENUVERDFCQ0MzNUIzMDBFNEMyNUQgLyogbGF6eXdyaXRlci5weSBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MDQ0QjQwMUJDQzI0
OTEwMDdDMjUwRCAvKiBsYXp5d3JpdGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTk5MUQ1RURGMUJDQzYzMEMwMEU0QzI1RCAvKiBVcGRhdGVD
b250ZW50cy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk5MUQ1RURFMUJDQzYyRUEwMEU0QzI1RCAvKiBVcGRhdGVDb250ZW50cy5weSAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OTFENUVFMTFCQ0M2NDY5
MDBFNEMyNUQgLyogYnVpbHRpbnMucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5OTFENUVFMDFCQ0M2NDE1MDBFNEMyNUQgLyogYnVpbHRpbnMucHkgKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTkyOEZGM0Ix
OEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MjhGRjM5MThBQzRBRUMwMEI4Q0YxMiAvKiBK
U1JlcGxheUlucHV0cy5jcHAgKi87IH07CiAJCTk5MjhGRjNDMThBQzRBRUMwMEI4Q0YxMiAvKiBK
U1JlcGxheUlucHV0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTkyOEZGM0ExOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTk2MjMxRTkxOEQx
ODA0MjAwQzAzRkRBIC8qIEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcyBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MzI0Mzk2MTg1NkE0NzUwMDJFRDY5
MiAvKiBJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMgKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMxMDEsNiArMzExMywxOSBAQAogCQk5NjlBMDky
MjBFRDFFMDlDMDBGMUY2ODEgLyogQ29tcGxldGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDb21wbGV0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTc4OEZDMjIxNDcxQUQwQzAwNjhDRTJEIC8qIEpTRGF0ZU1hdGguY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEYXRlTWF0aC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk3ODhGQzIzMTQ3MUFEMEMwMDY4Q0UyRCAvKiBKU0RhdGVNYXRo
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGF0ZU1hdGguaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTkwNDRCMzExQkNDMjNEQzAwN0MyNTBEIC8qIGdlbmVy
YXRlLWpzLWJ1aWx0aW5zLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0g
ImdlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTkwNDRCM0ExQkNDMjQ5MTAwN0MyNTBEIC8qIF9faW5pdF9fLnB5ICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5z
Y3JpcHQucHl0aG9uOyBwYXRoID0gX19pbml0X18ucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk5MDQ0QjNCMUJDQzI0OTEwMDdDMjUwRCAvKiBidWlsdGluc19nZW5lcmF0b3IucHkg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBidWlsdGluc19nZW5lcmF0b3Iu
cHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MDQ0QjNDMUJDQzI0OTEwMDdDMjUw
RCAvKiBidWlsdGluc19tb2RlbC5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0
aCA9IGJ1aWx0aW5zX21vZGVsLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTA0
NEIzRDFCQ0MyNDkxMDA3QzI1MEQgLyogYnVpbHRpbnNfdGVtcGxhdGVzLnB5ICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gYnVpbHRpbnNfdGVtcGxhdGVzLnB5OyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5OTA0NEIzRTFCQ0MyNDkxMDA3QzI1MEQgLyogZ2VuZXJh
dGVfYnVpbHRpbnNfY29tYmluZWRfaGVhZGVyLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0
aG9uOyBwYXRoID0gZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaGVhZGVyLnB5OyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5OTA0NEIzRjFCQ0MyNDkxMDA3QzI1MEQgLyogZ2VuZXJh
dGVfYnVpbHRpbnNfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNj
cmlwdC5weXRob247IHBhdGggPSBnZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRh
dGlvbi5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTkwNDRCNDAxQkNDMjQ5MTAw
N0MyNTBEIC8qIGxhenl3cml0ZXIucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBh
dGggPSBsYXp5d3JpdGVyLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTA0NEI0
MTFCQ0MyQjA1MDA3QzI1MEQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaGVhZGVyLnB5
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gZ2VuZXJhdGVfYnVpbHRpbnNf
c2VwYXJhdGVfaGVhZGVyLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTA0NEI0
MjFCQ0MyQjA1MDA3QzI1MEQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaW1wbGVtZW50
YXRpb24ucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBnZW5lcmF0ZV9i
dWlsdGluc19zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTkwNDRCNDMxQkNDMkIwNTAwN0MyNTBEIC8qIGdlbmVyYXRlX2J1aWx0aW5zX3Nl
cGFyYXRlX3dyYXBwZXIucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBn
ZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV93cmFwcGVyLnB5OyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5OTFENUVERTFCQ0M2MkVBMDBFNEMyNUQgLyogVXBkYXRlQ29udGVudHMucHkg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBVcGRhdGVDb250ZW50cy5weTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTkxRDVFRTAxQkNDNjQxNTAwRTRDMjVEIC8q
IGJ1aWx0aW5zLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gYnVpbHRp
bnMucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MjhGRjM5MThBQzRBRUMwMEI4
Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1JlcGxheUlucHV0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk5MjhGRjNBMThBQzRBRUMwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JlcGxheUlucHV0cy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5OTI4RkYzRDE4QUM0QjFDMDBCOENGMTIgLyogSlNJbnB1dHMuanNvbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuanNvbjsgcGF0aCA9IEpTSW5wdXRzLmpzb247IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0zODI5LDEyICszODU0LDkgQEAKIAkJCQlBN0Q4MDE5RjE4ODBENjZF
MDAyNkMzOUIgLyogYnVpbHRpbnMgKi8sCiAJCQkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8q
IGJ5dGVjb2RlICovLAogCQkJCTdFMzlEODFEMEVDMzhFRkEwMDNBRjExQSAvKiBieXRlY29tcGls
ZXIgKi8sCi0JCQkJMUM5MDUxM0UwQkE5RTg4MzAwODFFOUQwIC8qIENvbmZpZ3VyYXRpb25zICov
LAogCQkJCTE0ODBEQjlBMEREQzIyMzEwMDNDRkRGMiAvKiBkZWJ1Z2dlciAqLywKLQkJCQk2NTBG
REY4RDA5RDBGQ0E3MDA3NjlFNTQgLyogRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTg2RUM5REIz
MTMyOERGNDQwMDJCMkFENyAvKiBkZmcgKi8sCiAJCQkJMEZGNDI3MkUxNThFQkNDRTAwNENCOUZG
IC8qIGRpc2Fzc2VtYmxlciAqLywKLQkJCQkwODY3RDY5QUZFODQwMjhGQzAyQUFDMDcgLyogRnJh
bWV3b3JrcyAqLywKIAkJCQkwRkVBMDlGQzE3MDUxMzdGMDBCQjcyMkMgLyogZnRsICovLAogCQkJ
CTE0MkUzMTJBMTM0RkYwQTYwMEFGQURCNSAvKiBoZWFwICovLAogCQkJCUE1QkExNURGMTgyMzQw
OTIwMEE4MkU2OSAvKiBpbnNwZWN0b3IgKi8sCkBAIC0zODQzLDE1ICszODY1LDE5IEBACiAJCQkJ
MEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICovLAogCQkJCTBGQ0VGQUFEMTgwNUNB
NDQwMDQ3MkNFNCAvKiBsbHZtICovLAogCQkJCTdFMzlEODM3MEVDM0EzODgwMDNBRjExQSAvKiBw
YXJzZXIgKi8sCi0JCQkJMDM0NzY4REZGRjM4QTUwNDExREI5QzhCIC8qIFByb2R1Y3RzICovLAog
CQkJCTk1QUI4MzFBMERBNDJDNjkwMEJDODNGMyAvKiBwcm9maWxlciAqLywKIAkJCQk5OUU0NUEw
QzE4QTAxRTkzMDAyNkQ4OEYgLyogcmVwbGF5ICovLAotCQkJCTkzMkZDM0MyMDgyNEJCNzAwMDVC
M0M3NSAvKiBSZXNvdXJjZXMgKi8sCiAJCQkJN0VGNkUwQkIwRUI3QTFFQzAwNzlBRkFGIC8qIHJ1
bnRpbWUgKi8sCiAJCQkJMTQxMjExMDAwQTQ4NzcyNjAwNDgwMjU1IC8qIHRlc3RzICovLAogCQkJ
CTg2MDNDRUYwMTRDNzUzRUYwMEFFNTlFMyAvKiB0b29scyAqLywKIAkJCQk3Qjk4RDEzMzFCNjBD
RDFFMDAyM0IxQTQgLyogd2FzbSAqLywKIAkJCQk4NkVBQzQ4QzBGOTNFOEI5MDA4RUM5NDggLyog
eWFyciAqLywKKwkJCQk2NTBGREY4RDA5RDBGQ0E3MDA3NjlFNTQgLyogRGVyaXZlZCBTb3VyY2Vz
ICovLAorCQkJCTk5MDQ0QjMwMUJDQzIzQjIwMDdDMjUwRCAvKiBTY3JpcHRzICovLAorCQkJCTkz
MkZDM0MyMDgyNEJCNzAwMDVCM0M3NSAvKiBSZXNvdXJjZXMgKi8sCisJCQkJMDg2N0Q2OUFGRTg0
MDI4RkMwMkFBQzA3IC8qIEZyYW1ld29ya3MgKi8sCisJCQkJMDM0NzY4REZGRjM4QTUwNDExREI5
QzhCIC8qIFByb2R1Y3RzICovLAorCQkJCTFDOTA1MTNFMEJBOUU4ODMwMDgxRTlEMCAvKiBDb25m
aWd1cmF0aW9ucyAqLywKIAkJCSk7CiAJCQluYW1lID0gSmF2YVNjcmlwdENvcmU7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtNTcxMiw2ICs1NzM4LDM0IEBACiAJCQlwYXRoID0gYnl0
ZWNvZGU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk5OTA0NEIzMDFCQ0My
M0IyMDA3QzI1MEQgLyogU2NyaXB0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkJOTkwNDRCMzkxQkNDMjNGRjAwN0MyNTBEIC8qIGJ1aWx0aW5zICovLAor
CQkJCTk5MDQ0QjMxMUJDQzIzREMwMDdDMjUwRCAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucy5weSAq
LywKKwkJCQk5OTA0NEI0MDFCQ0MyNDkxMDA3QzI1MEQgLyogbGF6eXdyaXRlci5weSAqLywKKwkJ
CQk5OTFENUVERTFCQ0M2MkVBMDBFNEMyNUQgLyogVXBkYXRlQ29udGVudHMucHkgKi8sCisJCQkp
OworCQkJcGF0aCA9IFNjcmlwdHM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owor
CQk5OTA0NEIzOTFCQ0MyM0ZGMDA3QzI1MEQgLyogYnVpbHRpbnMgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTk5MDQ0QjNBMUJDQzI0OTEwMDdDMjUwRCAv
KiBfX2luaXRfXy5weSAqLywKKwkJCQk5OTFENUVFMDFCQ0M2NDE1MDBFNEMyNUQgLyogYnVpbHRp
bnMucHkgKi8sCisJCQkJOTkwNDRCM0IxQkNDMjQ5MTAwN0MyNTBEIC8qIGJ1aWx0aW5zX2dlbmVy
YXRvci5weSAqLywKKwkJCQk5OTA0NEIzQzFCQ0MyNDkxMDA3QzI1MEQgLyogYnVpbHRpbnNfbW9k
ZWwucHkgKi8sCisJCQkJOTkwNDRCM0QxQkNDMjQ5MTAwN0MyNTBEIC8qIGJ1aWx0aW5zX3RlbXBs
YXRlcy5weSAqLywKKwkJCQk5OTA0NEIzRTFCQ0MyNDkxMDA3QzI1MEQgLyogZ2VuZXJhdGVfYnVp
bHRpbnNfY29tYmluZWRfaGVhZGVyLnB5ICovLAorCQkJCTk5MDQ0QjNGMUJDQzI0OTEwMDdDMjUw
RCAvKiBnZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weSAqLywKKwkJ
CQk5OTA0NEI0MTFCQ0MyQjA1MDA3QzI1MEQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVf
aGVhZGVyLnB5ICovLAorCQkJCTk5MDQ0QjQyMUJDQzJCMDUwMDdDMjUwRCAvKiBnZW5lcmF0ZV9i
dWlsdGluc19zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weSAqLywKKwkJCQk5OTA0NEI0MzFCQ0My
QjA1MDA3QzI1MEQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfd3JhcHBlci5weSAqLywK
KwkJCSk7CisJCQlwYXRoID0gYnVpbHRpbnM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwor
CQl9OwogCQk5OUU0NUEwQzE4QTAxRTkzMDAyNkQ4OEYgLyogcmVwbGF5ICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTYwMDksNiArNjA2MywxMCBAQAogCQkJ
CUZFQTA4NjIwMTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0Q4MDFBNTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzVFRTlCMjE4QUFCN0UyMDBBQUQwNDMgLyogQnVpbHRpbk5hbWVz
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTFENUVFMTFCQ0M2NDY5MDBFNEMyNUQgLyogYnVpbHRp
bnMucHkgaW4gSGVhZGVycyAqLywKKwkJCQk5OTFENUVENTFCQ0MzNUIxMDBFNEMyNUQgLyogYnVp
bHRpbnNfZ2VuZXJhdG9yLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJOTkxRDVFRDYxQkNDMzVCMTAw
RTRDMjVEIC8qIGJ1aWx0aW5zX21vZGVsLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJOTkxRDVFRDcx
QkNDMzVCMTAwRTRDMjVEIC8qIGJ1aWx0aW5zX3RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovLAog
CQkJCTQxREVBMTMyMUI5RjMxNjMwMDZENjVERCAvKiBCdWlsdGluVXRpbHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTlFNzI5NDBCMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5kbGVQYXRoLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkI3RjM5NzE1RUQ4RTQ2MDBGMTY3QjIgLyogQnV0dGVyZmx5LmggaW4g
SGVhZGVycyAqLywKQEAgLTYwMzYsNiArNjA5NCw3IEBACiAJCQkJMEYwQjgzQjkxNEJDRjk1RjAw
ODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjNCN0UyQjE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMjRFNTQyMTdFQTlGNTkwMEFCQjIxNyAvKiBDQ2FsbEhlbHBlcnMuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGMUMzRERBMUJCQ0UwOUUwMEU1MjNFNCAvKiBDZWxsU3RhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDNkFBQUU1MEUxRjQyNjUwMEFEODdEOCAvKiBDbGFzc0lu
Zm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1MDI2MUFBOTA5NTYwMEQzM0IzMyAvKiBDbG9u
ZWRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEwNzk3MEVEMUQzQUUwMEYxRjY4
MSAvKiBDb2RlQmxvY2suaCBpbiBIZWFkZXJzICovLApAQCAtNjE2OCwxMCArNjIyNyw4IEBACiAJ
CQkJQTc4QTk3NzUxNzk3MzhCODAwOURGNzQ0IC8qIERGR0ZhaWxlZEZpbmFsaXplci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTdCRkYzQzAxNzk4Njg5NDAwMDJGNDYyIC8qIERGR0ZpbHRyYXRpb25S
ZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3OEE5Nzc3MTc5NzM4QjgwMDlERjc0NCAvKiBE
RkdGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTdCODMyOUJGMUJCMjFGRTMwMDY0OUE2
RSAvKiBXQVNNRnVuY3Rpb25MTFZNSVJHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MkJEQzE2MTUxQzVENEYwMENEODkxMCAvKiBERkdGaXh1cFBoYXNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjlEMzM5NzE3RkZDNEU2MDA3M0MyQkMgLyogREZHRmx1c2hlZEF0LmggaW4gSGVhZGVy
cyAqLywKLQkJCQkwRjMyQkQxMTFCQjM0RjE5MDA5M0E1N0YgLyogSGVhcEhlbHBlclBvb2wuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0Y4MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdGbHVzaEZv
cm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyREQ4MTUxQUIzRDhCRTAwQkJCOEU4IC8qIERG
R0ZvckFsbEtpbGxzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY5Q0M4OTE5M0FDNjBBMDA0NTc1
OUUgLyogREZHRnJvemVuVmFsdWUuaCBpbiBIZWFkZXJzICovLApAQCAtNjI0MCw3ICs2Mjk3LDYg
QEAKIAkJCQkwRkIxNzY2MzE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjNBMUJGQTFBOUVDQjdEMDAwREUwMUEgLyogREZHUHV0U3RhY2tTaW5r
aW5nUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5REQxMTMyOERGODIwMDJCMkFENyAv
KiBERkdSZWdpc3RlckJhbmsuaCBpbiBIZWFkZXJzICovLAotCQkJCURFQTdFMjQ1MUJCQzY3N0Yw
MEQ3ODQ0MCAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJGQ0NGQzE4QTYwMDcwMDAxQTI3RjggLyogREZHU2FmZXBvaW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNzdBNDI0MzE3QTBCQkZEMDBBOERCODEgLyogREZHU2FmZVRvRXhlY3V0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTc0MTAxN0YxNzlEQUY4MDAwMkVCOEJBIC8qIERGR1NhbmVTdHJp
bmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTYzODQsNiAr
NjQ0MCwxMiBAQAogCQkJCUE1MzI0Mzk0MTg1Njk3MDkwMDJFRDY5MiAvKiBnZW5lcmF0ZS1jb21i
aW5lZC1pbnNwZWN0b3ItanNvbi5weSBpbiBIZWFkZXJzICovLAogCQkJCUM0NzAzQ0MwMTkyODQ0
OTYwMDEzRkJFQSAvKiBnZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkgaW4g
SGVhZGVycyAqLywKIAkJCQkyREZCOEFGRTFCQjMyM0JEMDA5M0QyMzcgLyogZ2VuZXJhdGUtanMt
YnVpbHRpbnMgaW4gSGVhZGVycyAqLywKKwkJCQk5OTFENUVENDFCQ0MzNUFBMDBFNEMyNUQgLyog
Z2VuZXJhdGUtanMtYnVpbHRpbnMucHkgaW4gSGVhZGVycyAqLywKKwkJCQk5OTFENUVEODFCQ0Mz
NUIxMDBFNEMyNUQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaGVhZGVyLnB5IGluIEhl
YWRlcnMgKi8sCisJCQkJOTkxRDVFRDkxQkNDMzVCMTAwRTRDMjVEIC8qIGdlbmVyYXRlX2J1aWx0
aW5zX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJOTkxRDVF
REExQkNDMzVCMTAwRTRDMjVEIC8qIGdlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2hlYWRlci5w
eSBpbiBIZWFkZXJzICovLAorCQkJCTk5MUQ1RURCMUJDQzM1QjEwMEU0QzI1RCAvKiBnZW5lcmF0
ZV9idWlsdGluc19zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovLAorCQkJ
CTk5MUQ1RURDMUJDQzM1QjEwMEU0QzI1RCAvKiBnZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV93
cmFwcGVyLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFQTcwRUMxOUY1QjNFQTAwOThGNUVDIC8q
IGdlbmVyYXRlX2NwcF9hbHRlcm5hdGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weSBpbiBI
ZWFkZXJzICovLAogCQkJCUE1RUY5QjE0MUExRDQzRjYwMDcwMkU5MCAvKiBnZW5lcmF0ZV9jcHBf
YmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1RUY5QjE1
MUExRDQzRkEwMDcwMkU5MCAvKiBnZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxl
bWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCkBAIC02NDIwLDYgKzY0ODIsNyBAQAogCQkJCTE0
MkUzMTM4MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGVTdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTQ3ODI5N0IxMzc5RThBODAwQTdDMkEzIC8qIEhhbmRsZVR5cGVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxNEJBN0E5ODEzQUFERkY4MDA1QjdDMkMgLyogSGVhcC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEYzMkJEMTExQkIzNEYxOTAwOTNBNTdGIC8qIEhlYXBIZWxwZXJQb29sLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDMkRBNzc4MzE4RTI1OTk5MDA2NkZDQjYgLyogSGVhcElubGluZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTJBRDg5MzJCMTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0
aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBNkY0NjI2MTdFOTU5Q0UwMEM0NUM5OCAv
KiBIZWFwT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTY1NjMsNyArNjYyNiw2IEBACiAJ
CQkJODZFM0M2MTQxNjdCQUJENzAwNkQ3NjBBIC8qIEpTRXhwb3J0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0I0QUNBRjE0ODRDOUNFMDBCMzhBMzYgLyogSlNFeHBvcnRNYWNyb3MuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMkI2NkVGMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJNTM5MTdFN0IxQjc5MDZGQTAwMEVCRDMzIC8qIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjJCNjZGMDE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDNDFGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Z1bmN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNzIwMjhCQTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGluZXMu
aCBpbiBIZWFkZXJzICovLApAQCAtNjU3Miw2ICs2NjM0LDcgQEAKIAkJCQkwRjJCNjZGMzE3QjZC
NUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkY0MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkY1MTdC
NkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTM5MTdFN0IxQjc5MDZGQTAwMEVCRDMzIC8qIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZG
NjE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxp
bmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OTdFMDdBQTFCOEZDRkI5MDA4NDAwQkEgLyogSlNH
bG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDIxMEUx
NkY1Q0QwMEIzNDQ2MCAvKiBKU0dsb2JhbE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCkBAIC02NjQ0
LDYgKzY3MDcsNyBAQAogCQkJCTBGMkI2NkZCMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJy
YXlDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkZEMTdCNkI1QUIwMEE3
QUUzRiAvKiBKU1R5cGVkQXJyYXlQcm90b3R5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJC
NjZGRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5cy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJREVBN0UyNDUxQkJDNjc3RjAwRDc4NDQwIC8qIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTY1MDdEMjlFMEU4NzFFNUUwMEQ3RDg5NiAvKiBKU1R5cGVJ
bmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjcwMjE3QjZCNUFCMDBBN0FFM0YgLyogSlNV
aW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY3MDMxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTVWludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLApAQCAtNjY2Nyw2ICs2NzMxLDcgQEAK
IAkJCQk5NjlBMDcyQTBFRDFDRTY5MDBGMUY2ODEgLyogTGFiZWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk2MDA5N0E2MEVCQUJCNTgwMDdBNzI5NyAvKiBMYWJlbFNjb3BlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkI1NDY3NzE0RjU5QjVDMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5MUQ1RUREMUJDQzM1QjMwMEU0QzI1RCAvKiBsYXp5
d3JpdGVyLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NTIwRTE2RjVDRDAwQjM0NDYwIC8q
IExlZ2FjeVByb2ZpbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQzMTBFMTZGNUNEMDBC
MzQ0NjAgLyogTGV4ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNTJFMEUxNkZDRTEwMEIz
NDQ2MCAvKiBMZXhlci5sdXQuaCBpbiBIZWFkZXJzICovLApAQCAtNjkyMSw4ICs2OTg2LDggQEAK
IAkJCQlBN0I2MDE4MjE2MzlGRDJBMDAzNzJCQTMgLyogVW5saW5rZWRDb2RlQmxvY2suaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0MTQyRTUxMUI3OTZFQ0UwMEY0QkY0QiAvKiBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyRTg5MkMxNkQwMjhBRDAwOUU0
RkQyIC8qIFVudXNlZFBvaW50ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5MUQ1RURGMUJDQzYz
MEMwMEU0QzI1RCAvKiBVcGRhdGVDb250ZW50cy5weSBpbiBIZWFkZXJzICovLAogCQkJCTBGOTYz
QjM4MTNGQzZGRTkwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTBGMUMzRERBMUJCQ0UwOUUwMEU1MjNFNCAvKiBDZWxsU3RhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNDI2QTQ4MTQ2MENCQjMwMDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3OUVFMEMwMDFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2QzczNTExQUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlh
YmxlV3JpdGVGaXJlRGV0YWlsLmggaW4gSGVhZGVycyAqLywKQEAgLTY5MzQsNiArNjk5OSw3IEBA
CiAJCQkJN0IwMjQ3NTUxQjg2ODJERDAwNTQyNDQwIC8qIFdBU01Db25zdGFudHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdCQzU0N0QzMUI2OTU5QTEwMDk1OUI1OCAvKiBXQVNNRm9ybWF0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk3QjJFMDEwRTFCOTdBQTY5MDBFRjVENUMgLyogV0FTTUZ1bmN0aW9u
Q29tcGlsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCODMyOUJGMUJCMjFGRTMwMDY0OUE2RSAv
KiBXQVNNRnVuY3Rpb25MTFZNSVJHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTdCMDI0
NzU3MUI4NjgyRTQwMDU0MjQ0MCAvKiBXQVNNRnVuY3Rpb25QYXJzZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdCMDI0NzU5MUI4NjhFQjcwMDU0MjQ0MCAvKiBXQVNNRnVuY3Rpb25TeW50YXhDaGVj
a2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QjM5Rjc2RTFCNjJERTMyMDAzNjBGQjQgLyogV0FT
TU1vZHVsZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCkBAIC03NzQ1LDYgKzc4MTEsNyBAQAogCQkJ
CTE0MkUzMTM1MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGVTZXQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQyRTMxMzcxMzRGRjBBNjAwQUZBREI1IC8qIEhhbmRsZVN0YWNrLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0QkE3QTk3MTNBQURGRjgwMDVCN0MyQyAvKiBIZWFwLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTBGMzJCRDEwMUJCMzRGMTkwMDkzQTU3RiAvKiBIZWFwSGVscGVyUG9vbC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDMjREMzFFMjE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0
YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzJFNTI2QkQxNTkwRUYwMDAwNTRFNDhE
IC8qIEhlYXBUaW1lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTdCQTYwRjFBMUE3Q0VDMDBG
MUY3QjQgLyogSGVhcFZlcmlmaWVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzkwMSw2ICs3OTY4
LDcgQEAKIAkJCQkwRjJCNjZGQTE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5Q29uc3Ry
dWN0b3JzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkI2NkZDMTdCNkI1QUIwMEE3QUUzRiAv
KiBKU1R5cGVkQXJyYXlQcm90b3R5cGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkI2NkZF
MTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CURFQTdFMjQ0MUJCQzY3NzIwMEQ3ODQ0MCAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTg2RTNDNjFBMTY3QkFCRUUwMDZENzYwQSAvKiBKU1ZhbHVl
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRCRDVBMzIwQTNFOTFGNjAwQkFGNTlDIC8qIEpTVmFs
dWVSZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFM0M2MUMxNjdCQUJFRTAwNkQ3NjBBIC8q
IEpTVmlydHVhbE1hY2hpbmUubW0gaW4gU291cmNlcyAqLywKQEAgLTc5NzQsNyArODA0Miw2IEBA
CiAJCQkJMEY5ODIwNjAxNkJGRTM4MTAwMjQwRDAyIC8qIFByZWNpc2VKdW1wVGFyZ2V0cy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5NTc0MkY2NTBERDExRjVBMDAwOTE3RkIgLyogUHJvZmlsZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5NUNENDU3NjBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmls
ZUdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlERUE3RTI0NDFCQkM2NzcyMDBENzg0
NDAgLyogSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
NUFCODM1NjBEQTQzQzMwMDBCQzgzRjMgLyogUHJvZmlsZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZGNzI5QUQxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVyQnl0ZWNvZGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZGNzI5QUUxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVyQnl0
ZWNvZGVzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtODA4MSw3ICs4MTQ4LDYgQEAKIAkJCQkwRkY0
Mjc0MDE1OEVCRThCMDA0Q0I5RkYgLyogdWRpczg2X2RlY29kZS5jIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZGNDI3NDMxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl9pbnB1dC5jIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZGNDI3NEQxNThFQkZFNjAwNENCOUZGIC8qIHVkaXM4Nl9pdGFiX2hvbGRlci5j
IGluIFNvdXJjZXMgKi8sCi0JCQkJMEYzMkJEMTAxQkIzNEYxOTAwOTNBNTdGIC8qIEhlYXBIZWxw
ZXJQb29sLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzQ1MTU4RUJFOTEwMDRDQjlGRiAv
KiB1ZGlzODZfc3luLWF0dC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NDYxNThFQkU5MTAw
NENCOUZGIC8qIHVkaXM4Nl9zeW4taW50ZWwuYyBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzQ3
MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfc3luLmMgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL1VwZGF0ZUNvbnRlbnRzLnB5IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvVXBkYXRlQ29udGVudHMucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Nzc2ZDQ2ZmI0YzQyMzAyYjg1ZmYxMGM4NTFlYjM0YzFlMjc4OTRjMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL1VwZGF0ZUNvbnRlbnRzLnB5CkBAIC0w
LDAgKzEsNDggQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisKKyMgQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMgMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyMgICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKyMgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyMgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBz
eXMKK2ltcG9ydCBvcworCithc3NlcnQobGVuKHN5cy5hcmd2KSA9PSAzKQorCitjb21wID0gc3lz
LmFyZ3ZbMV0KK2ZpbGVuYW1lID0gc3lzLmFyZ3ZbMl0KKwordCA9IEZhbHNlCisKK2lmIG9zLnBh
dGguaXNmaWxlKGZpbGVuYW1lKToKKyAgICBmID0gb3BlbihmaWxlbmFtZSwgJ3InKQorICAgIGNv
bXBhcmF0b3IgPSBmLnJlYWQoKQorICAgIGYuY2xvc2UoKQorICAgIHQgPSBUcnVlCisKK2lmIChu
b3QgdCBvciBjb21wICE9IGNvbXBhcmF0b3IpOgorICAgIGYgPSBvcGVuKGZpbGVuYW1lLCAndycp
CisgICAgZi53cml0ZShjb21wKQorICAgIGYuY2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvX19pbml0X18ucHkgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NTA0NjEx
M2FkYjhhOGFkYzJhZTgyYmYyZGI2ZTg1NGVlYmFjYmNmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvX19pbml0X18ucHkKQEAgLTAsMCAr
MSwzIEBACisjIFJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZv
ciBtb2R1bGUgZmlsZXMKKworZnJvbSBidWlsdGlucyBpbXBvcnQgKgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1
aWx0aW5zL2J1aWx0aW5zLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRp
bnMvYnVpbHRpbnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGUzNThkZDAxNjU1YjY2MzczMzM5OWUyMjIwMTgy
NjM1NjIyMzg0MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL2J1aWx0aW5zL2J1aWx0aW5zLnB5CkBAIC0wLDAgKzEsMTIgQEAKKyMgVGhpcyBmaWxlIGlz
IHVzZWQgdG8gc2ltdWxhdGUgdGhlIGJ1aWx0aW5zLyBkaXJlY3Rvcnkgd2hlbiBnZW5lcmF0ZS1q
cy1idWlsdGlucy5weQorIyBpcyBydW4gZnJvbSBKYXZhU2NyaXB0Q29yZSBmcmFtZXdvcmsncyBw
cml2YXRlIGhlYWRlcnMgZGlyZWN0b3J5LCB3aGljaCBpcyBmbGF0dGVuZWQuCisKK2Zyb20gYnVp
bHRpbnNfbW9kZWwgaW1wb3J0ICoKK2Zyb20gYnVpbHRpbnNfdGVtcGxhdGVzIGltcG9ydCAqCisK
K2Zyb20gYnVpbHRpbnNfZ2VuZXJhdG9yIGltcG9ydCAqCitmcm9tIGdlbmVyYXRlX2J1aWx0aW5z
X2NvbWJpbmVkX2hlYWRlciBpbXBvcnQgKgorZnJvbSBnZW5lcmF0ZV9idWlsdGluc19jb21iaW5l
ZF9pbXBsZW1lbnRhdGlvbiBpbXBvcnQgKgorZnJvbSBnZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0
ZV9oZWFkZXIgaW1wb3J0ICoKK2Zyb20gZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaW1wbGVt
ZW50YXRpb24gaW1wb3J0ICoKK2Zyb20gZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfd3JhcHBl
ciBpbXBvcnQgKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5weSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRv
ci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kNDMyYWRjNTMzZTIwYzI5ZTMzMjQ0YjFmYmI0NjBlMmY3YTU5NDc5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRp
bnMvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5CkBAIC0wLDAgKzEsOTYgQEAKKyMhL3Vzci9iaW4vZW52
IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5n
dG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgcmUKK2Zy
b20gc3RyaW5nIGltcG9ydCBUZW1wbGF0ZQorCitmcm9tIGJ1aWx0aW5zX3RlbXBsYXRlcyBpbXBv
cnQgQnVpbHRpbnNHZW5lcmF0b3JUZW1wbGF0ZXMgYXMgVGVtcGxhdGVzCisKK2xvZyA9IGxvZ2dp
bmcuZ2V0TG9nZ2VyKCdnbG9iYWwnKQorCisKK2RlZiB1Y2ZpcnN0KHN0cik6CisgICAgcmV0dXJu
IHN0cls6MV0udXBwZXIoKSArIHN0clsxOl0KKworCitjbGFzcyBCdWlsdGluc0dlbmVyYXRvcjoK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZWwpOgorICAgICAgICBzZWxmLl9tb2RlbCA9IG1v
ZGVsCisKKyAgICBkZWYgbW9kZWwoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9tb2RlbAor
CisgICAgZGVmIGdlbmVyYXRlX2xpY2Vuc2Uoc2VsZik6CisgICAgICAgIHJhd19saWNlbnNlID0g
VGVtcGxhdGUoVGVtcGxhdGVzLkxpY2Vuc2VUZXh0KS5zdWJzdGl0dXRlKE5vbmUpCisgICAgICAg
IGNvcHlyaWdodHMgPSBzZWxmLl9tb2RlbC5jb3B5cmlnaHRzKCkKKyAgICAgICAgY29weXJpZ2h0
cy5zb3J0KCkKKworICAgICAgICBsaWNlbnNlX2Jsb2NrID0gW107CisgICAgICAgIGxpY2Vuc2Vf
YmxvY2suYXBwZW5kKCIvKiIpCisgICAgICAgIGZvciBjb3B5cmlnaHQgaW4gY29weXJpZ2h0czoK
KyAgICAgICAgICAgIGxpY2Vuc2VfYmxvY2suYXBwZW5kKCIgKiBDb3B5cmlnaHQgKGMpICVzIiAl
IGNvcHlyaWdodCkKKyAgICAgICAgaWYgbGVuKGNvcHlyaWdodHMpID4gMDoKKyAgICAgICAgICAg
IGxpY2Vuc2VfYmxvY2suYXBwZW5kKCIgKiAiKQorCisgICAgICAgIGZvciBsaW5lIGluIHJhd19s
aWNlbnNlLnNwbGl0KCdcbicpOgorICAgICAgICAgICAgbGljZW5zZV9ibG9jay5hcHBlbmQoIiAq
ICIgKyBsaW5lKQorCisgICAgICAgIGxpY2Vuc2VfYmxvY2suYXBwZW5kKCIgKi8iKQorCisgICAg
ICAgIHJldHVybiAnXG4nLmpvaW4obGljZW5zZV9ibG9jaykKKworICAgIGRlZiBnZW5lcmF0ZV9p
bmNsdWRlc19mcm9tX2VudHJpZXMoc2VsZiwgZW50cmllcyk6CisgICAgICAgIGluY2x1ZGVzID0g
c2V0KCkKKyAgICAgICAgZm9yIGVudHJ5IGluIGVudHJpZXM6CisgICAgICAgICAgICAoYWxsb3dl
ZF9mcmFtZXdvcmtfbmFtZXMsIGRhdGEpID0gZW50cnkKKyAgICAgICAgICAgIChmcmFtZXdvcmtf
bmFtZSwgaGVhZGVyX3BhdGgpID0gZGF0YQorCisgICAgICAgICAgICBpZiBzZWxmLm1vZGVsKCku
ZnJhbWV3b3JrLm5hbWUgbm90IGluIGFsbG93ZWRfZnJhbWV3b3JrX25hbWVzOgorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLm5h
bWUgIT0gZnJhbWV3b3JrX25hbWU6CisgICAgICAgICAgICAgICAgaW5jbHVkZXMuYWRkKCIjaW5j
bHVkZSA8JXM+IiAlIGhlYWRlcl9wYXRoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICBpbmNsdWRlcy5hZGQoIiNpbmNsdWRlIFwiJXNcIiIgJSBvcy5wYXRoLmJhc2VuYW1lKGhl
YWRlcl9wYXRoKSkKKworICAgICAgICBzb3J0ZWRfaW5jbHVkZXMgPSBzb3J0ZWQobGlzdChpbmNs
dWRlcykpCisgICAgICAgIG5hbWUsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoc2VsZi5vdXRwdXRf
ZmlsZW5hbWUoKSkKKyAgICAgICAgaWYgZXh0IGlzIG5vdCAnLmgnOgorICAgICAgICAgICAgc29y
dGVkX2luY2x1ZGVzWzowXSA9IFsKKyAgICAgICAgICAgICAgICAiI2luY2x1ZGUgXCJjb25maWcu
aFwiIiwKKyAgICAgICAgICAgICAgICAiI2luY2x1ZGUgXCIlcy5oXCIiICUgbmFtZSwKKyAgICAg
ICAgICAgICAgICAiIiwKKyAgICAgICAgICAgIF0KKworICAgICAgICByZXR1cm4gc29ydGVkX2lu
Y2x1ZGVzCisKKyAgICAjIFRoZXNlIG1ldGhvZHMgYXJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nl
cy4KKyAgICBkZWYgZ2VuZXJhdGVfb3V0cHV0KHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBk
ZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19tb2RlbC5weSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmYzODM2ZmNhMGQ0YmQzNmIzYjNmODc1YTY0M2NkZjFmNTg2MmI1NjIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWls
dGluc19tb2RlbC5weQpAQCAtMCwwICsxLDI2MiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisj
CisjIENvcHlyaWdodCAoYykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgbG9nZ2luZwor
aW1wb3J0IHJlCitpbXBvcnQgb3MKKworbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcp
CisKK19GUkFNRVdPUktfQ09ORklHX01BUCA9IHsKKyAgICAiR2xvYmFsIjogeworICAgIH0sCisg
ICAgIkphdmFTY3JpcHRDb3JlIjogeworICAgICAgICAibWFjcm9fcHJlZml4IjogIkpTQyIsCisg
ICAgICAgICJuYW1lc3BhY2UiOiAiSlNDIgorICAgIH0sCisgICAgIldlYkNvcmUiOiB7CisgICAg
ICAgICJtYWNyb19wcmVmaXgiOiAiV0VCQ09SRSIsCisgICAgICAgICJuYW1lc3BhY2UiOiAiV2Vi
Q29yZSIKKyAgICB9LAorICAgICMgVXNlZCBmb3IgY29kZSBnZW5lcmF0b3IgdGVzdHMuCisgICAg
IlRlc3QiOiB7CisgICAgfQorfQorCitkZWYgbGNmaXJzdChzdHIpOgorICAgIHJldHVybiBzdHJb
OjFdLmxvd2VyKCkgKyBzdHJbMTpdCisKKworZnVuY3Rpb25IZWFkUmVnRXhwID0gcmUuY29tcGls
ZShyIig/OmZ1bmN0aW9ufGNvbnN0cnVjdG9yKVxzK1x3K1xzKlwoLio/XCkiLCByZS5NVUxUSUxJ
TkUgfCByZS5TKQorZnVuY3Rpb25OYW1lUmVnRXhwID0gcmUuY29tcGlsZShyIig/OmZ1bmN0aW9u
fGNvbnN0cnVjdG9yKVxzKyhcdyspXHMqXCgiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rp
b25Jc0NvbnN0cnVjdG9yUmVnRXhwID0gcmUuY29tcGlsZShyIl5jb25zdHJ1Y3RvciIsIHJlLk1V
TFRJTElORSB8IHJlLlMpCitmdW5jdGlvblBhcmFtZXRlckZpbmRlciA9IHJlLmNvbXBpbGUociJe
KD86ZnVuY3Rpb258Y29uc3RydWN0b3IpXHMrKD86XHcrKVxzKlwoKCg/OlxzKlx3Kyk/XHMqKD86
XHMqLFxzKlx3KykqKT9ccypcKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCisKK211bHRpbGluZUNv
bW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cKi4qP1wqXC8iLCByZS5NVUxUSUxJTkUgfCBy
ZS5TKQorc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cLy4qP1xuIiwg
cmUuTVVMVElMSU5FIHwgcmUuUykKKworCitjbGFzcyBQYXJzZUV4Y2VwdGlvbihFeGNlcHRpb24p
OgorICAgIHBhc3MKKworCitjbGFzcyBGcmFtZXdvcms6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IG5hbWUpOgorICAgICAgICBzZWxmLl9zZXR0aW5ncyA9IF9GUkFNRVdPUktfQ09ORklHX01BUFtu
YW1lXQorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisKKyAgICBkZWYgc2V0dGluZyhzZWxmLCBr
ZXksIGRlZmF1bHQ9JycpOgorICAgICAgICByZXR1cm4gc2VsZi5fc2V0dGluZ3MuZ2V0KGtleSwg
ZGVmYXVsdCkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZnJvbVN0cmluZyhmcmFtZXdv
cmtTdHJpbmcpOgorICAgICAgICBpZiBmcmFtZXdvcmtTdHJpbmcgPT0gIkdsb2JhbCI6CisgICAg
ICAgICAgICByZXR1cm4gRnJhbWV3b3Jrcy5HbG9iYWwKKworICAgICAgICBpZiBmcmFtZXdvcmtT
dHJpbmcgPT0gIkphdmFTY3JpcHRDb3JlIjoKKyAgICAgICAgICAgIHJldHVybiBGcmFtZXdvcmtz
LkphdmFTY3JpcHRDb3JlCisKKyAgICAgICAgaWYgZnJhbWV3b3JrU3RyaW5nID09ICJXZWJDb3Jl
IjoKKyAgICAgICAgICAgIHJldHVybiBGcmFtZXdvcmtzLldlYkNvcmUKKworICAgICAgICBpZiBm
cmFtZXdvcmtTdHJpbmcgPT0gIlRlc3QiOgorICAgICAgICAgICAgcmV0dXJuIEZyYW1ld29ya3Mu
VGVzdAorCisgICAgICAgIHJhaXNlIFBhcnNlRXhjZXB0aW9uKCJVbmtub3duIGZyYW1ld29yazog
JXMiICUgZnJhbWV3b3JrU3RyaW5nKQorCisKK2NsYXNzIEZyYW1ld29ya3M6CisgICAgR2xvYmFs
ID0gRnJhbWV3b3JrKCJHbG9iYWwiKQorICAgIEphdmFTY3JpcHRDb3JlID0gRnJhbWV3b3JrKCJK
YXZhU2NyaXB0Q29yZSIpCisgICAgV2ViQ29yZSA9IEZyYW1ld29yaygiV2ViQ29yZSIpCisgICAg
VGVzdCA9IEZyYW1ld29yaygiVGVzdCIpCisKK2NsYXNzIEJ1aWx0aW5PYmplY3Q6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIG9iamVjdF9uYW1lLCBmdW5jdGlvbnMpOgorICAgICAgICBzZWxmLm9i
amVjdF9uYW1lID0gb2JqZWN0X25hbWUKKyAgICAgICAgc2VsZi5mdW5jdGlvbnMgPSBmdW5jdGlv
bnMKKyAgICAgICAgc2VsZi5jb2xsZWN0aW9uID0gTm9uZSAgIyBTZXQgYnkgdGhlIG93bmluZyBC
dWlsdGluc0NvbGxlY3Rpb24KKworY2xhc3MgQnVpbHRpbkZ1bmN0aW9uOgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBmdW5jdGlvbl9uYW1lLCBmdW5jdGlvbl9zb3VyY2UsIGlzX2NvbnN0cnVjdG9y
LCBwYXJhbWV0ZXJzKToKKyAgICAgICAgc2VsZi5mdW5jdGlvbl9uYW1lID0gZnVuY3Rpb25fbmFt
ZQorICAgICAgICBzZWxmLmZ1bmN0aW9uX3NvdXJjZSA9IGZ1bmN0aW9uX3NvdXJjZQorICAgICAg
ICBzZWxmLmlzX2NvbnN0cnVjdG9yID0gaXNfY29uc3RydWN0b3IKKyAgICAgICAgc2VsZi5wYXJh
bWV0ZXJzID0gcGFyYW1ldGVycworICAgICAgICBzZWxmLm9iamVjdCA9IE5vbmUgICMgU2V0IGJ5
IHRoZSBvd25pbmcgQnVpbHRpbk9iamVjdAorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBm
cm9tU3RyaW5nKGZ1bmN0aW9uX3N0cmluZyk6CisgICAgICAgIGZ1bmN0aW9uX3NvdXJjZSA9IG11
bHRpbGluZUNvbW1lbnRSZWdFeHAuc3ViKCIiLCBmdW5jdGlvbl9zdHJpbmcpCisgICAgICAgIGZ1
bmN0aW9uX25hbWUgPSBmdW5jdGlvbk5hbWVSZWdFeHAuZmluZGFsbChmdW5jdGlvbl9zb3VyY2Up
WzBdCisgICAgICAgIGlzX2NvbnN0cnVjdG9yID0gZnVuY3Rpb25Jc0NvbnN0cnVjdG9yUmVnRXhw
Lm1hdGNoKGZ1bmN0aW9uX3NvdXJjZSkgIT0gTm9uZQorICAgICAgICBwYXJhbWV0ZXJzID0gW3Mu
c3RyaXAoKSBmb3IgcyBpbiBmdW5jdGlvblBhcmFtZXRlckZpbmRlci5maW5kYWxsKGZ1bmN0aW9u
X3NvdXJjZSlbMF0uc3BsaXQoJywnKV0KKyAgICAgICAgaWYgbGVuKHBhcmFtZXRlcnNbMF0pID09
IDA6CisgICAgICAgICAgICBwYXJhbWV0ZXJzID0gW10KKworICAgICAgICByZXR1cm4gQnVpbHRp
bkZ1bmN0aW9uKGZ1bmN0aW9uX25hbWUsIGZ1bmN0aW9uX3NvdXJjZSwgaXNfY29uc3RydWN0b3Is
IHBhcmFtZXRlcnMpCisKKyAgICBkZWYgbWFuZ2xlZE5hbWUoc2VsZik6CisgICAgICAgIHFOYW1l
ID0gIiVzLiVzIiAlIChzZWxmLm9iamVjdCwgc2VsZi5mdW5jdGlvbl9uYW1lKQorICAgICAgICBt
YW5nbGVkTmFtZSA9ICIiCisgICAgICAgIGkgPSAwCisgICAgICAgIHdoaWxlIGkgPCBsZW4ocU5h
bWUpOgorICAgICAgICAgICAgaWYgcU5hbWVbaV0gPT0gJy4nOgorICAgICAgICAgICAgICAgIG1h
bmdsZWROYW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtpICsgMV0udXBwZXIoKQorICAgICAgICAg
ICAgICAgIGkgPSBpICsgMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtYW5n
bGVkTmFtZSA9IG1hbmdsZWROYW1lICsgcU5hbWVbaV0KKyAgICAgICAgICAgIGkgPSBpICsgMQor
ICAgICAgICBpZiBzZWxmLmlzX2NvbnN0cnVjdG9yOgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUg
PSBtYW5nbGVkTmFtZSArICJDb25zdHJ1Y3RvciIKKyAgICAgICAgcmV0dXJuIG1hbmdsZWROYW1l
CisKKyAgICBkZWYgbWFuZ2xlZE5hbWVGb3JDb2RlKHNlbGYpOgorICAgICAgICByZXR1cm4gbGNm
aXJzdChzZWxmLm1hbmdsZWROYW1lKCkpICsgIkNvZGUiCisKKyAgICBkZWYgX19zdHJfXyhzZWxm
KToKKyAgICAgICAgaW50ZXJmYWNlID0gIiVzKCVzKSIgJSAoc2VsZi5mdW5jdGlvbl9uYW1lLCAn
LCAnLmpvaW4oc2VsZi5wYXJhbWV0ZXJzKSkKKyAgICAgICAgaWYgc2VsZi5pc19jb25zdHJ1Y3Rv
cjoKKyAgICAgICAgICAgIGludGVyZmFjZSA9IGludGVyZmFjZSArICIgW0NvbnN0cnVjdG9yXSIK
KworICAgICAgICByZXR1cm4gaW50ZXJmYWNlCisKK2NsYXNzIEJ1aWx0aW5zQ29sbGVjdGlvbjoK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgZnJhbWV3b3JrX25hbWUpOgorICAgICAgICBzZWxmLl9j
b3B5cmlnaHRfbGluZXMgPSBzZXQoKQorICAgICAgICBzZWxmLm9iamVjdHMgPSBbXQorICAgICAg
ICBzZWxmLmZyYW1ld29yayA9IEZyYW1ld29yay5mcm9tU3RyaW5nKGZyYW1ld29ya19uYW1lKQor
ICAgICAgICBsb2cuZGVidWcoIkNyZWF0ZWQgbmV3IEJ1aWx0aW5zIGNvbGxlY3Rpb24uIikKKwor
ICAgIGRlZiBwYXJzZV9idWlsdGluc19maWxlKHNlbGYsIGZpbGVuYW1lLCB0ZXh0KToKKyAgICAg
ICAgbG9nLmRlYnVnKCJQYXJzaW5nIGJ1aWx0aW5zIGZpbGU6ICVzIiAlIGZpbGVuYW1lKQorCisg
ICAgICAgIHBhcnNlZF9jb3B5cmlnaHRzID0gc2V0KHNlbGYuX3BhcnNlX2NvcHlyaWdodF9saW5l
cyh0ZXh0KSkKKyAgICAgICAgc2VsZi5fY29weXJpZ2h0X2xpbmVzID0gc2VsZi5fY29weXJpZ2h0
X2xpbmVzLnVuaW9uKHBhcnNlZF9jb3B5cmlnaHRzKQorCisgICAgICAgIGxvZy5kZWJ1ZygiRm91
bmQgY29weXJpZ2h0IGxpbmVzOiIpCisgICAgICAgIGZvciBsaW5lIGluIHNlbGYuX2NvcHlyaWdo
dF9saW5lczoKKyAgICAgICAgICAgIGxvZy5kZWJ1ZyhsaW5lKTsKKyAgICAgICAgbG9nLmRlYnVn
KCIiKQorCisgICAgICAgIG9iamVjdF9uYW1lLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBh
dGguYmFzZW5hbWUoZmlsZW5hbWUpKQorICAgICAgICBsb2cuZGVidWcoIlBhcnNpbmcgb2JqZWN0
OiAlcyIgJSBvYmplY3RfbmFtZSkKKworICAgICAgICBwYXJzZWRfZnVuY3Rpb25zID0gc2VsZi5f
cGFyc2VfZnVuY3Rpb25zKHRleHQpCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBwYXJzZWRfZnVu
Y3Rpb25zOgorICAgICAgICAgICAgZnVuY3Rpb24ub2JqZWN0ID0gb2JqZWN0X25hbWUKKworICAg
ICAgICBsb2cuZGVidWcoIlBhcnNlZCBmdW5jdGlvbnM6IikKKyAgICAgICAgZm9yIGZ1bmMgaW4g
cGFyc2VkX2Z1bmN0aW9uczoKKyAgICAgICAgICAgIGxvZy5kZWJ1ZyhmdW5jKQorICAgICAgICBs
b2cuZGVidWcoIiIpCisKKyAgICAgICAgbmV3X29iamVjdCA9IEJ1aWx0aW5PYmplY3Qob2JqZWN0
X25hbWUsIHBhcnNlZF9mdW5jdGlvbnMpCisgICAgICAgIG5ld19vYmplY3QuY29sbGVjdGlvbiA9
IHNlbGYKKyAgICAgICAgc2VsZi5vYmplY3RzLmFwcGVuZChuZXdfb2JqZWN0KQorCisgICAgZGVm
IGNvcHlyaWdodHMoc2VsZik6CisgICAgICAgIG93bmVyX3RvX3llYXJzID0gZGljdCgpCisgICAg
ICAgIGNvcHlyaWdodFllYXJSZWdFeHAgPSByZS5jb21waWxlKHIiKFxkezR9KVssIF17MCwyfSIp
CisgICAgICAgIG93bmVyU3RhcnRSZWdFeHAgPSByZS5jb21waWxlKHIiW15cZCwgXSIpCisKKyAg
ICAgICAgIyBSZXR1cm5zIGRlZHVwbGljYXRlZCBjb3B5cmlnaHRzIGtleWVkIG9uIHRoZSBvd25l
ci4KKyAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5fY29weXJpZ2h0X2xpbmVzOgorICAgICAgICAg
ICAgeWVhcnMgPSBzZXQoY29weXJpZ2h0WWVhclJlZ0V4cC5maW5kYWxsKGxpbmUpKQorICAgICAg
ICAgICAgb3duZXJJbmRleCA9IG93bmVyU3RhcnRSZWdFeHAuc2VhcmNoKGxpbmUpLnN0YXJ0KCkK
KyAgICAgICAgICAgIG93bmVyID0gbGluZVtvd25lckluZGV4Ol0KKyAgICAgICAgICAgIGxvZy5k
ZWJ1ZygiRm91bmQgeWVhcnM6ICVzIGFuZCBvd25lcjogJXMiICUgKHllYXJzLCBvd25lcikpCisg
ICAgICAgICAgICBpZiBvd25lciBub3QgaW4gb3duZXJfdG9feWVhcnM6CisgICAgICAgICAgICAg
ICAgb3duZXJfdG9feWVhcnNbb3duZXJdID0gc2V0KCkKKworICAgICAgICAgICAgb3duZXJfdG9f
eWVhcnNbb3duZXJdID0gb3duZXJfdG9feWVhcnNbb3duZXJdLnVuaW9uKHllYXJzKQorCisgICAg
ICAgIHJlc3VsdCA9IFtdCisKKyAgICAgICAgZm9yIG93bmVyLCB5ZWFycyBpbiBvd25lcl90b195
ZWFycy5pdGVtcygpOgorICAgICAgICAgICAgc29ydGVkX3llYXJzID0gbGlzdCh5ZWFycykKKyAg
ICAgICAgICAgIHNvcnRlZF95ZWFycy5zb3J0KCkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
IiVzICVzIiAlICgnLCAnLmpvaW4oc29ydGVkX3llYXJzKSwgb3duZXIpKQorCisgICAgICAgIHJl
dHVybiByZXN1bHQKKworICAgIGRlZiBhbGxfZnVuY3Rpb25zKHNlbGYpOgorICAgICAgICByZXN1
bHQgPSBbXQorICAgICAgICBmb3Igb2JqZWN0IGluIHNlbGYub2JqZWN0czoKKyAgICAgICAgICAg
IHJlc3VsdC5leHRlbmQob2JqZWN0LmZ1bmN0aW9ucykKKworICAgICAgICByZXN1bHQuc29ydCgp
CisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgICMgUHJpdmF0ZSBtZXRob2RzLgorCisgICAg
ZGVmIF9wYXJzZV9jb3B5cmlnaHRfbGluZXMoc2VsZiwgdGV4dCk6CisgICAgICAgIGxpY2Vuc2VC
bG9jayA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuZmluZGFsbCh0ZXh0KVswXQorICAgICAgICBs
aWNlbnNlQmxvY2sgPSBsaWNlbnNlQmxvY2tbOmxpY2Vuc2VCbG9jay5pbmRleCgiUmVkaXN0cmli
dXRpb24iKV0KKworICAgICAgICBjb3B5cmlnaHRMaW5lcyA9IFtdCisgICAgICAgIGZvciBsaW5l
IGluIGxpY2Vuc2VCbG9jay5zcGxpdCgiXG4iKToKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJl
cGxhY2UoIi8qIiwgIiIpCisgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIqLyIsICIi
KQorICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKiIsICIiKQorICAgICAgICAgICAg
bGluZSA9IGxpbmUucmVwbGFjZSgiQ29weXJpZ2h0IiwgIiIpCisgICAgICAgICAgICBsaW5lID0g
bGluZS5yZXBsYWNlKCJjb3B5cmlnaHQiLCAiIikKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJl
cGxhY2UoIihDKSIsICIiKQorICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKGMpIiwg
IiIpCisgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpOworCisgICAgICAgICAgICBpZiBs
ZW4obGluZSkgPT0gMDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBj
b3B5cmlnaHRMaW5lcy5hcHBlbmQobGluZSkKKyAgICAgICAgCisgICAgICAgIHJldHVybiBjb3B5
cmlnaHRMaW5lcworCisgICAgZGVmIF9wYXJzZV9mdW5jdGlvbnMoc2VsZiwgdGV4dCk6CisgICAg
ICAgIHRleHQgPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiLyoqLyIsIHNpbmdsZUxpbmVD
b21tZW50UmVnRXhwLnN1YigiLy9cbiIsIHRleHQpKQorCisgICAgICAgIG1hdGNoZXMgPSBbZnVu
YyBmb3IgZnVuYyBpbiBmdW5jdGlvbkhlYWRSZWdFeHAuZmluZGl0ZXIodGV4dCldCisgICAgICAg
IGZ1bmN0aW9uQm91bmRzID0gW10KKyAgICAgICAgc3RhcnQgPSAwCisgICAgICAgIGVuZCA9IDAK
KyAgICAgICAgZm9yIG1hdGNoIGluIG1hdGNoZXM6CisgICAgICAgICAgICBzdGFydCA9IG1hdGNo
LnN0YXJ0KCkKKyAgICAgICAgICAgIGlmIHN0YXJ0IDwgZW5kOgorICAgICAgICAgICAgICAgIGNv
bnRpbnVlCisgICAgICAgICAgICBlbmQgPSBtYXRjaC5lbmQoKQorICAgICAgICAgICAgd2hpbGUg
dGV4dFtlbmRdICE9ICd7JzoKKyAgICAgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAg
ICAgICBkZXB0aCA9IDEKKyAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgICAgIHdo
aWxlIGRlcHRoID4gMDoKKyAgICAgICAgICAgICAgICBpZiB0ZXh0W2VuZF0gPT0gJ3snOgorICAg
ICAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRoICsgMQorICAgICAgICAgICAgICAgIGVsaWYg
dGV4dFtlbmRdID09ICd9JzoKKyAgICAgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCAtIDEK
KyAgICAgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAgICBmdW5jdGlvbkJvdW5k
cy5hcHBlbmQoKHN0YXJ0LCBlbmQpKQorCisgICAgICAgIGZ1bmN0aW9uU3RyaW5ncyA9IFt0ZXh0
W3N0YXJ0OmVuZF0uc3RyaXAoKSBmb3IgKHN0YXJ0LCBlbmQpIGluIGZ1bmN0aW9uQm91bmRzXQor
ICAgICAgICByZXR1cm4gbWFwKEJ1aWx0aW5GdW5jdGlvbi5mcm9tU3RyaW5nLCBmdW5jdGlvblN0
cmluZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRp
bnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
YnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjMjFhNGY5MmM5ZDg3
NTBjZmVkZGRhMzlmNDg3Mjg4NGJkNmI1MWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHkKQEAgLTAs
MCArMSwyMTcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisj
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworIyBCdWlsdGlucyBnZW5lcmF0b3IgdGVtcGxhdGVzLCB3aGlj
aCBjYW4gYmUgZmlsbGVkIHdpdGggc3RyaW5nLlRlbXBsYXRlLgorCitjbGFzcyBCdWlsdGluc0dl
bmVyYXRvclRlbXBsYXRlczoKKworICAgIExpY2Vuc2VUZXh0ID0gKAorICAgICIiIlJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCithcmUgbWV0OgorMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKzIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCitBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKK1RIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKK1BVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKK1NVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KK0NPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCitB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCitUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiIpCisKKyAg
ICBEb05vdEVkaXRXYXJuaW5nID0gKAorICAgICIiIi8vIERPIE5PVCBFRElUIFRISVMgRklMRS4g
SXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgor
Ly8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL3NjcmlwdHMv
Z2VuZXJhdGUtanMtYnVpbHRpbnMucHkiIiIpCisKKyAgICBIZWFkZXJJbmNsdWRlR3VhcmRUb3Ag
PSAoCisgICAgIiIiI2lmbmRlZiAke2hlYWRlckd1YXJkfQorI2RlZmluZSAke2hlYWRlckd1YXJk
fSIiIikKKworICAgIEhlYWRlckluY2x1ZGVHdWFyZEJvdHRvbSA9ICgKKyAgICAiIiIjZW5kaWYg
Ly8gSlNDQnVpbHRpbnNfaAorIiIiKQorCisgICAgTmFtZXNwYWNlVG9wID0gKAorICAgICIiIm5h
bWVzcGFjZSAke25hbWVzcGFjZX0geyIiIikKKworICAgIE5hbWVzcGFjZUJvdHRvbSA9ICgKKyAg
ICAiIiJ9IC8vIG5hbWVzcGFjZSAke25hbWVzcGFjZX0iIiIpCisKKyAgICBDb21iaW5lZEhlYWRl
clN0YXRpY01hY3JvcyA9ICgKKyAgICAiIiIjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFU
T1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKKyAgICBKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisKKyR7bWFj
cm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1Ip
CisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lICR7bWFjcm9QcmVm
aXh9X0JVSUxUSU5fRVhJU1RTKG9iamVjdCwgZnVuYykgZGVmaW5lZCAke21hY3JvUHJlZml4fV9C
VUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jIiIiKQorCisgICAgU2VwYXJhdGVIZWFkZXJT
dGF0aWNNYWNyb3MgPSAoCisgICAgIiIiI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9S
KGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCisgICAgSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCiske21hY3Jv
UHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TmFtZX1fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJ
Tl9HRU5FUkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5l
ICR7bWFjcm9QcmVmaXh9X0JVSUxUSU5fJHtvYmplY3ROYW1lfV9FWElTVFMob2JqZWN0LCBmdW5j
KSBkZWZpbmVkICR7bWFjcm9QcmVmaXh9X0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMi
IiIpCisKKyAgICBDb21iaW5lZEpTQ0ltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9zID0gKAorICAg
ICIiIgorI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9u
TmFtZSwgYXJndW1lbnRDb3VudCkgXFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFt
ZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAore1xcCisgICAgcmV0dXJuIHZtLmJ1aWx0aW5F
eGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGlu
RXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsgXAorfQorJHttYWNyb1ByZWZpeH1f
Rk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERF
RklORV9CVUlMVElOX0dFTkVSQVRPUgorIiIiKQorCisgICAgU2VwYXJhdGVKU0NJbXBsZW1lbnRh
dGlvblN0YXRpY01hY3JvcyA9ICgKKyAgICAiIiIKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VO
RVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCitKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKK3tc
XAorICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFi
bGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2Uo
KSk7IFwKK30KKyR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9D
T0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5F
UkFUT1IKKyIiIikKKworICAgIENvbWJpbmVkV2ViQ29yZUltcGxlbWVudGF0aW9uU3RhdGljTWFj
cm9zID0gKAorICAgICAgICAiIiIKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNv
ZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKK0pTQzo6RnVuY3Rpb25FeGVj
dXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCit7XAorICAgIEpTVk1D
bGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5j
bGllbnREYXRhKTsgXAorICAgIHJldHVybiBjbGllbnREYXRhLT5yZWFkYWJsZVN0cmVhbUJ1aWx0
aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+cmVhZGFi
bGVTdHJlYW1CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSk7IFwKK30KKyR7bWFjcm9QcmVm
aXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRl
ZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKyIiIikKKworICAgIFNlcGFyYXRlV2ViQ29yZUlt
cGxlbWVudGF0aW9uU3RhdGljTWFjcm9zID0gKAorICAgICAgICAiIiIKKyNkZWZpbmUgREVGSU5F
X0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQp
IFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0m
IHZtKSBcCit7XAorICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXAorICAgIHJldHVybiBjbGllbnREYXRh
LT5yZWFkYWJsZVN0cmVhbUJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2
bSwgY2xpZW50RGF0YS0+cmVhZGFibGVTdHJlYW1CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2Uo
KSk7IFwKK30KKyR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9D
T0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5F
UkFUT1IKKyIiIikKKworICAgIFNlcGFyYXRlV3JhcHBlckhlYWRlckJvaWxlcnBsYXRlID0gKAor
ICAgICIiImNsYXNzICR7b2JqZWN0TmFtZX1CdWlsdGluc1dyYXBwZXIgOiBwcml2YXRlIEpTQzo6
V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCAke29iamVjdE5hbWV9QnVp
bHRpbnNXcmFwcGVyKEpTQzo6Vk0qIHZtKQorICAgICAgICA6IG1fdm0oKnZtKQorICAgICAgICAk
e21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fRlVOQ1RJT05fTkFN
RShJTklUSUFMSVpFX0JVSUxUSU5fTkFNRVMpCisjZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9T
T1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMjU291
cmNlKEpTQzo6bWFrZVNvdXJjZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFt
ZSwgbGVuZ3RoKSkpCisgICAgICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNy
b31fQlVJTFRJTl9DT0RFKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRl
ZiBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKKyAgICB7CisgICAgfQorCisjZGVm
aW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3Ro
KSBcXAorICAgIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFi
bGUoKTsgXFwKKyAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIGNvbnN0
IHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KKyAgICAke21hY3JvUHJlZml4fV9GT1JFQUNI
XyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykK
KyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUworCisgICAgJHttYWNyb1ByZWZpeH1f
Rk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlM
VElOX0lERU5USUZJRVJfQUNDRVNTT1IpCisKKyAgICB2b2lkIGV4cG9ydE5hbWVzKCk7CisKK3By
aXZhdGU6CisgICAgSlNDOjpWTSYgbV92bTsKKworICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hf
JHtvYmplY3RNYWNyb31fQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1F
UykKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rp
b25OYW1lLCBsZW5ndGgpIFxcCisgICAgSlNDOjpTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7
XFwKKyAgICBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4gbV8jI25h
bWUjI0V4ZWN1dGFibGU7CisgICAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3Jv
fV9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERF
Q0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworCit9OworCisjZGVmaW5lIERFRklORV9CVUlM
VElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcXAoraW5saW5lIEpT
Qzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqICR7b2JqZWN0TmFtZX1CdWlsdGluc1dyYXBw
ZXI6Om5hbWUjI0V4ZWN1dGFibGUoKSBcXAore1xcCisgICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0
YWJsZSlcXAorICAgICAgICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9IEpTQzo6V2VhazxKU0M6OlVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPihKU0M6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1f
dm0sIG1fIyNuYW1lIyNTb3VyY2UsIGZ1bmN0aW9uTmFtZSMjUHVibGljTmFtZSgpLCBzXyMjbmFt
ZSMjQ29uc3RydWN0QWJpbGl0eSksIHRoaXMsICZtXyMjbmFtZSMjRXhlY3V0YWJsZSk7XFwKKyAg
ICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7XFwKK30KKyR7bWFjcm9QcmVmaXh9
X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0VYRUNV
VEFCTEVTKQorI3VuZGVmIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTCisKK2lubGluZSB2b2lk
ICR7b2JqZWN0TmFtZX1CdWlsdGluc1dyYXBwZXI6OmV4cG9ydE5hbWVzKCkKK3sKKyNkZWZpbmUg
RVhQT1JUX0ZVTkNUSU9OX05BTUUobmFtZSkgbV92bS5wcm9wZXJ0eU5hbWVzLT5hcHBlbmRFeHRl
cm5hbE5hbWUobmFtZSMjUHVibGljTmFtZSgpLCBuYW1lIyNQcml2YXRlTmFtZSgpKTsKKyAgICAk
e21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fRlVOQ1RJT05fTkFN
RShFWFBPUlRfRlVOQ1RJT05fTkFNRSkKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT05fTkFNRQorfQor
CitjbGFzcyAke29iamVjdE5hbWV9QnVpbHRpbkZ1bmN0aW9ucyB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgJHtvYmplY3ROYW1lfUJ1aWx0aW5GdW5jdGlvbnMoSlNDOjpWTSYgdm0pIDogbV92bSh2
bSkgeyB9CisKKyAgICB2b2lkIGluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYpOworICAgIHZvaWQg
dmlzaXQoSlNDOjpTbG90VmlzaXRvciYpOworCitwdWJsaWM6CisgICAgSlNDOjpWTSYgbV92bTsK
KworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMoZnVuY3Rpb25OYW1lKSBc
XAorICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNGdW5jdGlvbj4gbV8jI2Z1bmN0aW9uTmFt
ZSMjRnVuY3Rpb247CisgICAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9C
VUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3Vu
ZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworfTsKKworaW5saW5lIHZvaWQgJHtv
YmplY3ROYW1lfUJ1aWx0aW5GdW5jdGlvbnM6OmluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQoreworI2RlZmluZSBFWFBPUlRfRlVOQ1RJT04oY29kZU5hbWUsIGZ1bmN0aW9u
TmFtZSwgbGVuZ3RoKVxcCisgICAgbV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb24uc2V0KG1fdm0s
ICZnbG9iYWxPYmplY3QsIEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKG1f
dm0sIGNvZGVOYW1lIyNHZW5lcmF0b3IobV92bSksICZnbG9iYWxPYmplY3QpKTsKKyAgICAke21h
Y3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShFWFBPUlRfRlVO
Q1RJT04pCisjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OCit9CisKK2lubGluZSB2b2lkICR7b2JqZWN0
TmFtZX1CdWlsdGluRnVuY3Rpb25zOjp2aXNpdChKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworI2RlZmluZSBWSVNJVF9GVU5DVElPTihuYW1lKSB2aXNpdG9yLmFwcGVuZCgmbV8jI25hbWUj
I0Z1bmN0aW9uKTsKKyAgICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JV
SUxUSU5fRlVOQ1RJT05fTkFNRShWSVNJVF9GVU5DVElPTikKKyN1bmRlZiBWSVNJVF9GVU5DVElP
TgorfQorIiIiKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX2NvbWJp
bmVkX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2dl
bmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2hlYWRlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTk1M2FkODc1
MzZhMWJhYjIzMjI2ZDQxMzViYTM3YTAyNmEwMjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmlu
ZWRfaGVhZGVyLnB5CkBAIC0wLDAgKzEsMTYyIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMK
KyMgQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCByZQoraW1wb3J0IHN0cmluZworZnJvbSBzdHJpbmcg
aW1wb3J0IFRlbXBsYXRlCisKK2Zyb20gYnVpbHRpbnNfZ2VuZXJhdG9yIGltcG9ydCBCdWlsdGlu
c0dlbmVyYXRvcgorZnJvbSBidWlsdGluc190ZW1wbGF0ZXMgaW1wb3J0IEJ1aWx0aW5zR2VuZXJh
dG9yVGVtcGxhdGVzIGFzIFRlbXBsYXRlcworCitsb2cgPSBsb2dnaW5nLmdldExvZ2dlcignZ2xv
YmFsJykKKworCitjbGFzcyBCdWlsdGluc0NvbWJpbmVkSGVhZGVyR2VuZXJhdG9yKEJ1aWx0aW5z
R2VuZXJhdG9yKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZWwpOgorICAgICAgICBCdWls
dGluc0dlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBtb2RlbCkKKworICAgIGRlZiBvdXRwdXRfZmls
ZW5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiAiJXNCdWlsdGlucy5oIiAlIHNlbGYubW9kZWwo
KS5mcmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNlJykKKworICAgIGRlZiBnZW5lcmF0ZV9vdXRw
dXQoc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbmFtZXNwYWNlJzogc2Vs
Zi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCduYW1lc3BhY2UnKSwKKyAgICAgICAgICAgICdo
ZWFkZXJHdWFyZCc6IHNlbGYub3V0cHV0X2ZpbGVuYW1lKCkucmVwbGFjZSgnLicsICdfJyksCisg
ICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmco
J21hY3JvX3ByZWZpeCcpLAorICAgICAgICB9CisKKyAgICAgICAgc2VjdGlvbnMgPSBbXQorICAg
ICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9saWNlbnNlKCkpCisgICAgICAgIHNl
Y3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuRG9Ob3RFZGl0V2FybmluZykuc3Vic3Rp
dHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5I
ZWFkZXJJbmNsdWRlR3VhcmRUb3ApLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25z
LmFwcGVuZChzZWxmLmdlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zKCkpCisgICAgICAgIHNl
Y3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlVG9wKS5zdWJzdGl0dXRl
KGFyZ3MpKQorICAgICAgICBmb3Igb2JqZWN0IGluIHNlbGYubW9kZWwoKS5vYmplY3RzOgorICAg
ICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfc2VjdGlvbl9mb3Jfb2JqZWN0
KG9iamVjdCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX3NlY3Rpb25f
Zm9yX2NvZGVfdGFibGVfbWFjcm8oKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2Vu
ZXJhdGVfc2VjdGlvbl9mb3JfY29kZV9uYW1lX21hY3JvKCkpCisgICAgICAgIHNlY3Rpb25zLmFw
cGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuQ29tYmluZWRIZWFkZXJTdGF0aWNNYWNyb3MpLnN1YnN0
aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMu
TmFtZXNwYWNlQm90dG9tKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBl
bmQoVGVtcGxhdGUoVGVtcGxhdGVzLkhlYWRlckluY2x1ZGVHdWFyZEJvdHRvbSkuc3Vic3RpdHV0
ZShhcmdzKSkKKworICAgICAgICByZXR1cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMpCisKKyAgICBk
ZWYgZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlvbnMoc2VsZik6CisgICAgICAgIHJldHVybiAi
IiJuYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIFZNOwor
CitlbnVtIGNsYXNzIENvbnN0cnVjdEFiaWxpdHkgOiB1bnNpZ25lZDsKK30iIiIKKworICAgIGRl
ZiBnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9vYmplY3Qoc2VsZiwgb2JqZWN0KToKKyAgICAgICAgbGlu
ZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoJy8qICVzICovJyAlIG9iamVjdC5vYmplY3Rf
bmFtZSkKKyAgICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2VuZXJhdGVfZXh0ZXJuc19mb3Jfb2Jq
ZWN0KG9iamVjdCkpCisgICAgICAgIGxpbmVzLmFwcGVuZCgiIikKKyAgICAgICAgbGluZXMuZXh0
ZW5kKHNlbGYuZ2VuZXJhdGVfbWFjcm9zX2Zvcl9vYmplY3Qob2JqZWN0KSkKKyAgICAgICAgbGlu
ZXMuYXBwZW5kKCIiKQorICAgICAgICBsaW5lcy5leHRlbmQoc2VsZi5nZW5lcmF0ZV9kZWZpbmVz
X2Zvcl9vYmplY3Qob2JqZWN0KSkKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKKwor
ICAgIGRlZiBnZW5lcmF0ZV9leHRlcm5zX2Zvcl9vYmplY3Qoc2VsZiwgb2JqZWN0KToKKyAgICAg
ICAgbGluZXMgPSBbXQorCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBvYmplY3QuZnVuY3Rpb25z
OgorICAgICAgICAgICAgZnVuY3Rpb25fYXJncyA9IHsKKyAgICAgICAgICAgICAgICAnY29kZU5h
bWUnOiBmdW5jdGlvbi5tYW5nbGVkTmFtZUZvckNvZGUoKQorICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBsaW5lcy5hcHBlbmQoIiIiZXh0ZXJuIGNvbnN0IGNoYXIqIHNfJShjb2RlTmFtZSlz
OworZXh0ZXJuIGNvbnN0IGludCBzXyUoY29kZU5hbWUpc0xlbmd0aDsKK2V4dGVybiBjb25zdCBK
U0M6OkNvbnN0cnVjdEFiaWxpdHkgc18lKGNvZGVOYW1lKXNDb25zdHJ1Y3RBYmlsaXR5OyIiIiAl
IGZ1bmN0aW9uX2FyZ3MpCisKKyAgICAgICAgcmV0dXJuIGxpbmVzCisKKyAgICBkZWYgZ2VuZXJh
dGVfbWFjcm9zX2Zvcl9vYmplY3Qoc2VsZiwgb2JqZWN0KToKKyAgICAgICAgYXJncyA9IHsKKyAg
ICAgICAgICAgICdtYWNyb1ByZWZpeCc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygn
bWFjcm9fcHJlZml4JyksCisgICAgICAgICAgICAnb2JqZWN0TWFjcm8nOiBvYmplY3Qub2JqZWN0
X25hbWUucmVwbGFjZSgnLicsICcnKS51cHBlcigpCisgICAgICAgIH0KKworICAgICAgICBsaW5l
cyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZCgiI2RlZmluZSAlKG1hY3JvUHJlZml4KXNfRk9S
RUFDSF8lKG9iamVjdE1hY3JvKXNfQlVJTFRJTl9EQVRBKG1hY3JvKSBcXCIgJSBhcmdzKQorICAg
ICAgICBmb3IgZnVuY3Rpb24gaW4gb2JqZWN0LmZ1bmN0aW9uczoKKyAgICAgICAgICAgIGZ1bmN0
aW9uX2FyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ2Z1bmNOYW1lJzogZnVuY3Rpb24uZnVuY3Rp
b25fbmFtZSwKKyAgICAgICAgICAgICAgICAnbWFuZ2xlZE5hbWUnOiBmdW5jdGlvbi5tYW5nbGVk
TmFtZSgpLAorICAgICAgICAgICAgICAgICdwYXJhbUNvdW50JzogbGVuKGZ1bmN0aW9uLnBhcmFt
ZXRlcnMpCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiICAgIG1h
Y3JvKCUoZnVuY05hbWUpcywgJShtYW5nbGVkTmFtZSlzLCAlKHBhcmFtQ291bnQpZCkgXFwiICUg
ZnVuY3Rpb25fYXJncykKKyAgICAgICAgcmV0dXJuIGxpbmVzCisKKyAgICBkZWYgZ2VuZXJhdGVf
ZGVmaW5lc19mb3Jfb2JqZWN0KHNlbGYsIG9iamVjdCk6CisgICAgICAgIGxpbmVzID0gW10KKyAg
ICAgICAgZm9yIGZ1bmN0aW9uIGluIG9iamVjdC5mdW5jdGlvbnM6CisgICAgICAgICAgICBhcmdz
ID0geworICAgICAgICAgICAgICAgICdtYWNyb1ByZWZpeCc6IHNlbGYubW9kZWwoKS5mcmFtZXdv
cmsuc2V0dGluZygnbWFjcm9fcHJlZml4JyksCisgICAgICAgICAgICAgICAgJ29iamVjdE1hY3Jv
Jzogb2JqZWN0Lm9iamVjdF9uYW1lLnJlcGxhY2UoJy4nLCAnJykudXBwZXIoKSwKKyAgICAgICAg
ICAgICAgICAnZnVuY3Rpb25NYWNybyc6IGZ1bmN0aW9uLmZ1bmN0aW9uX25hbWUudXBwZXIoKQor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIjZGVmaW5lICUobWFjcm9Q
cmVmaXgpc19CVUlMVElOXyUob2JqZWN0TWFjcm8pc18lKGZ1bmN0aW9uTWFjcm8pcyAxIiAlIGFy
Z3MpCisKKyAgICAgICAgcmV0dXJuIGxpbmVzCisKKyAgICBkZWYgZ2VuZXJhdGVfc2VjdGlvbl9m
b3JfY29kZV90YWJsZV9tYWNybyhzZWxmKToKKyAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAg
ICdtYWNyb1ByZWZpeCc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbWFjcm9fcHJl
Zml4JyksCisgICAgICAgIH0KKworICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFw
cGVuZCgiI2RlZmluZSAlKG1hY3JvUHJlZml4KXNfRk9SRUFDSF9CVUlMVElOX0NPREUobWFjcm8p
IFxcIiAlIGFyZ3MpCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBzZWxmLm1vZGVsKCkuYWxsX2Z1
bmN0aW9ucygpOgorICAgICAgICAgICAgZnVuY3Rpb25fYXJncyA9IHsKKyAgICAgICAgICAgICAg
ICAnZnVuY05hbWUnOiBmdW5jdGlvbi5mdW5jdGlvbl9uYW1lLAorICAgICAgICAgICAgICAgICdj
b2RlTmFtZSc6IGZ1bmN0aW9uLm1hbmdsZWROYW1lRm9yQ29kZSgpCisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiICAgIG1hY3JvKCUoY29kZU5hbWUpcywgJShmdW5j
TmFtZSlzLCBzXyUoY29kZU5hbWUpc0xlbmd0aCkgXFwiICUgZnVuY3Rpb25fYXJncykKKyAgICAg
ICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKKworICAgIGRlZiBnZW5lcmF0ZV9zZWN0aW9uX2Zv
cl9jb2RlX25hbWVfbWFjcm8oc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAn
bWFjcm9QcmVmaXgnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZp
eCcpLAorICAgICAgICB9CisKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBl
bmQoIiNkZWZpbmUgJShtYWNyb1ByZWZpeClzX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1F
KG1hY3JvKSBcXCIgJSBhcmdzKQorICAgICAgICB1bmlxdWVfbmFtZXMgPSBsaXN0KHNldChbZnVu
Y3Rpb24uZnVuY3Rpb25fbmFtZSBmb3IgZnVuY3Rpb24gaW4gc2VsZi5tb2RlbCgpLmFsbF9mdW5j
dGlvbnMoKV0pKQorICAgICAgICB1bmlxdWVfbmFtZXMuc29ydCgpCisgICAgICAgIGZvciBmdW5j
dGlvbl9uYW1lIGluIHVuaXF1ZV9uYW1lczoKKyAgICAgICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSB7
CisgICAgICAgICAgICAgICAgJ2Z1bmNOYW1lJzogZnVuY3Rpb25fbmFtZSwKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIgICAgbWFjcm8oJShmdW5jTmFtZSlzKSBc
XCIgJSBmdW5jdGlvbl9hcmdzKQorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvZ2VuZXJhdGVf
YnVpbHRpbnNfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRh
dGlvbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kNzNkNzA1YzhjMGM2NTk1NDNlYjI1YjkyMGE5MTVkMzA0OWE2
MWRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVp
bHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkKQEAgLTAs
MCArMSwxMjAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIw
MTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMp
IDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitpbXBvcnQgbG9nZ2luZwor
aW1wb3J0IHJlCitpbXBvcnQgc3RyaW5nCitmcm9tIHN0cmluZyBpbXBvcnQgVGVtcGxhdGUKK2lt
cG9ydCBqc29uCisKK2Zyb20gYnVpbHRpbnNfZ2VuZXJhdG9yIGltcG9ydCBCdWlsdGluc0dlbmVy
YXRvciwgdWNmaXJzdAorZnJvbSBidWlsdGluc19tb2RlbCBpbXBvcnQgRnJhbWV3b3JrLCBGcmFt
ZXdvcmtzCitmcm9tIGJ1aWx0aW5zX3RlbXBsYXRlcyBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3JU
ZW1wbGF0ZXMgYXMgVGVtcGxhdGVzCisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwn
KQorCisKK2NsYXNzIEJ1aWx0aW5zQ29tYmluZWRJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihCdWls
dGluc0dlbmVyYXRvcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZGVsKToKKyAgICAgICAg
QnVpbHRpbnNHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWwpCisKKyAgICBkZWYgb3V0cHV0
X2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gIiVzQnVpbHRpbnMuY3BwIiAlIHNlbGYu
bW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNlJykKKworICAgIGRlZiBnZW5lcmF0
ZV9vdXRwdXQoc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbmFtZXNwYWNl
Jzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCduYW1lc3BhY2UnKSwKKyAgICAgICAg
ICAgICdtYWNyb1ByZWZpeCc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbWFjcm9f
cHJlZml4JyksCisgICAgICAgIH0KKworICAgICAgICBzZWN0aW9ucyA9IFtdCisgICAgICAgIHNl
Y3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2xpY2Vuc2UoKSkKKyAgICAgICAgc2VjdGlvbnMu
YXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5Eb05vdEVkaXRXYXJuaW5nKS5zdWJzdGl0dXRlKGFy
Z3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9oZWFkZXJfaW5jbHVk
ZXMoKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3Bh
Y2VUb3ApLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmV4dGVuZChzZWxmLmdl
bmVyYXRlX2VtYmVkZGVkX2NvZGVfc3RyaW5nX3NlY3Rpb25zKCkpCisgICAgICAgIGlmIHNlbGYu
bW9kZWwoKS5mcmFtZXdvcmsgaXMgRnJhbWV3b3Jrcy5KYXZhU2NyaXB0Q29yZToKKyAgICAgICAg
ICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuQ29tYmluZWRKU0NJbXBsZW1l
bnRhdGlvblN0YXRpY01hY3Jvcykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgZWxpZiBzZWxm
Lm1vZGVsKCkuZnJhbWV3b3JrIGlzIEZyYW1ld29ya3MuV2ViQ29yZToKKyAgICAgICAgICAgIHNl
Y3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuQ29tYmluZWRXZWJDb3JlSW1wbGVtZW50
YXRpb25TdGF0aWNNYWNyb3MpLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFw
cGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlQm90dG9tKS5zdWJzdGl0dXRlKGFyZ3Mp
KQorCisgICAgICAgIHJldHVybiAiXG5cbiIuam9pbihzZWN0aW9ucykKKworICAgIGRlZiBnZW5l
cmF0ZV9oZWFkZXJfaW5jbHVkZXMoc2VsZik6CisgICAgICAgIGhlYWRlcl9pbmNsdWRlcyA9IFsK
KyAgICAgICAgICAgIChbIkphdmFTY3JpcHRDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZh
U2NyaXB0Q29yZSIsICJidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaCIpCisgICAgICAgICAg
ICApLAorICAgICAgICAgICAgKFsiSmF2YVNjcmlwdENvcmUiLCAiV2ViQ29yZSJdLAorICAgICAg
ICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9FeGVjdXRhYmxlLmgiKQorICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgIChbIkphdmFTY3JpcHRDb3JlIiwgIldlYkNvcmUiXSwK
KyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgInJ1bnRpbWUvSlNDZWxsSW5saW5l
cy5oIikKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAg
ICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCIp
CisgICAgICAgICAgICApLAorICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAg
ICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIikKKyAg
ICAgICAgICAgICksCisgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZSIsICJXZWJDb3JlIl0s
CisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL1ZNLmgiKQorICAg
ICAgICAgICAgKSwKKyAgICAgICAgXTsKKworICAgICAgICByZXR1cm4gJ1xuJy5qb2luKHNlbGYu
Z2VuZXJhdGVfaW5jbHVkZXNfZnJvbV9lbnRyaWVzKGhlYWRlcl9pbmNsdWRlcykpCisKKyAgICBk
ZWYgZ2VuZXJhdGVfZW1iZWRkZWRfY29kZV9zdHJpbmdfc2VjdGlvbnMoc2VsZik6CisgICAgICAg
IHN1YnNlY3Rpb25zID0gW10KKyAgICAgICAgZm9yIGZ1bmN0aW9uIGluIHNlbGYubW9kZWwoKS5h
bGxfZnVuY3Rpb25zKCk6CisgICAgICAgICAgICB0ZXh0ID0gZnVuY3Rpb24uZnVuY3Rpb25fc291
cmNlCisgICAgICAgICAgICAjIFdyYXAgaXQgaW4gcGFyZW5zIHRvIGF2b2lkIGFkZGluZyB0byBn
bG9iYWwgc2NvcGUuCisgICAgICAgICAgICB0ZXh0ID0gIihmdW5jdGlvbiAiICsgdGV4dFt0ZXh0
LmluZGV4KCIoIik6XSArICIpIgorICAgICAgICAgICAgIyBMYXp5IHdheSB0byBlc2NhcGUgcXVv
dGVzLCBJIHRoaW5rPworICAgICAgICAgICAgdGV4dExpbmVzID0ganNvbi5kdW1wcyh0ZXh0KVsx
Oi0xXS5zcGxpdCgiXFxuIikKKyAgICAgICAgICAgICMgVGhpcyBsb29rcyBzY2FyeSBiZWNhdXNl
IHdlIG5lZWQgdGhlIEpTIHNvdXJjZSBpdHNlbGYgdG8gaGF2ZSBuZXdsaW5lcy4KKyAgICAgICAg
ICAgIGVtYmVkZGVkU291cmNlID0gJ1xuJy5qb2luKFsnICAgIiVzXFxuIiBcXCcgJSBsaW5lIGZv
ciBsaW5lIGluIHRleHRMaW5lc10pCisKKyAgICAgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSAi
Q2Fubm90Q29uc3RydWN0IgorICAgICAgICAgICAgaWYgZnVuY3Rpb24uaXNfY29uc3RydWN0b3I6
CisgICAgICAgICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9ICJDYW5Db25zdHJ1Y3QiCisKKyAg
ICAgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ2NvZGVOYW1lJzogZnVuY3Rpb24u
bWFuZ2xlZE5hbWVGb3JDb2RlKCksCisgICAgICAgICAgICAgICAgJ2VtYmVkZGVkU291cmNlJzog
ZW1iZWRkZWRTb3VyY2UsCisgICAgICAgICAgICAgICAgJ2VtYmVkZGVkU291cmNlTGVuZ3RoJzog
bGVuKGVtYmVkZGVkU291cmNlKSArIDEsCisgICAgICAgICAgICAgICAgJ2NhbkNvbnN0cnVjdCc6
IGNvbnN0cnVjdEFiaWxpdHkKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGluZXMgPSBb
XQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCJjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkg
c18lKGNvZGVOYW1lKXNDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5Ojol
KGNhbkNvbnN0cnVjdClzOyIgJSBhcmdzKTsKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiY29u
c3QgaW50IHNfJShjb2RlTmFtZSlzTGVuZ3RoID0gJShlbWJlZGRlZFNvdXJjZUxlbmd0aClkOyIg
JSBhcmdzKTsKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiY29uc3QgY2hhciogc18lKGNvZGVO
YW1lKXMgPVxuJShlbWJlZGRlZFNvdXJjZSlzXG47IiAlIGFyZ3MpOworICAgICAgICAgICAgc3Vi
c2VjdGlvbnMuYXBwZW5kKCdcbicuam9pbihsaW5lcykpCisKKyAgICAgICAgcmV0dXJuIHN1YnNl
Y3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlu
cy9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9oZWFkZXIu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTVlNGVjNWJiMTg2ZmE3OGIzOWZjYzQzZjRlOWI2NGE1ODliOGJmOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5z
L2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2hlYWRlci5weQpAQCAtMCwwICsxLDE3NyBAQAor
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJz
aXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisj
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgcmUKK2lt
cG9ydCBzdHJpbmcKK2Zyb20gc3RyaW5nIGltcG9ydCBUZW1wbGF0ZQorCitmcm9tIGJ1aWx0aW5z
X2dlbmVyYXRvciBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3IKK2Zyb20gYnVpbHRpbnNfdGVtcGxh
dGVzIGltcG9ydCBCdWlsdGluc0dlbmVyYXRvclRlbXBsYXRlcyBhcyBUZW1wbGF0ZXMKKworbG9n
ID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcpCisKKyMgVGhlc2UgYXJlIGZvcm1hdHRlZCBh
cyAoW2FsbG93ZWRfZnJhbWV3b3Jrc10sIChmcmFtZXdvcmssIGhlYWRlcl9wYXRoKSkuCisjIFRo
ZSBnZW5lcmF0b3IgY2FuIGZpZ3VyZSBvdXQgaG93IHRvIGZvcm1hdCB0aGUgaW5jbHVkZXMuCisK
K2NsYXNzIEJ1aWx0aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0b3IoQnVpbHRpbnNHZW5lcmF0b3Ip
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCwgb2JqZWN0KToKKyAgICAgICAgQnVpbHRp
bnNHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWwpCisgICAgICAgIHNlbGYub2JqZWN0ID0g
b2JqZWN0CisKKyAgICBkZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4g
IiVzQnVpbHRpbnMuaCIgJSBzZWxmLm9iamVjdC5vYmplY3RfbmFtZQorCisgICAgZGVmIG1hY3Jv
X3ByZWZpeChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0
dGluZygnbWFjcm9fcHJlZml4JykKKworICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6Cisg
ICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbmFtZXNwYWNlJzogc2VsZi5tb2RlbCgpLmZy
YW1ld29yay5zZXR0aW5nKCduYW1lc3BhY2UnKSwKKyAgICAgICAgICAgICdoZWFkZXJHdWFyZCc6
IHNlbGYub3V0cHV0X2ZpbGVuYW1lKCkucmVwbGFjZSgnLicsICdfJyksCisgICAgICAgICAgICAn
bWFjcm9QcmVmaXgnOiBzZWxmLm1hY3JvX3ByZWZpeCgpLAorICAgICAgICAgICAgJ29iamVjdE5h
bWUnOiBzZWxmLm9iamVjdC5vYmplY3RfbmFtZS51cHBlcigpLAorICAgICAgICB9CisKKyAgICAg
ICAgc2VjdGlvbnMgPSBbXQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9s
aWNlbnNlKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuRG9O
b3RFZGl0V2FybmluZykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5k
KFRlbXBsYXRlKFRlbXBsYXRlcy5IZWFkZXJJbmNsdWRlR3VhcmRUb3ApLnN1YnN0aXR1dGUoYXJn
cykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2hlYWRlcl9pbmNsdWRl
cygpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9mb3J3YXJkX2RlY2xh
cmF0aW9ucygpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLk5h
bWVzcGFjZVRvcCkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNl
bGYuZ2VuZXJhdGVfc2VjdGlvbl9mb3Jfb2JqZWN0KHNlbGYub2JqZWN0KSkKKyAgICAgICAgc2Vj
dGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV90YWJsZV9tYWNybygp
KQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2Rl
X25hbWVfbWFjcm8oKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRl
cy5TZXBhcmF0ZUhlYWRlclN0YXRpY01hY3Jvcykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAg
c2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VCb3R0b20pLnN1YnN0
aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMu
SGVhZGVySW5jbHVkZUd1YXJkQm90dG9tKS5zdWJzdGl0dXRlKGFyZ3MpKQorCisgICAgICAgIHJl
dHVybiAiXG5cbiIuam9pbihzZWN0aW9ucykKKworICAgIGRlZiBnZW5lcmF0ZV9mb3J3YXJkX2Rl
Y2xhcmF0aW9ucyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIiIm5hbWVzcGFjZSBKU0MgeworY2xh
c3MgRnVuY3Rpb25FeGVjdXRhYmxlOworfSIiIgorCisgICAgZGVmIGdlbmVyYXRlX2hlYWRlcl9p
bmNsdWRlcyhzZWxmKToKKyAgICAgICAgaGVhZGVyX2luY2x1ZGVzID0gWworICAgICAgICAgICAg
KFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAiYnVpbHRp
bnMvQnVpbHRpblV0aWxzLmgiKQorICAgICAgICAgICAgKSwKKyAgICAgICAgXTsKKworICAgICAg
ICByZXR1cm4gJ1xuJy5qb2luKHNlbGYuZ2VuZXJhdGVfaW5jbHVkZXNfZnJvbV9lbnRyaWVzKGhl
YWRlcl9pbmNsdWRlcykpCisKKyAgICBkZWYgZ2VuZXJhdGVfc2VjdGlvbl9mb3Jfb2JqZWN0KHNl
bGYsIG9iamVjdCk6CisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCcv
KiAlcyAqLycgJSBvYmplY3Qub2JqZWN0X25hbWUpCisgICAgICAgIGxpbmVzLmV4dGVuZChzZWxm
LmdlbmVyYXRlX2V4dGVybnNfZm9yX29iamVjdChvYmplY3QpKQorICAgICAgICBsaW5lcy5hcHBl
bmQoIiIpCisgICAgICAgIGxpbmVzLmV4dGVuZChzZWxmLmdlbmVyYXRlX21hY3Jvc19mb3Jfb2Jq
ZWN0KG9iamVjdCkpCisgICAgICAgIGxpbmVzLmFwcGVuZCgiIikKKyAgICAgICAgbGluZXMuZXh0
ZW5kKHNlbGYuZ2VuZXJhdGVfZGVmaW5lc19mb3Jfb2JqZWN0KG9iamVjdCkpCisgICAgICAgIHJl
dHVybiAnXG4nLmpvaW4obGluZXMpCisKKyAgICBkZWYgZ2VuZXJhdGVfZXh0ZXJuc19mb3Jfb2Jq
ZWN0KHNlbGYsIG9iamVjdCk6CisgICAgICAgIGxpbmVzID0gW10KKworICAgICAgICBmb3IgZnVu
Y3Rpb24gaW4gb2JqZWN0LmZ1bmN0aW9uczoKKyAgICAgICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSB7
CisgICAgICAgICAgICAgICAgJ2NvZGVOYW1lJzogZnVuY3Rpb24ubWFuZ2xlZE5hbWVGb3JDb2Rl
KCksCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiIiJleHRlcm4g
Y29uc3QgY2hhciogc18lKGNvZGVOYW1lKXM7CitleHRlcm4gY29uc3QgaW50IHNfJShjb2RlTmFt
ZSlzTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzXyUoY29kZU5h
bWUpc0NvbnN0cnVjdEFiaWxpdHk7IiIiICUgZnVuY3Rpb25fYXJncykKKworICAgICAgICByZXR1
cm4gbGluZXMKKworICAgIGRlZiBnZW5lcmF0ZV9tYWNyb3NfZm9yX29iamVjdChzZWxmLCBvYmpl
Y3QpOgorICAgICAgICBhcmdzID0geworICAgICAgICAgICAgJ21hY3JvUHJlZml4Jzogc2VsZi5t
YWNyb19wcmVmaXgoKSwKKyAgICAgICAgICAgICdvYmplY3RNYWNybyc6IG9iamVjdC5vYmplY3Rf
bmFtZS5yZXBsYWNlKCcuJywgJ18nKS51cHBlcigpLAorICAgICAgICB9CisKKyAgICAgICAgbGlu
ZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoIiNkZWZpbmUgJShtYWNyb1ByZWZpeClzX0ZP
UkVBQ0hfJShvYmplY3RNYWNybylzX0JVSUxUSU5fREFUQShtYWNybykgXFwiICUgYXJncykKKyAg
ICAgICAgZm9yIGZ1bmN0aW9uIGluIG9iamVjdC5mdW5jdGlvbnM6CisgICAgICAgICAgICBmdW5j
dGlvbl9hcmdzID0geworICAgICAgICAgICAgICAgICdmdW5jTmFtZSc6IGZ1bmN0aW9uLmZ1bmN0
aW9uX25hbWUsCisgICAgICAgICAgICAgICAgJ21hbmdsZWROYW1lJzogZnVuY3Rpb24ubWFuZ2xl
ZE5hbWUoKSwKKyAgICAgICAgICAgICAgICAncGFyYW1Db3VudCc6IGxlbihmdW5jdGlvbi5wYXJh
bWV0ZXJzKSwKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIgICAg
bWFjcm8oJShmdW5jTmFtZSlzLCAlKG1hbmdsZWROYW1lKXMsICUocGFyYW1Db3VudClkKSBcXCIg
JSBmdW5jdGlvbl9hcmdzKQorICAgICAgICByZXR1cm4gbGluZXMKKworICAgIGRlZiBnZW5lcmF0
ZV9kZWZpbmVzX2Zvcl9vYmplY3Qoc2VsZiwgb2JqZWN0KToKKyAgICAgICAgbGluZXMgPSBbXQor
ICAgICAgICBmb3IgZnVuY3Rpb24gaW4gb2JqZWN0LmZ1bmN0aW9uczoKKyAgICAgICAgICAgIGFy
Z3MgPSB7CisgICAgICAgICAgICAgICAgJ21hY3JvUHJlZml4Jzogc2VsZi5tYWNyb19wcmVmaXgo
KSwKKyAgICAgICAgICAgICAgICAnb2JqZWN0TWFjcm8nOiBvYmplY3Qub2JqZWN0X25hbWUucmVw
bGFjZSgnLicsICdfJykudXBwZXIoKSwKKyAgICAgICAgICAgICAgICAnZnVuY3Rpb25NYWNybyc6
IGZ1bmN0aW9uLmZ1bmN0aW9uX25hbWUudXBwZXIoKQorICAgICAgICAgICAgfQorICAgICAgICAg
ICAgbGluZXMuYXBwZW5kKCIjZGVmaW5lICUobWFjcm9QcmVmaXgpc19CVUlMVElOXyUob2JqZWN0
TWFjcm8pc18lKGZ1bmN0aW9uTWFjcm8pcyAxIiAlIGFyZ3MpCisKKyAgICAgICAgcmV0dXJuIGxp
bmVzCisKKyAgICBkZWYgZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV90YWJsZV9tYWNybyhzZWxm
KToKKyAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICdtYWNyb1ByZWZpeCc6IHNlbGYubW9k
ZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbWFjcm9fcHJlZml4JyksCisgICAgICAgICAgICAnb2Jq
ZWN0TWFjcm8nOiBzZWxmLm9iamVjdC5vYmplY3RfbmFtZS51cHBlcigpLAorICAgICAgICB9CisK
KyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoIiNkZWZpbmUgJShtYWNy
b1ByZWZpeClzX0ZPUkVBQ0hfJShvYmplY3RNYWNybylzX0JVSUxUSU5fQ09ERShtYWNybykgXFwi
ICUgYXJncykKKyAgICAgICAgZm9yIGZ1bmN0aW9uIGluIHNlbGYub2JqZWN0LmZ1bmN0aW9uczoK
KyAgICAgICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ2Z1bmNOYW1l
JzogZnVuY3Rpb24uZnVuY3Rpb25fbmFtZSwKKyAgICAgICAgICAgICAgICAnY29kZU5hbWUnOiBm
dW5jdGlvbi5tYW5nbGVkTmFtZUZvckNvZGUoKSwKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgbGluZXMuYXBwZW5kKCIgICAgbWFjcm8oJShjb2RlTmFtZSlzLCAlKGZ1bmNOYW1lKXMsIHNf
JShjb2RlTmFtZSlzTGVuZ3RoKSBcXCIgJSBmdW5jdGlvbl9hcmdzKQorICAgICAgICByZXR1cm4g
J1xuJy5qb2luKGxpbmVzKQorCisgICAgZGVmIGdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfbmFt
ZV9tYWNybyhzZWxmKToKKyAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICdtYWNyb1ByZWZp
eCc6IHNlbGYubWFjcm9fcHJlZml4KCksCisgICAgICAgICAgICAnb2JqZWN0TWFjcm8nOiBzZWxm
Lm9iamVjdC5vYmplY3RfbmFtZS51cHBlcigpLAorICAgICAgICB9CisKKyAgICAgICAgbGluZXMg
PSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoIiNkZWZpbmUgJShtYWNyb1ByZWZpeClzX0ZPUkVB
Q0hfJShvYmplY3RNYWNybylzX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXFwiICUgYXJn
cykKKyAgICAgICAgdW5pcXVlX25hbWVzID0gbGlzdChzZXQoW2Z1bmN0aW9uLmZ1bmN0aW9uX25h
bWUgZm9yIGZ1bmN0aW9uIGluIHNlbGYub2JqZWN0LmZ1bmN0aW9uc10pKQorICAgICAgICB1bmlx
dWVfbmFtZXMuc29ydCgpCisgICAgICAgIGZvciBmdW5jdGlvbl9uYW1lIGluIHVuaXF1ZV9uYW1l
czoKKyAgICAgICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ2Z1bmNO
YW1lJzogZnVuY3Rpb25fbmFtZSwKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGluZXMu
YXBwZW5kKCIgICAgbWFjcm8oJShmdW5jTmFtZSlzKSBcXCIgJSBmdW5jdGlvbl9hcmdzKQorICAg
ICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaW1wbGVt
ZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9nZW5l
cmF0ZV9idWlsdGluc19zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYmE2
NGIwZTI1NDVlYWQ2ZGZlYTExNDAzMGM0NTMwMjViZjlkNjEzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNf
c2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkKQEAgLTAsMCArMSwxMjggQEAKKyMhL3Vzci9iaW4v
ZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNo
aW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHJlCitpbXBvcnQgc3RyaW5n
Citmcm9tIHN0cmluZyBpbXBvcnQgVGVtcGxhdGUKK2ltcG9ydCBqc29uCisKK2Zyb20gYnVpbHRp
bnNfZ2VuZXJhdG9yIGltcG9ydCBCdWlsdGluc0dlbmVyYXRvciwgdWNmaXJzdAorZnJvbSBidWls
dGluc19tb2RlbCBpbXBvcnQgRnJhbWV3b3JrLCBGcmFtZXdvcmtzCitmcm9tIGJ1aWx0aW5zX3Rl
bXBsYXRlcyBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3JUZW1wbGF0ZXMgYXMgVGVtcGxhdGVzCisK
K2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwnKQorCisKK2NsYXNzIEJ1aWx0aW5zU2Vw
YXJhdGVJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihCdWlsdGluc0dlbmVyYXRvcik6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIG1vZGVsLCBvYmplY3QpOgorICAgICAgICBCdWlsdGluc0dlbmVyYXRv
ci5fX2luaXRfXyhzZWxmLCBtb2RlbCkKKyAgICAgICAgc2VsZi5vYmplY3QgPSBvYmplY3QKKwor
ICAgIGRlZiBvdXRwdXRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiAiJXNCdWlsdGlu
cy5jcHAiICUgc2VsZi5vYmplY3Qub2JqZWN0X25hbWUKKworICAgIGRlZiBtYWNyb19wcmVmaXgo
c2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ21h
Y3JvX3ByZWZpeCcpCisKKyAgICBkZWYgZ2VuZXJhdGVfb3V0cHV0KHNlbGYpOgorICAgICAgICBh
cmdzID0geworICAgICAgICAgICAgJ25hbWVzcGFjZSc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsu
c2V0dGluZygnbmFtZXNwYWNlJyksCisgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1h
Y3JvX3ByZWZpeCgpLAorICAgICAgICAgICAgJ29iamVjdE1hY3JvJzogc2VsZi5vYmplY3Qub2Jq
ZWN0X25hbWUudXBwZXIoKSwKKyAgICAgICAgfQorCisgICAgICAgIHNlY3Rpb25zID0gW10KKyAg
ICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfbGljZW5zZSgpKQorICAgICAgICBz
ZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkRvTm90RWRpdFdhcm5pbmcpLnN1YnN0
aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2hlYWRl
cl9pbmNsdWRlcygpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVz
Lk5hbWVzcGFjZVRvcCkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuZXh0ZW5k
KHNlbGYuZ2VuZXJhdGVfZW1iZWRkZWRfY29kZV9zdHJpbmdfc2VjdGlvbnMoKSkKKyAgICAgICAg
aWYgc2VsZi5tb2RlbCgpLmZyYW1ld29yayBpcyBGcmFtZXdvcmtzLkphdmFTY3JpcHRDb3JlOgor
ICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5TZXBhcmF0ZUpT
Q0ltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9zKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBl
bGlmIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsgaXMgRnJhbWV3b3Jrcy5XZWJDb3JlOgorICAgICAg
ICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5TZXBhcmF0ZVdlYkNvcmVJ
bXBsZW1lbnRhdGlvblN0YXRpY01hY3Jvcykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2Vj
dGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VCb3R0b20pLnN1YnN0aXR1
dGUoYXJncykpCisKKyAgICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNlY3Rpb25zKQorCisgICAg
ZGVmIGdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcyhzZWxmKToKKyAgICAgICAgaGVhZGVyX2luY2x1
ZGVzID0gWworICAgICAgICAgICAgKFsiSmF2YVNjcmlwdENvcmUiXSwKKyAgICAgICAgICAgICAg
ICAoIkphdmFTY3JpcHRDb3JlIiwgImJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIikKKyAg
ICAgICAgICAgICksCisgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZSIsICJXZWJDb3JlIl0s
CisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL0V4ZWN1dGFibGUu
aCIpCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKFsiSmF2YVNjcmlwdENvcmUiLCAiV2Vi
Q29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9KU0Nl
bGxJbmxpbmVzLmgiKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIChbIldlYkNvcmUiXSwK
KyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgInJ1bnRpbWUvU3RydWN0dXJlSW5s
aW5lcy5oIikKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAg
ICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVz
LmgiKQorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIChbIkphdmFTY3JpcHRDb3JlIiwgIldl
YkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgInJ1bnRpbWUvVk0u
aCIpCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAg
ICAgICAgICgiV2ViQ29yZSIsICJiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgiKQor
ICAgICAgICAgICAgKSwKKyAgICAgICAgXTsKKworICAgICAgICByZXR1cm4gJ1xuJy5qb2luKHNl
bGYuZ2VuZXJhdGVfaW5jbHVkZXNfZnJvbV9lbnRyaWVzKGhlYWRlcl9pbmNsdWRlcykpCisKKyAg
ICBkZWYgZ2VuZXJhdGVfZW1iZWRkZWRfY29kZV9zdHJpbmdfc2VjdGlvbnMoc2VsZik6CisgICAg
ICAgIHN1YnNlY3Rpb25zID0gW10KKyAgICAgICAgZm9yIGZ1bmN0aW9uIGluIHNlbGYub2JqZWN0
LmZ1bmN0aW9uczoKKyAgICAgICAgICAgIHRleHQgPSBmdW5jdGlvbi5mdW5jdGlvbl9zb3VyY2UK
KyAgICAgICAgICAgICMgV3JhcCBpdCBpbiBwYXJlbnMgdG8gYXZvaWQgYWRkaW5nIHRvIGdsb2Jh
bCBzY29wZS4KKyAgICAgICAgICAgIHRleHQgPSAiKGZ1bmN0aW9uICIgKyB0ZXh0W3RleHQuaW5k
ZXgoIigiKTpdICsgIikiCisgICAgICAgICAgICAjIExhenkgd2F5IHRvIGVzY2FwZSBxdW90ZXMs
IEkgdGhpbms/CisgICAgICAgICAgICB0ZXh0TGluZXMgPSBqc29uLmR1bXBzKHRleHQpWzE6LTFd
LnNwbGl0KCJcXG4iKQorICAgICAgICAgICAgIyBUaGlzIGxvb2tzIHNjYXJ5IGJlY2F1c2Ugd2Ug
bmVlZCB0aGUgSlMgc291cmNlIGl0c2VsZiB0byBoYXZlIG5ld2xpbmVzLgorICAgICAgICAgICAg
ZW1iZWRkZWRTb3VyY2UgPSAnXG4nLmpvaW4oWycgICAiJXNcXG4iIFxcJyAlIGxpbmUgZm9yIGxp
bmUgaW4gdGV4dExpbmVzXSkKKworICAgICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9ICJDYW5u
b3RDb25zdHJ1Y3QiCisgICAgICAgICAgICBpZiBmdW5jdGlvbi5pc19jb25zdHJ1Y3RvcjoKKyAg
ICAgICAgICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gIkNhbkNvbnN0cnVjdCIKKworICAgICAg
ICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICAgICAnY29kZU5hbWUnOiBmdW5jdGlvbi5tYW5n
bGVkTmFtZUZvckNvZGUoKSwKKyAgICAgICAgICAgICAgICAnZW1iZWRkZWRTb3VyY2UnOiBlbWJl
ZGRlZFNvdXJjZSwKKyAgICAgICAgICAgICAgICAnZW1iZWRkZWRTb3VyY2VMZW5ndGgnOiBsZW4o
ZW1iZWRkZWRTb3VyY2UpICsgMSwKKyAgICAgICAgICAgICAgICAnY2FuQ29uc3RydWN0JzogY29u
c3RydWN0QWJpbGl0eQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsaW5lcyA9IFtdCisg
ICAgICAgICAgICBsaW5lcy5hcHBlbmQoImNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzXyUo
Y29kZU5hbWUpc0NvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OiUoY2Fu
Q29uc3RydWN0KXM7IiAlIGFyZ3MpOworICAgICAgICAgICAgbGluZXMuYXBwZW5kKCJjb25zdCBp
bnQgc18lKGNvZGVOYW1lKXNMZW5ndGggPSAlKGVtYmVkZGVkU291cmNlTGVuZ3RoKWQ7IiAlIGFy
Z3MpOworICAgICAgICAgICAgbGluZXMuYXBwZW5kKCJjb25zdCBjaGFyKiBzXyUoY29kZU5hbWUp
cyA9XG4lKGVtYmVkZGVkU291cmNlKXNcbjsiICUgYXJncyk7CisgICAgICAgICAgICBzdWJzZWN0
aW9ucy5hcHBlbmQoJ1xuJy5qb2luKGxpbmVzKSkKKworICAgICAgICByZXR1cm4gc3Vic2VjdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2dl
bmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX3dyYXBwZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV93cmFwcGVyLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhlOWI1Zjg3NDExMzJkNjBlNjZhMmI3NTNmYmQwZjliZWYyZDg5ZjAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9n
ZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV93cmFwcGVyLnB5CkBAIC0wLDAgKzEsOTQgQEAKKyMh
L3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTQgVW5pdmVyc2l0
eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHJlCitpbXBv
cnQgc3RyaW5nCitmcm9tIHN0cmluZyBpbXBvcnQgVGVtcGxhdGUKKworZnJvbSBidWlsdGluc19n
ZW5lcmF0b3IgaW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9yCitmcm9tIGJ1aWx0aW5zX3RlbXBsYXRl
cyBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3JUZW1wbGF0ZXMgYXMgVGVtcGxhdGVzCisKK2xvZyA9
IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwnKQorCisKK2NsYXNzIEJ1aWx0aW5zU2VwYXJhdGVX
cmFwcGVyR2VuZXJhdG9yKEJ1aWx0aW5zR2VuZXJhdG9yKToKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbW9kZWwsIG9iamVjdCk6CisgICAgICAgIEJ1aWx0aW5zR2VuZXJhdG9yLl9faW5pdF9fKHNl
bGYsIG1vZGVsKQorICAgICAgICBzZWxmLm9iamVjdCA9IG9iamVjdAorCisgICAgZGVmIG91dHB1
dF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuICIlc0J1aWx0aW5zV3JhcHBlci5oIiAl
IHNlbGYub2JqZWN0Lm9iamVjdF9uYW1lCisKKyAgICBkZWYgbWFjcm9fcHJlZml4KHNlbGYpOgor
ICAgICAgICByZXR1cm4gc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdtYWNyb19wcmVm
aXgnKQorCisgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKKyAgICAgICAgYXJncyA9IHsK
KyAgICAgICAgICAgICduYW1lc3BhY2UnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmco
J25hbWVzcGFjZScpLAorICAgICAgICAgICAgJ2hlYWRlckd1YXJkJzogc2VsZi5vdXRwdXRfZmls
ZW5hbWUoKS5yZXBsYWNlKCcuJywgJ18nKSwKKyAgICAgICAgICAgICdtYWNyb1ByZWZpeCc6IHNl
bGYubWFjcm9fcHJlZml4KCksCisgICAgICAgICAgICAnb2JqZWN0TmFtZSc6IHNlbGYub2JqZWN0
Lm9iamVjdF9uYW1lLAorICAgICAgICAgICAgJ29iamVjdE1hY3JvJzogc2VsZi5vYmplY3Qub2Jq
ZWN0X25hbWUudXBwZXIoKSwKKyAgICAgICAgfQorCisgICAgICAgIHNlY3Rpb25zID0gW10KKyAg
ICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfbGljZW5zZSgpKQorICAgICAgICBz
ZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkRvTm90RWRpdFdhcm5pbmcpLnN1YnN0
aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMu
SGVhZGVySW5jbHVkZUd1YXJkVG9wKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9u
cy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9oZWFkZXJfaW5jbHVkZXMoKSkKKyAgICAgICAgc2VjdGlv
bnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VUb3ApLnN1YnN0aXR1dGUoYXJn
cykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuU2VwYXJhdGVX
cmFwcGVySGVhZGVyQm9pbGVycGxhdGUpLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rp
b25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlQm90dG9tKS5zdWJzdGl0dXRl
KGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkhlYWRl
ckluY2x1ZGVHdWFyZEJvdHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkKKworICAgICAgICByZXR1cm4g
IlxuXG4iLmpvaW4oc2VjdGlvbnMpCisKKyAgICBkZWYgZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVz
KHNlbGYpOgorICAgICAgICBoZWFkZXJfaW5jbHVkZXMgPSBbCisgICAgICAgICAgICAoWyJXZWJD
b3JlIl0sCisgICAgICAgICAgICAgICAgKCJXZWJDb3JlIiwgIiVzQnVpbHRpbnMuaCIgJSBzZWxm
Lm9iamVjdC5vYmplY3RfbmFtZSkKKyAgICAgICAgICAgICksCisKKyAgICAgICAgICAgIChbIldl
YkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgImJ5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgiKQorICAgICAgICAgICAgKSwKKworICAgICAgICAg
ICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAiYnVp
bHRpbnMvQnVpbHRpblV0aWxzLmgiKQorICAgICAgICAgICAgKSwKKworICAgICAgICAgICAgKFsi
V2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9J
ZGVudGlmaWVyLmgiKQorICAgICAgICAgICAgKSwKKworICAgICAgICAgICAgKFsiV2ViQ29yZSJd
LAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9KU0Z1bmN0aW9u
LmgiKQorICAgICAgICAgICAgKSwKKyAgICAgICAgXTsKKworICAgICAgICByZXR1cm4gJ1xuJy5q
b2luKHNlbGYuZ2VuZXJhdGVfaW5jbHVkZXNfZnJvbV9lbnRyaWVzKGhlYWRlcl9pbmNsdWRlcykp
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNWI2YjFm
MzFiMzAyN2YyZTVmZjA4Mjk3MDRjOTA1MTZkODM5ZmYwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKQEAgLTAs
MCArMSwxNDIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIw
MTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMp
IDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBUaGlzIHNjcmlwdCBnZW5l
cmF0ZXMgQysrIGJpbmRpbmdzIGZvciBKYXZhU2NyaXB0IGJ1aWx0aW5zLgorIyBHZW5lcmF0b3Jz
IGZvciBpbmRpdmlkdWFsIGZpbGVzIGFyZSBsb2NhdGVkIGluIHRoZSBidWlsdGlucy8gZGlyZWN0
b3J5LgorCitpbXBvcnQgZm5tYXRjaAoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcHRwYXJzZQor
aW1wb3J0IG9zCisKK2xvZ2dpbmcuYmFzaWNDb25maWcoZm9ybWF0PSclKGxldmVsbmFtZSlzOiAl
KG1lc3NhZ2UpcycsIGxldmVsPWxvZ2dpbmcuRVJST1IpCitsb2cgPSBsb2dnaW5nLmdldExvZ2dl
cignZ2xvYmFsJykKKworZnJvbSBsYXp5d3JpdGVyIGltcG9ydCBMYXp5RmlsZVdyaXRlcgorCitp
bXBvcnQgYnVpbHRpbnMKK2Zyb20gYnVpbHRpbnMgaW1wb3J0ICoKKworIyBGSVhNRTogaWYgdGhp
cyBzY3JpcHQgaXMgdXNlZCBmcm9tIFdlYkNvcmUsIHdlIHdpbGwgbmVlZCB0byBkdXBsaWNhdGUK
KyMgdGhlIGltcG9ydHMgb2YgYnVpbHRpbnMvX19pbml0X18ucHkgdG8gaGVyZSBzaW5jZSBzY3Jp
cHRzIGNvcGllZCB0bworIyBwcml2YXRlIGhlYWRlcnMgaGF2ZSB0aGVpciBkaXJlY3RvcmllcyBm
bGF0dGVuZWQuCisKK2RlZiBnZW5lcmF0ZV9iaW5kaW5nc19mb3JfYnVpbHRpbnNfZmlsZXMoYnVp
bHRpbnNfZmlsZXM9W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG91dHB1dF9wYXRoPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbWJpbmVkX291dHB1dD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZnJhbWV3b3JrX25hbWU9IiIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZvcmNlX291dHB1dD1GYWxzZSk6CisKKyAgICBnZW5lcmF0b3JzID0g
W10KKworICAgIG1vZGVsID0gQnVpbHRpbnNDb2xsZWN0aW9uKGZyYW1ld29ya19uYW1lPWZyYW1l
d29ya19uYW1lKQorCisgICAgZm9yIGZpbGVwYXRoIGluIGJ1aWx0aW5zX2ZpbGVzOgorICAgICAg
ICB3aXRoIG9wZW4oZmlsZXBhdGgsICJyIikgYXMgZmlsZToKKyAgICAgICAgICAgIGZpbGVfdGV4
dCA9IGZpbGUucmVhZCgpCisgICAgICAgICAgICBmaWxlX25hbWUgPSBvcy5wYXRoLmJhc2VuYW1l
KGZpbGVwYXRoKQorICAgICAgICAgICAgbW9kZWwucGFyc2VfYnVpbHRpbnNfZmlsZShmaWxlX25h
bWUsIGZpbGVfdGV4dCkKKworICAgIGlmIGNvbWJpbmVkX291dHB1dDoKKyAgICAgICAgbG9nLmRl
YnVnKCJVc2luZyBnZW5lcmF0b3Igc3R5bGU6IGNvbWJpbmVkIGZpbGVzIGZvciBhbGwgYnVpbHRp
bnMuIikKKyAgICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQoQnVpbHRpbnNDb21iaW5lZEhlYWRlckdl
bmVyYXRvcihtb2RlbCkpCisgICAgICAgIGdlbmVyYXRvcnMuYXBwZW5kKEJ1aWx0aW5zQ29tYmlu
ZWRJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihtb2RlbCkpCisgICAgZWxzZToKKyAgICAgICAgbG9n
LmRlYnVnKCJVc2luZyBnZW5lcmF0b3Igc3R5bGU6IHNpbmdsZSBmaWxlcyBmb3IgZWFjaCBidWls
dGluLiIpCisgICAgICAgIGZvciBvYmplY3QgaW4gbW9kZWwub2JqZWN0czoKKyAgICAgICAgICAg
IGdlbmVyYXRvcnMuYXBwZW5kKEJ1aWx0aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0b3IobW9kZWws
IG9iamVjdCkpCisgICAgICAgICAgICBnZW5lcmF0b3JzLmFwcGVuZChCdWlsdGluc1NlcGFyYXRl
SW1wbGVtZW50YXRpb25HZW5lcmF0b3IobW9kZWwsIG9iamVjdCkpCisKKyAgICAgICAgICAgIGlm
IG1vZGVsLmZyYW1ld29yayBpcyBGcmFtZXdvcmtzLldlYkNvcmU6CisgICAgICAgICAgICAgICAg
Z2VuZXJhdG9ycy5hcHBlbmQoQnVpbHRpbnNTZXBhcmF0ZVdyYXBwZXJHZW5lcmF0b3IobW9kZWws
IG9iamVjdCkpCisKKyAgICBsb2cuZGVidWcoIiIpCisgICAgbG9nLmRlYnVnKCJHZW5lcmF0aW5n
IGJpbmRpbmdzIGZvciBidWlsdGlucy4iKQorCisgICAgZm9yIGdlbmVyYXRvciBpbiBnZW5lcmF0
b3JzOgorICAgICAgICBvdXRwdXRfZmlsZXBhdGggPSBvcy5wYXRoLmpvaW4ob3V0cHV0X3BhdGgs
IGdlbmVyYXRvci5vdXRwdXRfZmlsZW5hbWUoKSkKKyAgICAgICAgbG9nLmRlYnVnKCJHZW5lcmF0
aW5nIG91dHB1dCBmaWxlOiAlcyIgJSBvdXRwdXRfZmlsZXBhdGgpCisgICAgICAgIG91dHB1dCA9
IGdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQoKQorCisgICAgICAgIGxvZy5kZWJ1ZygiLS0tIikK
KyAgICAgICAgbG9nLmRlYnVnKCJcbiIgKyBvdXRwdXQpCisgICAgICAgIGxvZy5kZWJ1ZygiLS0t
IikKKyAgICAgICAgb3V0cHV0X2ZpbGUgPSBMYXp5RmlsZVdyaXRlcihvdXRwdXRfZmlsZXBhdGgs
IGZvcmNlX291dHB1dCkKKyAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUob3V0cHV0KQorICAgICAg
ICBvdXRwdXRfZmlsZS5jbG9zZSgpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAg
ICBhbGxvd2VkX2ZyYW1ld29ya19uYW1lcyA9IFsnSmF2YVNjcmlwdENvcmUnLCAnV2ViQ29yZScs
ICdUZXN0J10KKyAgICBjbGlfcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlPSJ1
c2FnZTogJXByb2cgW29wdGlvbnNdIEJ1aWx0aW4xLmpzIFssIEJ1aWx0aW4yLmpzLCAuLi5dIikK
KyAgICBjbGlfcGFyc2VyLmFkZF9vcHRpb24oIi1pIiwgIi0taW5wdXQtZGlyZWN0b3J5IiwgaGVs
cD0iSWYgc3BlY2lmaWVkLCBnZW5lcmF0ZXMgYnVpbHRpbnMgZnJvbSBhbGwgSmF2YVNjcmlwdCBm
aWxlcyBpbiB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeSBpbiBhZGRpdGlvbiB0byBzcGVjaWZpYyBm
aWxlcyBwYXNzZWQgYXMgYXJndW1lbnRzLiIpCisgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9uKCIt
byIsICItLW91dHB1dC1kaXJlY3RvcnkiLCBoZWxwPSJEaXJlY3Rvcnkgd2hlcmUgZ2VuZXJhdGVk
IGZpbGVzIHNob3VsZCBiZSB3cml0dGVuLiIpCisgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9uKCIt
LWZyYW1ld29yayIsIHR5cGU9ImNob2ljZSIsIGNob2ljZXM9YWxsb3dlZF9mcmFtZXdvcmtfbmFt
ZXMsIGhlbHA9IkRlc3RpbmF0aW9uIGZyYW1ld29yayBmb3IgZ2VuZXJhdGVkIGZpbGVzLiIpCisg
ICAgY2xpX3BhcnNlci5hZGRfb3B0aW9uKCItLWZvcmNlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwg
aGVscD0iRm9yY2Ugb3V0cHV0IG9mIGdlbmVyYXRlZCBzY3JpcHRzLCBldmVuIGlmIG5vdGhpbmcg
Y2hhbmdlZC4iKQorICAgIGNsaV9wYXJzZXIuYWRkX29wdGlvbigiLS1jb21iaW5lZCIsIGFjdGlv
bj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IlByb2R1Y2Ugb25lIC5oLy5jcHAgZmlsZSBpbnN0ZWFkIG9m
IHByb2R1Y2luZyBvbmUgcGVyIGJ1aWx0aW4gb2JqZWN0LiIpCisgICAgY2xpX3BhcnNlci5hZGRf
b3B0aW9uKCItdiIsICItLWRlYnVnIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iTG9nIGV4
dHJhIG91dHB1dCBmb3IgZGVidWdnaW5nIHRoZSBnZW5lcmF0b3IgaXRzZWxmLiIpCisgICAgY2xp
X3BhcnNlci5hZGRfb3B0aW9uKCItdCIsICItLXRlc3QiLCBhY3Rpb249InN0b3JlX3RydWUiLCBo
ZWxwPSJFbmFibGUgdGVzdCBtb2RlLiIpCisKKyAgICBhcmdfb3B0aW9ucywgYXJnX3ZhbHVlcyA9
IGNsaV9wYXJzZXIucGFyc2VfYXJncygpCisgICAgaWYgbGVuKGFyZ192YWx1ZXMpIGlzIDAgYW5k
IG5vdCBhcmdfb3B0aW9ucy5pbnB1dF9kaXJlY3Rvcnk6CisgICAgICAgIHJhaXNlIFBhcnNlRXhj
ZXB0aW9uKCJBdCBsZWFzdCBvbmUgaW5wdXQgZmlsZSBvciBkaXJlY3RvcnkgZXhwZWN0ZWQuIikK
KworICAgIGlmIG5vdCBhcmdfb3B0aW9ucy5vdXRwdXRfZGlyZWN0b3J5OgorICAgICAgICByYWlz
ZSBQYXJzZUV4Y2VwdGlvbigiTWlzc2luZyBvdXRwdXQgZGlyZWN0b3J5LiIpCisKKyAgICBpZiBh
cmdfb3B0aW9ucy5kZWJ1ZzoKKyAgICAgICAgbG9nLnNldExldmVsKGxvZ2dpbmcuREVCVUcpCisK
KyAgICBpbnB1dF9maWxlcGF0aHMgPSBhcmdfdmFsdWVzWzpdCisgICAgaWYgYXJnX29wdGlvbnMu
aW5wdXRfZGlyZWN0b3J5OgorICAgICAgICBmb3IgZmlsZXBhdGggaW4gb3MubGlzdGRpcihhcmdf
b3B0aW9ucy5pbnB1dF9kaXJlY3RvcnkpOgorICAgICAgICAgICAgaW5wdXRfZmlsZXBhdGhzLmFw
cGVuZChvcy5wYXRoLmpvaW4oYXJnX29wdGlvbnMuaW5wdXRfZGlyZWN0b3J5LCBmaWxlcGF0aCkp
CisKKyAgICBpbnB1dF9maWxlcGF0aHMgPSBmaWx0ZXIobGFtYmRhIG5hbWU6IGZubWF0Y2guZm5t
YXRjaChuYW1lLCAnKi5qcycpLCBpbnB1dF9maWxlcGF0aHMpOworCisgICAgb3B0aW9ucyA9IHsK
KyAgICAgICAgJ291dHB1dF9wYXRoJzogYXJnX29wdGlvbnMub3V0cHV0X2RpcmVjdG9yeSwKKyAg
ICAgICAgJ2ZyYW1ld29ya19uYW1lJzogYXJnX29wdGlvbnMuZnJhbWV3b3JrLAorICAgICAgICAn
Y29tYmluZWRfb3V0cHV0JzogYXJnX29wdGlvbnMuY29tYmluZWQsCisgICAgfQorCisgICAgbG9n
LmRlYnVnKCJHZW5lcmF0aW5nIGNvZGUgZm9yIGJ1aWx0aW5zLiIpCisgICAgbG9nLmRlYnVnKCJQ
YXJzZWQgb3B0aW9uczoiKQorICAgIGZvciBvcHRpb24sIHZhbHVlIGluIG9wdGlvbnMuaXRlbXMo
KToKKyAgICAgICAgbG9nLmRlYnVnKCIgICAgJXM6ICVzIiAlIChvcHRpb24sIHZhbHVlKSkKKyAg
ICBsb2cuZGVidWcoIiIpCisgICAgbG9nLmRlYnVnKCJJbnB1dCBmaWxlczoiKQorICAgIGZvciBm
aWxlcGF0aCBpbiBpbnB1dF9maWxlcGF0aHM6CisgICAgICAgIGxvZy5kZWJ1ZygiICAgICVzIiAl
IGZpbGVwYXRoKQorICAgIGxvZy5kZWJ1ZygiIikKKworICAgIHRyeToKKyAgICAgICAgZ2VuZXJh
dGVfYmluZGluZ3NfZm9yX2J1aWx0aW5zX2ZpbGVzKGJ1aWx0aW5zX2ZpbGVzPWlucHV0X2ZpbGVw
YXRocywgKipvcHRpb25zKQorICAgIGV4Y2VwdCBQYXJzZUV4Y2VwdGlvbiBhcyBlOgorICAgICAg
ICBpZiBhcmdfb3B0aW9ucy50ZXN0OgorICAgICAgICAgICAgbG9nLmVycm9yKGUubWVzc2FnZSkK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlICAjIEZvcmNlIHRoZSBidWlsZCB0byBm
YWlsLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvbGF6eXdyaXRl
ci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2xhenl3cml0ZXIucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjAxZmE0M2RkNDJkODgyZGQyZmUxZGQ1NjVmN2Q2ZTE4OWU2MzE1NgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2xhenl3cml0ZXIucHkKQEAg
LTAsMCArMSw1NiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisj
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworIyBBIHdyaXRlciB0aGF0IG9ubHkgdXBkYXRlcyBmaWxlIGlm
IGl0IGFjdHVhbGx5IGNoYW5nZWQuCitjbGFzcyBMYXp5RmlsZVdyaXRlcjoKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgZmlsZXBhdGgsIGZvcmNlX291dHB1dCk6CisgICAgICAgIHNlbGYuX2ZpbGVw
YXRoID0gZmlsZXBhdGgKKyAgICAgICAgc2VsZi5fb3V0cHV0ID0gIiIKKyAgICAgICAgc2VsZi5m
b3JjZV9vdXRwdXQgPSBmb3JjZV9vdXRwdXQKKworICAgIGRlZiB3cml0ZShzZWxmLCB0ZXh0KToK
KyAgICAgICAgc2VsZi5fb3V0cHV0ICs9IHRleHQKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAg
ICAgICAgdGV4dF9jaGFuZ2VkID0gVHJ1ZQorICAgICAgICBzZWxmLl9vdXRwdXQgPSBzZWxmLl9v
dXRwdXQucnN0cmlwKCkgKyAiXG4iCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgc2Vs
Zi5mb3JjZV9vdXRwdXQ6CisgICAgICAgICAgICAgICAgcmFpc2UKKworICAgICAgICAgICAgcmVh
ZF9maWxlID0gb3BlbihzZWxmLl9maWxlcGF0aCwgInIiKQorICAgICAgICAgICAgb2xkX3RleHQg
PSByZWFkX2ZpbGUucmVhZCgpCisgICAgICAgICAgICByZWFkX2ZpbGUuY2xvc2UoKQorICAgICAg
ICAgICAgdGV4dF9jaGFuZ2VkID0gb2xkX3RleHQgIT0gc2VsZi5fb3V0cHV0CisgICAgICAgIGV4
Y2VwdDoKKyAgICAgICAgICAgICMgSWdub3JlLCBqdXN0IG92ZXJ3cml0ZSBieSBkZWZhdWx0Cisg
ICAgICAgICAgICBwYXNzCisKKyAgICAgICAgaWYgdGV4dF9jaGFuZ2VkIG9yIHNlbGYuZm9yY2Vf
b3V0cHV0OgorICAgICAgICAgICAgb3V0X2ZpbGUgPSBvcGVuKHNlbGYuX2ZpbGVwYXRoLCAidyIp
CisgICAgICAgICAgICBvdXRfZmlsZS53cml0ZShzZWxmLl9vdXRwdXQpCisgICAgICAgICAgICBv
dXRfZmlsZS5jbG9zZSgpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL1VwZGF0ZUNvbnRlbnRzLnB5IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1VwZGF0ZUNvbnRlbnRzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1
MmY5NTMyY2I2ZmIwYWJhZjUyMGRhZTA0ODU4YWM5MmE0ZmM2MjQxLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9VcGRh
dGVDb250ZW50cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLSMhL3Vzci9iaW4v
cHl0aG9uCi0KLSMgQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSMgMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgcHV0ZXIsIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSMgICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSMgICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSMgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCi0jIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBzeXMKLWltcG9ydCBvcwotCi1h
c3NlcnQobGVuKHN5cy5hcmd2KSA9PSAzKQotCi1jb21wID0gc3lzLmFyZ3ZbMV0KLWZpbGVuYW1l
ID0gc3lzLmFyZ3ZbMl0KLQotdCA9IEZhbHNlCi0KLWlmIG9zLnBhdGguaXNmaWxlKGZpbGVuYW1l
KToKLSAgICBmID0gb3BlbihmaWxlbmFtZSwgJ3InKQotICAgIGNvbXBhcmF0b3IgPSBmLnJlYWQo
KQotICAgIGYuY2xvc2UoKQotICAgIHQgPSBUcnVlCi0KLWlmIChub3QgdCBvciBjb21wICE9IGNv
bXBhcmF0b3IpOgotICAgIGYgPSBvcGVuKGZpbGVuYW1lLCAndycpCi0gICAgZi53cml0ZShjb21w
KQotICAgIGYuY2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAppbmRleCA3M2ViZTQ3OTkzNWZjYTc0MDlmZDkzMmY4
ODliNjU4NGJlNThiNjE0Li44MTZiNGE1ZDMwYjUyMGI1ZDFkZmVhZWFiMmY5Mzk0YzY4YmRjMGEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmNwcApAQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbChWTSYsIGNvbnN0IFNvdXJjZUNvZAog
QnVpbHRpbkV4ZWN1dGFibGVzOjpCdWlsdGluRXhlY3V0YWJsZXMoVk0mIHZtKQogICAgIDogbV92
bSh2bSkKICNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1
bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UobWFrZVNvdXJjZShTdHJpbmdJ
bXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFtZSwgbGVuZ3RoKSkpCi0gICAgSlNDX0ZPUkVB
Q0hfQlVJTFRJTihJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisgICAgSlNDX0ZP
UkVBQ0hfQlVJTFRJTl9DT0RFKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKICN1
bmRlZiBFWFBPU0VfQlVJTFRJTl9TVFJJTkdTCiB7CiB9CkBAIC0xMzIsNyArMTMyLDcgQEAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6bmFtZSMjRXhlY3V0
YWJsZSgpIFwKICAgICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUgPSBXZWFrPFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlPihjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShtXyMjbmFtZSMjU291cmNl
LCBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZ1bmN0aW9uTmFtZSMjUHVibGlj
TmFtZSgpLCBzXyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0eSksIHRoaXMsICZtXyMjbmFtZSMjRXhl
Y3V0YWJsZSk7XAogICAgIHJldHVybiBtXyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtcCiB9Ci1K
U0NfRk9SRUFDSF9CVUlMVElOKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQorSlNDX0ZPUkVB
Q0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQogI3VuZGVmIEVYUE9T
RV9CVUlMVElOX1NPVVJDRVMKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCmluZGV4IDZhOTgzMjE3YTBhODg0NTdlZjA5OGZi
Y2I5NTEyM2Q1OWE1MjUxNzUuLmVjOGQ1NzcwNGI4N2M1ODRhOTM2ZGRlNDE3ZDYyOWY4NTdiMzY1
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXAogY29uc3QgU291cmNlQ29kZSYgbmFtZSMj
U291cmNlKCkgeyByZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQogICAgIAotICAgIEpTQ19GT1JF
QUNIX0JVSUxUSU4oRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisgICAgSlNDX0ZPUkVBQ0hf
QlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQogI3VuZGVmIEVYUE9TRV9C
VUlMVElOX1NPVVJDRVMKIAogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVE
ZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1l
KTsKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NP
VVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKVwKICAgICBTb3VyY2VDb2Rl
IG1fIyNuYW1lIyNTb3VyY2U7IFwKICAgICBXZWFrPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
PiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKLSAgICBKU0NfRk9SRUFDSF9CVUlMVElOKERFQ0xBUkVf
QlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUoREVD
TEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQogI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VS
Q0VfTUVNQkVSUwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0
ZV9oYXNoX3RhYmxlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCmlu
ZGV4IDZmYTc4Y2VhMjg3MzhjMGYxNzQ1MTQ3ZjA0OTczYWNiNmNhODM2ZDguLmEyMjVjYmU2N2Q4
MGRhYTJmZDNlOThmMTkwNTJlYzA5ODE4ZDIzZjggMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3Jl
YXRlX2hhc2hfdGFibGUKQEAgLTMxOSw3ICszMTksNyBAQCBzdWIgb3V0cHV0KCkgewogICAgICAg
ICBpZiAoJHZhbHVlc1skaV17InR5cGUifSBlcSAiRnVuY3Rpb24iKSAgewogICAgICAgICAgICAg
bXkgJHRhYmxlSGVhZCA9ICRuYW1lOwogICAgICAgICAgICAgJHRhYmxlSGVhZCA9fiBzL1RhYmxl
JC8vOwotICAgICAgICAgICAgcHJpbnQgIiAjaWYgSlNDX0JVSUxUSU5fRVhJU1RTKCIgLiB1Yygk
dGFibGVIZWFkIC4gJGtleSkgLiIpXG4iOworICAgICAgICAgICAgcHJpbnQgIiAjaWYgSlNDX0JV
SUxUSU5fRVhJU1RTKCIgLiB1YygkdGFibGVIZWFkKSAuICIsICIgLiB1Yygka2V5KSAuIilcbiI7
CiAgICAgICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwgKCgkYXR0cnNbJGldKSAmIH5GdW5j
dGlvbikgfCBCdWlsdGluLCAkaW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxCdWls
dGluR2VuZXJhdG9yPigiIC4gJHRhYmxlSGVhZCAuIHVjZmlyc3QoJGtleSkgLiAiQ29kZUdlbmVy
YXRvciksIChpbnRwdHJfdCkkc2Vjb25kVmFsdWUgfSB9LFxuIjsKICAgICAgICAgICAgIHByaW50
ICIgI2Vsc2VcbiIKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXgg
NDY2NTRmMmFkMzE4ODlkYjM0MjU3YmZkOGM4ZmFjOTNlMmRmMDRiNS4uNDc2MmQ4YWMwMWJkNGI1
ZDc0MTA4ZmY0ZWZkM2E3ZDRhNzY2MTQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CkBAIC03OTIsNyArNzkyLDYgQEAgYWxsIDogXAogICAgICQoV09SS0VSR0xPQkFMU0NPUEVfQ09O
U1RSVUNUT1JTX0ZJTEUpIFwKICAgICAkKEpTX0RPTV9IRUFERVJTKSBcCiAgICAgJChXRUJfRE9N
X0hFQURFUlMpIFwKLSAgICAkKFdFQkNPUkVfSlNfQlVJTFRJTlMpIFwKICAgICBcCiAgICAgQ1NT
R3JhbW1hci5jcHAgXAogICAgIENTU1Byb3BlcnR5TmFtZXMuY3BwIFwKQEAgLTEyNTEsNyArMTI1
MCw3IEBAIFdlYlJlcGxheUlucHV0cy5oIDogJChJTlBVVF9HRU5FUkFUT1JfU1BFQ0lGSUNBVElP
TlMpICQoSU5QVVRfR0VORVJBVE9SX1NDUklQVFMpCiAKICMgV2ViQ29yZSBKUyBCdWlsdGlucwog
Ci1XRUJDT1JFX0pTX0JVSUxUSU5TID0gXAorV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTID0gXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3ku
anMgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL0NvdW50UXVldWluZ1N0cmF0ZWd5
LmpzIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5qcyBc
CkBAIC0xMjYwLDEwICsxMjU5LDI4IEBAIFdFQkNPUkVfSlNfQlVJTFRJTlMgPSBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuanMgXAogIwogCi1h
bGwgOiAkKFdFQkNPUkVfSlNfQlVJTFRJTlM6JS5qcz0lQnVpbHRpbnMuY3BwKQorQlVJTFRJTlNf
R0VORVJBVE9SX1NDUklQVFMgPSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTKS9idWls
dGluc19nZW5lcmF0b3IucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUUykvYnVpbHRp
bnNfbW9kZWwucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUUykvYnVpbHRpbnNfdGVt
cGxhdGVzLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFMpL2dlbmVyYXRlX2J1aWx0
aW5zX2NvbWJpbmVkX2hlYWRlci5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTKS9n
ZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weSBcCisgICAgJChKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTKS9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9oZWFkZXIucHkg
XAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUUykvZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJh
dGVfaW1wbGVtZW50YXRpb24ucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUUykvZ2Vu
ZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfd3JhcHBlci5weSBcCisgICAgJChKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTKS9nZW5lcmF0ZS1qcy1idWlsdGlucy5weSBcCisgICAgJChKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTKS9sYXp5d3JpdGVyLnB5IFwKKyMKKworLlBIT05ZOiBmb3JjZQorV2ViQ29yZV9C
VUlMVElOU19ERVBFTkRFTkNJRVNfTElTVCA6ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUUykvVXBk
YXRlQ29udGVudHMucHkgZm9yY2UKKwkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRT
KS9VcGRhdGVDb250ZW50cy5weSAnJChXZWJDb3JlX0JVSUxUSU5TX1NPVVJDRVMpICQoQlVJTFRJ
TlNfR0VORVJBVE9SX1NDUklQVFMpJyAkQAorCislQnVpbHRpbnMuaDogJS5qcyAkKEJVSUxUSU5T
X0dFTkVSQVRPUl9TQ1JJUFRTKSAkKFdlYkNvcmVfQlVJTFRJTlNfU09VUkNFUykgV2ViQ29yZV9C
VUlMVElOU19ERVBFTkRFTkNJRVNfTElTVAorCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1ND
UklQVFMpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5IC0tb3V0cHV0LWRpcmVjdG9yeSAuIC0tZnJh
bWV3b3JrIFdlYkNvcmUgJChXZWJDb3JlX0JVSUxUSU5TX1NPVVJDRVMpCisKK2FsbCA6ICQoV2Vi
Q29yZV9CVUlMVElOU19TT1VSQ0VTOiUuanM9JUJ1aWx0aW5zLmgpCiAKLSVCdWlsdGlucy5jcHA6
ICUuanMKLQkkKFBZVEhPTikgJChXZWJDb3JlKS9nZW5lcmF0ZS1qcy1idWlsdGlucyAtLWlucHV0
ICQ8IC0tZ2VuZXJhdGVfanNfYnVpbHRpbnNfcGF0aCAkKEdlbmVyYXRlSlNCdWlsdGluc1Njcmlw
dHMpCiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhOTgxOTMzYzI4YmNhMDRl
NWI4NTk4N2ExM2E2OWRhYmNlYzJmYzBlLi4yZGM1MGU1Y2EyOTczNjZjY2Q4NzhkYjUyNTcxOTFi
ZjczNmY4YmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNDkyLDcgKzE0OTIsNyBAQAogCQk0MTI5REY4NjFCQjVCODBDMDAz
MjJBMTYgLyogSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjlERjg0MUJCNUI3RjcwMDMy
MkExNiAvKiBKU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxMzhEMzM1MTI0NDA1NDgw
MDMyM0QzMyAvKiBFdmVudENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMzhEMzMzMTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQu
aCAqLzsgfTsKIAkJNDEzOEQzMzYxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4dC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM4RDMzNDEy
NDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmNwcCAqLzsgfTsKLQkJNDEzQzJDMzQxQkMy
OUE4RjAwNzUyMDRDIC8qIEpTRE9NQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0MyQzMzMUJDMjlBN0IwMDc1MjA0QyAvKiBKU0RP
TUNvbnN0cnVjdG9yLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJ
NDEzQzJDMzQxQkMyOUE4RjAwNzUyMDRDIC8qIEpTRE9NQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0MyQzMzMUJDMjlBN0IwMDc1
MjA0QyAvKiBKU0RPTUNvbnN0cnVjdG9yLmggKi87IH07CiAJCTQxNTA3MTU3MTY4NTA2NzMwMEMz
QzdCMyAvKiBTZWxlY3RvckZpbHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTUwNzE1NTE2ODUwNjczMDBDM0M3QjMgLyogU2VsZWN0b3JGaWx0
ZXIuY3BwICovOyB9OwogCQk0MTUwNzE1ODE2ODUwNjczMDBDM0M3QjMgLyogU2VsZWN0b3JGaWx0
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNTA3
MTU2MTY4NTA2NzMwMEMzQzdCMyAvKiBTZWxlY3RvckZpbHRlci5oICovOyB9OwogCQk0MTUwRjlG
MTEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTUwRjlFRjEyQjZFMEU3MDAwOEM4NjAg
LyogU2xpZGVyVGh1bWJFbGVtZW50LmggKi87IH07CkBAIC0xNTI1LDkgKzE1MjUsOSBAQAogCQk0
MTlCQzJERTE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTlCQzJEQzE2ODUzMjk5MDBE
NjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5jcHAgKi87IH07CiAJCTQxOUJDMkRGMTY4NTMyOTkw
MEQ2NEQ2RCAvKiBWaXNpdGVkTGlua1N0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTlCQzJERDE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExp
bmtTdGF0ZS5oICovOyB9OwogCQk0MTlCRTc1NjFCQzdGNDFCMDBFMUM4NUIgLyogV2ViQ29yZUpT
QnVpbHRpbkludGVybmFscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE5QkU3NTMxQkM3RjNEQjAwRTFDODVCIC8qIFdlYkNvcmVKU0J1aWx0aW5JbnRl
cm5hbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQk0MTlCRTc1NzFCQzdGNDIxMDBFMUM4NUIgLyogV2ViQ29yZUpTQnVpbHRpbnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QkU3NTQxQkM3RjNE
QjAwRTFDODVCIC8qIFdlYkNvcmVKU0J1aWx0aW5zLmNwcCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRf
VEFHUyA9ICgpOyB9OyB9OwotCQk0MTlCRTc1ODFCQzdGNDI3MDBFMUM4NUIgLyogV2ViQ29yZUpT
QnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxOUJFNzU1MUJDN0YzREIwMEUxQzg1QiAvKiBXZWJDb3JlSlNCdWlsdGlucy5oICovOyBzZXR0
aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07Ci0JCTQxOUJFNzU5MUJDN0Y0MkIwMEUxQzg1
QiAvKiBXZWJDb3JlQnVpbHRpbk5hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTlCRTc1MjFCQzdGM0RCMDBFMUM4NUIgLyogV2ViQ29yZUJ1aWx0
aW5OYW1lcy5oICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCTQxOUJF
NzU3MUJDN0Y0MjEwMEUxQzg1QiAvKiBXZWJDb3JlSlNCdWlsdGlucy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTlCRTc1NDFCQzdGM0RCMDBFMUM4
NUIgLyogV2ViQ29yZUpTQnVpbHRpbnMuY3BwICovOyB9OworCQk0MTlCRTc1ODFCQzdGNDI3MDBF
MUM4NUIgLyogV2ViQ29yZUpTQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUJFNzU1MUJDN0YzREIwMEUxQzg1QiAvKiBXZWJDb3JlSlNC
dWlsdGlucy5oICovOyB9OworCQk0MTlCRTc1OTFCQzdGNDJCMDBFMUM4NUIgLyogV2ViQ29yZUJ1
aWx0aW5OYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDE5QkU3NTIxQkM3RjNEQjAwRTFDODVCIC8qIFdlYkNvcmVCdWlsdGluTmFtZXMuaCAqLzsg
fTsKIAkJNDFBM0Q1OEUxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEzRDU4
QzEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCAqLzsgfTsKIAkJ
NDFBM0Q1OEYxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBM0Q1OEQxMDFDMTUy
RDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5oICovOyB9OwogCQk0MUJGNzAwQzBG
RTg2RjQ5MDA1RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUJGNzAwQTBGRTg2RjQ5MDA1RThERUMgLyog
TWVzc2FnZVBvcnRDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTYzNTgsOCArNjM1OCw4IEBACiAJCUUxRkY4RjY4MTgwNzQ2MDgwMDEz
MjY3NCAvKiBKU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZGOEY2NjE4MDc0NjA4MDAxMzI2NzQgLyogSlNTdWJ0
bGVDcnlwdG9DdXN0b20uY3BwICovOyB9OwogCQlFMUZGOEY2QzE4MERCNUJFMDAxMzI2NzQgLyog
Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFGRjhGNkExODBEQjVCRTAwMTMyNjc0IC8qIENyeXB0b0FsZ29y
aXRobVJlZ2lzdHJ5LmNwcCAqLzsgfTsKIAkJRTFGRjhGNkQxODBEQjVCRTAwMTMyNjc0IC8qIENy
eXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMUZGOEY2QjE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3JpdGht
UmVnaXN0cnkuaCAqLzsgfTsKLQkJRTM4ODM4OTgxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxl
TG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBKU01vZHVsZUxvYWRlci5jcHAgKi87IHNldHRp
bmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKLQkJRTM4ODM4OTkxQkFEMTQ1RjAwRDYyRUUz
IC8qIEpTTW9kdWxlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogSlNNb2R1bGVMb2FkZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OworCQlFMzg4Mzg5ODFCQUQxNDVG
MDBENjJFRTMgLyogSlNNb2R1bGVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxl
TG9hZGVyLmNwcCAqLzsgfTsKKwkJRTM4ODM4OTkxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxl
TG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
Mzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogSlNNb2R1bGVMb2FkZXIuaCAqLzsgfTsKIAkJRTQw
MUMyNzUxN0NFNTNFQzAwQzQxQTM1IC8qIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MDFDMjc0MTdDRTUz
RUMwMEM0MUEzNSAvKiBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQyNEEzOUUxMzMwREYwMTAwQ0Y2
REM5IC8qIExlZ2FjeVRpbGVHcmlkVGlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTQyNEEzOUQxMzMwREYwMTAwQ0Y2REM5IC8qIExlZ2FjeVRpbGVH
cmlkVGlsZS5oICovOyB9OwogCQlFNDI0QTNBMDEzMzBERjFFMDBDRjZEQzkgLyogTGVnYWN5VGls
ZUdyaWRUaWxlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTQyNEEzOUYxMzMwREYxRTAwQ0Y2REM5IC8qIExlZ2FjeVRpbGVHcmlkVGlsZS5tbSAqLzsg
fTsKQEAgLTI4MDg3LDcgKzI4MDg3LDcgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7Ci0JCQlzaGVsbFNj
cmlwdCA9ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlXCJcbmNkIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmVcIlxuXG4vYmluL2xuIC1zZmggXCIke1NSQ1JPT1R9XCIgV2ViQ29yZVxuZXhwb3J0IFdlYkNv
cmU9XCJXZWJDb3JlXCJcbmV4cG9ydCBJbnNwZWN0b3JTY3JpcHRzPVwiJHtKQVZBU0NSSVBUQ09S
RV9QUklWQVRFX0hFQURFUlNfRElSfVwiXG5leHBvcnQgV2ViUmVwbGF5U2NyaXB0cz1cIiR7SkFW
QVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUn1cIlxuZXhwb3J0IEdlbmVyYXRlSlNCdWls
dGluc1NjcmlwdHM9XCIke0pBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVJ9XCJcblxu
aWYgWyAhICRDQyBdOyB0aGVuXG4gICAgZXhwb3J0IENDPVwiYHhjcnVuIC1maW5kIGNsYW5nYFwi
XG5maVxuXG5pZiBbICEgJEdQRVJGIF07IHRoZW5cbiAgICBleHBvcnQgR1BFUkY9XCJgeGNydW4g
LWZpbmQgZ3BlcmZgXCJcbmZpXG5cbmlmIFsgXCIke0FDVElPTn1cIiA9IFwiYnVpbGRcIiAtbyBc
IiR7QUNUSU9OfVwiID0gXCJpbnN0YWxsXCIgLW8gXCIke0FDVElPTn1cIiA9IFwiaW5zdGFsbGhk
cnNcIiBdOyB0aGVuXG4gICAgbWFrZSAgLS1uby1idWlsdGluLXJ1bGVzIC1mIFwiV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlXCIgLWogYC91c3Ivc2Jpbi9zeXNjdGwgLW4gaHcuYWN0aXZlY3B1
YCBTREtST09UPVwiJHtTREtST09UfVwiXG5maVxuIjsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGly
IC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmVcIlxuY2Qg
XCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvV2ViQ29yZVwiXG5cbi9iaW4v
bG4gLXNmaCBcIiR7U1JDUk9PVH1cIiBXZWJDb3JlXG5leHBvcnQgV2ViQ29yZT1cIldlYkNvcmVc
IlxuZXhwb3J0IEluc3BlY3RvclNjcmlwdHM9XCIke0pBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVB
REVSU19ESVJ9XCJcbmV4cG9ydCBXZWJSZXBsYXlTY3JpcHRzPVwiJHtKQVZBU0NSSVBUQ09SRV9Q
UklWQVRFX0hFQURFUlNfRElSfVwiXG5leHBvcnQgSmF2YVNjcmlwdENvcmVfU0NSSVBUUz1cIiR7
SkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUn1cIlxuXG5pZiBbICEgJENDIF07IHRo
ZW5cbiAgICBleHBvcnQgQ0M9XCJgeGNydW4gLWZpbmQgY2xhbmdgXCJcbmZpXG5cbmlmIFsgISAk
R1BFUkYgXTsgdGhlblxuICAgIGV4cG9ydCBHUEVSRj1cImB4Y3J1biAtZmluZCBncGVyZmBcIlxu
ZmlcblxuaWYgWyBcIiR7QUNUSU9OfVwiID0gXCJidWlsZFwiIC1vIFwiJHtBQ1RJT059XCIgPSBc
Imluc3RhbGxcIiAtbyBcIiR7QUNUSU9OfVwiID0gXCJpbnN0YWxsaGRyc1wiIF07IHRoZW5cbiAg
ICBtYWtlICAtLW5vLWJ1aWx0aW4tcnVsZXMgLWYgXCJXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2VcIiAtaiBgL3Vzci9zYmluL3N5c2N0bCAtbiBody5hY3RpdmVjcHVgIFNES1JPT1Q9XCIke1NE
S1JPT1R9XCJcbmZpXG4iOwogCQl9OwogLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBz
ZWN0aW9uICovCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263042</attachid>
            <date>2015-10-13 17:21:26 -0700</date>
            <delta_ts>2015-10-14 10:04:23 -0700</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-149929-20151013172049.patch</filename>
            <type>text/plain</type>
            <size>271535</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MjU2NGRkMjExNDdmNjg2ZTgwMDdkMjc1ZjFjNWI1ZGE3ODRhOTQwLi5lZjdiY2M5ZDE2MDNhNTY5
ZTVhYWI1NmQxMjk1YWUwMmU2YTcxNzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODcgQEAKKzIwMTUtMTAtMTMgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmVzdHJ1Y3R1cmUgZ2VuZXJhdGUtanMtYmluZGluZ3Mgc2NyaXB0IHRvIGJlIG1v
ZHVsYXIgYW5kIHRlc3RhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDk5MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGlzIGEgbmV3IGNvZGUgZ2VuZXJhdG9yLCBiYXNlZCBvbiB0aGUgcmVw
bGF5IGlucHV0cyBjb2RlIGdlbmVyYXRvciBhbmQKKyAgICAgICAgdGhlIGluc3BlY3RvciBwcm90
b2NvbCBjb2RlIGdlbmVyYXRvciwgd2hpY2ggcHJvZHVjZXMgdmFyaW91cyBmaWxlcyBmb3IgSlMK
KyAgICAgICAgYnVpbHRpbnMuCisKKyAgICAgICAgUmVsYXRpdmUgdG8gdGhlIGdlbmVyYXRvciBp
dCByZXBsYWNlcywgdGhpcyBvbmUgY29uc29saWRhdGVzIHR3byBzY3JpcHRzIGluCisgICAgICAg
IEphdmFTY3JpcHRDb3JlIGFuZCBXZWJDb3JlIGludG8gYSBzaW5nbGUgc2NyaXB0IHdpdGggbXVs
dGlwbGUgZmlsZXMuIFBhcnNlZAorICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnVpbHRp
bnMgZmlsZSBpcyBzdG9yZWQgaW4gYmFja2VuZC1pbmRlcGVuZGVudCBtb2RlbAorICAgICAgICBv
YmplY3RzLiBFYWNoIG91dHB1dCBmaWxlIGhhcyBpdHMgb3duIGNvZGUgZ2VuZXJhdG9yIHRoYXQg
dXNlcyB0aGUgbW9kZWwgdG8KKyAgICAgICAgcHJvZHVjZSByZXN1bHRpbmcgY29kZS4gR2VuZXJh
dG9ycyBhcmUgYWRkaXRpb25hbGx5IHBhcmFtZXRlcml6ZWQgYnkgdGhlIHRhcmdldAorICAgICAg
ICBmcmFtZXdvcmsgKHRvIGNob29zZSBjb3JyZWN0IG1hY3JvcyBhbmQgaW5jbHVkZXMpIGFuZCBv
dXRwdXQgbW9kZSAob25lCisgICAgICAgIGhlYWRlci9pbXBsZW1lbnRhdGlvbiBmaWxlIHBlciBi
dWlsdGluIG9yIHBlciBmcmFtZXdvcmspLgorCisgICAgICAgIEl0IGluY2x1ZGVzIGEgZmV3IHNp
bXBsZSB0ZXN0cyBvZiB0aGUgZ2VuZXJhdG9yJ3MgZnVuY3Rpb25hbGl0eS4gVGhlc2UgcmVzdWx0
LQorICAgICAgICBiYXNlZCB0ZXN0cyB3aWxsIGJlY29tZSBpbmNyZWFzaW5nbHkgbW9yZSBpbXBv
cnRhbnQgYXMgd2Ugc3RhcnQgdG8gYWRkIHN1cHBvcnQKKyAgICAgICAgZm9yIGJ1aWx0aW5zIGFu
bm90YXRpb24gc3VjaCBhcyBAb3B0aW9uYWwsIEBpbnRlcm5hbCwgZXRjLiB0byB0aGUgY29kZSBn
ZW5lcmF0b3IuCisKKyAgICAgICAgU29tZSBvZiB0aGVzZSBjb21wbGV4aXRpZXMsIHN1Y2ggYXMg
aGF2aW5nIHR3byBvdXRwdXQgbW9kZXMsIHdpbGwgYmUgcmVtb3ZlZCBpbgorICAgICAgICBzdWJz
ZXF1ZW50IHBhdGNoZXMuIFRoaXMgcGF0Y2ggaXMgaW50ZW5kZWQgdG8gZXhhY3RseSByZXBsYWNl
IHRoZSBleGlzdGluZworICAgICAgICBmdW5jdGlvbmFsaXR5IHdpdGggYSB1bmlmaWVkIHNjcmlw
dCB0aGF0IG1ha2VzIGFkZGl0aW9uYWwgY2xlYW51cHMgc3RyYWlnaHRmb3J3YXJkLgorCisgICAg
ICAgIEFkZGl0aW9uYWwgY2xlYW51cCBhbmQgY29uc29saWRhdGlvbiBiZXR3ZWVuIGluc3BlY3Rv
ciBjb2RlIGdlbmVyYXRvciBzY3JpcHRzCisgICAgICAgIGFuZCB0aGlzIHNjcmlwdCB3aWxsIGJl
IHB1cnN1ZWQgaW4gZm9sbG93dXAgcGF0Y2hlcy4KKworICAgICAgICBOZXcgdGVzdHM6CisKKyAg
ICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21p
c2UtQ29tYmluZWQuanMKKyAgICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0
Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5qcworICAgICAgICBTY3JpcHRzL3Rlc3Rz
L2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qcwor
ICAgICAgICBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2Vw
YXJhdGUuanMKKyAgICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUd1YXJkZWRJ
bnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMKKyAgICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlu
cy9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMKKyAgICAgICAgU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMKKworCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisKKyAgICAgICAgICAgIERlZmluZSBKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTX0RJUiBleHBsaWNpdGx5IHNvIHRoZSBhZGRfY3VzdG9tX2NvbW1hbmQgYW5kCisg
ICAgICAgICAgICBzaGFyZWQgZmlsZSBsaXN0cyBhcmUgaWRlbnRpY2FsIGJldHdlZW4gSmF2YVNj
cmlwdENvcmUgYW5kIFdlYkNvcmUuCisKKyAgICAgICAgICAgIFRoZSBvdXRwdXQgZmlsZXMgYWRk
aXRpb25hbGx5IGRlcGVuZCBvbiBhbGwgYnVpbHRpbiBnZW5lcmF0b3Igc2NyaXB0IGZpbGVzCisg
ICAgICAgICAgICBhbmQgaW5wdXQgZmlsZXMgdGhhdCBhcmUgY29tYmluZWQgaW50byB0aGUgc2lu
Z2xlIGhlYWRlci9pbXBsZW1lbnRhdGlvbiBmaWxlLgorCisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKworICAgICAgICAgICAgRGVmaW5lIEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
IGV4cGxpY2l0bHkgc28gdGhlIHJ1bGUgZm9yIGNvZGUgZ2VuZXJhdGlvbiBhbmQKKyAgICAgICAg
ICAgIHNoYXJlZCBmaWxlIGxpc3RzIGFyZSBpZGVudGljYWwgYmV0d2VlbiBKYXZhU2NyaXB0Q29y
ZSBhbmQgV2ViQ29yZS4KKworICAgICAgICAgICAgVGhlIG91dHB1dCBmaWxlcyBhZGRpdGlvbmFs
bHkgZGVwZW5kIG9uIGFsbCBidWlsdGluIGdlbmVyYXRvciBzY3JpcHQgZmlsZXMKKyAgICAgICAg
ICAgIGFuZCBpbnB1dCBmaWxlcyB0aGF0IGFyZSBjb21iaW5lZCBpbnRvIHRoZSBzaW5nbGUgaGVh
ZGVyL2ltcGxlbWVudGF0aW9uIGZpbGUuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICAgICBNYXJrIHRoZSBuZXcgYnVpbHRp
bnMgZ2VuZXJhdG9yIGZpbGVzIGFzIHByaXZhdGUgaGVhZGVycyBzbyB3ZSBjYW4gdXNlIHRoZW0g
ZnJvbQorICAgICAgICAgICAgV2ViQ29yZS4KKworICAgICAgICAqIFNjcmlwdHMvVXBkYXRlQ29u
dGVudHMucHk6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVXBkYXRlQ29udGVu
dHMucHkuCisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9fX2luaXRfXy5weTogQWRkZWQuCisg
ICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGlucy5weTogQWRkZWQuCisgICAgICAgICog
U2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0b3IucHk6IEFkZGVkLiBUaGlzIGZpbGUg
Y29udGFpbnMgdGhlIGJhc2UgZ2VuZXJhdG9yLgorICAgICAgICAoV0tfbGNmaXJzdCk6CisgICAg
ICAgIChXS191Y2ZpcnN0KToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yKToKKyAgICAgICAg
KEJ1aWx0aW5zR2VuZXJhdG9yLl9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9y
Lm1vZGVsKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yLmdlbmVyYXRlX2xpY2Vuc2UpOgor
ICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3IuZ2VuZXJhdGVfaW5jbHVkZXNfZnJvbV9lbnRyaWVz
KToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAgICAg
IChCdWlsdGluc0dlbmVyYXRvci5vdXRwdXRfZmlsZW5hbWUpOgorICAgICAgICAoQnVpbHRpbnNH
ZW5lcmF0b3IubWFuZ2xlZE5hbWVGb3JGdW5jdGlvbik6CisgICAgICAgIChCdWlsdGluc0dlbmVy
YXRvci5tYW5nbGVkTmFtZUZvckZ1bmN0aW9uLnRvQ2FtZWwpOgorICAgICAgICAqIFNjcmlwdHMv
YnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHk6IEFkZGVkLiBUaGlzIGZpbGUgY29udGFpbnMgYnVp
bHRpbnMgbW9kZWwgb2JqZWN0cy4KKyAgICAgICAgKFBhcnNlRXhjZXB0aW9uKToKKyAgICAgICAg
KEZyYW1ld29yayk6CisgICAgICAgIChGcmFtZXdvcmsuX19pbml0X18pOgorICAgICAgICAoRnJh
bWV3b3JrLnNldHRpbmcpOgorICAgICAgICAoRnJhbWV3b3JrLmZyb21TdHJpbmcpOgorICAgICAg
ICAoRnJhbWV3b3Jrcyk6CisgICAgICAgIChCdWlsdGluT2JqZWN0KToKKyAgICAgICAgKEJ1aWx0
aW5PYmplY3QuX19pbml0X18pOgorICAgICAgICAoQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAg
KEJ1aWx0aW5GdW5jdGlvbi5fX2luaXRfXyk6CisgICAgICAgIChCdWlsdGluRnVuY3Rpb24uZnJv
bVN0cmluZyk6CisgICAgICAgIChCdWlsdGluRnVuY3Rpb24uX19zdHJfXyk6CisgICAgICAgIChC
dWlsdGluc0NvbGxlY3Rpb24pOgorICAgICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLl9faW5pdF9f
KToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5wYXJzZV9idWlsdGluc19maWxlKToKKyAg
ICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5jb3B5cmlnaHRzKToKKyAgICAgICAgKEJ1aWx0aW5z
Q29sbGVjdGlvbi5hbGxfZnVuY3Rpb25zKToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5f
cGFyc2VfY29weXJpZ2h0X2xpbmVzKToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5fcGFy
c2VfZnVuY3Rpb25zKToKKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBs
YXRlcy5weTogQWRkZWQuCisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvclRlbXBsYXRlcyk6Cisg
ICAgICAgICogU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9oZWFk
ZXIucHk6IEFkZGVkLgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEhlYWRlckdlbmVyYXRvcik6
CisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSGVhZGVyR2VuZXJhdG9yLl9faW5pdF9fKToKKyAg
ICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJHZW5lcmF0b3Iub3V0cHV0X2ZpbGVuYW1lKToK
KyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJHZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0
KToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJHZW5lcmF0b3IuZ2VuZXJhdGVfZm9y
d2FyZF9kZWNsYXJhdGlvbnMpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAg
ICAgKFZNKToKKyAgICAgICAgKENvbnN0cnVjdEFiaWxpdHkpOgorICAgICAgICAoZ2VuZXJhdGVf
c2VjdGlvbl9mb3Jfb2JqZWN0KToKKyAgICAgICAgKGdlbmVyYXRlX2V4dGVybnNfZm9yX29iamVj
dCk6CisgICAgICAgIChnZW5lcmF0ZV9tYWNyb3NfZm9yX29iamVjdCk6CisgICAgICAgIChnZW5l
cmF0ZV9kZWZpbmVzX2Zvcl9vYmplY3QpOgorICAgICAgICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3Jf
Y29kZV90YWJsZV9tYWNybyk6CisgICAgICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX25h
bWVfbWFjcm8pOgorICAgICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNf
Y29tYmluZWRfaW1wbGVtZW50YXRpb24ucHk6IEFkZGVkLgorICAgICAgICAoQnVpbHRpbnNDb21i
aW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRJ
bXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fX2luaXRfXyk6CisgICAgICAgIChCdWlsdGluc0NvbWJp
bmVkSW1wbGVtZW50YXRpb25HZW5lcmF0b3Iub3V0cHV0X2ZpbGVuYW1lKToKKyAgICAgICAgKEJ1
aWx0aW5zQ29tYmluZWRJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgor
ICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yLmdlbmVyYXRl
X2hlYWRlcl9pbmNsdWRlcyk6CisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSW1wbGVtZW50YXRp
b25HZW5lcmF0b3IuZ2VuZXJhdGVfZW1iZWRkZWRfY29kZV9zdHJpbmdfc2VjdGlvbnMpOgorICAg
ICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaGVhZGVy
LnB5OiBBZGRlZC4KKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0b3IpOgor
ICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvci5fX2luaXRfXyk6CisgICAg
ICAgIChCdWlsdGluc1NlcGFyYXRlSGVhZGVyR2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSk6Cisg
ICAgICAgIChCdWlsdGluc1NlcGFyYXRlSGVhZGVyR2VuZXJhdG9yLm1hY3JvX3ByZWZpeCk6Cisg
ICAgICAgIChCdWlsdGluc1NlcGFyYXRlSGVhZGVyR2VuZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6
CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlSGVhZGVyR2VuZXJhdG9yLmdlbmVyYXRlX2Zvcndh
cmRfZGVjbGFyYXRpb25zKToKKyAgICAgICAgKEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAg
IChnZW5lcmF0ZV9oZWFkZXJfaW5jbHVkZXMpOgorICAgICAgICAoZ2VuZXJhdGVfc2VjdGlvbl9m
b3Jfb2JqZWN0KToKKyAgICAgICAgKGdlbmVyYXRlX2V4dGVybnNfZm9yX29iamVjdCk6CisgICAg
ICAgIChnZW5lcmF0ZV9tYWNyb3NfZm9yX29iamVjdCk6CisgICAgICAgIChnZW5lcmF0ZV9kZWZp
bmVzX2Zvcl9vYmplY3QpOgorICAgICAgICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV90YWJs
ZV9tYWNybyk6CisgICAgICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX25hbWVfbWFjcm8p
OgorICAgICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVf
aW1wbGVtZW50YXRpb24ucHk6IEFkZGVkLgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUltcGxl
bWVudGF0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRh
dGlvbkdlbmVyYXRvci5fX2luaXRfXyk6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlSW1wbGVt
ZW50YXRpb25HZW5lcmF0b3Iub3V0cHV0X2ZpbGVuYW1lKToKKyAgICAgICAgKEJ1aWx0aW5zU2Vw
YXJhdGVJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5tYWNyb19wcmVmaXgpOgorICAgICAgICAoQnVp
bHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6Cisg
ICAgICAgIChCdWlsdGluc1NlcGFyYXRlSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVf
aGVhZGVyX2luY2x1ZGVzKToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlv
bkdlbmVyYXRvci5nZW5lcmF0ZV9lbWJlZGRlZF9jb2RlX3N0cmluZ19zZWN0aW9ucyk6CisgICAg
ICAgICogU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV93cmFwcGVy
LnB5OiBBZGRlZC4KKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9yKToK
KyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9yLl9faW5pdF9fKToKKyAg
ICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSk6
CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlV3JhcHBlckdlbmVyYXRvci5tYWNyb19wcmVmaXgp
OgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZVdyYXBwZXJHZW5lcmF0b3IuZ2VuZXJhdGVfb3V0
cHV0KToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9yLmdlbmVyYXRl
X2hlYWRlcl9pbmNsdWRlcyk6CisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlu
cy5weTogQWRkZWQuCisKKyAgICAgICAgICAgIFBhcnNlIGNvbW1hbmQgbGluZSBvcHRpb25zLCBk
ZWNpZGUgd2hpY2ggZ2VuZXJhdG9ycyBhbmQgb3V0cHV0IG1vZGVzIHRvIHVzZS4KKworICAgICAg
ICAoZ2VuZXJhdGVfYmluZGluZ3NfZm9yX2J1aWx0aW5zX2ZpbGVzKToKKyAgICAgICAgKiBTY3Jp
cHRzL2xhenl3cml0ZXIucHk6IENvcGllZCBmcm9tIHRoZSBpbnNwZWN0b3IgcHJvdG9jb2wgZ2Vu
ZXJhdG9yLgorICAgICAgICAoTGF6eUZpbGVXcml0ZXIpOgorICAgICAgICAoTGF6eUZpbGVXcml0
ZXIuX19pbml0X18pOgorICAgICAgICAoTGF6eUZpbGVXcml0ZXIud3JpdGUpOgorICAgICAgICAo
TGF6eUZpbGVXcml0ZXIuY2xvc2UpOgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
SmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90
eXBlLUNvbWJpbmVkLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5z
L0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qczogQWRkZWQuCisg
ICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUd1YXJkZWRCdWlsdGluLVNl
cGFyYXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNv
cmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qczogQWRkZWQuCisgICAgICAgICog
U2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUu
anM6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS14bWxD
YXNpbmdUZXN0LVNlcGFyYXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1
aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1Db21iaW5lZC5q
cy1yZXN1bHQ6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0
ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMtcmVzdWx0OiBB
ZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3Jp
cHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qcy1yZXN1bHQ6IEFkZGVkLgorICAg
ICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkQnVp
bHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQ6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMv
YnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRl
LmpzLXJlc3VsdDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBl
Y3RlZC9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0OiBBZGRlZC4K
KyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUteG1sQ2Fz
aW5nVGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQ6IEFkZGVkLgorICAgICAgICAqIGJ1aWx0aW5zL0J1
aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6
QnVpbHRpbkV4ZWN1dGFibGVzKToKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJs
ZXMuaDoKKyAgICAgICAgKiBjcmVhdGVfaGFzaF90YWJsZToKKworICAgICAgICAgICAgVXBkYXRl
IHRoZSBnZW5lcmF0ZWQgYnVpbHRpbiBtYWNybyBuYW1lcy4KKworICAgICAgICAqIGdlbmVyYXRl
LWpzLWJ1aWx0aW5zOiBSZW1vdmVkLgorCiAyMDE1LTEwLTEyICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ29kZUJsb2NrIHdyaXRlIGJhcnJpZXJzIHNob3Vs
ZCBiZSBwcmVjaXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjgyOGQ3ZDAwMzgyNWJkNjE4YTEyYTY0ZjRiNzgw
MTM5ZGYwYjUzZS4uOWU1MDVmNWVmMjk4M2E1YzBlMTA4NjY0YWI5MDQyZjZiYmYxNTA1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE1LTEwLTEzICBCcmlhbiBCdXJnICA8YmJ1cmdA
YXBwbGUuY29tPgorCisgICAgICAgIFJlc3RydWN0dXJlIGdlbmVyYXRlLWpzLWJpbmRpbmdzIHNj
cmlwdCB0byBiZSBtb2R1bGFyIGFuZCB0ZXN0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5OTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKworICAgICAgICAgICAg
RGVmaW5lIEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSIGV4cGxpY2l0bHkgc28gdGhlIGFkZF9j
dXN0b21fY29tbWFuZCBhbmQKKyAgICAgICAgICAgIHNoYXJlZCBmaWxlIGxpc3RzIGFyZSBpZGVu
dGljYWwgYmV0d2VlbiBKYXZhU2NyaXB0Q29yZSBhbmQgV2ViQ29yZS4KKworICAgICAgICAgICAg
VGhlIG91dHB1dCBmaWxlcyBhZGRpdGlvbmFsbHkgZGVwZW5kIG9uIGFsbCBidWlsdGluIGdlbmVy
YXRvciBzY3JpcHQgZmlsZXMuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorCisg
ICAgICAgICAgICBVc2UgSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIgc28gdGhhdCB0aGUgcnVs
ZSBmb3IgY29kZSBnZW5lcmF0aW9uIGFuZAorICAgICAgICAgICAgc2hhcmVkIGZpbGUgbGlzdHMg
YXJlIGlkZW50aWNhbCBiZXR3ZWVuIEphdmFTY3JpcHRDb3JlIGFuZCBXZWJDb3JlLgorCisgICAg
ICAgICAgICBUaGUgb3V0cHV0IGZpbGVzIGFkZGl0aW9uYWxseSBkZXBlbmQgb24gYWxsIGJ1aWx0
aW4gZ2VuZXJhdG9yIHNjcmlwdCBmaWxlcy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAgICAgRGVmaW5lIEphdmFTY3JpcHRDb3JlX1ND
UklQVFNfRElSIGJlZm9yZSBjYWxsaW5nIERlcml2ZWRTb3VyY2VzLm1ha2UuCisgICAgICAgICAg
ICBUaGlzIHdpbGwgZXZlbnR1YWxseSBiZSBtZXJnZWQgd2l0aCB0aGUgb3RoZXIgc2ltaWxhciBz
Y3JpcHQgcGF0aHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpmaW5pc2hDcmVhdGlvbik6CisK
KyAgICAgICAgICAgIFVwZGF0ZSB0aGUgZ2VuZXJhdGVkIGJ1aWx0aW4gbWFjcm8gbmFtZXMuCisK
KyAgICAgICAgKiBnZW5lcmF0ZS1qcy1idWlsdGluczogUmVtb3ZlZC4KKwogMjAxNS0xMC0xMyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEF2b2lkIHVzZWxlc3Mg
Y29waWVzIGluIHJhbmdlLWxvb3BzIHRoYXQgYXJlIHVzaW5nICdhdXRvJwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGI4MDQ5MjJmMmI1Yzg3ZmM2NWM2MzBkMWEzMTE2NmZl
MWZmYTY3ZjAuLjFkZmE2ZDAzMWRkZjQzYTE2NTgzN2M2MDIxNjgwMzE0ZjgyZjA3NDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTcwMiw2ICs3MDIsOCBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfTElCUkFSSUVTCiAgICAgJHtJQ1VfSTE4Tl9MSUJSQVJJRVN9CiApCiAKK3Nl
dChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUiAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L1Njcmlw
dHMiKQorCiBpZiAoVVNFX1VESVM4NikKICAgICBzZXQoVURJU19HRU5fREVQCiAgICAgICAgIGRp
c2Fzc2VtYmxlci91ZGlzODYvdWRfb3Bjb2RlLnB5CkBAIC0xMDc0LDYgKzEwNzYsMTkgQEAgYWRk
X2N1c3RvbV9jb21tYW5kKAogICAgIFZFUkJBVElNKQogCiAjIEpTQ0J1aWx0aW5zCisKK3NldChC
VUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUworICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVIpL2J1aWx0aW5zX2dlbmVyYXRvci5weQorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVIpL2J1aWx0aW5zX21vZGVsLnB5CisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikv
YnVpbHRpbnNfdGVtcGxhdGVzLnB5CisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikv
Z2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
KS9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9oZWFkZXIucHkKKyAgICAkKEphdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRhdGlv
bi5weQorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlX2J1aWx0aW5z
X3NlcGFyYXRlX2hlYWRlci5weQorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2dl
bmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5CisgICAgJChKYXZhU2Ny
aXB0Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfd3JhcHBlci5w
eQorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2xhenl3cml0ZXIucHkKKwogc2V0
KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vYnVpbHRpbnMvQXJyYXlDb25zdHJ1Y3Rvci5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElS
fS9idWlsdGlucy9BcnJheUl0ZXJhdG9yLnByb3RvdHlwZS5qcwpAQCAtMTA5NSwxMCArMTExMCwx
MSBAQCBzZXQoSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUwogKQogCiBhZGRfY3VzdG9t
X2NvbW1hbmQoCi0gICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElS
fS9KU0NCdWlsdGlucy5jcHAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9K
U0NCdWlsdGlucy5oCi0gICBNQUlOX0RFUEVOREVOQ1kgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9E
SVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zCi0gICBERVBFTkRTICR7SmF2YVNjcmlwdENvcmVfQlVJ
TFRJTlNfU09VUkNFU30KLSAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9D
VVJSRU5UX1NPVVJDRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zIC0taW5wdXQtZGlyZWN0b3J5
ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9idWlsdGlucyAtLW91dHB1dCAke0RFUklWRURf
U09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcAorICAgT1VUUFVUICR7
REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuY3BwCisgICAg
ICAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5o
CisgICBNQUlOX0RFUEVOREVOQ1kgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vZ2VuZXJh
dGUtanMtYnVpbHRpbnMucHkKKyAgIERFUEVORFMgJHtKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19T
T1VSQ0VTfSAke0JVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTfQorICAgQ09NTUFORCAke1BZVEhP
Tl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9nZW5lcmF0ZS1qcy1i
dWlsdGlucy5weSAtLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtLWlucHV0LWRpcmVjdG9yeSAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMgLS1vdXRwdXQtZGlyZWN0b3J5ICR7REVSSVZF
RF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0KICAgIFZFUkJBVElNKQogCiBsaXN0KEFQUEVO
RCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCmluZGV4IDEwMTVkZGM3Nzk4NzgwZWU5NzI2MjNmNGM4ZThkM2M3NWE5ZTRiNzEu
LmJjMGI0NWY5NDkwYjAyN2E0NWE4NWVjNTYyZjVjNTVmY2YyNDg2ZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC03MSwxMiArNzEsMTIgQEAgYWxsIDog
XAogICAgIHVkaXM4Nl9pdGFiLmggXAogICAgIEJ5dGVjb2Rlcy5oIFwKICAgICBJbml0Qnl0ZWNv
ZGVzLmFzbSBcCi0gICAgSlNDQnVpbHRpbnMgXAorICAgIEpTQ0J1aWx0aW5zLmggXAogIwogCi0j
IGJ1aWx0aW4gZnVuY3Rpb25zCiBQWVRIT04gPSBweXRob24KIFBFUkwgPSBwZXJsCitKYXZhU2Ny
aXB0Q29yZV9TQ1JJUFRTX0RJUiA9ICQoSmF2YVNjcmlwdENvcmUpL1NjcmlwdHMKIAogaWZlcSAo
JChPUyksV2luZG93c19OVCkKICAgICBERUxFVEUgPSBjbWQgLy9DIGRlbApAQCAtODUsMTUgKzg1
LDIzIEBAIGVsc2UKIGVuZGlmCiAjIC0tLS0tLS0tCiAKLS5QSE9OWTogSlNDQnVpbHRpbnMKLUpT
Q0J1aWx0aW5zOiAkKEphdmFTY3JpcHRDb3JlKS9nZW5lcmF0ZS1qcy1idWlsdGlucyBKU0NCdWls
dGlucy5oIEpTQ0J1aWx0aW5zLmNwcAotSlNDQnVpbHRpbnMuaDogJChKYXZhU2NyaXB0Q29yZSkv
Z2VuZXJhdGUtanMtYnVpbHRpbnMgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMgSlNDQnVpbHRp
bnNTb3VyY2VzCi0JJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRlLWpzLWJ1aWx0
aW5zIC0taW5wdXQtZGlyZWN0b3J5ICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zIC0tb3V0cHV0
ICRACi0KLUpTQ0J1aWx0aW5zLmNwcDogSlNDQnVpbHRpbnMuaAorIyBKYXZhU2NyaXB0IGJ1aWx0
aW5zLgorCitCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUyA9IFwKKyAgICAkKEphdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSKS9idWlsdGlucy9fX2luaXRfXy5weSBcCisgICAgJChKYXZhU2NyaXB0
Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5IFwKKyAgICAk
KEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGlucy9idWlsdGluc19tb2RlbC5weSBc
CisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnMvYnVpbHRpbnNfdGVt
cGxhdGVzLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGlucy9n
ZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9oZWFkZXIucHkgXAorICAgICQoSmF2YVNjcmlwdENv
cmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2ltcGxl
bWVudGF0aW9uLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGlu
cy9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9oZWFkZXIucHkgXAorICAgICQoSmF2YVNjcmlw
dENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2lt
cGxlbWVudGF0aW9uLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWls
dGlucy9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV93cmFwcGVyLnB5IFwKKyAgICAkKEphdmFT
Y3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZS1qcy1idWlsdGlucy5weSBcCisgICAgJChK
YXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvbGF6eXdyaXRlci5weSBcCisjCiAKLS5QSE9OWTog
SlNDQnVpbHRpbnNTb3VyY2VzCi1KU0NCdWlsdGluc1NvdXJjZXM6IFwKK0phdmFTY3JpcHRDb3Jl
X0JVSUxUSU5TX1NPVVJDRVMgPSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXJy
YXlDb25zdHJ1Y3Rvci5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXJyYXlJ
dGVyYXRvci5wcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0Fy
cmF5LnByb3RvdHlwZS5qcyBcCkBAIC0xMTAsOCArMTE4LDE5IEBAIEpTQ0J1aWx0aW5zU291cmNl
czogXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1JlZmxlY3RPYmplY3QuanMgXAog
ICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1N0cmluZ0NvbnN0cnVjdG9yLmpzIFwKICAg
ICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TdHJpbmdJdGVyYXRvci5wcm90b3R5cGUuanMg
XAorICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1R5cGVkQXJyYXkucHJvdG90eXBlLmpz
IFwKICMKIAorIyBUaGUgY29tYmluZWQgb3V0cHV0IGZpbGUgZGVwZW5kcyBvbiB0aGUgY29udGVu
dHMgb2YgYnVpbHRpbnMgYW5kIGdlbmVyYXRvciBzY3JpcHRzLCBzbworIyBhZGRpbmcsIG1vZGlm
eWluZywgb3IgcmVtb3ZpbmcgYnVpbHRpbnMgb3Igc2NyaXB0cyB3aWxsIHRyaWdnZXIgcmVnZW5l
cmF0aW9uIG9mIGZpbGVzLgorCisuUEhPTlk6IGZvcmNlCitKYXZhU2NyaXB0Q29yZV9CVUlMVElO
U19ERVBFTkRFTkNJRVNfTElTVCA6ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL1VwZGF0
ZUNvbnRlbnRzLnB5IGZvcmNlCisJJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVIpL1VwZGF0ZUNvbnRlbnRzLnB5ICckKEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMp
ICQoQlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMpJyAkQAorCitKU0NCdWlsdGlucy5oOiAkKEJV
SUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTKSAkKEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJD
RVMpIEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX0RFUEVOREVOQ0lFU19MSVNUCisJJChQWVRIT04p
ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5IC0t
Y29tYmluZWQgLS1vdXRwdXQtZGlyZWN0b3J5IC4gLS1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUg
JChKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTKQorCiAjIGxvb2t1cCB0YWJsZXMgZm9y
IGNsYXNzZXMKIAogJS5sdXQuaDogY3JlYXRlX2hhc2hfdGFibGUgJS5jcHAKQEAgLTE5OCw4ICsy
MTcsOCBAQCBhbGwgOiBcCiAjIGFkZGluZywgbW9kaWZ5aW5nLCBvciByZW1vdmluZyBkb21haW5z
IHdpbGwgdHJpZ2dlciByZWdlbmVyYXRpb24gb2YgaW5zcGVjdG9yIGZpbGVzLgogCiAuUEhPTlk6
IGZvcmNlCi1FbmFibGVkSW5zcGVjdG9yRG9tYWlucyA6ICQoSmF2YVNjcmlwdENvcmUpL1VwZGF0
ZUNvbnRlbnRzLnB5IGZvcmNlCi0JJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmUpL1VwZGF0ZUNv
bnRlbnRzLnB5ICckKElOU1BFQ1RPUl9ET01BSU5TKScgJEAKK0VuYWJsZWRJbnNwZWN0b3JEb21h
aW5zIDogJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvVXBkYXRlQ29udGVudHMucHkgZm9y
Y2UKKwkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvVXBkYXRlQ29udGVu
dHMucHkgJyQoSU5TUEVDVE9SX0RPTUFJTlMpJyAkQAogCiBDb21iaW5lZERvbWFpbnMuanNvbiA6
IGluc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWNvbWJpbmVkLWluc3BlY3Rvci1qc29uLnB5ICQo
SU5TUEVDVE9SX0RPTUFJTlMpIEVuYWJsZWRJbnNwZWN0b3JEb21haW5zCiAJJChQWVRIT04pICQo
SmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWNvbWJpbmVkLWluc3Bl
Y3Rvci1qc29uLnB5ICQoSU5TUEVDVE9SX0RPTUFJTlMpID4gLi9Db21iaW5lZERvbWFpbnMuanNv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4NDE2NTI4ZjljNTJmYTU2NTdmYjYz
ZjNkM2QyMWQ5MTY1NjEzZjNjLi4yYmI0MWJmZThkNTM4ZTk4ZTg0MmQwZDE4ODVjYTczMWZlNGEx
ZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTU2LDcgKzk1Niw2IEBACiAJ
CTJBREZBMjYzMThFRjM1NDAwMDRGOUZDQyAvKiBHQ0xvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFERkEyNjIxOEVGMzU0MDAwNEY5RkND
IC8qIEdDTG9nZ2luZy5jcHAgKi87IH07CiAJCTJBRjczODJDMThCQkJGOTIwMDhBNUEzNyAvKiBT
dHJ1Y3R1cmVJRFRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJBRjczODJBMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNw
cCAqLzsgfTsKIAkJMkFGNzM4MkQxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBRjczODJC
MThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMkRGQjhBRkUxQkIzMjNCRDAwOTNEMjM3
IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTcxREE4MEQxODgwRDcxRjAwRDFGMjk5IC8qIGdlbmVyYXRlLWpzLWJ1
aWx0aW5zICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTM3MUQ4NDJEMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRDg0MkMxN0M5OEI2RTAwRUNGOTk0
IC8qIGxpYnouZHlsaWIgKi87IH07CiAJCTQxMzU5Q0YzMEZERDg5QUQwMDIwNjE4MCAvKiBEYXRl
Q29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRDIxMjAyMjkwQUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVDb252ZXJzaW9uLmggKi87IH07CiAJ
CTQxREVBMTMyMUI5RjMxNjMwMDZENjVERCAvKiBCdWlsdGluVXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxREVBMTMxMUI5RjMxNTQwMDZENjVE
RCAvKiBCdWlsdGluVXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTIxMSw2ICsxMjEwLDE4IEBACiAJCTk2OUEwNzlCMEVEMUQzQUUwMEYx
RjY4MSAvKiBPcGNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk2OUEwNzk1MEVEMUQzQUUwMEYxRjY4MSAvKiBPcGNvZGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5Nzg4MDE0MDE0NzFBRDkyMDA0
MUIwMTYgLyogSlNEYXRlTWF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5Nzg4RkMyMjE0NzFBRDBDMDA2OENFMkQgLyogSlNEYXRlTWF0aC5jcHAg
Ki87IH07CiAJCTk3ODgwMTQxMTQ3MUFEOTIwMDQxQjAxNiAvKiBKU0RhdGVNYXRoLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Nzg4RkMyMzE0NzFBRDBD
MDA2OENFMkQgLyogSlNEYXRlTWF0aC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTk5MUQ1RUQ0MUJDQzM1QUEwMEU0QzI1RCAvKiBnZW5lcmF0ZS1q
cy1idWlsdGlucy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk5MDQ0QjMxMUJDQzIzREMwMDdDMjUwRCAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucy5weSAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OTFENUVE
NTFCQ0MzNUIxMDBFNEMyNUQgLyogYnVpbHRpbnNfZ2VuZXJhdG9yLnB5IGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkwNDRCM0IxQkNDMjQ5MTAwN0MyNTBE
IC8qIGJ1aWx0aW5zX2dlbmVyYXRvci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk5OTFENUVENjFCQ0MzNUIxMDBFNEMyNUQgLyogYnVpbHRpbnNf
bW9kZWwucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
OTA0NEIzQzFCQ0MyNDkxMDA3QzI1MEQgLyogYnVpbHRpbnNfbW9kZWwucHkgKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTkxRDVFRDcxQkNDMzVCMTAw
RTRDMjVEIC8qIGJ1aWx0aW5zX3RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MDQ0QjNEMUJDQzI0OTEwMDdDMjUwRCAvKiBidWlsdGlu
c190ZW1wbGF0ZXMucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJOTkxRDVFRDgxQkNDMzVCMTAwRTRDMjVEIC8qIGdlbmVyYXRlX2J1aWx0aW5zX2Nv
bWJpbmVkX2hlYWRlci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk5MDQ0QjNFMUJDQzI0OTEwMDdDMjUwRCAvKiBnZW5lcmF0ZV9idWlsdGluc19jb21i
aW5lZF9oZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJOTkxRDVFRDkxQkNDMzVCMTAwRTRDMjVEIC8qIGdlbmVyYXRlX2J1aWx0aW5zX2Nv
bWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTkwNDRCM0YxQkNDMjQ5MTAwN0MyNTBEIC8qIGdlbmVyYXRlX2J1aWx0
aW5zX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5MUQ1RURBMUJDQzM1QjEwMEU0QzI1RCAvKiBnZW5l
cmF0ZV9idWlsdGluc19zZXBhcmF0ZV9oZWFkZXIucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTA0NEI0MTFCQ0MyQjA1MDA3QzI1MEQgLyogZ2VuZXJh
dGVfYnVpbHRpbnNfc2VwYXJhdGVfaGVhZGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5MUQ1RURCMUJDQzM1QjEwMEU0QzI1RCAvKiBnZW5l
cmF0ZV9idWlsdGluc19zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MDQ0QjQyMUJDQzJCMDUwMDdDMjUwRCAv
KiBnZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weSAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OTFENUVEQzFCQ0MzNUIx
MDBFNEMyNUQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfd3JhcHBlci5weSBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MDQ0QjQzMUJDQzJCMDUw
MDdDMjUwRCAvKiBnZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV93cmFwcGVyLnB5ICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5MUQ1RUREMUJDQzM1
QjMwMEU0QzI1RCAvKiBsYXp5d3JpdGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTkwNDRCNDAxQkNDMjQ5MTAwN0MyNTBEIC8qIGxhenl3cml0ZXIu
cHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTkx
RDVFREYxQkNDNjMwQzAwRTRDMjVEIC8qIFVwZGF0ZUNvbnRlbnRzLnB5IGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkxRDVFREUxQkNDNjJFQTAwRTRDMjVE
IC8qIFVwZGF0ZUNvbnRlbnRzLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTk5MUQ1RUUxMUJDQzY0NjkwMEU0QzI1RCAvKiBidWlsdGlucy5weSBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MUQ1RUUwMUJD
QzY0MTUwMEU0QzI1RCAvKiBidWlsdGlucy5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5OTI4RkYzQjE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBs
YXlJbnB1dHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTkyOEZGMzkxOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmNwcCAqLzsgfTsK
IAkJOTkyOEZGM0MxOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTI4RkYzQTE4QUM0QUVDMDBC
OENGMTIgLyogSlNSZXBsYXlJbnB1dHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk5OTYyMzFFOTE4RDE4MDQyMDBDMDNGREEgLyogSW5zcGVjdG9y
QmFja2VuZENvbW1hbmRzLmpzIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTUzMjQzOTYxODU2QTQ3NTAwMkVENjkyIC8qIEluc3BlY3RvckJhY2tlbmRDb21t
YW5kcy5qcyAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMzExMSw2ICszMTIyLDE5IEBACiAJCTk2OUEwOTIyMEVEMUUwOUMwMEYxRjY4MSAvKiBDb21w
bGV0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbXBsZXRp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Nzg4RkMyMjE0NzFBRDBDMDA2
OENFMkQgLyogSlNEYXRlTWF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0RhdGVNYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc4OEZD
MjMxNDcxQUQwQzAwNjhDRTJEIC8qIEpTRGF0ZU1hdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNEYXRlTWF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
OTA0NEIzMTFCQ0MyM0RDMDA3QzI1MEQgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSAiZ2VuZXJhdGUtanMtYnVpbHRpbnMucHki
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTA0NEIzQTFCQ0MyNDkxMDA3QzI1MEQg
LyogX19pbml0X18ucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBfX2lu
aXRfXy5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTkwNDRCM0IxQkNDMjQ5MTAw
N0MyNTBEIC8qIGJ1aWx0aW5zX2dlbmVyYXRvci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5
dGhvbjsgcGF0aCA9IGJ1aWx0aW5zX2dlbmVyYXRvci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTkwNDRCM0MxQkNDMjQ5MTAwN0MyNTBEIC8qIGJ1aWx0aW5zX21vZGVsLnB5ICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gYnVpbHRpbnNfbW9kZWwucHk7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MDQ0QjNEMUJDQzI0OTEwMDdDMjUwRCAvKiBi
dWlsdGluc190ZW1wbGF0ZXMucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGgg
PSBidWlsdGluc190ZW1wbGF0ZXMucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5
MDQ0QjNFMUJDQzI0OTEwMDdDMjUwRCAvKiBnZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9oZWFk
ZXIucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBnZW5lcmF0ZV9idWls
dGluc19jb21iaW5lZF9oZWFkZXIucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5
MDQ0QjNGMUJDQzI0OTEwMDdDMjUwRCAvKiBnZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBs
ZW1lbnRhdGlvbi5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGdlbmVy
YXRlX2J1aWx0aW5zX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5OyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5OTA0NEI0MDFCQ0MyNDkxMDA3QzI1MEQgLyogbGF6eXdyaXRlci5weSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGxhenl3cml0ZXIucHk7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MDQ0QjQxMUJDQzJCMDUwMDdDMjUwRCAvKiBnZW5l
cmF0ZV9idWlsdGluc19zZXBhcmF0ZV9oZWFkZXIucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5w
eXRob247IHBhdGggPSBnZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9oZWFkZXIucHk7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MDQ0QjQyMUJDQzJCMDUwMDdDMjUwRCAvKiBnZW5l
cmF0ZV9idWlsdGluc19zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
c2NyaXB0LnB5dGhvbjsgcGF0aCA9IGdlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2ltcGxlbWVu
dGF0aW9uLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTA0NEI0MzFCQ0MyQjA1
MDA3QzI1MEQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfd3JhcHBlci5weSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGdlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRl
X3dyYXBwZXIucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MUQ1RURFMUJDQzYy
RUEwMEU0QzI1RCAvKiBVcGRhdGVDb250ZW50cy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5
dGhvbjsgcGF0aCA9IFVwZGF0ZUNvbnRlbnRzLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5OTFENUVFMDFCQ0M2NDE1MDBFNEMyNUQgLyogYnVpbHRpbnMucHkgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBidWlsdGlucy5weTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTkyOEZGMzkxOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVwbGF5SW5wdXRzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkyOEZGM0ExOEFDNEFFQzAwQjhDRjEy
IC8qIEpTUmVwbGF5SW5wdXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
UmVwbGF5SW5wdXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MjhGRjNEMThB
QzRCMUMwMEI4Q0YxMiAvKiBKU0lucHV0cy5qc29uICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5qc29uOyBwYXRo
ID0gSlNJbnB1dHMuanNvbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMzMDYsNyAr
MzMzMCw2IEBACiAJCUE3MTIzNkU0MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUT3Bjb2RlczMyXzY0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY2MUExMTc1NEEyMTAwMjQ2
NUE3IC8qIFJlZ0V4cEppdFRhYmxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZWdFeHBKaXRUYWJsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY4
MjExMTc4RUI0QjAwMjQ2NUE3IC8qIGNyZWF0ZV9yZWdleF90YWJsZXMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgZmls
ZUVuY29kaW5nID0gNDsgcGF0aCA9IGNyZWF0ZV9yZWdleF90YWJsZXM7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUE3MURBODBEMTg4MEQ3MUYwMEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1i
dWlsdGlucyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1q
cy1idWlsdGlucyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI0MTc5NzYw
MUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNDVGVzdFJ1bm5lclV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjUxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJV
dGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NUZXN0UnVubmVyVXRp
bHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjkxNzk3NjAzRDAwOTgw
MjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTRnVuY3Rpb25JbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0z
ODI3LDcgKzM4NTAsNiBAQAogCQkJCTg2MDRGNEYyMTQzQTZDNDQwMEIyOTVGNSAvKiBDaGFuZ2VM
b2cgKi8sCiAJCQkJRjY5MkE4NTQwMjU1NTk3RDAxRkY2MEY3IC8qIGNyZWF0ZV9oYXNoX3RhYmxl
ICovLAogCQkJCUE3MThGODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVz
ICovLAotCQkJCUE3MURBODBEMTg4MEQ3MUYwMEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlu
cyAqLywKIAkJCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAqLywKIAkJCQlG
NjhFQkI4QzAyNTVENEM2MDFGRjYwRjcgLyogY29uZmlnLmggKi8sCiAJCQkJRjVDMjkwRTYwMjg0
Rjk4RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggKi8sCkBAIC0zODM5LDEyICsz
ODYxLDkgQEAKIAkJCQlBN0Q4MDE5RjE4ODBENjZFMDAyNkMzOUIgLyogYnVpbHRpbnMgKi8sCiAJ
CQkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovLAogCQkJCTdFMzlEODFE
MEVDMzhFRkEwMDNBRjExQSAvKiBieXRlY29tcGlsZXIgKi8sCi0JCQkJMUM5MDUxM0UwQkE5RTg4
MzAwODFFOUQwIC8qIENvbmZpZ3VyYXRpb25zICovLAogCQkJCTE0ODBEQjlBMEREQzIyMzEwMDND
RkRGMiAvKiBkZWJ1Z2dlciAqLywKLQkJCQk2NTBGREY4RDA5RDBGQ0E3MDA3NjlFNTQgLyogRGVy
aXZlZCBTb3VyY2VzICovLAogCQkJCTg2RUM5REIzMTMyOERGNDQwMDJCMkFENyAvKiBkZmcgKi8s
CiAJCQkJMEZGNDI3MkUxNThFQkNDRTAwNENCOUZGIC8qIGRpc2Fzc2VtYmxlciAqLywKLQkJCQkw
ODY3RDY5QUZFODQwMjhGQzAyQUFDMDcgLyogRnJhbWV3b3JrcyAqLywKIAkJCQkwRkVBMDlGQzE3
MDUxMzdGMDBCQjcyMkMgLyogZnRsICovLAogCQkJCTE0MkUzMTJBMTM0RkYwQTYwMEFGQURCNSAv
KiBoZWFwICovLAogCQkJCUE1QkExNURGMTgyMzQwOTIwMEE4MkU2OSAvKiBpbnNwZWN0b3IgKi8s
CkBAIC0zODUzLDE1ICszODcyLDE5IEBACiAJCQkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8q
IGxsaW50ICovLAogCQkJCTBGQ0VGQUFEMTgwNUNBNDQwMDQ3MkNFNCAvKiBsbHZtICovLAogCQkJ
CTdFMzlEODM3MEVDM0EzODgwMDNBRjExQSAvKiBwYXJzZXIgKi8sCi0JCQkJMDM0NzY4REZGRjM4
QTUwNDExREI5QzhCIC8qIFByb2R1Y3RzICovLAogCQkJCTk1QUI4MzFBMERBNDJDNjkwMEJDODNG
MyAvKiBwcm9maWxlciAqLywKIAkJCQk5OUU0NUEwQzE4QTAxRTkzMDAyNkQ4OEYgLyogcmVwbGF5
ICovLAotCQkJCTkzMkZDM0MyMDgyNEJCNzAwMDVCM0M3NSAvKiBSZXNvdXJjZXMgKi8sCiAJCQkJ
N0VGNkUwQkIwRUI3QTFFQzAwNzlBRkFGIC8qIHJ1bnRpbWUgKi8sCiAJCQkJMTQxMjExMDAwQTQ4
NzcyNjAwNDgwMjU1IC8qIHRlc3RzICovLAogCQkJCTg2MDNDRUYwMTRDNzUzRUYwMEFFNTlFMyAv
KiB0b29scyAqLywKIAkJCQk3Qjk4RDEzMzFCNjBDRDFFMDAyM0IxQTQgLyogd2FzbSAqLywKIAkJ
CQk4NkVBQzQ4QzBGOTNFOEI5MDA4RUM5NDggLyogeWFyciAqLywKKwkJCQk2NTBGREY4RDA5RDBG
Q0E3MDA3NjlFNTQgLyogRGVyaXZlZCBTb3VyY2VzICovLAorCQkJCTk5MDQ0QjMwMUJDQzIzQjIw
MDdDMjUwRCAvKiBTY3JpcHRzICovLAorCQkJCTkzMkZDM0MyMDgyNEJCNzAwMDVCM0M3NSAvKiBS
ZXNvdXJjZXMgKi8sCisJCQkJMDg2N0Q2OUFGRTg0MDI4RkMwMkFBQzA3IC8qIEZyYW1ld29ya3Mg
Ki8sCisJCQkJMDM0NzY4REZGRjM4QTUwNDExREI5QzhCIC8qIFByb2R1Y3RzICovLAorCQkJCTFD
OTA1MTNFMEJBOUU4ODMwMDgxRTlEMCAvKiBDb25maWd1cmF0aW9ucyAqLywKIAkJCSk7CiAJCQlu
YW1lID0gSmF2YVNjcmlwdENvcmU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNTcy
Nyw2ICs1NzUwLDM0IEBACiAJCQlwYXRoID0gYnl0ZWNvZGU7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OworCQk5OTA0NEIzMDFCQ0MyM0IyMDA3QzI1MEQgLyogU2NyaXB0cyAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJOTkwNDRCMzkxQkND
MjNGRjAwN0MyNTBEIC8qIGJ1aWx0aW5zICovLAorCQkJCTk5MDQ0QjMxMUJDQzIzREMwMDdDMjUw
RCAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucy5weSAqLywKKwkJCQk5OTA0NEI0MDFCQ0MyNDkxMDA3
QzI1MEQgLyogbGF6eXdyaXRlci5weSAqLywKKwkJCQk5OTFENUVERTFCQ0M2MkVBMDBFNEMyNUQg
LyogVXBkYXRlQ29udGVudHMucHkgKi8sCisJCQkpOworCQkJcGF0aCA9IFNjcmlwdHM7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk5OTA0NEIzOTFCQ0MyM0ZGMDA3QzI1MEQg
LyogYnVpbHRpbnMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCTk5MDQ0QjNBMUJDQzI0OTEwMDdDMjUwRCAvKiBfX2luaXRfXy5weSAqLywKKwkJCQk5OTFE
NUVFMDFCQ0M2NDE1MDBFNEMyNUQgLyogYnVpbHRpbnMucHkgKi8sCisJCQkJOTkwNDRCM0IxQkND
MjQ5MTAwN0MyNTBEIC8qIGJ1aWx0aW5zX2dlbmVyYXRvci5weSAqLywKKwkJCQk5OTA0NEIzQzFC
Q0MyNDkxMDA3QzI1MEQgLyogYnVpbHRpbnNfbW9kZWwucHkgKi8sCisJCQkJOTkwNDRCM0QxQkND
MjQ5MTAwN0MyNTBEIC8qIGJ1aWx0aW5zX3RlbXBsYXRlcy5weSAqLywKKwkJCQk5OTA0NEIzRTFC
Q0MyNDkxMDA3QzI1MEQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaGVhZGVyLnB5ICov
LAorCQkJCTk5MDQ0QjNGMUJDQzI0OTEwMDdDMjUwRCAvKiBnZW5lcmF0ZV9idWlsdGluc19jb21i
aW5lZF9pbXBsZW1lbnRhdGlvbi5weSAqLywKKwkJCQk5OTA0NEI0MTFCQ0MyQjA1MDA3QzI1MEQg
LyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaGVhZGVyLnB5ICovLAorCQkJCTk5MDQ0QjQy
MUJDQzJCMDUwMDdDMjUwRCAvKiBnZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9pbXBsZW1lbnRh
dGlvbi5weSAqLywKKwkJCQk5OTA0NEI0MzFCQ0MyQjA1MDA3QzI1MEQgLyogZ2VuZXJhdGVfYnVp
bHRpbnNfc2VwYXJhdGVfd3JhcHBlci5weSAqLywKKwkJCSk7CisJCQlwYXRoID0gYnVpbHRpbnM7
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk5OUU0NUEwQzE4QTAxRTkzMDAy
NkQ4OEYgLyogcmVwbGF5ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKQEAgLTYwMjQsNiArNjA3NSwxMCBAQAogCQkJCUZFQTA4NjIwMTgyQjdBMDQwMEY2RDg1MSAv
KiBCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4MDFBNTE4ODBENjZFMDAyNkMz
OUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzVFRTlCMjE4
QUFCN0UyMDBBQUQwNDMgLyogQnVpbHRpbk5hbWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTFE
NUVFMTFCQ0M2NDY5MDBFNEMyNUQgLyogYnVpbHRpbnMucHkgaW4gSGVhZGVycyAqLywKKwkJCQk5
OTFENUVENTFCQ0MzNUIxMDBFNEMyNUQgLyogYnVpbHRpbnNfZ2VuZXJhdG9yLnB5IGluIEhlYWRl
cnMgKi8sCisJCQkJOTkxRDVFRDYxQkNDMzVCMTAwRTRDMjVEIC8qIGJ1aWx0aW5zX21vZGVsLnB5
IGluIEhlYWRlcnMgKi8sCisJCQkJOTkxRDVFRDcxQkNDMzVCMTAwRTRDMjVEIC8qIGJ1aWx0aW5z
X3RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovLAogCQkJCTQxREVBMTMyMUI5RjMxNjMwMDZENjVE
RCAvKiBCdWlsdGluVXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTlFNzI5NDBCMTkwRjA1MTQw
MDFBOTFCNSAvKiBCdW5kbGVQYXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5NzE1RUQ4
RTQ2MDBGMTY3QjIgLyogQnV0dGVyZmx5LmggaW4gSGVhZGVycyAqLywKQEAgLTYwNTEsNiArNjEw
Niw3IEBACiAJCQkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRU
b0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjNCN0UyQjE5QTExQjgwMDBE
OUJDNTYgLyogQ2FsbFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTQyMTdFQTlG
NTkwMEFCQjIxNyAvKiBDQ2FsbEhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMUMzRERB
MUJCQ0UwOUUwMEU1MjNFNCAvKiBDZWxsU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNkFB
QUU1MEUxRjQyNjUwMEFEODdEOCAvKiBDbGFzc0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RTA1MDI2MUFBOTA5NTYwMEQzM0IzMyAvKiBDbG9uZWRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk2OUEwNzk3MEVEMUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suaCBpbiBIZWFkZXJz
ICovLApAQCAtNjE4MiwxMCArNjIzOCw4IEBACiAJCQkJQTc4QTk3NzUxNzk3MzhCODAwOURGNzQ0
IC8qIERGR0ZhaWxlZEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCRkYzQzAxNzk4
Njg5NDAwMDJGNDYyIC8qIERGR0ZpbHRyYXRpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3OEE5Nzc3MTc5NzM4QjgwMDlERjc0NCAvKiBERkdGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICov
LAotCQkJCTdCODMyOUJGMUJCMjFGRTMwMDY0OUE2RSAvKiBXQVNNRnVuY3Rpb25MTFZNSVJHZW5l
cmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkJEQzE2MTUxQzVENEYwMENEODkxMCAvKiBE
RkdGaXh1cFBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlEMzM5NzE3RkZDNEU2MDA3M0My
QkMgLyogREZHRmx1c2hlZEF0LmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjMyQkQxMTFCQjM0RjE5
MDA5M0E1N0YgLyogSGVhcEhlbHBlclBvb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0Y4
MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdGbHVzaEZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyREQ4MTUxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0ZvckFsbEtpbGxzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjY5Q0M4OTE5M0FDNjBBMDA0NTc1OUUgLyogREZHRnJvemVuVmFsdWUuaCBpbiBI
ZWFkZXJzICovLApAQCAtNjI1NCw3ICs2MzA4LDYgQEAKIAkJCQkwRkIxNzY2MzE5NkI4RjlFMDA5
MTA1MkEgLyogREZHUHVyZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjNBMUJGQTFBOUVD
QjdEMDAwREUwMUEgLyogREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2RUM5REQxMTMyOERGODIwMDJCMkFENyAvKiBERkdSZWdpc3RlckJhbmsuaCBpbiBIZWFk
ZXJzICovLAotCQkJCURFQTdFMjQ1MUJCQzY3N0YwMEQ3ODQ0MCAvKiBKU1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQ0NGQzE4QTYwMDcwMDAxQTI3Rjgg
LyogREZHU2FmZXBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdBNDI0MzE3QTBCQkZEMDBB
OERCODEgLyogREZHU2FmZVRvRXhlY3V0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0MTAxN0Yx
NzlEQUY4MDAwMkVCOEJBIC8qIERGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9y
LmggaW4gSGVhZGVycyAqLywKQEAgLTYzOTgsNyArNjQ1MSwxMiBAQAogCQkJCUE1NEU4RUIxMThC
RkZCQkUwMDU1NkQyOCAvKiBHQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTUzMjQzOTQxODU2OTcwOTAwMkVENjkyIC8qIGdlbmVyYXRlLWNvbWJpbmVkLWluc3Bl
Y3Rvci1qc29uLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQzQ3MDNDQzAxOTI4NDQ5NjAwMTNGQkVB
IC8qIGdlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weSBpbiBIZWFkZXJzICov
LAotCQkJCTJERkI4QUZFMUJCMzIzQkQwMDkzRDIzNyAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyBp
biBIZWFkZXJzICovLAorCQkJCTk5MUQ1RUQ0MUJDQzM1QUEwMEU0QzI1RCAvKiBnZW5lcmF0ZS1q
cy1idWlsdGlucy5weSBpbiBIZWFkZXJzICovLAorCQkJCTk5MUQ1RUQ4MUJDQzM1QjEwMEU0QzI1
RCAvKiBnZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9oZWFkZXIucHkgaW4gSGVhZGVycyAqLywK
KwkJCQk5OTFENUVEOTFCQ0MzNUIxMDBFNEMyNUQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmlu
ZWRfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKKwkJCQk5OTFENUVEQTFCQ0MzNUIx
MDBFNEMyNUQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaGVhZGVyLnB5IGluIEhlYWRl
cnMgKi8sCisJCQkJOTkxRDVFREIxQkNDMzVCMTAwRTRDMjVEIC8qIGdlbmVyYXRlX2J1aWx0aW5z
X3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJOTkxRDVFREMx
QkNDMzVCMTAwRTRDMjVEIC8qIGdlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX3dyYXBwZXIucHkg
aW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzBFQzE5RjVCM0VBMDA5OEY1RUMgLyogZ2VuZXJhdGVf
Y3BwX2FsdGVybmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8s
CiAJCQkJQTVFRjlCMTQxQTFENDNGNjAwNzAyRTkwIC8qIGdlbmVyYXRlX2NwcF9iYWNrZW5kX2Rp
c3BhdGNoZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFRjlCMTUxQTFENDNGQTAw
NzAyRTkwIC8qIGdlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24u
cHkgaW4gSGVhZGVycyAqLywKQEAgLTY0MzUsNiArNjQ5Myw3IEBACiAJCQkJMTQyRTMxMzgxMzRG
RjBBNjAwQUZBREI1IC8qIEhhbmRsZVN0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc4Mjk3
QjEzNzlFOEE4MDBBN0MyQTMgLyogSGFuZGxlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0
QkE3QTk4MTNBQURGRjgwMDVCN0MyQyAvKiBIZWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjMy
QkQxMTFCQjM0RjE5MDA5M0E1N0YgLyogSGVhcEhlbHBlclBvb2wuaCBpbiBIZWFkZXJzICovLAog
CQkJCUMyREE3NzgzMThFMjU5OTkwMDY2RkNCNiAvKiBIZWFwSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkFEODkzMkIxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkE2RjQ2MjYxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVy
YXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtNjU3OSw3ICs2NjM4LDYgQEAKIAkJCQk4NkUzQzYx
NDE2N0JBQkQ3MDA2RDc2MEEgLyogSlNFeHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QjRB
Q0FGMTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYyQjY2RUYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQzMkFycmF5LmggaW4gSGVhZGVy
cyAqLywKLQkJCQk1MzkxN0U3QjFCNzkwNkZBMDAwRUJEMzMgLyogSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkYwMTdC
NkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
OEM0MUYwRTE2RjVDRDAwQjM0NDYwIC8qIEpTRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3MjAyOEJBMTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCkBAIC02NTg4LDYgKzY2NDYsNyBAQAogCQkJCTBGMkI2NkYzMTdCNkI1QUIwMEE3QUUz
RiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYyQjY2RjQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjUxN0I2QjVBQjAwQTdB
RTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1MzkxN0U3QjFCNzkwNkZBMDAwRUJEMzMgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGVGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkY2MTdCNkI1QUIw
MEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTc5N0UwN0FBMUI4RkNGQjkwMDg0MDBCQSAvKiBKU0dsb2JhbExleGlj
YWxFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjEwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTR2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKQEAgLTY2NjEsNiArNjcyMCw3
IEBACiAJCQkJMEYyQjY2RkIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheUNvbnN0cnVj
dG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RkQxN0I2QjVBQjAwQTdBRTNGIC8qIEpT
VHlwZWRBcnJheVByb3RvdHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkZGMTdCNkI1
QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlzLmggaW4gSGVhZGVycyAqLywKKwkJCQlERUE3RTI0
NTFCQkM2NzdGMDBENzg0NDAgLyogSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNjUwN0QyOUUwRTg3MUU1RTAwRDdEODk2IC8qIEpTVHlwZUluZm8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMkI2NzAyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1VpbnQxNkFycmF5
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjcwMzE3QjZCNUFCMDBBN0FFM0YgLyogSlNVaW50
MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC02Njg0LDYgKzY3NDQsNyBAQAogCQkJCTk2OUEw
NzJBMEVEMUNFNjkwMEYxRjY4MSAvKiBMYWJlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTYwMDk3
QTYwRUJBQkI1ODAwN0E3Mjk3IC8qIExhYmVsU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
QjU0Njc3MTRGNTlCNUMwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJOTkxRDVFREQxQkNDMzVCMzAwRTRDMjVEIC8qIGxhenl3cml0ZXIucHkg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1MjBFMTZGNUNEMDBCMzQ0NjAgLyogTGVnYWN5UHJv
ZmlsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDMxMEUxNkY1Q0QwMEIzNDQ2MCAvKiBM
ZXhlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM1MkUwRTE2RkNFMTAwQjM0NDYwIC8qIExl
eGVyLmx1dC5oIGluIEhlYWRlcnMgKi8sCkBAIC02OTM5LDggKzcwMDAsOCBAQAogCQkJCUE3QjYw
MTgyMTYzOUZEMkEwMDM3MkJBMyAvKiBVbmxpbmtlZENvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTQxNDJFNTExQjc5NkVDRTAwRjRCRjRCIC8qIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJFODkyQzE2RDAyOEFEMDA5RTRGRDIgLyogVW51
c2VkUG9pbnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTkxRDVFREYxQkNDNjMwQzAwRTRDMjVE
IC8qIFVwZGF0ZUNvbnRlbnRzLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NjNCMzgxM0ZDNkZF
OTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEYxQzNEREEx
QkJDRTA5RTAwRTUyM0U0IC8qIENlbGxTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0MjZB
NDgxNDYwQ0JCMzAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTc5RUUwQzAwMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjZDNzM1MTFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZp
cmVEZXRhaWwuaCBpbiBIZWFkZXJzICovLApAQCAtNjk1Miw2ICs3MDEzLDcgQEAKIAkJCQk3QjAy
NDc1NTFCODY4MkREMDA1NDI0NDAgLyogV0FTTUNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJN0JDNTQ3RDMxQjY5NTlBMTAwOTU5QjU4IC8qIFdBU01Gb3JtYXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdCMkUwMTBFMUI5N0FBNjkwMEVGNUQ1QyAvKiBXQVNNRnVuY3Rpb25Db21waWxlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0I4MzI5QkYxQkIyMUZFMzAwNjQ5QTZFIC8qIFdBU01GdW5j
dGlvbkxMVk1JUkdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0IwMjQ3NTcxQjg2ODJF
NDAwNTQyNDQwIC8qIFdBU01GdW5jdGlvblBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0Iw
MjQ3NTkxQjg2OEVCNzAwNTQyNDQwIC8qIFdBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdCMzlGNzZFMUI2MkRFMzIwMDM2MEZCNCAvKiBXQVNNTW9kdWxlUGFy
c2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTc3NjMsNiArNzgyNSw3IEBACiAJCQkJMTQyRTMxMzUx
MzRGRjBBNjAwQUZBREI1IC8qIEhhbmRsZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDJF
MzEzNzEzNEZGMEE2MDBBRkFEQjUgLyogSGFuZGxlU3RhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMTRCQTdBOTcxM0FBREZGODAwNUI3QzJDIC8qIEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMEYzMkJEMTAxQkIzNEYxOTAwOTNBNTdGIC8qIEhlYXBIZWxwZXJQb29sLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUMyNEQzMUUyMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkU1MjZCRDE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRp
bWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFN0JBNjBGMUExQTdDRUMwMEYxRjdCNCAvKiBI
ZWFwVmVyaWZpZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03OTE5LDYgKzc5ODIsNyBAQAogCQkJ
CTBGMkI2NkZBMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQjY2RkMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRB
cnJheVByb3RvdHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQjY2RkUxN0I2QjVBQjAw
QTdBRTNGIC8qIEpTVHlwZWRBcnJheXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREVBN0UyNDQx
QkJDNjc3MjAwRDc4NDQwIC8qIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODZFM0M2MUExNjdCQUJFRTAwNkQ3NjBBIC8qIEpTVmFsdWUubW0gaW4gU291
cmNlcyAqLywKIAkJCQkxNEJENUEzMjBBM0U5MUY2MDBCQUY1OUMgLyogSlNWYWx1ZVJlZi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NkUzQzYxQzE2N0JBQkVFMDA2RDc2MEEgLyogSlNWaXJ0dWFs
TWFjaGluZS5tbSBpbiBTb3VyY2VzICovLApAQCAtNzk5Miw3ICs4MDU2LDYgQEAKIAkJCQkwRjk4
MjA2MDE2QkZFMzgxMDAyNDBEMDIgLyogUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTk1NzQyRjY1MEREMTFGNUEwMDA5MTdGQiAvKiBQcm9maWxlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk1Q0Q0NTc2MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9y
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCURFQTdFMjQ0MUJCQzY3NzIwMEQ3ODQ0MCAvKiBKU1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk1QUI4MzU2MERB
NDNDMzAwMEJDODNGMyAvKiBQcm9maWxlTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkY3
MjlBRDE2NkFEMzVDMDAwRjVCQTMgLyogUHJvZmlsZXJCeXRlY29kZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkY3MjlBRTE2NkFEMzVDMDAwRjVCQTMgLyogUHJvZmlsZXJCeXRlY29kZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC04MTAwLDcgKzgxNjMsNiBAQAogCQkJCTBGRjQyNzQwMTU4RUJF
OEIwMDRDQjlGRiAvKiB1ZGlzODZfZGVjb2RlLmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0
MzE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2X2lucHV0LmMgaW4gU291cmNlcyAqLywKIAkJCQkw
RkY0Mjc0RDE1OEVCRkU2MDA0Q0I5RkYgLyogdWRpczg2X2l0YWJfaG9sZGVyLmMgaW4gU291cmNl
cyAqLywKLQkJCQkwRjMyQkQxMDFCQjM0RjE5MDA5M0E1N0YgLyogSGVhcEhlbHBlclBvb2wuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NDUxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl9z
eW4tYXR0LmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0NjE1OEVCRTkxMDA0Q0I5RkYgLyog
dWRpczg2X3N5bi1pbnRlbC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NDcxNThFQkU5MTAw
NENCOUZGIC8qIHVkaXM4Nl9zeW4uYyBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvVXBkYXRlQ29udGVudHMucHkgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9VcGRhdGVDb250ZW50cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzZkNDZmYjRj
NDIzMDJiODVmZjEwYzg1MWViMzRjMWUyNzg5NGMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvVXBkYXRlQ29udGVudHMucHkKQEAgLTAsMCArMSw0OCBA
QAorIyEvdXNyL2Jpbi9weXRob24KKworIyBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorIyAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
IyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorIyBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHN5cworaW1wb3J0
IG9zCisKK2Fzc2VydChsZW4oc3lzLmFyZ3YpID09IDMpCisKK2NvbXAgPSBzeXMuYXJndlsxXQor
ZmlsZW5hbWUgPSBzeXMuYXJndlsyXQorCit0ID0gRmFsc2UKKworaWYgb3MucGF0aC5pc2ZpbGUo
ZmlsZW5hbWUpOgorICAgIGYgPSBvcGVuKGZpbGVuYW1lLCAncicpCisgICAgY29tcGFyYXRvciA9
IGYucmVhZCgpCisgICAgZi5jbG9zZSgpCisgICAgdCA9IFRydWUKKworaWYgKG5vdCB0IG9yIGNv
bXAgIT0gY29tcGFyYXRvcik6CisgICAgZiA9IG9wZW4oZmlsZW5hbWUsICd3JykKKyAgICBmLndy
aXRlKGNvbXApCisgICAgZi5jbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy9idWlsdGlucy9fX2luaXRfXy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL2J1aWx0aW5zL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkZmNiYTk4MWQ4ZjhkYTA3
ODEzNThjZmU2NGZhMWM3ODA3NGExNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9fX2luaXRfXy5weQpAQCAtMCwwICsxLDMgQEAKKyMg
UmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZSBm
aWxlcworCitmcm9tIGJ1aWx0aW5zIGltcG9ydCAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGlucy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkZmVkNzY2YWYx
NTBiZGFlNGQxYjJjZTc1OTFmODNmMDU5ZjQxNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGlucy5weQpAQCAtMCwwICsxLDEy
IEBACisjIFRoaXMgZmlsZSBpcyB1c2VkIHRvIHNpbXVsYXRlIHRoZSBidWlsdGlucy8gZGlyZWN0
b3J5IHdoZW4gZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKyMgaXMgcnVuIGZyb20gSmF2YVNjcmlw
dENvcmUgZnJhbWV3b3JrJ3MgcHJpdmF0ZSBoZWFkZXJzIGRpcmVjdG9yeSwgd2hpY2ggaXMgZmxh
dHRlbmVkLgorCitmcm9tIGJ1aWx0aW5zX21vZGVsIGltcG9ydCAqCitmcm9tIGJ1aWx0aW5zX3Rl
bXBsYXRlcyBpbXBvcnQgKgorCitmcm9tIGJ1aWx0aW5zX2dlbmVyYXRvciBpbXBvcnQgKgorZnJv
bSBnZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9oZWFkZXIgaW1wb3J0ICoKK2Zyb20gZ2VuZXJh
dGVfYnVpbHRpbnNfY29tYmluZWRfaW1wbGVtZW50YXRpb24gaW1wb3J0ICoKK2Zyb20gZ2VuZXJh
dGVfYnVpbHRpbnNfc2VwYXJhdGVfaGVhZGVyIGltcG9ydCAqCitmcm9tIGdlbmVyYXRlX2J1aWx0
aW5zX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uIGltcG9ydCAqCitmcm9tIGdlbmVyYXRlX2J1aWx0
aW5zX3NlcGFyYXRlX3dyYXBwZXIgaW1wb3J0ICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5weSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43YzIxZjg2YjZkNGE5NGFhM2JjZDczNWVjNGZkODE5Y2JlMThmMWJiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRp
bnNfZ2VuZXJhdG9yLnB5CkBAIC0wLDAgKzEsMTI4IEBACisjIS91c3IvYmluL2VudiBweXRob24K
KyMKKyMgQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHJlCitmcm9tIHN0cmlu
ZyBpbXBvcnQgVGVtcGxhdGUKKworZnJvbSBidWlsdGluc19tb2RlbCBpbXBvcnQgQnVpbHRpbkZ1
bmN0aW9uCitmcm9tIGJ1aWx0aW5zX3RlbXBsYXRlcyBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3JU
ZW1wbGF0ZXMgYXMgVGVtcGxhdGVzCisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwn
KQorCisjIFRoZXNlIG1hdGNoIFdLX2xjZmlyc3QgYW5kIFdLX3VjZmlyc3QgZGVmaW5lZCBpbiBD
b2RlR2VuZXJhdG9yLnBtLgorZGVmIFdLX2xjZmlyc3Qoc3RyKToKKyAgICBzdHIgPSBzdHJbOjFd
Lmxvd2VyKCkgKyBzdHJbMTpdCisgICAgc3RyID0gc3RyLnJlcGxhY2UoJ2hUTUwnLCAnaHRtbCcp
CisgICAgc3RyID0gc3RyLnJlcGxhY2UoJ3VSTCcsICd1cmwnKQorICAgIHN0ciA9IHN0ci5yZXBs
YWNlKCdqUycsICdqcycpCisgICAgc3RyID0gc3RyLnJlcGxhY2UoJ3hNTCcsICd4bWwnKQorICAg
IHN0ciA9IHN0ci5yZXBsYWNlKCd4U0xUJywgJ3hzbHQnKQorICAgIHN0ciA9IHN0ci5yZXBsYWNl
KCdjU1MnLCAnY3NzJykKKyAgICByZXR1cm4gc3RyCisKK2RlZiBXS191Y2ZpcnN0KHN0cik6Cisg
ICAgc3RyID0gc3RyWzoxXS51cHBlcigpICsgc3RyWzE6XQorICAgIHN0ciA9IHN0ci5yZXBsYWNl
KCdYbWwnLCAnWE1MJykKKyAgICBzdHIgPSBzdHIucmVwbGFjZSgnU3ZnJywgJ1NWRycpCisgICAg
cmV0dXJuIHN0cgorCitjbGFzcyBCdWlsdGluc0dlbmVyYXRvcjoKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgbW9kZWwpOgorICAgICAgICBzZWxmLl9tb2RlbCA9IG1vZGVsCisKKyAgICBkZWYgbW9k
ZWwoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9tb2RlbAorCisgICAgZGVmIGdlbmVyYXRl
X2xpY2Vuc2Uoc2VsZik6CisgICAgICAgIHJhd19saWNlbnNlID0gVGVtcGxhdGUoVGVtcGxhdGVz
LkxpY2Vuc2VUZXh0KS5zdWJzdGl0dXRlKE5vbmUpCisgICAgICAgIGNvcHlyaWdodHMgPSBzZWxm
Ll9tb2RlbC5jb3B5cmlnaHRzKCkKKyAgICAgICAgY29weXJpZ2h0cy5zb3J0KCkKKworICAgICAg
ICBsaWNlbnNlX2Jsb2NrID0gW10KKyAgICAgICAgbGljZW5zZV9ibG9jay5hcHBlbmQoIi8qIikK
KyAgICAgICAgZm9yIGNvcHlyaWdodCBpbiBjb3B5cmlnaHRzOgorICAgICAgICAgICAgbGljZW5z
ZV9ibG9jay5hcHBlbmQoIiAqIENvcHlyaWdodCAoYykgJXMiICUgY29weXJpZ2h0KQorICAgICAg
ICBpZiBsZW4oY29weXJpZ2h0cykgPiAwOgorICAgICAgICAgICAgbGljZW5zZV9ibG9jay5hcHBl
bmQoIiAqICIpCisKKyAgICAgICAgZm9yIGxpbmUgaW4gcmF3X2xpY2Vuc2Uuc3BsaXQoJ1xuJyk6
CisgICAgICAgICAgICBsaWNlbnNlX2Jsb2NrLmFwcGVuZCgiICogIiArIGxpbmUpCisKKyAgICAg
ICAgbGljZW5zZV9ibG9jay5hcHBlbmQoIiAqLyIpCisKKyAgICAgICAgcmV0dXJuICdcbicuam9p
bihsaWNlbnNlX2Jsb2NrKQorCisgICAgZGVmIGdlbmVyYXRlX2luY2x1ZGVzX2Zyb21fZW50cmll
cyhzZWxmLCBlbnRyaWVzKToKKyAgICAgICAgaW5jbHVkZXMgPSBzZXQoKQorICAgICAgICBmb3Ig
ZW50cnkgaW4gZW50cmllczoKKyAgICAgICAgICAgIChhbGxvd2VkX2ZyYW1ld29ya19uYW1lcywg
ZGF0YSkgPSBlbnRyeQorICAgICAgICAgICAgKGZyYW1ld29ya19uYW1lLCBoZWFkZXJfcGF0aCkg
PSBkYXRhCisKKyAgICAgICAgICAgIGlmIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsubmFtZSBub3Qg
aW4gYWxsb3dlZF9mcmFtZXdvcmtfbmFtZXM6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAg
ICAgICAgICAgIGlmIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsubmFtZSAhPSBmcmFtZXdvcmtfbmFt
ZToKKyAgICAgICAgICAgICAgICBpbmNsdWRlcy5hZGQoIiNpbmNsdWRlIDwlcz4iICUgaGVhZGVy
X3BhdGgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGluY2x1ZGVzLmFkZCgi
I2luY2x1ZGUgXCIlc1wiIiAlIG9zLnBhdGguYmFzZW5hbWUoaGVhZGVyX3BhdGgpKQorCisgICAg
ICAgIHNvcnRlZF9pbmNsdWRlcyA9IHNvcnRlZChsaXN0KGluY2x1ZGVzKSkKKyAgICAgICAgIyBB
bHdheXMgaW5jbHVkZSBjb25maWcuaCBhbmQgdGhlIGNvdW50ZXJwYXJ0IGhlYWRlciBiZWZvcmUg
b3RoZXIgaGVhZGVycy4KKyAgICAgICAgbmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChzZWxm
Lm91dHB1dF9maWxlbmFtZSgpKQorICAgICAgICBpZiBleHQgIT0gJy5oJzoKKyAgICAgICAgICAg
IHNvcnRlZF9pbmNsdWRlc1s6MF0gPSBbCisgICAgICAgICAgICAgICAgIiNpbmNsdWRlIFwiY29u
ZmlnLmhcIiIsCisgICAgICAgICAgICAgICAgIiNpbmNsdWRlIFwiJXMuaFwiIiAlIG5hbWUsCisg
ICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICBdCisKKyAgICAgICAgcmV0dXJuIHNvcnRl
ZF9pbmNsdWRlcworCisgICAgIyBUaGVzZSBtZXRob2RzIGFyZSBvdmVycmlkZGVuIGJ5IHN1YmNs
YXNzZXMuCisgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKKyAgICAgICAgcGFzcworCisg
ICAgZGVmIG91dHB1dF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgIyBIZWxw
ZXIgbWV0aG9kcy4KKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgbWFuZ2xlZE5hbWVGb3JG
dW5jdGlvbihmdW5jdGlvbik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGZ1bmN0aW9uLCBC
dWlsdGluRnVuY3Rpb24pOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJJbnZhbGlkIGFy
Z3VtZW50IHBhc3NlZCB0byBtYW5nbGVkTmFtZUZvckZ1bmN0aW9uKCkiKQorCisgICAgICAgIG9i
amVjdF9uYW1lID0gZnVuY3Rpb24ub2JqZWN0Lm9iamVjdF9uYW1lCisgICAgICAgIG1hbmdsZWRf
bmFtZSA9ICIlcyVzIiAlIChXS19sY2ZpcnN0KG9iamVjdF9uYW1lKSwgV0tfdWNmaXJzdChmdW5j
dGlvbi5mdW5jdGlvbl9uYW1lKSkKKworICAgICAgICBkZWYgdG9DYW1lbChtYXRjaCk6CisgICAg
ICAgICAgICBzdHIgPSBtYXRjaC5ncm91cCgwKQorICAgICAgICAgICAgcmV0dXJuIHN0clsxXS51
cHBlcigpCisgICAgICAgIG1hbmdsZWRfbmFtZSA9IHJlLnN1YihyJ1wuW2Etel0nLCB0b0NhbWVs
LCBtYW5nbGVkX25hbWUsIGZsYWdzPXJlLklHTk9SRUNBU0UpCisgICAgICAgIGlmIGZ1bmN0aW9u
LmlzX2NvbnN0cnVjdG9yOgorICAgICAgICAgICAgbWFuZ2xlZF9uYW1lID0gbWFuZ2xlZF9uYW1l
ICsgIkNvbnN0cnVjdG9yIgorICAgICAgICByZXR1cm4gbWFuZ2xlZF9uYW1lCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19tb2RlbC5w
eSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVs
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmNiZTk0YmFlYzY4NDdkMTFiMTA0YTQ4MTE3ZDRkNGE3OWQ5ODZiNWIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlu
cy9idWlsdGluc19tb2RlbC5weQpAQCAtMCwwICsxLDI0MyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgbG9n
Z2luZworaW1wb3J0IHJlCitpbXBvcnQgb3MKKworbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2ds
b2JhbCcpCisKK19GUkFNRVdPUktfQ09ORklHX01BUCA9IHsKKyAgICAiR2xvYmFsIjogeworICAg
IH0sCisgICAgIkphdmFTY3JpcHRDb3JlIjogeworICAgICAgICAibWFjcm9fcHJlZml4IjogIkpT
QyIsCisgICAgICAgICJuYW1lc3BhY2UiOiAiSlNDIiwKKyAgICB9LAorICAgICJXZWJDb3JlIjog
eworICAgICAgICAibWFjcm9fcHJlZml4IjogIldFQkNPUkUiLAorICAgICAgICAibmFtZXNwYWNl
IjogIldlYkNvcmUiLAorICAgIH0sCit9CisKK2Z1bmN0aW9uSGVhZFJlZ0V4cCA9IHJlLmNvbXBp
bGUociIoPzpmdW5jdGlvbnxjb25zdHJ1Y3RvcilccytcdytccypcKC4qP1wpIiwgcmUuTVVMVElM
SU5FIHwgcmUuUykKK2Z1bmN0aW9uTmFtZVJlZ0V4cCA9IHJlLmNvbXBpbGUociIoPzpmdW5jdGlv
bnxjb25zdHJ1Y3RvcilccysoXHcrKVxzKlwoIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0
aW9uSXNDb25zdHJ1Y3RvclJlZ0V4cCA9IHJlLmNvbXBpbGUociJeY29uc3RydWN0b3IiLCByZS5N
VUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIgPSByZS5jb21waWxlKHIi
Xig/OmZ1bmN0aW9ufGNvbnN0cnVjdG9yKVxzKyg/Olx3KylccypcKCgoPzpccypcdyspP1xzKig/
OlxzKixccypcdyspKik/XHMqXCkiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorCittdWx0aWxpbmVD
b21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXCouKj9cKlwvIiwgcmUuTVVMVElMSU5FIHwg
cmUuUykKK3NpbmdsZUxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXC8uKj9cbiIs
IHJlLk1VTFRJTElORSB8IHJlLlMpCisKKworY2xhc3MgUGFyc2VFeGNlcHRpb24oRXhjZXB0aW9u
KToKKyAgICBwYXNzCisKKworY2xhc3MgRnJhbWV3b3JrOgorICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBuYW1lKToKKyAgICAgICAgc2VsZi5fc2V0dGluZ3MgPSBfRlJBTUVXT1JLX0NPTkZJR19NQVBb
bmFtZV0KKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisgICAgZGVmIHNldHRpbmcoc2VsZiwg
a2V5LCBkZWZhdWx0PScnKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NldHRpbmdzLmdldChrZXks
IGRlZmF1bHQpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGZyb21TdHJpbmcoZnJhbWV3
b3JrU3RyaW5nKToKKyAgICAgICAgaWYgZnJhbWV3b3JrU3RyaW5nID09ICJHbG9iYWwiOgorICAg
ICAgICAgICAgcmV0dXJuIEZyYW1ld29ya3MuR2xvYmFsCisKKyAgICAgICAgaWYgZnJhbWV3b3Jr
U3RyaW5nID09ICJKYXZhU2NyaXB0Q29yZSI6CisgICAgICAgICAgICByZXR1cm4gRnJhbWV3b3Jr
cy5KYXZhU2NyaXB0Q29yZQorCisgICAgICAgIGlmIGZyYW1ld29ya1N0cmluZyA9PSAiV2ViQ29y
ZSI6CisgICAgICAgICAgICByZXR1cm4gRnJhbWV3b3Jrcy5XZWJDb3JlCisKKyAgICAgICAgaWYg
ZnJhbWV3b3JrU3RyaW5nID09ICJUZXN0IjoKKyAgICAgICAgICAgIHJldHVybiBGcmFtZXdvcmtz
LlRlc3QKKworICAgICAgICByYWlzZSBQYXJzZUV4Y2VwdGlvbigiVW5rbm93biBmcmFtZXdvcms6
ICVzIiAlIGZyYW1ld29ya1N0cmluZykKKworCitjbGFzcyBGcmFtZXdvcmtzOgorICAgIEdsb2Jh
bCA9IEZyYW1ld29yaygiR2xvYmFsIikKKyAgICBKYXZhU2NyaXB0Q29yZSA9IEZyYW1ld29yaygi
SmF2YVNjcmlwdENvcmUiKQorICAgIFdlYkNvcmUgPSBGcmFtZXdvcmsoIldlYkNvcmUiKQorICAg
IFRlc3QgPSBGcmFtZXdvcmsoIlRlc3QiKQorCisKK2NsYXNzIEJ1aWx0aW5PYmplY3Q6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIG9iamVjdF9uYW1lLCBmdW5jdGlvbnMpOgorICAgICAgICBzZWxm
Lm9iamVjdF9uYW1lID0gb2JqZWN0X25hbWUKKyAgICAgICAgc2VsZi5mdW5jdGlvbnMgPSBmdW5j
dGlvbnMKKyAgICAgICAgc2VsZi5jb2xsZWN0aW9uID0gTm9uZSAgIyBTZXQgYnkgdGhlIG93bmlu
ZyBCdWlsdGluc0NvbGxlY3Rpb24KKworICAgICAgICBmb3IgZnVuY3Rpb24gaW4gc2VsZi5mdW5j
dGlvbnM6CisgICAgICAgICAgICBmdW5jdGlvbi5vYmplY3QgPSBzZWxmCisKKworY2xhc3MgQnVp
bHRpbkZ1bmN0aW9uOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jdGlvbl9uYW1lLCBmdW5j
dGlvbl9zb3VyY2UsIGlzX2NvbnN0cnVjdG9yLCBwYXJhbWV0ZXJzKToKKyAgICAgICAgc2VsZi5m
dW5jdGlvbl9uYW1lID0gZnVuY3Rpb25fbmFtZQorICAgICAgICBzZWxmLmZ1bmN0aW9uX3NvdXJj
ZSA9IGZ1bmN0aW9uX3NvdXJjZQorICAgICAgICBzZWxmLmlzX2NvbnN0cnVjdG9yID0gaXNfY29u
c3RydWN0b3IKKyAgICAgICAgc2VsZi5wYXJhbWV0ZXJzID0gcGFyYW1ldGVycworICAgICAgICBz
ZWxmLm9iamVjdCA9IE5vbmUgICMgU2V0IGJ5IHRoZSBvd25pbmcgQnVpbHRpbk9iamVjdAorCisg
ICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBmcm9tU3RyaW5nKGZ1bmN0aW9uX3N0cmluZyk6Cisg
ICAgICAgIGZ1bmN0aW9uX3NvdXJjZSA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuc3ViKCIiLCBm
dW5jdGlvbl9zdHJpbmcpCisgICAgICAgIGZ1bmN0aW9uX25hbWUgPSBmdW5jdGlvbk5hbWVSZWdF
eHAuZmluZGFsbChmdW5jdGlvbl9zb3VyY2UpWzBdCisgICAgICAgIGlzX2NvbnN0cnVjdG9yID0g
ZnVuY3Rpb25Jc0NvbnN0cnVjdG9yUmVnRXhwLm1hdGNoKGZ1bmN0aW9uX3NvdXJjZSkgIT0gTm9u
ZQorICAgICAgICBwYXJhbWV0ZXJzID0gW3Muc3RyaXAoKSBmb3IgcyBpbiBmdW5jdGlvblBhcmFt
ZXRlckZpbmRlci5maW5kYWxsKGZ1bmN0aW9uX3NvdXJjZSlbMF0uc3BsaXQoJywnKV0KKyAgICAg
ICAgaWYgbGVuKHBhcmFtZXRlcnNbMF0pID09IDA6CisgICAgICAgICAgICBwYXJhbWV0ZXJzID0g
W10KKworICAgICAgICByZXR1cm4gQnVpbHRpbkZ1bmN0aW9uKGZ1bmN0aW9uX25hbWUsIGZ1bmN0
aW9uX3NvdXJjZSwgaXNfY29uc3RydWN0b3IsIHBhcmFtZXRlcnMpCisKKyAgICBkZWYgX19zdHJf
XyhzZWxmKToKKyAgICAgICAgaW50ZXJmYWNlID0gIiVzKCVzKSIgJSAoc2VsZi5mdW5jdGlvbl9u
YW1lLCAnLCAnLmpvaW4oc2VsZi5wYXJhbWV0ZXJzKSkKKyAgICAgICAgaWYgc2VsZi5pc19jb25z
dHJ1Y3RvcjoKKyAgICAgICAgICAgIGludGVyZmFjZSA9IGludGVyZmFjZSArICIgW0NvbnN0cnVj
dG9yXSIKKworICAgICAgICByZXR1cm4gaW50ZXJmYWNlCisKKworY2xhc3MgQnVpbHRpbnNDb2xs
ZWN0aW9uOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcmFtZXdvcmtfbmFtZSk6CisgICAgICAg
IHNlbGYuX2NvcHlyaWdodF9saW5lcyA9IHNldCgpCisgICAgICAgIHNlbGYub2JqZWN0cyA9IFtd
CisgICAgICAgIHNlbGYuZnJhbWV3b3JrID0gRnJhbWV3b3JrLmZyb21TdHJpbmcoZnJhbWV3b3Jr
X25hbWUpCisgICAgICAgIGxvZy5kZWJ1ZygiQ3JlYXRlZCBuZXcgQnVpbHRpbnMgY29sbGVjdGlv
bi4iKQorCisgICAgZGVmIHBhcnNlX2J1aWx0aW5zX2ZpbGUoc2VsZiwgZmlsZW5hbWUsIHRleHQp
OgorICAgICAgICBsb2cuZGVidWcoIlBhcnNpbmcgYnVpbHRpbnMgZmlsZTogJXMiICUgZmlsZW5h
bWUpCisKKyAgICAgICAgcGFyc2VkX2NvcHlyaWdodHMgPSBzZXQoc2VsZi5fcGFyc2VfY29weXJp
Z2h0X2xpbmVzKHRleHQpKQorICAgICAgICBzZWxmLl9jb3B5cmlnaHRfbGluZXMgPSBzZWxmLl9j
b3B5cmlnaHRfbGluZXMudW5pb24ocGFyc2VkX2NvcHlyaWdodHMpCisKKyAgICAgICAgbG9nLmRl
YnVnKCJGb3VuZCBjb3B5cmlnaHQgbGluZXM6IikKKyAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5f
Y29weXJpZ2h0X2xpbmVzOgorICAgICAgICAgICAgbG9nLmRlYnVnKGxpbmUpCisgICAgICAgIGxv
Zy5kZWJ1ZygiIikKKworICAgICAgICBvYmplY3RfbmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4
dChvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKSkKKyAgICAgICAgbG9nLmRlYnVnKCJQYXJzaW5n
IG9iamVjdDogJXMiICUgb2JqZWN0X25hbWUpCisKKyAgICAgICAgcGFyc2VkX2Z1bmN0aW9ucyA9
IHNlbGYuX3BhcnNlX2Z1bmN0aW9ucyh0ZXh0KQorICAgICAgICBmb3IgZnVuY3Rpb24gaW4gcGFy
c2VkX2Z1bmN0aW9uczoKKyAgICAgICAgICAgIGZ1bmN0aW9uLm9iamVjdCA9IG9iamVjdF9uYW1l
CisKKyAgICAgICAgbG9nLmRlYnVnKCJQYXJzZWQgZnVuY3Rpb25zOiIpCisgICAgICAgIGZvciBm
dW5jIGluIHBhcnNlZF9mdW5jdGlvbnM6CisgICAgICAgICAgICBsb2cuZGVidWcoZnVuYykKKyAg
ICAgICAgbG9nLmRlYnVnKCIiKQorCisgICAgICAgIG5ld19vYmplY3QgPSBCdWlsdGluT2JqZWN0
KG9iamVjdF9uYW1lLCBwYXJzZWRfZnVuY3Rpb25zKQorICAgICAgICBuZXdfb2JqZWN0LmNvbGxl
Y3Rpb24gPSBzZWxmCisgICAgICAgIHNlbGYub2JqZWN0cy5hcHBlbmQobmV3X29iamVjdCkKKwor
ICAgIGRlZiBjb3B5cmlnaHRzKHNlbGYpOgorICAgICAgICBvd25lcl90b195ZWFycyA9IGRpY3Qo
KQorICAgICAgICBjb3B5cmlnaHRZZWFyUmVnRXhwID0gcmUuY29tcGlsZShyIihcZHs0fSlbLCBd
ezAsMn0iKQorICAgICAgICBvd25lclN0YXJ0UmVnRXhwID0gcmUuY29tcGlsZShyIlteXGQsIF0i
KQorCisgICAgICAgICMgUmV0dXJucyBkZWR1cGxpY2F0ZWQgY29weXJpZ2h0cyBrZXllZCBvbiB0
aGUgb3duZXIuCisgICAgICAgIGZvciBsaW5lIGluIHNlbGYuX2NvcHlyaWdodF9saW5lczoKKyAg
ICAgICAgICAgIHllYXJzID0gc2V0KGNvcHlyaWdodFllYXJSZWdFeHAuZmluZGFsbChsaW5lKSkK
KyAgICAgICAgICAgIG93bmVySW5kZXggPSBvd25lclN0YXJ0UmVnRXhwLnNlYXJjaChsaW5lKS5z
dGFydCgpCisgICAgICAgICAgICBvd25lciA9IGxpbmVbb3duZXJJbmRleDpdCisgICAgICAgICAg
ICBsb2cuZGVidWcoIkZvdW5kIHllYXJzOiAlcyBhbmQgb3duZXI6ICVzIiAlICh5ZWFycywgb3du
ZXIpKQorICAgICAgICAgICAgaWYgb3duZXIgbm90IGluIG93bmVyX3RvX3llYXJzOgorICAgICAg
ICAgICAgICAgIG93bmVyX3RvX3llYXJzW293bmVyXSA9IHNldCgpCisKKyAgICAgICAgICAgIG93
bmVyX3RvX3llYXJzW293bmVyXSA9IG93bmVyX3RvX3llYXJzW293bmVyXS51bmlvbih5ZWFycykK
KworICAgICAgICByZXN1bHQgPSBbXQorCisgICAgICAgIGZvciBvd25lciwgeWVhcnMgaW4gb3du
ZXJfdG9feWVhcnMuaXRlbXMoKToKKyAgICAgICAgICAgIHNvcnRlZF95ZWFycyA9IGxpc3QoeWVh
cnMpCisgICAgICAgICAgICBzb3J0ZWRfeWVhcnMuc29ydCgpCisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCIlcyAlcyIgJSAoJywgJy5qb2luKHNvcnRlZF95ZWFycyksIG93bmVyKSkKKworICAg
ICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgYWxsX2Z1bmN0aW9ucyhzZWxmKToKKyAgICAg
ICAgcmVzdWx0ID0gW10KKyAgICAgICAgZm9yIG9iamVjdCBpbiBzZWxmLm9iamVjdHM6CisgICAg
ICAgICAgICByZXN1bHQuZXh0ZW5kKG9iamVjdC5mdW5jdGlvbnMpCisKKyAgICAgICAgcmVzdWx0
LnNvcnQoKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICAjIFByaXZhdGUgbWV0aG9kcy4K
KworICAgIGRlZiBfcGFyc2VfY29weXJpZ2h0X2xpbmVzKHNlbGYsIHRleHQpOgorICAgICAgICBs
aWNlbnNlQmxvY2sgPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLmZpbmRhbGwodGV4dClbMF0KKyAg
ICAgICAgbGljZW5zZUJsb2NrID0gbGljZW5zZUJsb2NrWzpsaWNlbnNlQmxvY2suaW5kZXgoIlJl
ZGlzdHJpYnV0aW9uIildCisKKyAgICAgICAgY29weXJpZ2h0TGluZXMgPSBbXQorICAgICAgICBm
b3IgbGluZSBpbiBsaWNlbnNlQmxvY2suc3BsaXQoIlxuIik6CisgICAgICAgICAgICBsaW5lID0g
bGluZS5yZXBsYWNlKCIvKiIsICIiKQorICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgi
Ki8iLCAiIikKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIioiLCAiIikKKyAgICAg
ICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIkNvcHlyaWdodCIsICIiKQorICAgICAgICAgICAg
bGluZSA9IGxpbmUucmVwbGFjZSgiY29weXJpZ2h0IiwgIiIpCisgICAgICAgICAgICBsaW5lID0g
bGluZS5yZXBsYWNlKCIoQykiLCAiIikKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2Uo
IihjKSIsICIiKQorICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorCisgICAgICAgICAg
ICBpZiBsZW4obGluZSkgPT0gMDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAg
ICAgICBjb3B5cmlnaHRMaW5lcy5hcHBlbmQobGluZSkKKworICAgICAgICByZXR1cm4gY29weXJp
Z2h0TGluZXMKKworICAgIGRlZiBfcGFyc2VfZnVuY3Rpb25zKHNlbGYsIHRleHQpOgorICAgICAg
ICB0ZXh0ID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5zdWIoIi8qKi8iLCBzaW5nbGVMaW5lQ29t
bWVudFJlZ0V4cC5zdWIoIi8vXG4iLCB0ZXh0KSkKKworICAgICAgICBtYXRjaGVzID0gW2Z1bmMg
Zm9yIGZ1bmMgaW4gZnVuY3Rpb25IZWFkUmVnRXhwLmZpbmRpdGVyKHRleHQpXQorICAgICAgICBm
dW5jdGlvbkJvdW5kcyA9IFtdCisgICAgICAgIHN0YXJ0ID0gMAorICAgICAgICBlbmQgPSAwCisg
ICAgICAgIGZvciBtYXRjaCBpbiBtYXRjaGVzOgorICAgICAgICAgICAgc3RhcnQgPSBtYXRjaC5z
dGFydCgpCisgICAgICAgICAgICBpZiBzdGFydCA8IGVuZDoKKyAgICAgICAgICAgICAgICBjb250
aW51ZQorICAgICAgICAgICAgZW5kID0gbWF0Y2guZW5kKCkKKyAgICAgICAgICAgIHdoaWxlIHRl
eHRbZW5kXSAhPSAneyc6CisgICAgICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICAg
ICAgZGVwdGggPSAxCisgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAgICB3aGls
ZSBkZXB0aCA+IDA6CisgICAgICAgICAgICAgICAgaWYgdGV4dFtlbmRdID09ICd7JzoKKyAgICAg
ICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCArIDEKKyAgICAgICAgICAgICAgICBlbGlmIHRl
eHRbZW5kXSA9PSAnfSc6CisgICAgICAgICAgICAgICAgICAgIGRlcHRoID0gZGVwdGggLSAxCisg
ICAgICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICAgICAgZnVuY3Rpb25Cb3VuZHMu
YXBwZW5kKChzdGFydCwgZW5kKSkKKworICAgICAgICBmdW5jdGlvblN0cmluZ3MgPSBbdGV4dFtz
dGFydDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwgZW5kKSBpbiBmdW5jdGlvbkJvdW5kc10KKyAg
ICAgICAgcmV0dXJuIG1hcChCdWlsdGluRnVuY3Rpb24uZnJvbVN0cmluZywgZnVuY3Rpb25TdHJp
bmdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMv
YnVpbHRpbnNfdGVtcGxhdGVzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVp
bHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1ZWRmNjU2ZWEyY2VhNGQw
ZDRmMWY2OTI1ZDM0YThlMTBhZjNkODMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHkKQEAgLTAsMCAr
MSwyMTkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIw
MTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisj
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworIyBCdWlsdGlucyBnZW5lcmF0b3IgdGVtcGxhdGVzLCB3aGlj
aCBjYW4gYmUgZmlsbGVkIHdpdGggc3RyaW5nLlRlbXBsYXRlLgorCisKK2NsYXNzIEJ1aWx0aW5z
R2VuZXJhdG9yVGVtcGxhdGVzOgorCisgICAgTGljZW5zZVRleHQgPSAoCisgICAgIiIiUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKK2FyZSBtZXQ6CisxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKK0FORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCitCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCitDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCitJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
K0FSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKK1RIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIikKKwor
ICAgIERvTm90RWRpdFdhcm5pbmcgPSAoCisgICAgIiIiLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxF
LiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9y
CisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weSIiIikKKworICAgIEhlYWRlckluY2x1ZGVHdWFyZFRv
cCA9ICgKKyAgICAiIiIjaWZuZGVmICR7aGVhZGVyR3VhcmR9CisjZGVmaW5lICR7aGVhZGVyR3Vh
cmR9IiIiKQorCisgICAgSGVhZGVySW5jbHVkZUd1YXJkQm90dG9tID0gKAorICAgICIiIiNlbmRp
ZiAvLyAke2hlYWRlckd1YXJkfQorIiIiKQorCisgICAgTmFtZXNwYWNlVG9wID0gKAorICAgICIi
Im5hbWVzcGFjZSAke25hbWVzcGFjZX0geyIiIikKKworICAgIE5hbWVzcGFjZUJvdHRvbSA9ICgK
KyAgICAiIiJ9IC8vIG5hbWVzcGFjZSAke25hbWVzcGFjZX0iIiIpCisKKyAgICBDb21iaW5lZEhl
YWRlclN0YXRpY01hY3JvcyA9ICgKKyAgICAiIiIjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5F
UkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKKyAgICBKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisKKyR7
bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFU
T1IpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lICR7bWFjcm9Q
cmVmaXh9X0JVSUxUSU5fRVhJU1RTKG9iamVjdCwgZnVuYykgZGVmaW5lZCAke21hY3JvUHJlZml4
fV9CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jIiIiKQorCisgICAgU2VwYXJhdGVIZWFk
ZXJTdGF0aWNNYWNyb3MgPSAoCisgICAgIiIiI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJB
VE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCisgICAgSlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCiske21h
Y3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TmFtZX1fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJ
TFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVm
aW5lICR7bWFjcm9QcmVmaXh9X0JVSUxUSU5fJHtvYmplY3ROYW1lfV9FWElTVFMob2JqZWN0LCBm
dW5jKSBkZWZpbmVkICR7bWFjcm9QcmVmaXh9X0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1
bmMiIiIpCisKKyAgICBDb21iaW5lZEpTQ0ltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9zID0gKAor
ICAgICIiIgorI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0
aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2Rl
TmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAore1xcCisgICAgcmV0dXJuIHZtLmJ1aWx0
aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWls
dGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsgXAorfQorJHttYWNyb1ByZWZp
eH1fRk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVm
IERFRklORV9CVUlMVElOX0dFTkVSQVRPUgorIiIiKQorCisgICAgU2VwYXJhdGVKU0NJbXBsZW1l
bnRhdGlvblN0YXRpY01hY3JvcyA9ICgKKyAgICAiIiIKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5f
R0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCitKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwK
K3tcXAorICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1
dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3Vy
Y2UoKSk7IFwKK30KKyR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJ
Tl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9H
RU5FUkFUT1IKKyIiIikKKworICAgIENvbWJpbmVkV2ViQ29yZUltcGxlbWVudGF0aW9uU3RhdGlj
TWFjcm9zID0gKAorICAgICAgICAiIiIKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9S
KGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCitKU0M6OkZ1bmN0aW9u
RXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKK3tcXAorICAg
IEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEq
Pih2bS5jbGllbnREYXRhKTsgXFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0
aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+
bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1
aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpKTsgXFwKK30KKyR7bWFjcm9QcmVmaXh9X0ZPUkVB
Q0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVf
QlVJTFRJTl9HRU5FUkFUT1IKKyIiIikKKworICAgIFNlcGFyYXRlV2ViQ29yZUltcGxlbWVudGF0
aW9uU3RhdGljTWFjcm9zID0gKAorICAgICAgICAiIiIKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5f
R0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCitKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwK
K3tcXAorICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNs
aWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVp
bHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1
dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0
TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpKTsgXFwKK30KKyR7bWFjcm9QcmVm
aXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dF
TkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKyIiIikKKworICAgIFNl
cGFyYXRlV3JhcHBlckhlYWRlckJvaWxlcnBsYXRlID0gKAorICAgICIiImNsYXNzICR7b2JqZWN0
TmFtZX1CdWlsdGluc1dyYXBwZXIgOiBwcml2YXRlIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCAke29iamVjdE5hbWV9QnVpbHRpbnNXcmFwcGVyKEpTQzo6Vk0q
IHZtKQorICAgICAgICA6IG1fdm0oKnZtKQorICAgICAgICAke21hY3JvUHJlZml4fV9GT1JFQUNI
XyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX0JVSUxUSU5f
TkFNRVMpCisjZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBm
dW5jdGlvbk5hbWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKEpTQzo6bWFrZVNvdXJjZShT
dHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFtZSwgbGVuZ3RoKSkpCisgICAgICAg
ICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RFKElOSVRJ
QUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5f
U09VUkNFX01FTUJFUlMKKyAgICB7CisgICAgfQorCisjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VY
RUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcXAorICAgIEpTQzo6VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXFwKKyAgICBjb25zdCBK
U0M6OlNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNT
b3VyY2U7IH0KKyAgICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxU
SU5fQ09ERShFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJ
Tl9FWEVDVVRBQkxFUworCisgICAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3Jv
fV9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNT
T1IpCisKKyAgICB2b2lkIGV4cG9ydE5hbWVzKCk7CisKK3ByaXZhdGU6CisgICAgSlNDOjpWTSYg
bV92bTsKKworICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJ
Tl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FUykKKworI2RlZmluZSBERUNMQVJF
X0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFxcCisg
ICAgSlNDOjpTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7XFwKKyAgICBKU0M6OldlYWs8SlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4gbV8jI25hbWUjI0V4ZWN1dGFibGU7CisgICAg
JHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoREVDTEFS
RV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0Vf
TUVNQkVSUworCit9OworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUs
IGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcXAoraW5saW5lIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqICR7b2JqZWN0TmFtZX1CdWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4ZWN1dGFibGUo
KSBcXAore1xcCisgICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSlcXAorICAgICAgICBtXyMj
bmFtZSMjRXhlY3V0YWJsZSA9IEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlPihKU0M6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fdm0sIG1fIyNuYW1lIyNTb3VyY2Us
IGZ1bmN0aW9uTmFtZSMjUHVibGljTmFtZSgpLCBzXyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0eSks
IHRoaXMsICZtXyMjbmFtZSMjRXhlY3V0YWJsZSk7XFwKKyAgICByZXR1cm4gbV8jI25hbWUjI0V4
ZWN1dGFibGUuZ2V0KCk7XFwKK30KKyR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNy
b31fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIERFRklO
RV9CVUlMVElOX0VYRUNVVEFCTEVTCisKK2lubGluZSB2b2lkICR7b2JqZWN0TmFtZX1CdWlsdGlu
c1dyYXBwZXI6OmV4cG9ydE5hbWVzKCkKK3sKKyNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9OX05BTUUo
bmFtZSkgbV92bS5wcm9wZXJ0eU5hbWVzLT5hcHBlbmRFeHRlcm5hbE5hbWUobmFtZSMjUHVibGlj
TmFtZSgpLCBuYW1lIyNQcml2YXRlTmFtZSgpKTsKKyAgICAke21hY3JvUHJlZml4fV9GT1JFQUNI
XyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShFWFBPUlRfRlVOQ1RJT05fTkFN
RSkKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT05fTkFNRQorfQorCitjbGFzcyAke29iamVjdE5hbWV9
QnVpbHRpbkZ1bmN0aW9ucyB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgJHtvYmplY3ROYW1lfUJ1
aWx0aW5GdW5jdGlvbnMoSlNDOjpWTSYgdm0pIDogbV92bSh2bSkgeyB9CisKKyAgICB2b2lkIGlu
aXQoSlNDOjpKU0dsb2JhbE9iamVjdCYpOworICAgIHZvaWQgdmlzaXQoSlNDOjpTbG90VmlzaXRv
ciYpOworCitwdWJsaWM6CisgICAgSlNDOjpWTSYgbV92bTsKKworI2RlZmluZSBERUNMQVJFX0JV
SUxUSU5fU09VUkNFX01FTUJFUlMoZnVuY3Rpb25OYW1lKSBcXAorICAgIEpTQzo6V3JpdGVCYXJy
aWVyPEpTQzo6SlNGdW5jdGlvbj4gbV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb247CisgICAgJHtt
YWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0ZVTkNUSU9OX05BTUUo
REVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9T
T1VSQ0VfTUVNQkVSUworfTsKKworaW5saW5lIHZvaWQgJHtvYmplY3ROYW1lfUJ1aWx0aW5GdW5j
dGlvbnM6OmluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworI2RlZmlu
ZSBFWFBPUlRfRlVOQ1RJT04oY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKVxcCisgICAg
bV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmplY3QsIEpTQzo6
SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKG1fdm0sIGNvZGVOYW1lIyNHZW5lcmF0
b3IobV92bSksICZnbG9iYWxPYmplY3QpKTsKKyAgICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7
b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShFWFBPUlRfRlVOQ1RJT04pCisjdW5kZWYgRVhQT1JU
X0ZVTkNUSU9OCit9CisKK2lubGluZSB2b2lkICR7b2JqZWN0TmFtZX1CdWlsdGluRnVuY3Rpb25z
Ojp2aXNpdChKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworI2RlZmluZSBWSVNJVF9GVU5D
VElPTihuYW1lKSB2aXNpdG9yLmFwcGVuZCgmbV8jI25hbWUjI0Z1bmN0aW9uKTsKKyAgICAke21h
Y3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShW
SVNJVF9GVU5DVElPTikKKyN1bmRlZiBWSVNJVF9GVU5DVElPTgorfQorIiIiKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRp
bnNfY29tYmluZWRfaGVhZGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVp
bHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaGVhZGVyLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUw
ODlmZGY1OWEyYmFlOTYxNWU5OGE4YTZlMmNjMjk4MDQ5M2U2MTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGlu
c19jb21iaW5lZF9oZWFkZXIucHkKQEAgLTAsMCArMSwxNjIgQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisj
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHJlCitpbXBvcnQgc3RyaW5nCitmcm9t
IHN0cmluZyBpbXBvcnQgVGVtcGxhdGUKKworZnJvbSBidWlsdGluc19nZW5lcmF0b3IgaW1wb3J0
IEJ1aWx0aW5zR2VuZXJhdG9yCitmcm9tIGJ1aWx0aW5zX3RlbXBsYXRlcyBpbXBvcnQgQnVpbHRp
bnNHZW5lcmF0b3JUZW1wbGF0ZXMgYXMgVGVtcGxhdGVzCisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9n
Z2VyKCdnbG9iYWwnKQorCisKK2NsYXNzIEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJHZW5lcmF0b3Io
QnVpbHRpbnNHZW5lcmF0b3IpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCk6CisgICAg
ICAgIEJ1aWx0aW5zR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYsIG1vZGVsKQorCisgICAgZGVmIG91
dHB1dF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuICIlc0J1aWx0aW5zLmgiICUgc2Vs
Zi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCduYW1lc3BhY2UnKQorCisgICAgZGVmIGdlbmVy
YXRlX291dHB1dChzZWxmKToKKyAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICduYW1lc3Bh
Y2UnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpLAorICAgICAg
ICAgICAgJ2hlYWRlckd1YXJkJzogc2VsZi5vdXRwdXRfZmlsZW5hbWUoKS5yZXBsYWNlKCcuJywg
J18nKSwKKyAgICAgICAgICAgICdtYWNyb1ByZWZpeCc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsu
c2V0dGluZygnbWFjcm9fcHJlZml4JyksCisgICAgICAgIH0KKworICAgICAgICBzZWN0aW9ucyA9
IFtdCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2xpY2Vuc2UoKSkKKyAg
ICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5Eb05vdEVkaXRXYXJuaW5n
KS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVt
cGxhdGVzLkhlYWRlckluY2x1ZGVHdWFyZFRvcCkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAg
c2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlvbnMoKSkKKyAg
ICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VUb3ApLnN1
YnN0aXR1dGUoYXJncykpCisgICAgICAgIGZvciBvYmplY3QgaW4gc2VsZi5tb2RlbCgpLm9iamVj
dHM6CisgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9zZWN0aW9uX2Zv
cl9vYmplY3Qob2JqZWN0KSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVf
c2VjdGlvbl9mb3JfY29kZV90YWJsZV9tYWNybygpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQo
c2VsZi5nZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX25hbWVfbWFjcm8oKSkKKyAgICAgICAgc2Vj
dGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5Db21iaW5lZEhlYWRlclN0YXRpY01hY3Jv
cykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRl
bXBsYXRlcy5OYW1lc3BhY2VCb3R0b20pLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rp
b25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuSGVhZGVySW5jbHVkZUd1YXJkQm90dG9tKS5z
dWJzdGl0dXRlKGFyZ3MpKQorCisgICAgICAgIHJldHVybiAiXG5cbiIuam9pbihzZWN0aW9ucykK
KworICAgIGRlZiBnZW5lcmF0ZV9mb3J3YXJkX2RlY2xhcmF0aW9ucyhzZWxmKToKKyAgICAgICAg
cmV0dXJuICIiIm5hbWVzcGFjZSBKU0MgeworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOworY2xh
c3MgVk07CisKK2VudW0gY2xhc3MgQ29uc3RydWN0QWJpbGl0eSA6IHVuc2lnbmVkOworfSIiIgor
CisgICAgZGVmIGdlbmVyYXRlX3NlY3Rpb25fZm9yX29iamVjdChzZWxmLCBvYmplY3QpOgorICAg
ICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZCgnLyogJXMgKi8nICUgb2JqZWN0
Lm9iamVjdF9uYW1lKQorICAgICAgICBsaW5lcy5leHRlbmQoc2VsZi5nZW5lcmF0ZV9leHRlcm5z
X2Zvcl9vYmplY3Qob2JqZWN0KSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCIiKQorICAgICAgICBs
aW5lcy5leHRlbmQoc2VsZi5nZW5lcmF0ZV9tYWNyb3NfZm9yX29iamVjdChvYmplY3QpKQorICAg
ICAgICBsaW5lcy5hcHBlbmQoIiIpCisgICAgICAgIGxpbmVzLmV4dGVuZChzZWxmLmdlbmVyYXRl
X2RlZmluZXNfZm9yX29iamVjdChvYmplY3QpKQorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxp
bmVzKQorCisgICAgZGVmIGdlbmVyYXRlX2V4dGVybnNfZm9yX29iamVjdChzZWxmLCBvYmplY3Qp
OgorICAgICAgICBsaW5lcyA9IFtdCisKKyAgICAgICAgZm9yIGZ1bmN0aW9uIGluIG9iamVjdC5m
dW5jdGlvbnM6CisgICAgICAgICAgICBmdW5jdGlvbl9hcmdzID0geworICAgICAgICAgICAgICAg
ICdjb2RlTmFtZSc6IEJ1aWx0aW5zR2VuZXJhdG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rpb24oZnVu
Y3Rpb24pICsgJ0NvZGUnLAorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoIiIiZXh0ZXJuIGNvbnN0IGNoYXIqIHNfJShjb2RlTmFtZSlzOworZXh0ZXJuIGNvbnN0IGlu
dCBzXyUoY29kZU5hbWUpc0xlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxp
dHkgc18lKGNvZGVOYW1lKXNDb25zdHJ1Y3RBYmlsaXR5OyIiIiAlIGZ1bmN0aW9uX2FyZ3MpCisK
KyAgICAgICAgcmV0dXJuIGxpbmVzCisKKyAgICBkZWYgZ2VuZXJhdGVfbWFjcm9zX2Zvcl9vYmpl
Y3Qoc2VsZiwgb2JqZWN0KToKKyAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICdtYWNyb1By
ZWZpeCc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbWFjcm9fcHJlZml4JyksCisg
ICAgICAgICAgICAnb2JqZWN0TWFjcm8nOiBvYmplY3Qub2JqZWN0X25hbWUucmVwbGFjZSgnLics
ICcnKS51cHBlcigpLAorICAgICAgICB9CisKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBs
aW5lcy5hcHBlbmQoIiNkZWZpbmUgJShtYWNyb1ByZWZpeClzX0ZPUkVBQ0hfJShvYmplY3RNYWNy
bylzX0JVSUxUSU5fREFUQShtYWNybykgXFwiICUgYXJncykKKyAgICAgICAgZm9yIGZ1bmN0aW9u
IGluIG9iamVjdC5mdW5jdGlvbnM6CisgICAgICAgICAgICBmdW5jdGlvbl9hcmdzID0geworICAg
ICAgICAgICAgICAgICdmdW5jTmFtZSc6IGZ1bmN0aW9uLmZ1bmN0aW9uX25hbWUsCisgICAgICAg
ICAgICAgICAgJ21hbmdsZWROYW1lJzogQnVpbHRpbnNHZW5lcmF0b3IubWFuZ2xlZE5hbWVGb3JG
dW5jdGlvbihmdW5jdGlvbiksCisgICAgICAgICAgICAgICAgJ3BhcmFtQ291bnQnOiBsZW4oZnVu
Y3Rpb24ucGFyYW1ldGVycyksCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxpbmVzLmFw
cGVuZCgiICAgIG1hY3JvKCUoZnVuY05hbWUpcywgJShtYW5nbGVkTmFtZSlzLCAlKHBhcmFtQ291
bnQpZCkgXFwiICUgZnVuY3Rpb25fYXJncykKKyAgICAgICAgcmV0dXJuIGxpbmVzCisKKyAgICBk
ZWYgZ2VuZXJhdGVfZGVmaW5lc19mb3Jfb2JqZWN0KHNlbGYsIG9iamVjdCk6CisgICAgICAgIGxp
bmVzID0gW10KKyAgICAgICAgZm9yIGZ1bmN0aW9uIGluIG9iamVjdC5mdW5jdGlvbnM6CisgICAg
ICAgICAgICBhcmdzID0geworICAgICAgICAgICAgICAgICdtYWNyb1ByZWZpeCc6IHNlbGYubW9k
ZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbWFjcm9fcHJlZml4JyksCisgICAgICAgICAgICAgICAg
J29iamVjdE1hY3JvJzogb2JqZWN0Lm9iamVjdF9uYW1lLnJlcGxhY2UoJy4nLCAnJykudXBwZXIo
KSwKKyAgICAgICAgICAgICAgICAnZnVuY3Rpb25NYWNybyc6IGZ1bmN0aW9uLmZ1bmN0aW9uX25h
bWUudXBwZXIoKSwKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiI2Rl
ZmluZSAlKG1hY3JvUHJlZml4KXNfQlVJTFRJTl8lKG9iamVjdE1hY3JvKXNfJShmdW5jdGlvbk1h
Y3JvKXMgMSIgJSBhcmdzKQorCisgICAgICAgIHJldHVybiBsaW5lcworCisgICAgZGVmIGdlbmVy
YXRlX3NlY3Rpb25fZm9yX2NvZGVfdGFibGVfbWFjcm8oc2VsZik6CisgICAgICAgIGFyZ3MgPSB7
CisgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRp
bmcoJ21hY3JvX3ByZWZpeCcpLAorICAgICAgICB9CisKKyAgICAgICAgbGluZXMgPSBbXQorICAg
ICAgICBsaW5lcy5hcHBlbmQoIiNkZWZpbmUgJShtYWNyb1ByZWZpeClzX0ZPUkVBQ0hfQlVJTFRJ
Tl9DT0RFKG1hY3JvKSBcXCIgJSBhcmdzKQorICAgICAgICBmb3IgZnVuY3Rpb24gaW4gc2VsZi5t
b2RlbCgpLmFsbF9mdW5jdGlvbnMoKToKKyAgICAgICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSB7Cisg
ICAgICAgICAgICAgICAgJ2Z1bmNOYW1lJzogZnVuY3Rpb24uZnVuY3Rpb25fbmFtZSwKKyAgICAg
ICAgICAgICAgICAnY29kZU5hbWUnOiBCdWlsdGluc0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvckZ1
bmN0aW9uKGZ1bmN0aW9uKSArICdDb2RlJywKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
bGluZXMuYXBwZW5kKCIgICAgbWFjcm8oJShjb2RlTmFtZSlzLCAlKGZ1bmNOYW1lKXMsIHNfJShj
b2RlTmFtZSlzTGVuZ3RoKSBcXCIgJSBmdW5jdGlvbl9hcmdzKQorICAgICAgICByZXR1cm4gJ1xu
Jy5qb2luKGxpbmVzKQorCisgICAgZGVmIGdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfbmFtZV9t
YWNybyhzZWxmKToKKyAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICdtYWNyb1ByZWZpeCc6
IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbWFjcm9fcHJlZml4JyksCisgICAgICAg
IH0KKworICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZCgiI2RlZmluZSAl
KG1hY3JvUHJlZml4KXNfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFxcIiAl
IGFyZ3MpCisgICAgICAgIHVuaXF1ZV9uYW1lcyA9IGxpc3Qoc2V0KFtmdW5jdGlvbi5mdW5jdGlv
bl9uYW1lIGZvciBmdW5jdGlvbiBpbiBzZWxmLm1vZGVsKCkuYWxsX2Z1bmN0aW9ucygpXSkpCisg
ICAgICAgIHVuaXF1ZV9uYW1lcy5zb3J0KCkKKyAgICAgICAgZm9yIGZ1bmN0aW9uX25hbWUgaW4g
dW5pcXVlX25hbWVzOgorICAgICAgICAgICAgZnVuY3Rpb25fYXJncyA9IHsKKyAgICAgICAgICAg
ICAgICAnZnVuY05hbWUnOiBmdW5jdGlvbl9uYW1lLAorICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBsaW5lcy5hcHBlbmQoIiAgICBtYWNybyglKGZ1bmNOYW1lKXMpIFxcIiAlIGZ1bmN0aW9u
X2FyZ3MpCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19jb21i
aW5lZF9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1
aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU4YzEzNDk2YzY4OGI4ZjA0YTlmYWFhM2QyMmU2YjQzYjIxYWRjNzcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0
ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weQpAQCAtMCwwICsxLDEyMCBAQAor
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJz
aXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisj
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgcmUKK2lt
cG9ydCBzdHJpbmcKK2Zyb20gc3RyaW5nIGltcG9ydCBUZW1wbGF0ZQoraW1wb3J0IGpzb24KKwor
ZnJvbSBidWlsdGluc19nZW5lcmF0b3IgaW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9yCitmcm9tIGJ1
aWx0aW5zX21vZGVsIGltcG9ydCBGcmFtZXdvcmssIEZyYW1ld29ya3MKK2Zyb20gYnVpbHRpbnNf
dGVtcGxhdGVzIGltcG9ydCBCdWlsdGluc0dlbmVyYXRvclRlbXBsYXRlcyBhcyBUZW1wbGF0ZXMK
KworbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcpCisKKworY2xhc3MgQnVpbHRpbnND
b21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEJ1aWx0aW5zR2VuZXJhdG9yKToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgbW9kZWwpOgorICAgICAgICBCdWlsdGluc0dlbmVyYXRvci5fX2lu
aXRfXyhzZWxmLCBtb2RlbCkKKworICAgIGRlZiBvdXRwdXRfZmlsZW5hbWUoc2VsZik6CisgICAg
ICAgIHJldHVybiAiJXNCdWlsdGlucy5jcHAiICUgc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0
aW5nKCduYW1lc3BhY2UnKQorCisgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKKyAgICAg
ICAgYXJncyA9IHsKKyAgICAgICAgICAgICduYW1lc3BhY2UnOiBzZWxmLm1vZGVsKCkuZnJhbWV3
b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpLAorICAgICAgICAgICAgJ21hY3JvUHJlZml4Jzogc2Vs
Zi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdtYWNyb19wcmVmaXgnKSwKKyAgICAgICAgfQor
CisgICAgICAgIHNlY3Rpb25zID0gW10KKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2Vu
ZXJhdGVfbGljZW5zZSgpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxh
dGVzLkRvTm90RWRpdFdhcm5pbmcpLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25z
LmFwcGVuZChzZWxmLmdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcygpKQorICAgICAgICBzZWN0aW9u
cy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZVRvcCkuc3Vic3RpdHV0ZShhcmdz
KSkKKyAgICAgICAgc2VjdGlvbnMuZXh0ZW5kKHNlbGYuZ2VuZXJhdGVfZW1iZWRkZWRfY29kZV9z
dHJpbmdfc2VjdGlvbnMoKSkKKyAgICAgICAgaWYgc2VsZi5tb2RlbCgpLmZyYW1ld29yayBpcyBG
cmFtZXdvcmtzLkphdmFTY3JpcHRDb3JlOgorICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRl
bXBsYXRlKFRlbXBsYXRlcy5Db21iaW5lZEpTQ0ltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9zKS5z
dWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBlbGlmIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsgaXMg
RnJhbWV3b3Jrcy5XZWJDb3JlOgorICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRl
KFRlbXBsYXRlcy5Db21iaW5lZFdlYkNvcmVJbXBsZW1lbnRhdGlvblN0YXRpY01hY3Jvcykuc3Vi
c3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRl
cy5OYW1lc3BhY2VCb3R0b20pLnN1YnN0aXR1dGUoYXJncykpCisKKyAgICAgICAgcmV0dXJuICJc
blxuIi5qb2luKHNlY3Rpb25zKQorCisgICAgZGVmIGdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcyhz
ZWxmKToKKyAgICAgICAgaGVhZGVyX2luY2x1ZGVzID0gWworICAgICAgICAgICAgKFsiSmF2YVNj
cmlwdENvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgImJ1aWx0aW5z
L0J1aWx0aW5FeGVjdXRhYmxlcy5oIiksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKFsi
SmF2YVNjcmlwdENvcmUiLCAiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlw
dENvcmUiLCAicnVudGltZS9FeGVjdXRhYmxlLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAg
ICAgICAoWyJKYXZhU2NyaXB0Q29yZSIsICJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJK
YXZhU2NyaXB0Q29yZSIsICJydW50aW1lL0pTQ2VsbElubGluZXMuaCIpLAorICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3Jp
cHRDb3JlIiwgInJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIiksCisgICAgICAgICAgICApLAor
ICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENv
cmUiLCAicnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIiksCisgICAgICAgICAgICApLAorICAg
ICAgICAgICAgKFsiSmF2YVNjcmlwdENvcmUiLCAiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAg
ICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9WTS5oIiksCisgICAgICAgICAgICApLAorICAg
ICAgICBdCisKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihzZWxmLmdlbmVyYXRlX2luY2x1ZGVz
X2Zyb21fZW50cmllcyhoZWFkZXJfaW5jbHVkZXMpKQorCisgICAgZGVmIGdlbmVyYXRlX2VtYmVk
ZGVkX2NvZGVfc3RyaW5nX3NlY3Rpb25zKHNlbGYpOgorICAgICAgICBzdWJzZWN0aW9ucyA9IFtd
CisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBzZWxmLm1vZGVsKCkuYWxsX2Z1bmN0aW9ucygpOgor
ICAgICAgICAgICAgdGV4dCA9IGZ1bmN0aW9uLmZ1bmN0aW9uX3NvdXJjZQorICAgICAgICAgICAg
IyBXcmFwIGl0IGluIHBhcmVucyB0byBhdm9pZCBhZGRpbmcgdG8gZ2xvYmFsIHNjb3BlLgorICAg
ICAgICAgICAgdGV4dCA9ICIoZnVuY3Rpb24gIiArIHRleHRbdGV4dC5pbmRleCgiKCIpOl0gKyAi
KSIKKyAgICAgICAgICAgICMgTGF6eSB3YXkgdG8gZXNjYXBlIHF1b3RlcywgSSB0aGluaz8KKyAg
ICAgICAgICAgIHRleHRMaW5lcyA9IGpzb24uZHVtcHModGV4dClbMTotMV0uc3BsaXQoIlxcbiIp
CisgICAgICAgICAgICAjIFRoaXMgbG9va3Mgc2NhcnkgYmVjYXVzZSB3ZSBuZWVkIHRoZSBKUyBz
b3VyY2UgaXRzZWxmIHRvIGhhdmUgbmV3bGluZXMuCisgICAgICAgICAgICBlbWJlZGRlZFNvdXJj
ZSA9ICdcbicuam9pbihbJyAgICIlc1xcbiIgXFwnICUgbGluZSBmb3IgbGluZSBpbiB0ZXh0TGlu
ZXNdKQorCisgICAgICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gIkNhbm5vdENvbnN0cnVjdCIK
KyAgICAgICAgICAgIGlmIGZ1bmN0aW9uLmlzX2NvbnN0cnVjdG9yOgorICAgICAgICAgICAgICAg
IGNvbnN0cnVjdEFiaWxpdHkgPSAiQ2FuQ29uc3RydWN0IgorCisgICAgICAgICAgICBhcmdzID0g
eworICAgICAgICAgICAgICAgICdjb2RlTmFtZSc6IEJ1aWx0aW5zR2VuZXJhdG9yLm1hbmdsZWRO
YW1lRm9yRnVuY3Rpb24oZnVuY3Rpb24pICsgJ0NvZGUnLAorICAgICAgICAgICAgICAgICdlbWJl
ZGRlZFNvdXJjZSc6IGVtYmVkZGVkU291cmNlLAorICAgICAgICAgICAgICAgICdlbWJlZGRlZFNv
dXJjZUxlbmd0aCc6IGxlbihlbWJlZGRlZFNvdXJjZSkgKyAxLAorICAgICAgICAgICAgICAgICdj
YW5Db25zdHJ1Y3QnOiBjb25zdHJ1Y3RBYmlsaXR5CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGxpbmVzID0gW10KKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiY29uc3QgSlNDOjpDb25z
dHJ1Y3RBYmlsaXR5IHNfJShjb2RlTmFtZSlzQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3Ry
dWN0QWJpbGl0eTo6JShjYW5Db25zdHJ1Y3QpczsiICUgYXJncykKKyAgICAgICAgICAgIGxpbmVz
LmFwcGVuZCgiY29uc3QgaW50IHNfJShjb2RlTmFtZSlzTGVuZ3RoID0gJShlbWJlZGRlZFNvdXJj
ZUxlbmd0aClkOyIgJSBhcmdzKQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCJjb25zdCBjaGFy
KiBzXyUoY29kZU5hbWUpcyA9XG4lKGVtYmVkZGVkU291cmNlKXNcbjsiICUgYXJncykKKyAgICAg
ICAgICAgIHN1YnNlY3Rpb25zLmFwcGVuZCgnXG4nLmpvaW4obGluZXMpKQorCisgICAgICAgIHJl
dHVybiBzdWJzZWN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvYnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaGVhZGVyLnB5IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJh
dGVfaGVhZGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2M2YzNmIyMzViNTRiN2E1YjA2Mjk0NWNjZTlhNTky
MzQ2YzJmZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9oZWFkZXIucHkKQEAgLTAsMCAr
MSwxNzUgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIw
MTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitpbXBvcnQgbG9nZ2luZworaW1w
b3J0IHJlCitpbXBvcnQgc3RyaW5nCitmcm9tIHN0cmluZyBpbXBvcnQgVGVtcGxhdGUKKworZnJv
bSBidWlsdGluc19nZW5lcmF0b3IgaW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9yCitmcm9tIGJ1aWx0
aW5zX3RlbXBsYXRlcyBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3JUZW1wbGF0ZXMgYXMgVGVtcGxh
dGVzCisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwnKQorCisKK2NsYXNzIEJ1aWx0
aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0b3IoQnVpbHRpbnNHZW5lcmF0b3IpOgorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBtb2RlbCwgb2JqZWN0KToKKyAgICAgICAgQnVpbHRpbnNHZW5lcmF0b3Iu
X19pbml0X18oc2VsZiwgbW9kZWwpCisgICAgICAgIHNlbGYub2JqZWN0ID0gb2JqZWN0CisKKyAg
ICBkZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gIiVzQnVpbHRpbnMu
aCIgJSBzZWxmLm9iamVjdC5vYmplY3RfbmFtZQorCisgICAgZGVmIG1hY3JvX3ByZWZpeChzZWxm
KToKKyAgICAgICAgcmV0dXJuIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbWFjcm9f
cHJlZml4JykKKworICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6CisgICAgICAgIGFyZ3Mg
PSB7CisgICAgICAgICAgICAnbmFtZXNwYWNlJzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0
aW5nKCduYW1lc3BhY2UnKSwKKyAgICAgICAgICAgICdoZWFkZXJHdWFyZCc6IHNlbGYub3V0cHV0
X2ZpbGVuYW1lKCkucmVwbGFjZSgnLicsICdfJyksCisgICAgICAgICAgICAnbWFjcm9QcmVmaXgn
OiBzZWxmLm1hY3JvX3ByZWZpeCgpLAorICAgICAgICAgICAgJ29iamVjdE5hbWUnOiBzZWxmLm9i
amVjdC5vYmplY3RfbmFtZS51cHBlcigpLAorICAgICAgICB9CisKKyAgICAgICAgc2VjdGlvbnMg
PSBbXQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9saWNlbnNlKCkpCisg
ICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuRG9Ob3RFZGl0V2Fybmlu
Zykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRl
bXBsYXRlcy5IZWFkZXJJbmNsdWRlR3VhcmRUb3ApLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAg
IHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcygpKQorICAgICAg
ICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9mb3J3YXJkX2RlY2xhcmF0aW9ucygpKQor
ICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZVRvcCku
c3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVf
c2VjdGlvbl9mb3Jfb2JqZWN0KHNlbGYub2JqZWN0KSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5k
KHNlbGYuZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV90YWJsZV9tYWNybygpKQorICAgICAgICBz
ZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX25hbWVfbWFjcm8o
KSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5TZXBhcmF0ZUhl
YWRlclN0YXRpY01hY3Jvcykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBw
ZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VCb3R0b20pLnN1YnN0aXR1dGUoYXJncykp
CisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuSGVhZGVySW5jbHVk
ZUd1YXJkQm90dG9tKS5zdWJzdGl0dXRlKGFyZ3MpKQorCisgICAgICAgIHJldHVybiAiXG5cbiIu
am9pbihzZWN0aW9ucykKKworICAgIGRlZiBnZW5lcmF0ZV9mb3J3YXJkX2RlY2xhcmF0aW9ucyhz
ZWxmKToKKyAgICAgICAgcmV0dXJuICIiIm5hbWVzcGFjZSBKU0MgeworY2xhc3MgRnVuY3Rpb25F
eGVjdXRhYmxlOworfSIiIgorCisgICAgZGVmIGdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcyhzZWxm
KToKKyAgICAgICAgaGVhZGVyX2luY2x1ZGVzID0gWworICAgICAgICAgICAgKFsiV2ViQ29yZSJd
LAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAiYnVpbHRpbnMvQnVpbHRpblV0
aWxzLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAgIF0KKworICAgICAgICByZXR1cm4gJ1xu
Jy5qb2luKHNlbGYuZ2VuZXJhdGVfaW5jbHVkZXNfZnJvbV9lbnRyaWVzKGhlYWRlcl9pbmNsdWRl
cykpCisKKyAgICBkZWYgZ2VuZXJhdGVfc2VjdGlvbl9mb3Jfb2JqZWN0KHNlbGYsIG9iamVjdCk6
CisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCcvKiAlcyAqLycgJSBv
YmplY3Qub2JqZWN0X25hbWUpCisgICAgICAgIGxpbmVzLmV4dGVuZChzZWxmLmdlbmVyYXRlX2V4
dGVybnNfZm9yX29iamVjdChvYmplY3QpKQorICAgICAgICBsaW5lcy5hcHBlbmQoIiIpCisgICAg
ICAgIGxpbmVzLmV4dGVuZChzZWxmLmdlbmVyYXRlX21hY3Jvc19mb3Jfb2JqZWN0KG9iamVjdCkp
CisgICAgICAgIGxpbmVzLmFwcGVuZCgiIikKKyAgICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2Vu
ZXJhdGVfZGVmaW5lc19mb3Jfb2JqZWN0KG9iamVjdCkpCisgICAgICAgIHJldHVybiAnXG4nLmpv
aW4obGluZXMpCisKKyAgICBkZWYgZ2VuZXJhdGVfZXh0ZXJuc19mb3Jfb2JqZWN0KHNlbGYsIG9i
amVjdCk6CisgICAgICAgIGxpbmVzID0gW10KKworICAgICAgICBmb3IgZnVuY3Rpb24gaW4gb2Jq
ZWN0LmZ1bmN0aW9uczoKKyAgICAgICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSB7CisgICAgICAgICAg
ICAgICAgJ2NvZGVOYW1lJzogQnVpbHRpbnNHZW5lcmF0b3IubWFuZ2xlZE5hbWVGb3JGdW5jdGlv
bihmdW5jdGlvbikgKyAnQ29kZScsCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxpbmVz
LmFwcGVuZCgiIiJleHRlcm4gY29uc3QgY2hhciogc18lKGNvZGVOYW1lKXM7CitleHRlcm4gY29u
c3QgaW50IHNfJShjb2RlTmFtZSlzTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0
QWJpbGl0eSBzXyUoY29kZU5hbWUpc0NvbnN0cnVjdEFiaWxpdHk7IiIiICUgZnVuY3Rpb25fYXJn
cykKKworICAgICAgICByZXR1cm4gbGluZXMKKworICAgIGRlZiBnZW5lcmF0ZV9tYWNyb3NfZm9y
X29iamVjdChzZWxmLCBvYmplY3QpOgorICAgICAgICBhcmdzID0geworICAgICAgICAgICAgJ21h
Y3JvUHJlZml4Jzogc2VsZi5tYWNyb19wcmVmaXgoKSwKKyAgICAgICAgICAgICdvYmplY3RNYWNy
byc6IG9iamVjdC5vYmplY3RfbmFtZS5yZXBsYWNlKCcuJywgJ18nKS51cHBlcigpLAorICAgICAg
ICB9CisKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoIiNkZWZpbmUg
JShtYWNyb1ByZWZpeClzX0ZPUkVBQ0hfJShvYmplY3RNYWNybylzX0JVSUxUSU5fREFUQShtYWNy
bykgXFwiICUgYXJncykKKyAgICAgICAgZm9yIGZ1bmN0aW9uIGluIG9iamVjdC5mdW5jdGlvbnM6
CisgICAgICAgICAgICBmdW5jdGlvbl9hcmdzID0geworICAgICAgICAgICAgICAgICdmdW5jTmFt
ZSc6IGZ1bmN0aW9uLmZ1bmN0aW9uX25hbWUsCisgICAgICAgICAgICAgICAgJ21hbmdsZWROYW1l
JzogQnVpbHRpbnNHZW5lcmF0b3IubWFuZ2xlZE5hbWVGb3JGdW5jdGlvbihmdW5jdGlvbiksCisg
ICAgICAgICAgICAgICAgJ3BhcmFtQ291bnQnOiBsZW4oZnVuY3Rpb24ucGFyYW1ldGVycyksCisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiICAgIG1hY3JvKCUoZnVu
Y05hbWUpcywgJShtYW5nbGVkTmFtZSlzLCAlKHBhcmFtQ291bnQpZCkgXFwiICUgZnVuY3Rpb25f
YXJncykKKyAgICAgICAgcmV0dXJuIGxpbmVzCisKKyAgICBkZWYgZ2VuZXJhdGVfZGVmaW5lc19m
b3Jfb2JqZWN0KHNlbGYsIG9iamVjdCk6CisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgZm9y
IGZ1bmN0aW9uIGluIG9iamVjdC5mdW5jdGlvbnM6CisgICAgICAgICAgICBhcmdzID0geworICAg
ICAgICAgICAgICAgICdtYWNyb1ByZWZpeCc6IHNlbGYubWFjcm9fcHJlZml4KCksCisgICAgICAg
ICAgICAgICAgJ29iamVjdE1hY3JvJzogb2JqZWN0Lm9iamVjdF9uYW1lLnJlcGxhY2UoJy4nLCAn
XycpLnVwcGVyKCksCisgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uTWFjcm8nOiBmdW5jdGlvbi5m
dW5jdGlvbl9uYW1lLnVwcGVyKCksCisgICAgICAgICAgICB9CisgICAgICAgICAgICBsaW5lcy5h
cHBlbmQoIiNkZWZpbmUgJShtYWNyb1ByZWZpeClzX0JVSUxUSU5fJShvYmplY3RNYWNybylzXyUo
ZnVuY3Rpb25NYWNybylzIDEiICUgYXJncykKKworICAgICAgICByZXR1cm4gbGluZXMKKworICAg
IGRlZiBnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX3RhYmxlX21hY3JvKHNlbGYpOgorICAgICAg
ICBhcmdzID0geworICAgICAgICAgICAgJ21hY3JvUHJlZml4Jzogc2VsZi5tb2RlbCgpLmZyYW1l
d29yay5zZXR0aW5nKCdtYWNyb19wcmVmaXgnKSwKKyAgICAgICAgICAgICdvYmplY3RNYWNybyc6
IHNlbGYub2JqZWN0Lm9iamVjdF9uYW1lLnVwcGVyKCksCisgICAgICAgIH0KKworICAgICAgICBs
aW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZCgiI2RlZmluZSAlKG1hY3JvUHJlZml4KXNf
Rk9SRUFDSF8lKG9iamVjdE1hY3JvKXNfQlVJTFRJTl9DT0RFKG1hY3JvKSBcXCIgJSBhcmdzKQor
ICAgICAgICBmb3IgZnVuY3Rpb24gaW4gc2VsZi5vYmplY3QuZnVuY3Rpb25zOgorICAgICAgICAg
ICAgZnVuY3Rpb25fYXJncyA9IHsKKyAgICAgICAgICAgICAgICAnZnVuY05hbWUnOiBmdW5jdGlv
bi5mdW5jdGlvbl9uYW1lLAorICAgICAgICAgICAgICAgICdjb2RlTmFtZSc6IEJ1aWx0aW5zR2Vu
ZXJhdG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rpb24oZnVuY3Rpb24pICsgJ0NvZGUnLAorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiAgICBtYWNybyglKGNvZGVOYW1l
KXMsICUoZnVuY05hbWUpcywgc18lKGNvZGVOYW1lKXNMZW5ndGgpIFxcIiAlIGZ1bmN0aW9uX2Fy
Z3MpCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCisKKyAgICBkZWYgZ2VuZXJhdGVf
c2VjdGlvbl9mb3JfY29kZV9uYW1lX21hY3JvKHNlbGYpOgorICAgICAgICBhcmdzID0geworICAg
ICAgICAgICAgJ21hY3JvUHJlZml4Jzogc2VsZi5tYWNyb19wcmVmaXgoKSwKKyAgICAgICAgICAg
ICdvYmplY3RNYWNybyc6IHNlbGYub2JqZWN0Lm9iamVjdF9uYW1lLnVwcGVyKCksCisgICAgICAg
IH0KKworICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZCgiI2RlZmluZSAl
KG1hY3JvUHJlZml4KXNfRk9SRUFDSF8lKG9iamVjdE1hY3JvKXNfQlVJTFRJTl9GVU5DVElPTl9O
QU1FKG1hY3JvKSBcXCIgJSBhcmdzKQorICAgICAgICB1bmlxdWVfbmFtZXMgPSBsaXN0KHNldChb
ZnVuY3Rpb24uZnVuY3Rpb25fbmFtZSBmb3IgZnVuY3Rpb24gaW4gc2VsZi5vYmplY3QuZnVuY3Rp
b25zXSkpCisgICAgICAgIHVuaXF1ZV9uYW1lcy5zb3J0KCkKKyAgICAgICAgZm9yIGZ1bmN0aW9u
X25hbWUgaW4gdW5pcXVlX25hbWVzOgorICAgICAgICAgICAgZnVuY3Rpb25fYXJncyA9IHsKKyAg
ICAgICAgICAgICAgICAnZnVuY05hbWUnOiBmdW5jdGlvbl9uYW1lLAorICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiAgICBtYWNybyglKGZ1bmNOYW1lKXMpIFxcIiAl
IGZ1bmN0aW9uX2FyZ3MpCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWls
dGluc19zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9u
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBmZjk1NjQwZmY3NmRiYTQzNjQxZWQ0MTU0NTU1MjRlNjQ3Y2U0ZWMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlu
cy9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weQpAQCAtMCwwICsx
LDEyOSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxNCwg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAx
NCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCBsb2dnaW5nCitpbXBv
cnQgcmUKK2ltcG9ydCBzdHJpbmcKK2Zyb20gc3RyaW5nIGltcG9ydCBUZW1wbGF0ZQoraW1wb3J0
IGpzb24KKworZnJvbSBidWlsdGluc19nZW5lcmF0b3IgaW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9y
LCBXS19sY2ZpcnN0Citmcm9tIGJ1aWx0aW5zX21vZGVsIGltcG9ydCBGcmFtZXdvcmssIEZyYW1l
d29ya3MKK2Zyb20gYnVpbHRpbnNfdGVtcGxhdGVzIGltcG9ydCBCdWlsdGluc0dlbmVyYXRvclRl
bXBsYXRlcyBhcyBUZW1wbGF0ZXMKKworbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcp
CisKKworY2xhc3MgQnVpbHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEJ1aWx0
aW5zR2VuZXJhdG9yKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZWwsIG9iamVjdCk6Cisg
ICAgICAgIEJ1aWx0aW5zR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYsIG1vZGVsKQorICAgICAgICBz
ZWxmLm9iamVjdCA9IG9iamVjdAorCisgICAgZGVmIG91dHB1dF9maWxlbmFtZShzZWxmKToKKyAg
ICAgICAgcmV0dXJuICIlc0J1aWx0aW5zLmNwcCIgJSBzZWxmLm9iamVjdC5vYmplY3RfbmFtZQor
CisgICAgZGVmIG1hY3JvX3ByZWZpeChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYubW9kZWwo
KS5mcmFtZXdvcmsuc2V0dGluZygnbWFjcm9fcHJlZml4JykKKworICAgIGRlZiBnZW5lcmF0ZV9v
dXRwdXQoc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbmFtZXNwYWNlJzog
c2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCduYW1lc3BhY2UnKSwKKyAgICAgICAgICAg
ICdtYWNyb1ByZWZpeCc6IHNlbGYubWFjcm9fcHJlZml4KCksCisgICAgICAgICAgICAnb2JqZWN0
TWFjcm8nOiBzZWxmLm9iamVjdC5vYmplY3RfbmFtZS51cHBlcigpLAorICAgICAgICAgICAgJ29i
amVjdE5hbWVMQyc6IFdLX2xjZmlyc3Qoc2VsZi5vYmplY3Qub2JqZWN0X25hbWUpLAorICAgICAg
ICB9CisKKyAgICAgICAgc2VjdGlvbnMgPSBbXQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2Vs
Zi5nZW5lcmF0ZV9saWNlbnNlKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShU
ZW1wbGF0ZXMuRG9Ob3RFZGl0V2FybmluZykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2Vj
dGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKCkpCisgICAgICAgIHNl
Y3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlVG9wKS5zdWJzdGl0dXRl
KGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5leHRlbmQoc2VsZi5nZW5lcmF0ZV9lbWJlZGRlZF9j
b2RlX3N0cmluZ19zZWN0aW9ucygpKQorICAgICAgICBpZiBzZWxmLm1vZGVsKCkuZnJhbWV3b3Jr
IGlzIEZyYW1ld29ya3MuSmF2YVNjcmlwdENvcmU6CisgICAgICAgICAgICBzZWN0aW9ucy5hcHBl
bmQoVGVtcGxhdGUoVGVtcGxhdGVzLlNlcGFyYXRlSlNDSW1wbGVtZW50YXRpb25TdGF0aWNNYWNy
b3MpLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIGVsaWYgc2VsZi5tb2RlbCgpLmZyYW1ld29y
ayBpcyBGcmFtZXdvcmtzLldlYkNvcmU6CisgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVt
cGxhdGUoVGVtcGxhdGVzLlNlcGFyYXRlV2ViQ29yZUltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9z
KS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVt
cGxhdGVzLk5hbWVzcGFjZUJvdHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkKKworICAgICAgICByZXR1
cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMpCisKKyAgICBkZWYgZ2VuZXJhdGVfaGVhZGVyX2luY2x1
ZGVzKHNlbGYpOgorICAgICAgICBoZWFkZXJfaW5jbHVkZXMgPSBbCisgICAgICAgICAgICAoWyJK
YXZhU2NyaXB0Q29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAiYnVp
bHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAg
ICAoWyJKYXZhU2NyaXB0Q29yZSIsICJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZh
U2NyaXB0Q29yZSIsICJydW50aW1lL0V4ZWN1dGFibGUuaCIpLAorICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgIChbIkphdmFTY3JpcHRDb3JlIiwgIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAg
ICAoIkphdmFTY3JpcHRDb3JlIiwgInJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oIiksCisgICAgICAg
ICAgICApLAorICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2
YVNjcmlwdENvcmUiLCAicnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgiKSwKKyAgICAgICAgICAg
ICksCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2Ny
aXB0Q29yZSIsICJydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgiKSwKKyAgICAgICAgICAgICks
CisgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZSIsICJXZWJDb3JlIl0sCisgICAgICAgICAg
ICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL1ZNLmgiKSwKKyAgICAgICAgICAgICks
CisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJXZWJDb3JlIiwg
ImJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaCIpLAorICAgICAgICAgICAgKSwKKyAg
ICAgICAgXQorCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4oc2VsZi5nZW5lcmF0ZV9pbmNsdWRl
c19mcm9tX2VudHJpZXMoaGVhZGVyX2luY2x1ZGVzKSkKKworICAgIGRlZiBnZW5lcmF0ZV9lbWJl
ZGRlZF9jb2RlX3N0cmluZ19zZWN0aW9ucyhzZWxmKToKKyAgICAgICAgc3Vic2VjdGlvbnMgPSBb
XQorICAgICAgICBmb3IgZnVuY3Rpb24gaW4gc2VsZi5vYmplY3QuZnVuY3Rpb25zOgorICAgICAg
ICAgICAgdGV4dCA9IGZ1bmN0aW9uLmZ1bmN0aW9uX3NvdXJjZQorICAgICAgICAgICAgIyBXcmFw
IGl0IGluIHBhcmVucyB0byBhdm9pZCBhZGRpbmcgdG8gZ2xvYmFsIHNjb3BlLgorICAgICAgICAg
ICAgdGV4dCA9ICIoZnVuY3Rpb24gIiArIHRleHRbdGV4dC5pbmRleCgiKCIpOl0gKyAiKSIKKyAg
ICAgICAgICAgICMgTGF6eSB3YXkgdG8gZXNjYXBlIHF1b3RlcywgSSB0aGluaz8KKyAgICAgICAg
ICAgIHRleHRMaW5lcyA9IGpzb24uZHVtcHModGV4dClbMTotMV0uc3BsaXQoIlxcbiIpCisgICAg
ICAgICAgICAjIFRoaXMgbG9va3Mgc2NhcnkgYmVjYXVzZSB3ZSBuZWVkIHRoZSBKUyBzb3VyY2Ug
aXRzZWxmIHRvIGhhdmUgbmV3bGluZXMuCisgICAgICAgICAgICBlbWJlZGRlZFNvdXJjZSA9ICdc
bicuam9pbihbJyAgICIlc1xcbiIgXFwnICUgbGluZSBmb3IgbGluZSBpbiB0ZXh0TGluZXNdKQor
CisgICAgICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gIkNhbm5vdENvbnN0cnVjdCIKKyAgICAg
ICAgICAgIGlmIGZ1bmN0aW9uLmlzX2NvbnN0cnVjdG9yOgorICAgICAgICAgICAgICAgIGNvbnN0
cnVjdEFiaWxpdHkgPSAiQ2FuQ29uc3RydWN0IgorCisgICAgICAgICAgICBhcmdzID0geworICAg
ICAgICAgICAgICAgICdjb2RlTmFtZSc6IEJ1aWx0aW5zR2VuZXJhdG9yLm1hbmdsZWROYW1lRm9y
RnVuY3Rpb24oZnVuY3Rpb24pICsgJ0NvZGUnLAorICAgICAgICAgICAgICAgICdlbWJlZGRlZFNv
dXJjZSc6IGVtYmVkZGVkU291cmNlLAorICAgICAgICAgICAgICAgICdlbWJlZGRlZFNvdXJjZUxl
bmd0aCc6IGxlbihlbWJlZGRlZFNvdXJjZSkgKyAxLAorICAgICAgICAgICAgICAgICdjYW5Db25z
dHJ1Y3QnOiBjb25zdHJ1Y3RBYmlsaXR5CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxp
bmVzID0gW10KKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiY29uc3QgSlNDOjpDb25zdHJ1Y3RB
YmlsaXR5IHNfJShjb2RlTmFtZSlzQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJp
bGl0eTo6JShjYW5Db25zdHJ1Y3QpczsiICUgYXJncyk7CisgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoImNvbnN0IGludCBzXyUoY29kZU5hbWUpc0xlbmd0aCA9ICUoZW1iZWRkZWRTb3VyY2VMZW5n
dGgpZDsiICUgYXJncyk7CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoImNvbnN0IGNoYXIqIHNf
JShjb2RlTmFtZSlzID1cbiUoZW1iZWRkZWRTb3VyY2Upc1xuOyIgJSBhcmdzKTsKKyAgICAgICAg
ICAgIHN1YnNlY3Rpb25zLmFwcGVuZCgnXG4nLmpvaW4obGluZXMpKQorCisgICAgICAgIHJldHVy
biBzdWJzZWN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
YnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfd3JhcHBlci5weSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRl
X3dyYXBwZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzgxNDFkNjI3N2NmZGI1NDgxOThjOGVmODY5MDQ3NGY0
YTY4YjFmYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX3dyYXBwZXIucHkKQEAgLTAsMCAr
MSw5NCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxNCwg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAx
NCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCBsb2dnaW5nCitpbXBv
cnQgcmUKK2ltcG9ydCBzdHJpbmcKK2Zyb20gc3RyaW5nIGltcG9ydCBUZW1wbGF0ZQorCitmcm9t
IGJ1aWx0aW5zX2dlbmVyYXRvciBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3IKK2Zyb20gYnVpbHRp
bnNfdGVtcGxhdGVzIGltcG9ydCBCdWlsdGluc0dlbmVyYXRvclRlbXBsYXRlcyBhcyBUZW1wbGF0
ZXMKKworbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcpCisKKworY2xhc3MgQnVpbHRp
bnNTZXBhcmF0ZVdyYXBwZXJHZW5lcmF0b3IoQnVpbHRpbnNHZW5lcmF0b3IpOgorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBtb2RlbCwgb2JqZWN0KToKKyAgICAgICAgQnVpbHRpbnNHZW5lcmF0b3Iu
X19pbml0X18oc2VsZiwgbW9kZWwpCisgICAgICAgIHNlbGYub2JqZWN0ID0gb2JqZWN0CisKKyAg
ICBkZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gIiVzQnVpbHRpbnNX
cmFwcGVyLmgiICUgc2VsZi5vYmplY3Qub2JqZWN0X25hbWUKKworICAgIGRlZiBtYWNyb19wcmVm
aXgoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmco
J21hY3JvX3ByZWZpeCcpCisKKyAgICBkZWYgZ2VuZXJhdGVfb3V0cHV0KHNlbGYpOgorICAgICAg
ICBhcmdzID0geworICAgICAgICAgICAgJ25hbWVzcGFjZSc6IHNlbGYubW9kZWwoKS5mcmFtZXdv
cmsuc2V0dGluZygnbmFtZXNwYWNlJyksCisgICAgICAgICAgICAnaGVhZGVyR3VhcmQnOiBzZWxm
Lm91dHB1dF9maWxlbmFtZSgpLnJlcGxhY2UoJy4nLCAnXycpLAorICAgICAgICAgICAgJ21hY3Jv
UHJlZml4Jzogc2VsZi5tYWNyb19wcmVmaXgoKSwKKyAgICAgICAgICAgICdvYmplY3ROYW1lJzog
c2VsZi5vYmplY3Qub2JqZWN0X25hbWUsCisgICAgICAgICAgICAnb2JqZWN0TWFjcm8nOiBzZWxm
Lm9iamVjdC5vYmplY3RfbmFtZS51cHBlcigpLAorICAgICAgICB9CisKKyAgICAgICAgc2VjdGlv
bnMgPSBbXQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9saWNlbnNlKCkp
CisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuRG9Ob3RFZGl0V2Fy
bmluZykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRl
KFRlbXBsYXRlcy5IZWFkZXJJbmNsdWRlR3VhcmRUb3ApLnN1YnN0aXR1dGUoYXJncykpCisgICAg
ICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcygpKQorICAg
ICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZVRvcCkuc3Vi
c3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRl
cy5TZXBhcmF0ZVdyYXBwZXJIZWFkZXJCb2lsZXJwbGF0ZSkuc3Vic3RpdHV0ZShhcmdzKSkKKyAg
ICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VCb3R0b20p
LnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1w
bGF0ZXMuSGVhZGVySW5jbHVkZUd1YXJkQm90dG9tKS5zdWJzdGl0dXRlKGFyZ3MpKQorCisgICAg
ICAgIHJldHVybiAiXG5cbiIuam9pbihzZWN0aW9ucykKKworICAgIGRlZiBnZW5lcmF0ZV9oZWFk
ZXJfaW5jbHVkZXMoc2VsZik6CisgICAgICAgIGhlYWRlcl9pbmNsdWRlcyA9IFsKKyAgICAgICAg
ICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIldlYkNvcmUiLCAiJXNCdWlsdGlu
cy5oIiAlIHNlbGYub2JqZWN0Lm9iamVjdF9uYW1lKSwKKyAgICAgICAgICAgICksCisKKyAgICAg
ICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwg
ImJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgiKSwKKyAgICAgICAgICAgICks
CisKKyAgICAgICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3Jp
cHRDb3JlIiwgImJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oIiksCisgICAgICAgICAgICApLAorCisg
ICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29y
ZSIsICJydW50aW1lL0lkZW50aWZpZXIuaCIpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAg
ICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVu
dGltZS9KU0Z1bmN0aW9uLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAgIF0KKworICAgICAg
ICByZXR1cm4gJ1xuJy5qb2luKHNlbGYuZ2VuZXJhdGVfaW5jbHVkZXNfZnJvbV9lbnRyaWVzKGhl
YWRlcl9pbmNsdWRlcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3MDcwOWI0ODA4Mzg4ZTY3OGYz
ZGIyMzgyZjQ2YTNkNjMzMzkwNmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQpAQCAtMCwwICsxLDE2NCBAQAor
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJz
aXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisj
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFRoaXMgc2NyaXB0IGdlbmVyYXRlcyBDKysgYmlu
ZGluZ3MgZm9yIEphdmFTY3JpcHQgYnVpbHRpbnMuCisjIEdlbmVyYXRvcnMgZm9yIGluZGl2aWR1
YWwgZmlsZXMgYXJlIGxvY2F0ZWQgaW4gdGhlIGJ1aWx0aW5zLyBkaXJlY3RvcnkuCisKK2ltcG9y
dCBmbm1hdGNoCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgb3MKKwor
bG9nZ2luZy5iYXNpY0NvbmZpZyhmb3JtYXQ9JyUobGV2ZWxuYW1lKXM6ICUobWVzc2FnZSlzJywg
bGV2ZWw9bG9nZ2luZy5FUlJPUikKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwnKQor
Citmcm9tIGxhenl3cml0ZXIgaW1wb3J0IExhenlGaWxlV3JpdGVyCisKK2ltcG9ydCBidWlsdGlu
cworZnJvbSBidWlsdGlucyBpbXBvcnQgKgorCisKK2RlZiBnZW5lcmF0ZV9iaW5kaW5nc19mb3Jf
YnVpbHRpbnNfZmlsZXMoYnVpbHRpbnNfZmlsZXM9W10sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG91dHB1dF9wYXRoPU5vbmUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbmNhdGVuYXRlX291dHB1dD1GYWxzZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tYmluZWRfb3V0cHV0PUZhbHNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZXdvcmtfbmFtZT0i
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2Vfb3V0cHV0
PUZhbHNlKToKKworICAgIGdlbmVyYXRvcnMgPSBbXQorCisgICAgbW9kZWwgPSBCdWlsdGluc0Nv
bGxlY3Rpb24oZnJhbWV3b3JrX25hbWU9ZnJhbWV3b3JrX25hbWUpCisKKyAgICBmb3IgZmlsZXBh
dGggaW4gYnVpbHRpbnNfZmlsZXM6CisgICAgICAgIHdpdGggb3BlbihmaWxlcGF0aCwgInIiKSBh
cyBmaWxlOgorICAgICAgICAgICAgZmlsZV90ZXh0ID0gZmlsZS5yZWFkKCkKKyAgICAgICAgICAg
IGZpbGVfbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoZmlsZXBhdGgpCisKKyAgICAgICAgICAgICMg
SWYgdGhpcyBpcyBhIHRlc3QgZmlsZSwgdGhlbiByZXdyaXRlIHRoZSBmaWxlbmFtZSB0byByZW1v
dmUgdGhlCisgICAgICAgICAgICAjIHRlc3QgcnVubmluZyBvcHRpb25zIGVuY29kZWQgaW50byB0
aGUgZmlsZW5hbWUuCisgICAgICAgICAgICBpZiBmaWxlX25hbWUuc3RhcnRzd2l0aChmcmFtZXdv
cmtfbmFtZSk6CisgICAgICAgICAgICAgICAgKF8sIG9iamVjdF9uYW1lLCBfKSA9IGZpbGVfbmFt
ZS5zcGxpdCgnLScpCisgICAgICAgICAgICAgICAgZmlsZV9uYW1lID0gb2JqZWN0X25hbWUgKyAn
LmpzJworICAgICAgICAgICAgbW9kZWwucGFyc2VfYnVpbHRpbnNfZmlsZShmaWxlX25hbWUsIGZp
bGVfdGV4dCkKKworICAgIGlmIGNvbWJpbmVkX291dHB1dDoKKyAgICAgICAgbG9nLmRlYnVnKCJV
c2luZyBnZW5lcmF0b3Igc3R5bGU6IGNvbWJpbmVkIGZpbGVzIGZvciBhbGwgYnVpbHRpbnMuIikK
KyAgICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQoQnVpbHRpbnNDb21iaW5lZEhlYWRlckdlbmVyYXRv
cihtb2RlbCkpCisgICAgICAgIGdlbmVyYXRvcnMuYXBwZW5kKEJ1aWx0aW5zQ29tYmluZWRJbXBs
ZW1lbnRhdGlvbkdlbmVyYXRvcihtb2RlbCkpCisgICAgZWxzZToKKyAgICAgICAgbG9nLmRlYnVn
KCJVc2luZyBnZW5lcmF0b3Igc3R5bGU6IHNpbmdsZSBmaWxlcyBmb3IgZWFjaCBidWlsdGluLiIp
CisgICAgICAgIGZvciBvYmplY3QgaW4gbW9kZWwub2JqZWN0czoKKyAgICAgICAgICAgIGdlbmVy
YXRvcnMuYXBwZW5kKEJ1aWx0aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0b3IobW9kZWwsIG9iamVj
dCkpCisgICAgICAgICAgICBnZW5lcmF0b3JzLmFwcGVuZChCdWlsdGluc1NlcGFyYXRlSW1wbGVt
ZW50YXRpb25HZW5lcmF0b3IobW9kZWwsIG9iamVjdCkpCisKKyAgICAgICAgICAgIGlmIG1vZGVs
LmZyYW1ld29yayBpcyBGcmFtZXdvcmtzLldlYkNvcmU6CisgICAgICAgICAgICAgICAgZ2VuZXJh
dG9ycy5hcHBlbmQoQnVpbHRpbnNTZXBhcmF0ZVdyYXBwZXJHZW5lcmF0b3IobW9kZWwsIG9iamVj
dCkpCisKKyAgICBsb2cuZGVidWcoIiIpCisgICAgbG9nLmRlYnVnKCJHZW5lcmF0aW5nIGJpbmRp
bmdzIGZvciBidWlsdGlucy4iKQorCisgICAgdGVzdF9yZXN1bHRfZmlsZV9jb250ZW50cyA9IFtd
CisKKyAgICBmb3IgZ2VuZXJhdG9yIGluIGdlbmVyYXRvcnM6CisgICAgICAgIG91dHB1dF9maWxl
cGF0aCA9IG9zLnBhdGguam9pbihvdXRwdXRfcGF0aCwgZ2VuZXJhdG9yLm91dHB1dF9maWxlbmFt
ZSgpKQorICAgICAgICBsb2cuZGVidWcoIkdlbmVyYXRpbmcgb3V0cHV0IGZpbGU6ICVzIiAlIGdl
bmVyYXRvci5vdXRwdXRfZmlsZW5hbWUoKSkKKyAgICAgICAgb3V0cHV0ID0gZ2VuZXJhdG9yLmdl
bmVyYXRlX291dHB1dCgpCisKKyAgICAgICAgbG9nLmRlYnVnKCItLS0iKQorICAgICAgICBsb2cu
ZGVidWcoIlxuIiArIG91dHB1dCkKKyAgICAgICAgbG9nLmRlYnVnKCItLS0iKQorICAgICAgICBp
ZiBjb25jYXRlbmF0ZV9vdXRwdXQ6CisgICAgICAgICAgICB0ZXN0X3Jlc3VsdF9maWxlX2NvbnRl
bnRzLmFwcGVuZCgnIyMjIEJlZ2luIEZpbGU6ICVzJyAlIGdlbmVyYXRvci5vdXRwdXRfZmlsZW5h
bWUoKSkKKyAgICAgICAgICAgIHRlc3RfcmVzdWx0X2ZpbGVfY29udGVudHMuYXBwZW5kKG91dHB1
dCkKKyAgICAgICAgICAgIHRlc3RfcmVzdWx0X2ZpbGVfY29udGVudHMuYXBwZW5kKCcjIyMgRW5k
IEZpbGU6ICVzJyAlIGdlbmVyYXRvci5vdXRwdXRfZmlsZW5hbWUoKSkKKyAgICAgICAgICAgIHRl
c3RfcmVzdWx0X2ZpbGVfY29udGVudHMuYXBwZW5kKCcnKQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgbG9nLmRlYnVnKCJXcml0aW5nIGZpbGU6ICVzIiAlIG91dHB1dF9maWxlcGF0aCkKKyAg
ICAgICAgICAgIG91dHB1dF9maWxlID0gTGF6eUZpbGVXcml0ZXIob3V0cHV0X2ZpbGVwYXRoLCBm
b3JjZV9vdXRwdXQpCisgICAgICAgICAgICBvdXRwdXRfZmlsZS53cml0ZShvdXRwdXQpCisgICAg
ICAgICAgICBvdXRwdXRfZmlsZS5jbG9zZSgpCisKKyAgICBpZiBjb25jYXRlbmF0ZV9vdXRwdXQ6
CisgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKG9zLnBhdGguYmFzZW5hbWUoYnVpbHRp
bnNfZmlsZXNbMF0pICsgJy1yZXN1bHQnKQorICAgICAgICBvdXRwdXRfZmlsZXBhdGggPSBvcy5w
YXRoLmpvaW4ob3V0cHV0X3BhdGgsIGZpbGVuYW1lKQorICAgICAgICBsb2cuZGVidWcoIldyaXRp
bmcgZmlsZTogJXMiICUgb3V0cHV0X2ZpbGVwYXRoKSAKKyAgICAgICAgb3V0cHV0X2ZpbGUgPSBM
YXp5RmlsZVdyaXRlcihvdXRwdXRfZmlsZXBhdGgsIGZvcmNlX291dHB1dCkKKyAgICAgICAgb3V0
cHV0X2ZpbGUud3JpdGUoJ1xuJy5qb2luKHRlc3RfcmVzdWx0X2ZpbGVfY29udGVudHMpKQorICAg
ICAgICBvdXRwdXRfZmlsZS5jbG9zZSgpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Cisg
ICAgYWxsb3dlZF9mcmFtZXdvcmtfbmFtZXMgPSBbJ0phdmFTY3JpcHRDb3JlJywgJ1dlYkNvcmUn
XQorICAgIGNsaV9wYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2U9InVzYWdlOiAl
cHJvZyBbb3B0aW9uc10gQnVpbHRpbjEuanMgWywgQnVpbHRpbjIuanMsIC4uLl0iKQorICAgIGNs
aV9wYXJzZXIuYWRkX29wdGlvbigiLWkiLCAiLS1pbnB1dC1kaXJlY3RvcnkiLCBoZWxwPSJJZiBz
cGVjaWZpZWQsIGdlbmVyYXRlcyBidWlsdGlucyBmcm9tIGFsbCBKYXZhU2NyaXB0IGZpbGVzIGlu
IHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5IGluIGFkZGl0aW9uIHRvIHNwZWNpZmljIGZpbGVzIHBh
c3NlZCBhcyBhcmd1bWVudHMuIikKKyAgICBjbGlfcGFyc2VyLmFkZF9vcHRpb24oIi1vIiwgIi0t
b3V0cHV0LWRpcmVjdG9yeSIsIGhlbHA9IkRpcmVjdG9yeSB3aGVyZSBnZW5lcmF0ZWQgZmlsZXMg
c2hvdWxkIGJlIHdyaXR0ZW4uIikKKyAgICBjbGlfcGFyc2VyLmFkZF9vcHRpb24oIi0tZnJhbWV3
b3JrIiwgdHlwZT0iY2hvaWNlIiwgY2hvaWNlcz1hbGxvd2VkX2ZyYW1ld29ya19uYW1lcywgaGVs
cD0iRGVzdGluYXRpb24gZnJhbWV3b3JrIGZvciBnZW5lcmF0ZWQgZmlsZXMuIikKKyAgICBjbGlf
cGFyc2VyLmFkZF9vcHRpb24oIi0tZm9yY2UiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJG
b3JjZSBvdXRwdXQgb2YgZ2VuZXJhdGVkIHNjcmlwdHMsIGV2ZW4gaWYgbm90aGluZyBjaGFuZ2Vk
LiIpCisgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9uKCItLWNvbWJpbmVkIiwgYWN0aW9uPSJzdG9y
ZV90cnVlIiwgaGVscD0iUHJvZHVjZSBvbmUgLmgvLmNwcCBmaWxlIGluc3RlYWQgb2YgcHJvZHVj
aW5nIG9uZSBwZXIgYnVpbHRpbiBvYmplY3QuIikKKyAgICBjbGlfcGFyc2VyLmFkZF9vcHRpb24o
Ii12IiwgIi0tZGVidWciLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJMb2cgZXh0cmEgb3V0
cHV0IGZvciBkZWJ1Z2dpbmcgdGhlIGdlbmVyYXRvciBpdHNlbGYuIikKKyAgICBjbGlfcGFyc2Vy
LmFkZF9vcHRpb24oIi10IiwgIi0tdGVzdCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IkVu
YWJsZSB0ZXN0IG1vZGUuIikKKworICAgIGFyZ19vcHRpb25zLCBhcmdfdmFsdWVzID0gY2xpX3Bh
cnNlci5wYXJzZV9hcmdzKCkKKyAgICBpZiBsZW4oYXJnX3ZhbHVlcykgaXMgMCBhbmQgbm90IGFy
Z19vcHRpb25zLmlucHV0X2RpcmVjdG9yeToKKyAgICAgICAgcmFpc2UgUGFyc2VFeGNlcHRpb24o
IkF0IGxlYXN0IG9uZSBpbnB1dCBmaWxlIG9yIGRpcmVjdG9yeSBleHBlY3RlZC4iKQorCisgICAg
aWYgbm90IGFyZ19vcHRpb25zLm91dHB1dF9kaXJlY3Rvcnk6CisgICAgICAgIHJhaXNlIFBhcnNl
RXhjZXB0aW9uKCJNaXNzaW5nIG91dHB1dCBkaXJlY3RvcnkuIikKKworICAgIGlmIGFyZ19vcHRp
b25zLmRlYnVnOgorICAgICAgICBsb2cuc2V0TGV2ZWwobG9nZ2luZy5ERUJVRykKKworICAgIGlu
cHV0X2ZpbGVwYXRocyA9IGFyZ192YWx1ZXNbOl0KKyAgICBpZiBhcmdfb3B0aW9ucy5pbnB1dF9k
aXJlY3Rvcnk6CisgICAgICAgIGZvciBmaWxlcGF0aCBpbiBvcy5saXN0ZGlyKGFyZ19vcHRpb25z
LmlucHV0X2RpcmVjdG9yeSk6CisgICAgICAgICAgICBpbnB1dF9maWxlcGF0aHMuYXBwZW5kKG9z
LnBhdGguam9pbihhcmdfb3B0aW9ucy5pbnB1dF9kaXJlY3RvcnksIGZpbGVwYXRoKSkKKworICAg
IGlucHV0X2ZpbGVwYXRocyA9IGZpbHRlcihsYW1iZGEgbmFtZTogZm5tYXRjaC5mbm1hdGNoKG5h
bWUsICcqLmpzJyksIGlucHV0X2ZpbGVwYXRocykKKworICAgIG9wdGlvbnMgPSB7CisgICAgICAg
ICdvdXRwdXRfcGF0aCc6IGFyZ19vcHRpb25zLm91dHB1dF9kaXJlY3RvcnksCisgICAgICAgICdm
cmFtZXdvcmtfbmFtZSc6IGFyZ19vcHRpb25zLmZyYW1ld29yaywKKyAgICAgICAgJ2NvbWJpbmVk
X291dHB1dCc6IGFyZ19vcHRpb25zLmNvbWJpbmVkLAorICAgICAgICAnZm9yY2Vfb3V0cHV0Jzog
YXJnX29wdGlvbnMuZm9yY2UsCisgICAgICAgICdjb25jYXRlbmF0ZV9vdXRwdXQnOiBhcmdfb3B0
aW9ucy50ZXN0LAorICAgIH0KKworICAgIGxvZy5kZWJ1ZygiR2VuZXJhdGluZyBjb2RlIGZvciBi
dWlsdGlucy4iKQorICAgIGxvZy5kZWJ1ZygiUGFyc2VkIG9wdGlvbnM6IikKKyAgICBmb3Igb3B0
aW9uLCB2YWx1ZSBpbiBvcHRpb25zLml0ZW1zKCk6CisgICAgICAgIGxvZy5kZWJ1ZygiICAgICVz
OiAlcyIgJSAob3B0aW9uLCB2YWx1ZSkpCisgICAgbG9nLmRlYnVnKCIiKQorICAgIGxvZy5kZWJ1
ZygiSW5wdXQgZmlsZXM6IikKKyAgICBmb3IgZmlsZXBhdGggaW4gaW5wdXRfZmlsZXBhdGhzOgor
ICAgICAgICBsb2cuZGVidWcoIiAgICAlcyIgJSBmaWxlcGF0aCkKKyAgICBsb2cuZGVidWcoIiIp
CisKKyAgICB0cnk6CisgICAgICAgIGdlbmVyYXRlX2JpbmRpbmdzX2Zvcl9idWlsdGluc19maWxl
cyhidWlsdGluc19maWxlcz1pbnB1dF9maWxlcGF0aHMsICoqb3B0aW9ucykKKyAgICBleGNlcHQg
UGFyc2VFeGNlcHRpb24gYXMgZToKKyAgICAgICAgaWYgYXJnX29wdGlvbnMudGVzdDoKKyAgICAg
ICAgICAgIGxvZy5lcnJvcihlLm1lc3NhZ2UpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBy
YWlzZSAgIyBGb3JjZSB0aGUgYnVpbGQgdG8gZmFpbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL2xhenl3cml0ZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy9sYXp5d3JpdGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5M2EyYzY5N2NhY2JkNzc0MWZlOTk4
ZWYxOTBlYjFjZDZmMjQ1MzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy9sYXp5d3JpdGVyLnB5CkBAIC0wLDAgKzEsNTggQEAKKyMhL3Vzci9iaW4vZW52
IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgQSB3cml0
ZXIgdGhhdCBvbmx5IHVwZGF0ZXMgZmlsZSBpZiBpdCBhY3R1YWxseSBjaGFuZ2VkLgorCisKK2Ns
YXNzIExhenlGaWxlV3JpdGVyOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlcGF0aCwgZm9y
Y2Vfb3V0cHV0KToKKyAgICAgICAgc2VsZi5fZmlsZXBhdGggPSBmaWxlcGF0aAorICAgICAgICBz
ZWxmLl9vdXRwdXQgPSAiIgorICAgICAgICBzZWxmLmZvcmNlX291dHB1dCA9IGZvcmNlX291dHB1
dAorCisgICAgZGVmIHdyaXRlKHNlbGYsIHRleHQpOgorICAgICAgICBzZWxmLl9vdXRwdXQgKz0g
dGV4dAorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICB0ZXh0X2NoYW5nZWQgPSBUcnVl
CisgICAgICAgIHNlbGYuX291dHB1dCA9IHNlbGYuX291dHB1dC5yc3RyaXAoKSArICJcbiIKKwor
ICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBzZWxmLmZvcmNlX291dHB1dDoKKyAgICAgICAg
ICAgICAgICByYWlzZQorCisgICAgICAgICAgICByZWFkX2ZpbGUgPSBvcGVuKHNlbGYuX2ZpbGVw
YXRoLCAiciIpCisgICAgICAgICAgICBvbGRfdGV4dCA9IHJlYWRfZmlsZS5yZWFkKCkKKyAgICAg
ICAgICAgIHJlYWRfZmlsZS5jbG9zZSgpCisgICAgICAgICAgICB0ZXh0X2NoYW5nZWQgPSBvbGRf
dGV4dCAhPSBzZWxmLl9vdXRwdXQKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgIyBJZ25v
cmUsIGp1c3Qgb3ZlcndyaXRlIGJ5IGRlZmF1bHQKKyAgICAgICAgICAgIHBhc3MKKworICAgICAg
ICBpZiB0ZXh0X2NoYW5nZWQgb3Igc2VsZi5mb3JjZV9vdXRwdXQ6CisgICAgICAgICAgICBvdXRf
ZmlsZSA9IG9wZW4oc2VsZi5fZmlsZXBhdGgsICJ3IikKKyAgICAgICAgICAgIG91dF9maWxlLndy
aXRlKHNlbGYuX291dHB1dCkKKyAgICAgICAgICAgIG91dF9maWxlLmNsb3NlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3Jp
cHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1Db21iaW5lZC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1D
b21iaW5lZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDVkODFjZWI5ZWQ5MDY0MjU4NGZhMGJiNDU4ZGNmMGRi
YWRjM2EyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
dGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpz
CkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworZnVuY3Rpb24gcmVqZWN0UHJvbWlzZShwcm9taXNlLCByZWFzb24pCit7
CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIHJlYWN0aW9ucyA9IHByb21pc2UuQHByb21p
c2VSZWplY3RSZWFjdGlvbnM7CisgICAgcHJvbWlzZS5AcHJvbWlzZVJlc3VsdCA9IHJlYXNvbjsK
KyAgICBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucyA9IHVuZGVmaW5lZDsKKyAgICBw
cm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25zID0gdW5kZWZpbmVkOworICAgIHByb21pc2Uu
QHByb21pc2VTdGF0ZSA9IEBwcm9taXNlUmVqZWN0ZWQ7CisKKyAgICBASW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLnByb21pc2VSZWplY3RlZChwcm9taXNlLCByZWFzb24sIHJlYWN0aW9ucyk7CisK
KyAgICBAdHJpZ2dlclByb21pc2VSZWFjdGlvbnMocmVhY3Rpb25zLCByZWFzb24pOworfQorCitm
dW5jdGlvbiBmdWxmaWxsUHJvbWlzZShwcm9taXNlLCB2YWx1ZSkKK3sKKyAgICAidXNlIHN0cmlj
dCI7CisKKyAgICB2YXIgcmVhY3Rpb25zID0gcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlv
bnM7CisgICAgcHJvbWlzZS5AcHJvbWlzZVJlc3VsdCA9IHZhbHVlOworICAgIHByb21pc2UuQHBy
b21pc2VGdWxmaWxsUmVhY3Rpb25zID0gdW5kZWZpbmVkOworICAgIHByb21pc2UuQHByb21pc2VS
ZWplY3RSZWFjdGlvbnMgPSB1bmRlZmluZWQ7CisgICAgcHJvbWlzZS5AcHJvbWlzZVN0YXRlID0g
QHByb21pc2VGdWxmaWxsZWQ7CisKKyAgICBASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLnByb21p
c2VGdWxmaWxsZWQocHJvbWlzZSwgdmFsdWUsIHJlYWN0aW9ucyk7CisKKyAgICBAdHJpZ2dlclBy
b21pc2VSZWFjdGlvbnMocmVhY3Rpb25zLCB2YWx1ZSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWls
dGluLnByb3RvdHlwZS1Db21iaW5lZC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVk
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjU0NDhiOTgzMmI2NmE0YmRmMGZlMmM0YmQ4NzAxMGY2MGFkNzJkZjAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5qcwpAQCAt
MCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtp
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisKK2Z1bmN0aW9uIGV2ZXJ5KGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKQor
eworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICh0aGlzID09PSBudWxsKQorICAgICAgICB0
aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQg
fHRoaXN8IG5vdCBiZSBudWxsIik7CisgICAgCisgICAgaWYgKHRoaXMgPT09IHVuZGVmaW5lZCkK
KyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1
aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkIik7CisgICAgCisgICAgdmFyIGFycmF5
ID0gQE9iamVjdCh0aGlzKTsKKyAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0
aCk7CisKKyAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQorICAgICAgICB0
aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3Qg
YmUgYSBmdW5jdGlvbiIpOworICAgIAorICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0
aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7CisgICAgCisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoIShpIGluIGFycmF5KSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIWNhbGxiYWNrLkBjYWxsKHRoaXNBcmcsIGFy
cmF5W2ldLCBpLCBhcnJheSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IAorICAgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrIC8qLCB0
aGlzQXJnICovKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICh0aGlzID09PSBudWxs
KQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmZvckVhY2gg
cmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwiKTsKKyAgICAKKyAgICBpZiAodGhpcyA9
PT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90
eXBlLmZvckVhY2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZCIpOworICAg
IAorICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7CisgICAgdmFyIGxlbmd0aCA9IEB0b0xl
bmd0aChhcnJheS5sZW5ndGgpOworCisgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0
aW9uIikKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5mb3JF
YWNoIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOworICAgIAorICAgIHZhciB0aGlzQXJn
ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7CisgICAg
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoaSBp
biBhcnJheSkKKyAgICAgICAgICAgIGNhbGxiYWNrLkBjYWxsKHRoaXNBcmcsIGFycmF5W2ldLCBp
LCBhcnJheSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNv
bWJpbmVkLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
SmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjllOGMxYjQ0OTZjYzU0NGY0MDc3Mzk1MDQyY2ZkMjRlOGEzOTQ2NjEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2Ny
aXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmluZWQuanMKQEAgLTAsMCArMSwxMTAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBv
ZigvKiBpdGVtcy4uLiAqLykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgbGVuZ3Ro
ID0gYXJndW1lbnRzLmxlbmd0aDsKKyAgICAvLyBUT0RPOiBOZWVkIGlzQ29uc3RydWN0b3IodGhp
cykgaW5zdGVhZCBvZiB0eXBlb2YgImZ1bmN0aW9uIiBjaGVjay4KKyAgICB2YXIgYXJyYXkgPSB0
eXBlb2YgdGhpcyA9PT0gJ2Z1bmN0aW9uJyA/IG5ldyB0aGlzKGxlbmd0aCkgOiBuZXcgQEFycmF5
KGxlbmd0aCk7CisgICAgZm9yICh2YXIgayA9IDA7IGsgPCBsZW5ndGg7ICsraykKKyAgICAgICAg
QHB1dEJ5VmFsRGlyZWN0KGFycmF5LCBrLCBhcmd1bWVudHNba10pOworICAgIGFycmF5Lmxlbmd0
aCA9IGxlbmd0aDsKKyAgICByZXR1cm4gYXJyYXk7Cit9CisKK2Z1bmN0aW9uIGZyb20oaXRlbXMg
LyosIG1hcEZuLCB0aGlzQXJnICovKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciB0
aGlzT2JqID0gdGhpczsKKworICAgIHZhciBtYXBGbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8g
YXJndW1lbnRzWzFdIDogdW5kZWZpbmVkOworCisgICAgdmFyIHRoaXNBcmc7CisKKyAgICBpZiAo
bWFwRm4gIT09IHVuZGVmaW5lZCkgeworICAgICAgICBpZiAodHlwZW9mIG1hcEZuICE9PSAiZnVu
Y3Rpb24iKQorICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LmZyb20gcmVx
dWlyZXMgdGhhdCB0aGUgc2Vjb25kIGFyZ3VtZW50LCB3aGVuIHByb3ZpZGVkLCBiZSBhIGZ1bmN0
aW9uIik7CisKKyAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKQorICAgICAgICAgICAg
dGhpc0FyZyA9IGFyZ3VtZW50c1syXTsKKyAgICB9CisKKyAgICBpZiAoaXRlbXMgPT0gbnVsbCkK
KyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LmZyb20gcmVxdWlyZXMgYW4gYXJy
YXktbGlrZSBvYmplY3QgLSBub3QgbnVsbCBvciB1bmRlZmluZWQiKTsKKworICAgIHZhciBpdGVy
YXRvck1ldGhvZCA9IGl0ZW1zW0BzeW1ib2xJdGVyYXRvcl07CisgICAgaWYgKGl0ZXJhdG9yTWV0
aG9kICE9IG51bGwpIHsKKyAgICAgICAgaWYgKHR5cGVvZiBpdGVyYXRvck1ldGhvZCAhPT0gImZ1
bmN0aW9uIikKKyAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5mcm9tIHJl
cXVpcmVzIHRoYXQgdGhlIHByb3BlcnR5IG9mIHRoZSBmaXJzdCBhcmd1bWVudCwgaXRlbXNbU3lt
Ym9sLml0ZXJhdG9yXSwgd2hlbiBleGlzdHMsIGJlIGEgZnVuY3Rpb24iKTsKKworICAgICAgICAv
LyBUT0RPOiBOZWVkIGlzQ29uc3RydWN0b3IodGhpc09iaikgaW5zdGVhZCBvZiB0eXBlb2YgImZ1
bmN0aW9uIiBjaGVjay4KKyAgICAgICAgdmFyIHJlc3VsdCA9ICh0eXBlb2YgdGhpc09iaiA9PT0g
ImZ1bmN0aW9uIikgPyBAT2JqZWN0KG5ldyB0aGlzT2JqKCkpIDogW107CisKKyAgICAgICAgdmFy
IGsgPSAwOworICAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvck1ldGhvZC5AY2FsbChpdGVt
cyk7CisKKyAgICAgICAgLy8gU2luY2UgZm9yLW9mIGxvb3Agb25jZSBtb3JlIGxvb2tzIHVwIHRo
ZSBAQGl0ZXJhdG9yIHByb3BlcnR5IG9mIGEgZ2l2ZW4gaXRlcmFibGUsCisgICAgICAgIC8vIGl0
IGNvdWxkIGJlIG9ic2VydmFibGUgaWYgdGhlIHVzZXIgZGVmaW5lcyBhIGdldHRlciBmb3IgQEBp
dGVyYXRvci4KKyAgICAgICAgLy8gVG8gYXZvaWQgdGhpcyBzaXR1YXRpb24sIHdlIGRlZmluZSBh
IHdyYXBwZXIgb2JqZWN0IHRoYXQgQEBpdGVyYXRvciBqdXN0IHJldHVybnMgYSBnaXZlbiBpdGVy
YXRvci4KKyAgICAgICAgdmFyIHdyYXBwZXIgPSB7CisgICAgICAgICAgICBbQHN5bWJvbEl0ZXJh
dG9yXSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcmF0b3I7CisgICAgICAgICAgICB9
CisgICAgICAgIH07CisKKyAgICAgICAgZm9yICh2YXIgdmFsdWUgb2Ygd3JhcHBlcikgeworICAg
ICAgICAgICAgaWYgKG1hcEZuKQorICAgICAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1
bHQsIGssIHRoaXNBcmcgPT09IHVuZGVmaW5lZCA/IG1hcEZuKHZhbHVlLCBrKSA6IG1hcEZuLkBj
YWxsKHRoaXNBcmcsIHZhbHVlLCBrKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywgdmFsdWUpOworICAgICAgICAgICAgayArPSAx
OworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IGs7CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorCisgICAgdmFyIGFycmF5TGlrZSA9IEBPYmplY3QoaXRlbXMpOwor
ICAgIHZhciBhcnJheUxpa2VMZW5ndGggPSBAdG9MZW5ndGgoYXJyYXlMaWtlLmxlbmd0aCk7CisK
KyAgICAvLyBUT0RPOiBOZWVkIGlzQ29uc3RydWN0b3IodGhpc09iaikgaW5zdGVhZCBvZiB0eXBl
b2YgImZ1bmN0aW9uIiBjaGVjay4KKyAgICB2YXIgcmVzdWx0ID0gKHR5cGVvZiB0aGlzT2JqID09
PSAiZnVuY3Rpb24iKSA/IEBPYmplY3QobmV3IHRoaXNPYmooYXJyYXlMaWtlTGVuZ3RoKSkgOiBu
ZXcgQEFycmF5KGFycmF5TGlrZUxlbmd0aCk7CisKKyAgICB2YXIgayA9IDA7CisgICAgd2hpbGUg
KGsgPCBhcnJheUxpa2VMZW5ndGgpIHsKKyAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlMaWtlW2td
OworICAgICAgICBpZiAobWFwRm4pCisgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0
LCBrLCB0aGlzQXJnID09PSB1bmRlZmluZWQgPyBtYXBGbih2YWx1ZSwgaykgOiBtYXBGbi5AY2Fs
bCh0aGlzQXJnLCB2YWx1ZSwgaykpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBAcHV0QnlW
YWxEaXJlY3QocmVzdWx0LCBrLCB2YWx1ZSk7CisgICAgICAgIGsgKz0gMTsKKyAgICB9CisKKyAg
ICByZXN1bHQubGVuZ3RoID0gYXJyYXlMaWtlTGVuZ3RoOworICAgIHJldHVybiByZXN1bHQ7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlu
cy9XZWJDb3JlLUd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40Njg4N2U3ZWRjYWQ2YjJhODdlZjVlNzgyOWQyOTNjZWYwMWUzNzIy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMv
YnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcwpAQCAtMCwwICsxLDY0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gQG9w
dGlvbmFsPVNUUkVBTVNfQVBJCisKK2Z1bmN0aW9uIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQoc3Ry
ZWFtKQoreworICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuICEhc3RyZWFtLkByZWFkZXI7
Cit9CisKKworZnVuY3Rpb24gY2FuY2VsUmVhZGFibGVTdHJlYW0oc3RyZWFtLCByZWFzb24pCit7
CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJs
ZVN0cmVhbUNsb3NlZCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgIGlm
IChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKQorICAgICAgICByZXR1
cm4gUHJvbWlzZS5yZWplY3Qoc3RyZWFtLkBzdG9yZWRFcnJvcik7CisgICAgc3RyZWFtLkBxdWV1
ZSA9IFtdOworICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTsKKyAgICBy
ZXR1cm4gQHByb21pc2VJbnZva2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCAiY2Fu
Y2VsIiwgW3JlYXNvbl0pLnRoZW4oZnVuY3Rpb24oKSB7IH0pOworfQorCisKK2Z1bmN0aW9uIHBy
b21pc2VJbnZva2VPck5vb3Aob2JqZWN0LCBrZXksIGFyZ3MpCit7CisgICAgInVzZSBzdHJpY3Qi
OworCisgICAgdHJ5IHsKKyAgICAgICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldOworICAgICAg
ICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICByZXR1cm4g
UHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9i
amVjdCwgYXJncyk7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTsKKyAg
ICB9CisgICAgY2F0Y2goZXJyb3IpIHsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVy
cm9yKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3Jl
LUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGY1ZTdiM2I4
NDFkNTEwYTI5ZjU3NmY5NDM2MDk5ZThlMjc2MjY1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZElu
dGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcwpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gQG9wdGlvbmFsPVNUUkVBTVNfQVBJ
CisvLyBAaW50ZXJuYWwKKworZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbUxvY2tlZChzdHJlYW0p
Cit7CisgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjsKK30K
KworCitmdW5jdGlvbiBjYW5jZWxSZWFkYWJsZVN0cmVhbShzdHJlYW0sIHJlYXNvbikKK3sKKyAg
ICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3Ry
ZWFtQ2xvc2VkKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgaWYgKHN0
cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpCisgICAgICAgIHJldHVybiBQ
cm9taXNlLnJlamVjdChzdHJlYW0uQHN0b3JlZEVycm9yKTsKKyAgICBzdHJlYW0uQHF1ZXVlID0g
W107CisgICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pOworICAgIHJldHVy
biBAcHJvbWlzZUludm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsICJjYW5jZWwi
LCBbcmVhc29uXSkudGhlbihmdW5jdGlvbigpIHsgfSk7Cit9CisKKworZnVuY3Rpb24gcHJvbWlz
ZUludm9rZU9yTm9vcChvYmplY3QsIGtleSwgYXJncykKK3sKKyAgICAidXNlIHN0cmljdCI7CisK
KyAgICB0cnkgeworICAgICAgICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07CisgICAgICAgIGlm
ICh0eXBlb2YgbWV0aG9kID09PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIHJldHVybiBQcm9t
aXNlLnJlc29sdmUoKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0
LCBhcmdzKTsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpOworICAgIH0K
KyAgICBjYXRjaChlcnJvcikgeworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3Ip
OworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtVW5ndWFyZGVk
QnVpbHRpbi1TZXBhcmF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YmRjOGQzYjdlOWJlMjk4MGFmZGQ2YjYx
MzhjMDQ4OGZlYjI2YTBmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRl
LmpzCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCitmdW5jdGlvbiBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKHN0cmVhbSkKK3sKKyAg
ICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiAhIXN0cmVhbS5AcmVhZGVyOworfQorCisKK2Z1
bmN0aW9uIGNhbmNlbFJlYWRhYmxlU3RyZWFtKHN0cmVhbSwgcmVhc29uKQoreworICAgICJ1c2Ug
c3RyaWN0IjsKKworICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1DbG9z
ZWQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAgICBpZiAoc3RyZWFtLkBz
dGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZCkKKyAgICAgICAgcmV0dXJuIFByb21pc2Uu
cmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpOworICAgIHN0cmVhbS5AcXVldWUgPSBbXTsKKyAg
ICBAZmluaXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7CisgICAgcmV0dXJuIEBwcm9t
aXNlSW52b2tlT3JOb29wKHN0cmVhbS5AdW5kZXJseWluZ1NvdXJjZSwgImNhbmNlbCIsIFtyZWFz
b25dKS50aGVuKGZ1bmN0aW9uKCkgeyB9KTsKK30KKworCitmdW5jdGlvbiBwcm9taXNlSW52b2tl
T3JOb29wKG9iamVjdCwga2V5LCBhcmdzKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHRy
eSB7CisgICAgICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTsKKyAgICAgICAgaWYgKHR5cGVv
ZiBtZXRob2QgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVz
b2x2ZSgpOworICAgICAgICB2YXIgcmVzdWx0ID0gbWV0aG9kLkBhcHBseShvYmplY3QsIGFyZ3Mp
OworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7CisgICAgfQorICAgIGNh
dGNoKGVycm9yKSB7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7CisgICAg
fQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvV2ViQ29yZS14bWxDYXNpbmdUZXN0LVNlcGFyYXRlLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS14bWxDYXNpbmdUZXN0LVNlcGFy
YXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmRlMzkzYmM1OTgxNDI4Mjg3ZTBmMDQzMTlkYjZlNDIwMmI1NWUy
NjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0
cy9idWlsdGlucy9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMKQEAgLTAsMCArMSw2
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIEBv
cHRpb25hbD1TVFJFQU1TX0FQSQorLy8gQGludGVybmFsCisKK2Z1bmN0aW9uIHhtbENhc2luZ1Rl
c3Qoc3RyZWFtKQoreworICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuICEhc3RyZWFtLkBy
ZWFkZXI7Cit9CisKKworZnVuY3Rpb24gY3NzQ2FzaW5nVGVzdChzdHJlYW0sIHJlYXNvbikKK3sK
KyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxl
U3RyZWFtQ2xvc2VkKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgaWYg
KHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpCisgICAgICAgIHJldHVy
biBQcm9taXNlLnJlamVjdChzdHJlYW0uQHN0b3JlZEVycm9yKTsKKyAgICBzdHJlYW0uQHF1ZXVl
ID0gW107CisgICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pOworICAgIHJl
dHVybiBAcHJvbWlzZUludm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsICJjYW5j
ZWwiLCBbcmVhc29uXSkudGhlbihmdW5jdGlvbigpIHsgfSk7Cit9CisKKworZnVuY3Rpb24gdXJs
Q2FzaW5nVGVzdChvYmplY3QsIGtleSwgYXJncykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAg
ICB0cnkgeworICAgICAgICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07CisgICAgICAgIGlmICh0
eXBlb2YgbWV0aG9kID09PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNl
LnJlc29sdmUoKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBh
cmdzKTsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpOworICAgIH0KKyAg
ICBjYXRjaChlcnJvcikgeworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpOwor
ICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3Rz
L2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1Db21iaW5l
ZC5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlu
cy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtQ29tYmluZWQuanMtcmVz
dWx0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjNjYzhkNmVmMGZlMTZiOTNmMjJhZjFjMzViNmJlMjU5YzRmZDcwNDUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtQ29tYmluZWQu
anMtcmVzdWx0CkBAIC0wLDAgKzEsMTY4IEBACisjIyMgQmVnaW4gRmlsZTogSlNDQnVpbHRpbnMu
aAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+LgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJ
dCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisv
LyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9n
ZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaWZuZGVmIEpTQ0J1aWx0aW5zX2gKKyNkZWZpbmUg
SlNDQnVpbHRpbnNfaAorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJs
ZTsKK2NsYXNzIFZNOworCitlbnVtIGNsYXNzIENvbnN0cnVjdEFiaWxpdHkgOiB1bnNpZ25lZDsK
K30KKworbmFtZXNwYWNlIEpTQyB7CisKKy8qIEJ1aWx0aW4uUHJvbWlzZSAqLworZXh0ZXJuIGNv
bnN0IGNoYXIqIHNfYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNlQ29kZTsKK2V4dGVybiBjb25z
dCBpbnQgc19idWlsdGluUHJvbWlzZVJlamVjdFByb21pc2VDb2RlTGVuZ3RoOworZXh0ZXJuIGNv
bnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNv
ZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfYnVpbHRpblByb21pc2VG
dWxmaWxsUHJvbWlzZUNvZGU7CitleHRlcm4gY29uc3QgaW50IHNfYnVpbHRpblByb21pc2VGdWxm
aWxsUHJvbWlzZUNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
IHNfYnVpbHRpblByb21pc2VGdWxmaWxsUHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5OworCisj
ZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5QUk9NSVNFX0JVSUxUSU5fREFUQShtYWNybykgXAor
ICAgIG1hY3JvKHJlamVjdFByb21pc2UsIGJ1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZSwgMikg
XAorICAgIG1hY3JvKGZ1bGZpbGxQcm9taXNlLCBidWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNl
LCAyKSBcCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTlBST01JU0VfUkVKRUNUUFJPTUlT
RSAxCisjZGVmaW5lIEpTQ19CVUlMVElOX0JVSUxUSU5QUk9NSVNFX0ZVTEZJTExQUk9NSVNFIDEK
KworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUobWFjcm8pIFwKKyAgICBtYWNybyhi
dWlsdGluUHJvbWlzZVJlamVjdFByb21pc2VDb2RlLCByZWplY3RQcm9taXNlLCBzX2J1aWx0aW5Q
cm9taXNlUmVqZWN0UHJvbWlzZUNvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhidWlsdGluUHJvbWlz
ZUZ1bGZpbGxQcm9taXNlQ29kZSwgZnVsZmlsbFByb21pc2UsIHNfYnVpbHRpblByb21pc2VGdWxm
aWxsUHJvbWlzZUNvZGVMZW5ndGgpIFwKKworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOX0ZV
TkNUSU9OX05BTUUobWFjcm8pIFwKKyAgICBtYWNybyhmdWxmaWxsUHJvbWlzZSkgXAorICAgIG1h
Y3JvKHJlamVjdFByb21pc2UpIFwKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9S
KGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKKyAgICBKU0M6OkZ1bmN0
aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisKK0pTQ19GT1JF
QUNIX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xB
UkVfQlVJTFRJTl9HRU5FUkFUT1IKKworI2RlZmluZSBKU0NfQlVJTFRJTl9FWElTVFMob2JqZWN0
LCBmdW5jKSBkZWZpbmVkIEpTQ19CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNDQnVpbHRpbnNfaAorCisjIyMgRW5kIEZp
bGU6IEpTQ0J1aWx0aW5zLmgKKworIyMjIEJlZ2luIEZpbGU6IEpTQ0J1aWx0aW5zLmNwcAorLyoK
KyAqIENvcHlyaWdodCAoYykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+LgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBh
dXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWls
dGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0
ZS1qcy1idWlsdGlucy5weQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNDQnVp
bHRpbnMuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkV4
ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0
aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19idWlsdGluUHJvbWlzZVJl
amVjdFByb21pc2VDb2RlTGVuZ3RoID0gNTQxOworY29uc3QgY2hhciogc19idWlsdGluUHJvbWlz
ZVJlamVjdFByb21pc2VDb2RlID0KKyAgICIoZnVuY3Rpb24gKHByb21pc2UsIHJlYXNvbilcbiIg
XAorICAgIntcbiIgXAorICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBcCisg
ICAiICAgIHZhciByZWFjdGlvbnMgPSBwcm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25zO1xu
IiBcCisgICAiICAgIHByb21pc2UuQHByb21pc2VSZXN1bHQgPSByZWFzb247XG4iIFwKKyAgICIg
ICAgcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlvbnMgPSB1bmRlZmluZWQ7XG4iIFwKKyAg
ICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucyA9IHVuZGVmaW5lZDtcbiIgXAor
ICAgIiAgICBwcm9taXNlLkBwcm9taXNlU3RhdGUgPSBAcHJvbWlzZVJlamVjdGVkO1xuIiBcCisg
ICAiXG4iIFwKKyAgICIgICAgQEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5wcm9taXNlUmVqZWN0
ZWQocHJvbWlzZSwgcmVhc29uLCByZWFjdGlvbnMpO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAg
QHRyaWdnZXJQcm9taXNlUmVhY3Rpb25zKHJlYWN0aW9ucywgcmVhc29uKTtcbiIgXAorICAgIn0p
XG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb21pc2VG
dWxmaWxsUHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9t
aXNlQ29kZUxlbmd0aCA9IDU0MDsKK2NvbnN0IGNoYXIqIHNfYnVpbHRpblByb21pc2VGdWxmaWxs
UHJvbWlzZUNvZGUgPQorICAgIihmdW5jdGlvbiAocHJvbWlzZSwgdmFsdWUpXG4iIFwKKyAgICJ7
XG4iIFwKKyAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICB2
YXIgcmVhY3Rpb25zID0gcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlvbnM7XG4iIFwKKyAg
ICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlc3VsdCA9IHZhbHVlO1xuIiBcCisgICAiICAgIHByb21p
c2UuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zID0gdW5kZWZpbmVkO1xuIiBcCisgICAiICAgIHBy
b21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnMgPSB1bmRlZmluZWQ7XG4iIFwKKyAgICIgICAg
cHJvbWlzZS5AcHJvbWlzZVN0YXRlID0gQHByb21pc2VGdWxmaWxsZWQ7XG4iIFwKKyAgICJcbiIg
XAorICAgIiAgICBASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLnByb21pc2VGdWxmaWxsZWQocHJv
bWlzZSwgdmFsdWUsIHJlYWN0aW9ucyk7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICBAdHJpZ2dl
clByb21pc2VSZWFjdGlvbnMocmVhY3Rpb25zLCB2YWx1ZSk7XG4iIFwKKyAgICJ9KVxuIiBcCis7
CisKKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9u
TmFtZSwgYXJndW1lbnRDb3VudCkgXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1l
IyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKK3tcCisgICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVj
dXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhl
Y3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsgfQorSlNDX0ZPUkVBQ0hfQlVJTFRJTl9D
T0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5F
UkFUT1IKKworCit9IC8vIG5hbWVzcGFjZSBKU0MKKyMjIyBFbmQgRmlsZTogSlNDQnVpbHRpbnMu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWls
dGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5q
cy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9l
eHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5qcy1yZXN1
bHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTg5ZjFlNjVjMDE1NGQ5NDU2YzJkOWU5ZGZlNTdlOTU0ZWE5NTE3MAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1
aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVk
LmpzLXJlc3VsdApAQCAtMCwwICsxLDE5MiBAQAorIyMjIEJlZ2luIEZpbGU6IEpTQ0J1aWx0aW5z
LmgKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4uCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJ
TEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBm
b3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgSlNDQnVpbHRpbnNfaAorI2Rl
ZmluZSBKU0NCdWlsdGluc19oCisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRnVuY3Rpb25FeGVj
dXRhYmxlOworY2xhc3MgVk07CisKK2VudW0gY2xhc3MgQ29uc3RydWN0QWJpbGl0eSA6IHVuc2ln
bmVkOworfQorCituYW1lc3BhY2UgSlNDIHsKKworLyogQnVpbHRpbi5wcm90b3R5cGUgKi8KK2V4
dGVybiBjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGU7CitleHRlcm4gY29u
c3QgaW50IHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBK
U0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvdG90eXBlRXZlcnlDb2RlQ29uc3RydWN0
QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29k
ZTsKK2V4dGVybiBjb25zdCBpbnQgc19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGVMZW5ndGg7
CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb3RvdHlwZUZv
ckVhY2hDb2RlQ29uc3RydWN0QWJpbGl0eTsKKworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElO
UFJPVE9UWVBFX0JVSUxUSU5fREFUQShtYWNybykgXAorICAgIG1hY3JvKGV2ZXJ5LCBidWlsdGlu
UHJvdG90eXBlRXZlcnksIDEpIFwKKyAgICBtYWNybyhmb3JFYWNoLCBidWlsdGluUHJvdG90eXBl
Rm9yRWFjaCwgMSkgXAorCisjZGVmaW5lIEpTQ19CVUlMVElOX0JVSUxUSU5QUk9UT1RZUEVfRVZF
UlkgMQorI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOUFJPVE9UWVBFX0ZPUkVBQ0ggMQorCisj
ZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShtYWNybykgXAorICAgIG1hY3JvKGJ1aWx0
aW5Qcm90b3R5cGVFdmVyeUNvZGUsIGV2ZXJ5LCBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGVM
ZW5ndGgpIFwKKyAgICBtYWNybyhidWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGUsIGZvckVhY2gs
IHNfYnVpbHRpblByb3RvdHlwZUZvckVhY2hDb2RlTGVuZ3RoKSBcCisKKyNkZWZpbmUgSlNDX0ZP
UkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcCisgICAgbWFjcm8oZXZlcnkpIFwK
KyAgICBtYWNybyhmb3JFYWNoKSBcCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRP
Uihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCisgICAgSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCitKU0NfRk9S
RUFDSF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUNM
QVJFX0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fRVhJU1RTKG9iamVj
dCwgZnVuYykgZGVmaW5lZCBKU0NfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVuYworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTQ0J1aWx0aW5zX2gKKworIyMjIEVuZCBG
aWxlOiBKU0NCdWlsdGlucy5oCisKKyMjIyBCZWdpbiBGaWxlOiBKU0NCdWlsdGlucy5jcHAKKy8q
CisgKiBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChjKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4uCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0
IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8v
IGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dl
bmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJK
U0NCdWlsdGlucy5oIgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVk
ZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJW
TS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNf
YnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVj
dEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0aW5Qcm90b3R5cGVF
dmVyeUNvZGVMZW5ndGggPSAxMDE1OworY29uc3QgY2hhciogc19idWlsdGluUHJvdG90eXBlRXZl
cnlDb2RlID0KKyAgICIoZnVuY3Rpb24gKGNhbGxiYWNrIClcbiIgXAorICAgIntcbiIgXAorICAg
IiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIGlmICh0aGlzID09
PSBudWxsKVxuIiBcCisgICAiICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LnBy
b3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbFwiKTtcbiIgXAor
ICAgIiAgICBcbiIgXAorICAgIiAgICBpZiAodGhpcyA9PT0gdW5kZWZpbmVkKVxuIiBcCisgICAi
ICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1
aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkXCIpO1xuIiBcCisgICAiICAgIFxuIiBc
CisgICAiICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7XG4iIFwKKyAgICIgICAgdmFyIGxl
bmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAg
aWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gXCJmdW5jdGlvblwiKVxuIiBcCisgICAiICAgICAgICB0
aHJvdyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0
IGJlIGEgZnVuY3Rpb25cIik7XG4iIFwKKyAgICIgICAgXG4iIFwKKyAgICIgICAgdmFyIHRoaXNB
cmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiIg
XAorICAgIiAgICBcbiIgXAorICAgIiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsr
KSB7XG4iIFwKKyAgICIgICAgICAgIGlmICghKGkgaW4gYXJyYXkpKVxuIiBcCisgICAiICAgICAg
ICAgICAgY29udGludWU7XG4iIFwKKyAgICIgICAgICAgIGlmICghY2FsbGJhY2suQGNhbGwodGhp
c0FyZywgYXJyYXlbaV0sIGksIGFycmF5KSlcbiIgXAorICAgIiAgICAgICAgICAgIHJldHVybiBm
YWxzZTtcbiIgXAorICAgIiAgICB9XG4iIFwKKyAgICIgICAgXG4iIFwKKyAgICIgICAgcmV0dXJu
IHRydWU7XG4iIFwKKyAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0
eSBzX2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNv
bnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0aW5Qcm90
b3R5cGVGb3JFYWNoQ29kZUxlbmd0aCA9IDkxMTsKK2NvbnN0IGNoYXIqIHNfYnVpbHRpblByb3Rv
dHlwZUZvckVhY2hDb2RlID0KKyAgICIoZnVuY3Rpb24gKGNhbGxiYWNrIClcbiIgXAorICAgIntc
biIgXAorICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIGlm
ICh0aGlzID09PSBudWxsKVxuIiBcCisgICAiICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihc
IkFycmF5LnByb3RvdHlwZS5mb3JFYWNoIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxs
XCIpO1xuIiBcCisgICAiICAgIFxuIiBcCisgICAiICAgIGlmICh0aGlzID09PSB1bmRlZmluZWQp
XG4iIFwKKyAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkucHJvdG90eXBl
LmZvckVhY2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZFwiKTtcbiIgXAor
ICAgIiAgICBcbiIgXAorICAgIiAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMpO1xuIiBcCisg
ICAiICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTtcbiIgXAorICAgIlxu
IiBcCisgICAiICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rpb25cIilcbiIgXAor
ICAgIiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5wcm90b3R5cGUuZm9yRWFj
aCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb25cIik7XG4iIFwKKyAgICIgICAgXG4iIFwKKyAg
ICIgICAgdmFyIHRoaXNBcmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6
IHVuZGVmaW5lZDtcbiIgXAorICAgIiAgICBcbiIgXAorICAgIiAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGxlbmd0aDsgaSsrKSB7XG4iIFwKKyAgICIgICAgICAgIGlmIChpIGluIGFycmF5KVxuIiBc
CisgICAiICAgICAgICAgICAgY2FsbGJhY2suQGNhbGwodGhpc0FyZywgYXJyYXlbaV0sIGksIGFy
cmF5KTtcbiIgXAorICAgIiAgICB9XG4iIFwKKyAgICJ9KVxuIiBcCis7CisKKworI2RlZmluZSBE
RUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRD
b3VudCkgXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlND
OjpWTSYgdm0pIFwKK3tcCisgICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2Rl
TmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29k
ZU5hbWUjI1NvdXJjZSgpKTsgfQorSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlM
VElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKworCit9IC8v
IG5hbWVzcGFjZSBKU0MKKyMjIyBFbmQgRmlsZTogSlNDQnVpbHRpbnMuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9K
YXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmluZWQuanMtcmVzdWx0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNj
cmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpzLXJlc3VsdApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jYTUyOWVlOTFjNjBiMWVlODY2ZWQ3YWUyNGIwNzZhM2E4ODIyNjA0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0
ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpzLXJlc3VsdApA
QCAtMCwwICsxLDIyNCBAQAorIyMjIEJlZ2luIEZpbGU6IEpTQ0J1aWx0aW5zLmgKKy8qCisgKiBD
b3B5cmlnaHQgKGMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5
IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUg
c2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlu
cy5weQorCisjaWZuZGVmIEpTQ0J1aWx0aW5zX2gKKyNkZWZpbmUgSlNDQnVpbHRpbnNfaAorCitu
YW1lc3BhY2UgSlNDIHsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIFZNOworCitl
bnVtIGNsYXNzIENvbnN0cnVjdEFiaWxpdHkgOiB1bnNpZ25lZDsKK30KKworbmFtZXNwYWNlIEpT
QyB7CisKKy8qIEJ1aWx0aW5Db25zdHJ1Y3RvciAqLworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfYnVp
bHRpbkNvbnN0cnVjdG9yT2ZDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2J1aWx0aW5Db25zdHJ1
Y3Rvck9mQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19i
dWlsdGluQ29uc3RydWN0b3JPZkNvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNo
YXIqIHNfYnVpbHRpbkNvbnN0cnVjdG9yRnJvbUNvZGU7CitleHRlcm4gY29uc3QgaW50IHNfYnVp
bHRpbkNvbnN0cnVjdG9yRnJvbUNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5IHNfYnVpbHRpbkNvbnN0cnVjdG9yRnJvbUNvZGVDb25zdHJ1Y3RBYmlsaXR5Owor
CisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5DT05TVFJVQ1RPUl9CVUlMVElOX0RBVEEobWFj
cm8pIFwKKyAgICBtYWNybyhvZiwgYnVpbHRpbkNvbnN0cnVjdG9yT2YsIDApIFwKKyAgICBtYWNy
byhmcm9tLCBidWlsdGluQ29uc3RydWN0b3JGcm9tLCAxKSBcCisKKyNkZWZpbmUgSlNDX0JVSUxU
SU5fQlVJTFRJTkNPTlNUUlVDVE9SX09GIDEKKyNkZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTkNP
TlNUUlVDVE9SX0ZST00gMQorCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShtYWNy
bykgXAorICAgIG1hY3JvKGJ1aWx0aW5Db25zdHJ1Y3Rvck9mQ29kZSwgb2YsIHNfYnVpbHRpbkNv
bnN0cnVjdG9yT2ZDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8oYnVpbHRpbkNvbnN0cnVjdG9yRnJv
bUNvZGUsIGZyb20sIHNfYnVpbHRpbkNvbnN0cnVjdG9yRnJvbUNvZGVMZW5ndGgpIFwKKworI2Rl
ZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFwKKyAgICBtYWNy
byhmcm9tKSBcCisgICAgbWFjcm8ob2YpIFwKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VO
RVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKKyAgICBKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisKK0pT
Q19GT1JFQUNIX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVm
IERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKKworI2RlZmluZSBKU0NfQlVJTFRJTl9FWElTVFMo
b2JqZWN0LCBmdW5jKSBkZWZpbmVkIEpTQ19CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5j
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNDQnVpbHRpbnNfaAorCisjIyMg
RW5kIEZpbGU6IEpTQ0J1aWx0aW5zLmgKKworIyMjIEJlZ2luIEZpbGU6IEpTQ0J1aWx0aW5zLmNw
cAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1
dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0
aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRl
LWpzLWJ1aWx0aW5zLnB5CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0NCdWls
dGlucy5oIgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiRXhl
Y3V0YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJWTS5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRp
bkNvbnN0cnVjdG9yT2ZDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0
eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2Rl
TGVuZ3RoID0gNDA0OworY29uc3QgY2hhciogc19idWlsdGluQ29uc3RydWN0b3JPZkNvZGUgPQor
ICAgIihmdW5jdGlvbiAoKVxuIiBcCisgICAie1xuIiBcCisgICAiICAgIFwidXNlIHN0cmljdFwi
O1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7
XG4iIFwKKyAgICIgICAgLy9cbiIgXAorICAgIiAgICB2YXIgYXJyYXkgPSB0eXBlb2YgdGhpcyA9
PT0gJ2Z1bmN0aW9uJyA/IG5ldyB0aGlzKGxlbmd0aCkgOiBuZXcgQEFycmF5KGxlbmd0aCk7XG4i
IFwKKyAgICIgICAgZm9yICh2YXIgayA9IDA7IGsgPCBsZW5ndGg7ICsraylcbiIgXAorICAgIiAg
ICAgICAgQHB1dEJ5VmFsRGlyZWN0KGFycmF5LCBrLCBhcmd1bWVudHNba10pO1xuIiBcCisgICAi
ICAgIGFycmF5Lmxlbmd0aCA9IGxlbmd0aDtcbiIgXAorICAgIiAgICByZXR1cm4gYXJyYXk7XG4i
IFwKKyAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0
aW5Db25zdHJ1Y3RvckZyb21Db2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJp
bGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfYnVpbHRpbkNvbnN0cnVjdG9yRnJv
bUNvZGVMZW5ndGggPSAyNzEwOworY29uc3QgY2hhciogc19idWlsdGluQ29uc3RydWN0b3JGcm9t
Q29kZSA9CisgICAiKGZ1bmN0aW9uIChpdGVtcyApXG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAg
XCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICB2YXIgdGhpc09iaiA9IHRo
aXM7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICB2YXIgbWFwRm4gPSBhcmd1bWVudHMubGVuZ3Ro
ID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiIgXAorICAgIlxuIiBcCisgICAiICAg
IHZhciB0aGlzQXJnO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgaWYgKG1hcEZuICE9PSB1bmRl
ZmluZWQpIHtcbiIgXAorICAgIiAgICAgICAgaWYgKHR5cGVvZiBtYXBGbiAhPT0gXCJmdW5jdGlv
blwiKVxuIiBcCisgICAiICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5m
cm9tIHJlcXVpcmVzIHRoYXQgdGhlIHNlY29uZCBhcmd1bWVudCwgd2hlbiBwcm92aWRlZCwgYmUg
YSBmdW5jdGlvblwiKTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgICAgICBpZiAoYXJndW1lbnRz
Lmxlbmd0aCA+IDIpXG4iIFwKKyAgICIgICAgICAgICAgICB0aGlzQXJnID0gYXJndW1lbnRzWzJd
O1xuIiBcCisgICAiICAgIH1cbiIgXAorICAgIlxuIiBcCisgICAiICAgIGlmIChpdGVtcyA9PSBu
dWxsKVxuIiBcCisgICAiICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LmZyb20g
cmVxdWlyZXMgYW4gYXJyYXktbGlrZSBvYmplY3QgLSBub3QgbnVsbCBvciB1bmRlZmluZWRcIik7
XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVtc1tAc3lt
Ym9sSXRlcmF0b3JdO1xuIiBcCisgICAiICAgIGlmIChpdGVyYXRvck1ldGhvZCAhPSBudWxsKSB7
XG4iIFwKKyAgICIgICAgICAgIGlmICh0eXBlb2YgaXRlcmF0b3JNZXRob2QgIT09IFwiZnVuY3Rp
b25cIilcbiIgXAorICAgIiAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXku
ZnJvbSByZXF1aXJlcyB0aGF0IHRoZSBwcm9wZXJ0eSBvZiB0aGUgZmlyc3QgYXJndW1lbnQsIGl0
ZW1zW1N5bWJvbC5pdGVyYXRvcl0sIHdoZW4gZXhpc3RzLCBiZSBhIGZ1bmN0aW9uXCIpO1xuIiBc
CisgICAiXG4iIFwKKyAgICIgICAgICAgIC8vXG4iIFwKKyAgICIgICAgICAgIHZhciByZXN1bHQg
PSAodHlwZW9mIHRoaXNPYmogPT09IFwiZnVuY3Rpb25cIikgPyBAT2JqZWN0KG5ldyB0aGlzT2Jq
KCkpIDogW107XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICAgICAgdmFyIGsgPSAwO1xuIiBcCisg
ICAiICAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvck1ldGhvZC5AY2FsbChpdGVtcyk7XG4i
IFwKKyAgICJcbiIgXAorICAgIiAgICAgICAgLy9cbiIgXAorICAgIiAgICAgICAgLy9cbiIgXAor
ICAgIiAgICAgICAgLy9cbiIgXAorICAgIiAgICAgICAgdmFyIHdyYXBwZXIgPSB7XG4iIFwKKyAg
ICIgICAgICAgICAgICBbQHN5bWJvbEl0ZXJhdG9yXSgpIHtcbiIgXAorICAgIiAgICAgICAgICAg
ICAgICByZXR1cm4gaXRlcmF0b3I7XG4iIFwKKyAgICIgICAgICAgICAgICB9XG4iIFwKKyAgICIg
ICAgICAgIH07XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICAgICAgZm9yICh2YXIgdmFsdWUgb2Yg
d3JhcHBlcikge1xuIiBcCisgICAiICAgICAgICAgICAgaWYgKG1hcEZuKVxuIiBcCisgICAiICAg
ICAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHRoaXNBcmcgPT09IHVuZGVm
aW5lZCA/IG1hcEZuKHZhbHVlLCBrKSA6IG1hcEZuLkBjYWxsKHRoaXNBcmcsIHZhbHVlLCBrKSk7
XG4iIFwKKyAgICIgICAgICAgICAgICBlbHNlXG4iIFwKKyAgICIgICAgICAgICAgICAgICAgQHB1
dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywgdmFsdWUpO1xuIiBcCisgICAiICAgICAgICAgICAgayAr
PSAxO1xuIiBcCisgICAiICAgICAgICB9XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICAgICAgcmVz
dWx0Lmxlbmd0aCA9IGs7XG4iIFwKKyAgICIgICAgICAgIHJldHVybiByZXN1bHQ7XG4iIFwKKyAg
ICIgICAgfVxuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdmFyIGFycmF5TGlrZSA9IEBPYmplY3Qo
aXRlbXMpO1xuIiBcCisgICAiICAgIHZhciBhcnJheUxpa2VMZW5ndGggPSBAdG9MZW5ndGgoYXJy
YXlMaWtlLmxlbmd0aCk7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICAvL1xuIiBcCisgICAiICAg
IHZhciByZXN1bHQgPSAodHlwZW9mIHRoaXNPYmogPT09IFwiZnVuY3Rpb25cIikgPyBAT2JqZWN0
KG5ldyB0aGlzT2JqKGFycmF5TGlrZUxlbmd0aCkpIDogbmV3IEBBcnJheShhcnJheUxpa2VMZW5n
dGgpO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdmFyIGsgPSAwO1xuIiBcCisgICAiICAgIHdo
aWxlIChrIDwgYXJyYXlMaWtlTGVuZ3RoKSB7XG4iIFwKKyAgICIgICAgICAgIHZhciB2YWx1ZSA9
IGFycmF5TGlrZVtrXTtcbiIgXAorICAgIiAgICAgICAgaWYgKG1hcEZuKVxuIiBcCisgICAiICAg
ICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywgdGhpc0FyZyA9PT0gdW5kZWZpbmVk
ID8gbWFwRm4odmFsdWUsIGspIDogbWFwRm4uQGNhbGwodGhpc0FyZywgdmFsdWUsIGspKTtcbiIg
XAorICAgIiAgICAgICAgZWxzZVxuIiBcCisgICAiICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0
KHJlc3VsdCwgaywgdmFsdWUpO1xuIiBcCisgICAiICAgICAgICBrICs9IDE7XG4iIFwKKyAgICIg
ICAgfVxuIiBcCisgICAiXG4iIFwKKyAgICIgICAgcmVzdWx0Lmxlbmd0aCA9IGFycmF5TGlrZUxl
bmd0aDtcbiIgXAorICAgIiAgICByZXR1cm4gcmVzdWx0O1xuIiBcCisgICAifSlcbiIgXAorOwor
CisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5h
bWUsIGFyZ3VtZW50Q291bnQpIFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMj
R2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCit7XAorICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0
YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1
dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IH0KK0pTQ19GT1JFQUNIX0JVSUxUSU5fQ09E
RShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJB
VE9SCisKKworfSAvLyBuYW1lc3BhY2UgSlNDCisjIyMgRW5kIEZpbGU6IEpTQ0J1aWx0aW5zLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRp
bnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJD
b3JlLUd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDM2ZDJl
MzViYWVmYjc2MDUzODg4NzdlODQ2YTcwMGFlZjg2ODEyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29y
ZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTAsMCArMSwzMTggQEAKKyMj
IyBCZWdpbiBGaWxlOiBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmgKKy8qCisgKiBDb3B5cmlnaHQg
KGMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8K
KworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRl
ZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisj
aWZuZGVmIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNfaAorI2RlZmluZSBHdWFyZGVkQnVpbHRpbkJ1
aWx0aW5zX2gKKworI2luY2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK30KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisvKiBHdWFyZGVkQnVpbHRpbiAqLworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfZ3VhcmRl
ZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19n
dWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlTGVuZ3RoOworZXh0ZXJuIGNv
bnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVh
bUxvY2tlZENvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfZ3VhcmRl
ZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGU7CitleHRlcm4gY29uc3QgaW50IHNfZ3Vh
cmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGVMZW5ndGg7CitleHRlcm4gY29uc3Qg
SlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVh
bUNvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfZ3VhcmRlZEJ1aWx0
aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19ndWFyZGVkQnVp
bHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29u
c3RydWN0QWJpbGl0eSBzX2d1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVDb25z
dHJ1Y3RBYmlsaXR5OworCisjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9C
VUlMVElOX0RBVEEobWFjcm8pIFwKKyAgICBtYWNybyhpc1JlYWRhYmxlU3RyZWFtTG9ja2VkLCBn
dWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIDEpIFwKKyAgICBtYWNybyhjYW5j
ZWxSZWFkYWJsZVN0cmVhbSwgZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbSwgMikg
XAorICAgIG1hY3JvKHByb21pc2VJbnZva2VPck5vb3AsIGd1YXJkZWRCdWlsdGluUHJvbWlzZUlu
dm9rZU9yTm9vcCwgMykgXAorCisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9HVUFSREVEQlVJTFRJ
Tl9JU1JFQURBQkxFU1RSRUFNTE9DS0VEIDEKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX0dVQVJE
RURCVUlMVElOX0NBTkNFTFJFQURBQkxFU1RSRUFNIDEKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElO
X0dVQVJERURCVUlMVElOX1BST01JU0VJTlZPS0VPUk5PT1AgMQorCisjZGVmaW5lIFdFQkNPUkVf
Rk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUobWFjcm8pIFwKKyAgICBtYWNybyhn
dWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlLCBpc1JlYWRhYmxlU3RyZWFt
TG9ja2VkLCBzX2d1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5ndGgp
IFwKKyAgICBtYWNybyhndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZSwgY2Fu
Y2VsUmVhZGFibGVTdHJlYW0sIHNfZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNv
ZGVMZW5ndGgpIFwKKyAgICBtYWNybyhndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BD
b2RlLCBwcm9taXNlSW52b2tlT3JOb29wLCBzX2d1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9y
Tm9vcENvZGVMZW5ndGgpIFwKKworI2RlZmluZSBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxU
SU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcCisgICAgbWFjcm8oY2FuY2VsUmVhZGFi
bGVTdHJlYW0pIFwKKyAgICBtYWNybyhpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKSBcCisgICAgbWFj
cm8ocHJvbWlzZUludm9rZU9yTm9vcCkgXAorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5F
UkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorICAgIEpTQzo6
RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKworV0VC
Q09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5f
R0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKKworI2RlZmluZSBX
RUJDT1JFX0JVSUxUSU5fR1VBUkRFREJVSUxUSU5fRVhJU1RTKG9iamVjdCwgZnVuYykgZGVmaW5l
ZCBXRUJDT1JFX0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gR3VhcmRlZEJ1aWx0aW5CdWlsdGluc19oCisKKyMjIyBF
bmQgRmlsZTogR3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5oCisKKyMjIyBCZWdpbiBGaWxlOiBHdWFy
ZGVkQnVpbHRpbkJ1aWx0aW5zLmNwcAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJ
VCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlw
dCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmgiCisKKyNpbmNsdWRlICJXZWJD
b3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSA8cnVudGltZS9FeGVjdXRhYmxlLmg+CisjaW5j
bHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlND
ZWxsSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oPgorI2lu
Y2x1ZGUgPHJ1bnRpbWUvVk0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBKU0M6
OkNvbnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRD
b2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3Ry
dWN0OworY29uc3QgaW50IHNfZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29k
ZUxlbmd0aCA9IDEyNzsKK2NvbnN0IGNoYXIqIHNfZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3Ry
ZWFtTG9ja2VkQ29kZSA9CisgICAiKGZ1bmN0aW9uIChzdHJlYW0pXG4iIFwKKyAgICJ7XG4iIFwK
KyAgICIgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHJldHVybiAh
IXN0cmVhbS5AcmVhZGVyO1xuIiBcCisgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0
cnVjdEFiaWxpdHkgc19ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUNvbnN0
cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2Nv
bnN0IGludCBzX2d1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlTGVuZ3RoID0g
NTE0OworY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29k
ZSA9CisgICAiKGZ1bmN0aW9uIChzdHJlYW0sIHJlYXNvbilcbiIgXAorICAgIntcbiIgXAorICAg
IiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIGlmIChzdHJlYW0u
QHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQpXG4iIFwKKyAgICIgICAgICAgIHJldHVy
biBQcm9taXNlLnJlc29sdmUoKTtcbiIgXAorICAgIiAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0g
QHJlYWRhYmxlU3RyZWFtRXJyb3JlZClcbiIgXAorICAgIiAgICAgICAgcmV0dXJuIFByb21pc2Uu
cmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpO1xuIiBcCisgICAiICAgIHN0cmVhbS5AcXVldWUg
PSBbXTtcbiIgXAorICAgIiAgICBAZmluaXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7
XG4iIFwKKyAgICIgICAgcmV0dXJuIEBwcm9taXNlSW52b2tlT3JOb29wKHN0cmVhbS5AdW5kZXJs
eWluZ1NvdXJjZSwgXCJjYW5jZWxcIiwgW3JlYXNvbl0pLnRoZW4oZnVuY3Rpb24oKSB7IH0pO1xu
IiBcCisgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19ndWFy
ZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6
Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfZ3VhcmRlZEJ1
aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUxlbmd0aCA9IDQ3NzsKK2NvbnN0IGNoYXIqIHNf
Z3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZSA9CisgICAiKGZ1bmN0aW9uIChv
YmplY3QsIGtleSwgYXJncylcbiIgXAorICAgIntcbiIgXAorICAgIiAgICBcInVzZSBzdHJpY3Rc
IjtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHRyeSB7XG4iIFwKKyAgICIgICAgICAgIHZhciBt
ZXRob2QgPSBvYmplY3Rba2V5XTtcbiIgXAorICAgIiAgICAgICAgaWYgKHR5cGVvZiBtZXRob2Qg
PT09IFwidW5kZWZpbmVkXCIpXG4iIFwKKyAgICIgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5y
ZXNvbHZlKCk7XG4iIFwKKyAgICIgICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9i
amVjdCwgYXJncyk7XG4iIFwKKyAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVz
dWx0KTtcbiIgXAorICAgIiAgICB9XG4iIFwKKyAgICIgICAgY2F0Y2goZXJyb3IpIHtcbiIgXAor
ICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiIgXAorICAgIiAgICB9
XG4iIFwKKyAgICJ9KVxuIiBcCis7CisKKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFU
T1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKK3tcCisgICAg
SlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+
KHZtLmNsaWVudERhdGEpOyBcCisgICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlv
bnMoKS5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGlu
ayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmd1YXJkZWRCdWlsdGluQnVpbHRp
bnMoKS5jb2RlTmFtZSMjU291cmNlKCkpOyBcCit9CitXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJV
SUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJ
TkVfQlVJTFRJTl9HRU5FUkFUT1IKKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjIyMgRW5k
IEZpbGU6IEd1YXJkZWRCdWlsdGluQnVpbHRpbnMuY3BwCisKKyMjIyBCZWdpbiBGaWxlOiBHdWFy
ZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlci5oCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IENh
bm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5P
VCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZh
U2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lmbmRlZiBHdWFy
ZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9oCisjZGVmaW5lIEd1YXJkZWRCdWlsdGluQnVpbHRp
bnNXcmFwcGVyX2gKKworI2luY2x1ZGUgIkd1YXJkZWRCdWlsdGluQnVpbHRpbnMuaCIKKyNpbmNs
dWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4KKyNpbmNsdWRlIDxieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSWRlbnRpZmllci5oPgor
I2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyIDogcHJpdmF0ZSBKU0M6OldlYWtI
YW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgR3VhcmRlZEJ1aWx0aW5CdWlsdGlu
c1dyYXBwZXIoSlNDOjpWTSogdm0pCisgICAgICAgIDogbV92bSgqdm0pCisgICAgICAgIFdFQkNP
UkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTEla
RV9CVUlMVElOX05BTUVTKQorI2RlZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJF
UlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpICwgbV8jI25hbWUjI1NvdXJjZShKU0M6Om1h
a2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc18jI25hbWUsIGxlbmd0aCkp
KQorICAgICAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKElO
SVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBJTklUSUFMSVpFX0JVSUxU
SU5fU09VUkNFX01FTUJFUlMKKyAgICB7CisgICAgfQorCisjZGVmaW5lIEVYUE9TRV9CVUlMVElO
X0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCisgICAgY29uc3Qg
SlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMj
U291cmNlOyB9CisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fQ09E
RShFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9FWEVD
VVRBQkxFUworCisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fRlVO
Q1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUikKKworICAgIHZv
aWQgZXhwb3J0TmFtZXMoKTsKKworcHJpdmF0ZToKKyAgICBKU0M6OlZNJiBtX3ZtOworCisgICAg
V0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNM
QVJFX0JVSUxUSU5fTkFNRVMpCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1C
RVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpTb3VyY2VDb2RlIG1f
IyNuYW1lIyNTb3VyY2U7XAorICAgIEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRF
REJVSUxUSU5fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1
bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKKworfTsKKworI2RlZmluZSBERUZJ
TkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAoraW5s
aW5lIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEd1YXJkZWRCdWlsdGluQnVpbHRp
bnNXcmFwcGVyOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAore1wKKyAgICBpZiAoIW1fIyNuYW1lIyNF
eGVjdXRhYmxlKVwKKyAgICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUgPSBKU0M6OldlYWs8SlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4oSlNDOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJs
ZShtX3ZtLCBtXyMjbmFtZSMjU291cmNlLCBmdW5jdGlvbk5hbWUjI1B1YmxpY05hbWUoKSwgc18j
I25hbWUjI0NvbnN0cnVjdEFiaWxpdHkpLCB0aGlzLCAmbV8jI25hbWUjI0V4ZWN1dGFibGUpO1wK
KyAgICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7XAorfQorV0VCQ09SRV9GT1JF
QUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxF
UykKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUworCitpbmxpbmUgdm9pZCBHdWFy
ZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcjo6ZXhwb3J0TmFtZXMoKQoreworI2RlZmluZSBFWFBP
UlRfRlVOQ1RJT05fTkFNRShuYW1lKSBtX3ZtLnByb3BlcnR5TmFtZXMtPmFwcGVuZEV4dGVybmFs
TmFtZShuYW1lIyNQdWJsaWNOYW1lKCksIG5hbWUjI1ByaXZhdGVOYW1lKCkpOworICAgIFdFQkNP
UkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoRVhQT1JUX0ZV
TkNUSU9OX05BTUUpCisjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OX05BTUUKK30KKworY2xhc3MgR3Vh
cmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBHdWFy
ZGVkQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnMoSlNDOjpWTSYgdm0pIDogbV92bSh2bSkgeyB9CisK
KyAgICB2b2lkIGluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYpOworICAgIHZvaWQgdmlzaXQoSlND
OjpTbG90VmlzaXRvciYpOworCitwdWJsaWM6CisgICAgSlNDOjpWTSYgbV92bTsKKworI2RlZmlu
ZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMoZnVuY3Rpb25OYW1lKSBcCisgICAgSlND
OjpXcml0ZUJhcnJpZXI8SlNDOjpKU0Z1bmN0aW9uPiBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlv
bjsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9O
QU1FKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JVSUxU
SU5fU09VUkNFX01FTUJFUlMKK307CisKK2lubGluZSB2b2lkIEd1YXJkZWRCdWlsdGluQnVpbHRp
bkZ1bmN0aW9uczo6aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7Cisj
ZGVmaW5lIEVYUE9SVF9GVU5DVElPTihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXAor
ICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihtX3ZtLCBjb2RlTmFtZSMjR2Vu
ZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7CisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJE
RURCVUlMVElOX0JVSUxUSU5fQ09ERShFWFBPUlRfRlVOQ1RJT04pCisjdW5kZWYgRVhQT1JUX0ZV
TkNUSU9OCit9CisKK2lubGluZSB2b2lkIEd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9uczo6
dmlzaXQoSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyNkZWZpbmUgVklTSVRfRlVOQ1RJ
T04obmFtZSkgdmlzaXRvci5hcHBlbmQoJm1fIyNuYW1lIyNGdW5jdGlvbik7CisgICAgV0VCQ09S
RV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShWSVNJVF9GVU5D
VElPTikKKyN1bmRlZiBWSVNJVF9GVU5DVElPTgorfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyX2gKKworIyMjIEVu
ZCBGaWxlOiBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlci5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3Jl
LUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVk
SW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MmVkNjdlY2E0
MDBjNTMxODZmY2RiMzU1YjVlNGJlNTM2OWNlM2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1H
dWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMCwwICsxLDMxOCBA
QAorIyMjIEJlZ2luIEZpbGU6IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucy5oCisvKgor
ICogQ29weXJpZ2h0IChjKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGlj
YWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkg
dGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVp
bHRpbnMucHkKKworI2lmbmRlZiBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNfaAorI2Rl
ZmluZSBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNfaAorCisjaW5jbHVkZSA8YnVpbHRp
bnMvQnVpbHRpblV0aWxzLmg+CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRnVuY3Rpb25FeGVj
dXRhYmxlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8qIEd1YXJkZWRJbnRlcm5hbEJ1
aWx0aW4gKi8KK2V4dGVybiBjb25zdCBjaGFyKiBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1Jl
YWRhYmxlU3RyZWFtTG9ja2VkQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19ndWFyZGVkSW50ZXJu
YWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5ndGg7CitleHRlcm4gY29uc3Qg
SlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVT
dHJlYW1Mb2NrZWRDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX2d1
YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGU7CitleHRlcm4gY29u
c3QgaW50IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUxl
bmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkSW50ZXJu
YWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVy
biBjb25zdCBjaGFyKiBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29w
Q29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluUHJvbWlzZUlu
dm9rZU9yTm9vcENvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlQ29uc3RydWN0
QWJpbGl0eTsKKworI2RlZmluZSBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJ
Tl9CVUlMVElOX0RBVEEobWFjcm8pIFwKKyAgICBtYWNybyhpc1JlYWRhYmxlU3RyZWFtTG9ja2Vk
LCBndWFyZGVkSW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZCwgMSkgXAorICAg
IG1hY3JvKGNhbmNlbFJlYWRhYmxlU3RyZWFtLCBndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2Vs
UmVhZGFibGVTdHJlYW0sIDIpIFwKKyAgICBtYWNybyhwcm9taXNlSW52b2tlT3JOb29wLCBndWFy
ZGVkSW50ZXJuYWxCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcCwgMykgXAorCisjZGVmaW5lIFdF
QkNPUkVfQlVJTFRJTl9HVUFSREVESU5URVJOQUxCVUlMVElOX0lTUkVBREFCTEVTVFJFQU1MT0NL
RUQgMQorI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9DQU5D
RUxSRUFEQUJMRVNUUkVBTSAxCisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9HVUFSREVESU5URVJO
QUxCVUlMVElOX1BST01JU0VJTlZPS0VPUk5PT1AgMQorCisjZGVmaW5lIFdFQkNPUkVfRk9SRUFD
SF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShtYWNybykgXAorICAgIG1hY3Jv
KGd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZSwgaXNSZWFk
YWJsZVN0cmVhbUxvY2tlZCwgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVh
bUxvY2tlZENvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2Fu
Y2VsUmVhZGFibGVTdHJlYW1Db2RlLCBjYW5jZWxSZWFkYWJsZVN0cmVhbSwgc19ndWFyZGVkSW50
ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlTGVuZ3RoKSBcCisgICAgbWFjcm8o
Z3VhcmRlZEludGVybmFsQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlLCBwcm9taXNlSW52
b2tlT3JOb29wLCBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29k
ZUxlbmd0aCkgXAorCisjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlM
VElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXAorICAgIG1hY3JvKGNhbmNlbFJlYWRh
YmxlU3RyZWFtKSBcCisgICAgbWFjcm8oaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCkgXAorICAgIG1h
Y3JvKHByb21pc2VJbnZva2VPck5vb3ApIFwKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VO
RVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKKyAgICBKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisKK1dF
QkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShERUNMQVJF
X0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKKwor
I2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9FWElTVFMob2Jq
ZWN0LCBmdW5jKSBkZWZpbmVkIFdFQkNPUkVfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVu
YworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHdWFyZGVkSW50ZXJuYWxC
dWlsdGluQnVpbHRpbnNfaAorCisjIyMgRW5kIEZpbGU6IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5C
dWlsdGlucy5oCisKKyMjIyBCZWdpbiBGaWxlOiBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRp
bnMuY3BwCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQg
aXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8g
YnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2Vu
ZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkd1
YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucy5oIgorCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xp
ZW50RGF0YS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXhlY3V0YWJsZS5oPgorI2luY2x1ZGUgPHJ1
bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ2VsbElubGlu
ZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaD4KKyNpbmNsdWRlIDxy
dW50aW1lL1ZNLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRD
b2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3Ry
dWN0OworY29uc3QgaW50IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVTdHJlYW1M
b2NrZWRDb2RlTGVuZ3RoID0gMTI3OworY29uc3QgY2hhciogc19ndWFyZGVkSW50ZXJuYWxCdWls
dGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGUgPQorICAgIihmdW5jdGlvbiAoc3RyZWFtKVxu
IiBcCisgICAie1xuIiBcCisgICAiICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICJcbiIgXAor
ICAgIiAgICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjtcbiIgXAorICAgIn0pXG4iIFwKKzsKKwor
Y29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbkNhbmNl
bFJlYWRhYmxlU3RyZWFtQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxp
dHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5D
YW5jZWxSZWFkYWJsZVN0cmVhbUNvZGVMZW5ndGggPSA1MTQ7Citjb25zdCBjaGFyKiBzX2d1YXJk
ZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGUgPQorICAgIihmdW5jdGlv
biAoc3RyZWFtLCByZWFzb24pXG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAgXCJ1c2Ugc3RyaWN0
XCI7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRh
YmxlU3RyZWFtQ2xvc2VkKVxuIiBcCisgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZl
KCk7XG4iIFwKKyAgICIgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVy
cm9yZWQpXG4iIFwKKyAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChzdHJlYW0uQHN0
b3JlZEVycm9yKTtcbiIgXAorICAgIiAgICBzdHJlYW0uQHF1ZXVlID0gW107XG4iIFwKKyAgICIg
ICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pO1xuIiBcCisgICAiICAgIHJl
dHVybiBAcHJvbWlzZUludm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsIFwiY2Fu
Y2VsXCIsIFtyZWFzb25dKS50aGVuKGZ1bmN0aW9uKCkgeyB9KTtcbiIgXAorICAgIn0pXG4iIFwK
KzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEludGVybmFsQnVpbHRp
blByb21pc2VJbnZva2VPck5vb3BDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0
QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfZ3VhcmRlZEludGVybmFsQnVp
bHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlTGVuZ3RoID0gNDc3OworY29uc3QgY2hhciogc19n
dWFyZGVkSW50ZXJuYWxCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGUgPQorICAgIihmdW5j
dGlvbiAob2JqZWN0LCBrZXksIGFyZ3MpXG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAgXCJ1c2Ug
c3RyaWN0XCI7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICB0cnkge1xuIiBcCisgICAiICAgICAg
ICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07XG4iIFwKKyAgICIgICAgICAgIGlmICh0eXBlb2Yg
bWV0aG9kID09PSBcInVuZGVmaW5lZFwiKVxuIiBcCisgICAiICAgICAgICAgICAgcmV0dXJuIFBy
b21pc2UucmVzb2x2ZSgpO1xuIiBcCisgICAiICAgICAgICB2YXIgcmVzdWx0ID0gbWV0aG9kLkBh
cHBseShvYmplY3QsIGFyZ3MpO1xuIiBcCisgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNv
bHZlKHJlc3VsdCk7XG4iIFwKKyAgICIgICAgfVxuIiBcCisgICAiICAgIGNhdGNoKGVycm9yKSB7
XG4iIFwKKyAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4iIFwKKyAg
ICIgICAgfVxuIiBcCisgICAifSlcbiIgXAorOworCisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5f
R0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKK0pTQzo6
RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCit7
XAorICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVu
dERhdGEqPih2bS5jbGllbnREYXRhKTsgXAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGlu
RnVuY3Rpb25zKCkuZ3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4
ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmd1YXJk
ZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSk7IFwKK30KK1dF
QkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShERUZJTkVf
QlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCisKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorIyMjIEVuZCBGaWxlOiBHdWFyZGVkSW50ZXJuYWxCdWls
dGluQnVpbHRpbnMuY3BwCisKKyMjIyBCZWdpbiBGaWxlOiBHdWFyZGVkSW50ZXJuYWxCdWlsdGlu
QnVpbHRpbnNXcmFwcGVyLmgKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ2Fub24gSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJ
UyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmls
ZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaWZuZGVmIEd1YXJkZWRJbnRlcm5h
bEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAorI2RlZmluZSBHdWFyZGVkSW50ZXJuYWxCdWlsdGlu
QnVpbHRpbnNXcmFwcGVyX2gKKworI2luY2x1ZGUgIkd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWls
dGlucy5oIgorI2luY2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oPgorI2luY2x1ZGUgPGJ5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg+CisjaW5jbHVkZSA8cnVudGltZS9J
ZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0Z1bmN0aW9uLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBl
ciA6IHByaXZhdGUgSlNDOjpXZWFrSGFuZGxlT3duZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0
IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIoSlNDOjpWTSogdm0pCisgICAg
ICAgIDogbV92bSgqdm0pCisgICAgICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxC
VUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX0JVSUxUSU5fTkFNRVMpCisj
ZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5h
bWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKEpTQzo6bWFrZVNvdXJjZShTdHJpbmdJbXBs
OjpjcmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFtZSwgbGVuZ3RoKSkpCisgICAgICAgIFdFQkNPUkVf
Rk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShJTklUSUFMSVpFX0JV
SUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9N
RU1CRVJTCisgICAgeworICAgIH0KKworI2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxF
UyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorICAgIEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXAorICAgIGNvbnN0IEpTQzo6U291cmNl
Q29kZSYgbmFtZSMjU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQor
ICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShF
WFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9FWEVDVVRB
QkxFUworCisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJ
Tl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKQorCisg
ICAgdm9pZCBleHBvcnROYW1lcygpOworCitwcml2YXRlOgorICAgIEpTQzo6Vk0mIG1fdm07CisK
KyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0ZVTkNU
SU9OX05BTUUoREVDTEFSRV9CVUlMVElOX05BTUVTKQorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJ
Tl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorICAgIEpTQzo6
U291cmNlQ29kZSBtXyMjbmFtZSMjU291cmNlO1wKKyAgICBKU0M6OldlYWs8SlNDOjpVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZT4gbV8jI25hbWUjI0V4ZWN1dGFibGU7CisgICAgV0VCQ09SRV9G
T1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJ
Tl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMK
KworfTsKKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlv
bk5hbWUsIGxlbmd0aCkgXAoraW5saW5lIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4ZWN1dGFibGUo
KSBcCit7XAorICAgIGlmICghbV8jI25hbWUjI0V4ZWN1dGFibGUpXAorICAgICAgICBtXyMjbmFt
ZSMjRXhlY3V0YWJsZSA9IEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
PihKU0M6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fdm0sIG1fIyNuYW1lIyNTb3VyY2UsIGZ1
bmN0aW9uTmFtZSMjUHVibGljTmFtZSgpLCBzXyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0eSksIHRo
aXMsICZtXyMjbmFtZSMjRXhlY3V0YWJsZSk7XAorICAgIHJldHVybiBtXyMjbmFtZSMjRXhlY3V0
YWJsZS5nZXQoKTtcCit9CitXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9C
VUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgREVGSU5FX0JV
SUxUSU5fRVhFQ1VUQUJMRVMKKworaW5saW5lIHZvaWQgR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1
aWx0aW5zV3JhcHBlcjo6ZXhwb3J0TmFtZXMoKQoreworI2RlZmluZSBFWFBPUlRfRlVOQ1RJT05f
TkFNRShuYW1lKSBtX3ZtLnByb3BlcnR5TmFtZXMtPmFwcGVuZEV4dGVybmFsTmFtZShuYW1lIyNQ
dWJsaWNOYW1lKCksIG5hbWUjI1ByaXZhdGVOYW1lKCkpOworICAgIFdFQkNPUkVfRk9SRUFDSF9H
VUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShFWFBPUlRfRlVOQ1RJ
T05fTkFNRSkKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT05fTkFNRQorfQorCitjbGFzcyBHdWFyZGVk
SW50ZXJuYWxCdWlsdGluQnVpbHRpbkZ1bmN0aW9ucyB7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
R3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnMoSlNDOjpWTSYgdm0pIDogbV92
bSh2bSkgeyB9CisKKyAgICB2b2lkIGluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYpOworICAgIHZv
aWQgdmlzaXQoSlNDOjpTbG90VmlzaXRvciYpOworCitwdWJsaWM6CisgICAgSlNDOjpWTSYgbV92
bTsKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMoZnVuY3Rpb25OYW1l
KSBcCisgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU0Z1bmN0aW9uPiBtXyMjZnVuY3Rpb25O
YW1lIyNGdW5jdGlvbjsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJ
Tl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQor
I3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworfTsKKworaW5saW5lIHZvaWQg
R3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnM6OmluaXQoSlNDOjpKU0dsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworI2RlZmluZSBFWFBPUlRfRlVOQ1RJT04oY29kZU5h
bWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKVwKKyAgICBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlv
bi5zZXQobV92bSwgJmdsb2JhbE9iamVjdCwgSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGlu
RnVuY3Rpb24obV92bSwgY29kZU5hbWUjI0dlbmVyYXRvcihtX3ZtKSwgJmdsb2JhbE9iamVjdCkp
OworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09E
RShFWFBPUlRfRlVOQ1RJT04pCisjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OCit9CisKK2lubGluZSB2
b2lkIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zOjp2aXNpdChKU0M6OlNs
b3RWaXNpdG9yJiB2aXNpdG9yKQoreworI2RlZmluZSBWSVNJVF9GVU5DVElPTihuYW1lKSB2aXNp
dG9yLmFwcGVuZCgmbV8jI25hbWUjI0Z1bmN0aW9uKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VB
UkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoVklTSVRfRlVOQ1RJT04p
CisjdW5kZWYgVklTSVRfRlVOQ1RJT04KK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyX2gKKworIyMj
IEVuZCBGaWxlOiBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVj
dGVkL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLVVu
Z3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2MjVkNTZjNzAx
NmUyYzAwMzA5NmYxYzc4ZWEyODQzYzU4NWUyMDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLVVu
Z3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0wLDAgKzEsMzE4IEBACisjIyMg
QmVnaW4gRmlsZTogVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmgKKy8qCisgKiBDb3B5cmlnaHQg
KGMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8K
KworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRl
ZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisj
aWZuZGVmIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc19oCisjZGVmaW5lIFVuZ3VhcmRlZEJ1aWx0
aW5CdWlsdGluc19oCisKKyNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4KKworbmFt
ZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Cit9CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworLyogVW5ndWFyZGVkQnVpbHRpbiAqLworZXh0ZXJuIGNvbnN0IGNoYXIqIHNf
dW5ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlOworZXh0ZXJuIGNvbnN0
IGludCBzX3VuZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUxlbmd0aDsK
K2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc191bmd1YXJkZWRCdWlsdGluSXNS
ZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNo
YXIqIHNfdW5ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZTsKK2V4dGVybiBj
b25zdCBpbnQgc191bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlTGVuZ3Ro
OworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3VuZ3VhcmRlZEJ1aWx0aW5D
YW5jZWxSZWFkYWJsZVN0cmVhbUNvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNo
YXIqIHNfdW5ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlOworZXh0ZXJuIGNv
bnN0IGludCBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUxlbmd0aDsK
K2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc191bmd1YXJkZWRCdWlsdGluUHJv
bWlzZUludm9rZU9yTm9vcENvZGVDb25zdHJ1Y3RBYmlsaXR5OworCisjZGVmaW5lIFdFQkNPUkVf
Rk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fREFUQShtYWNybykgXAorICAgIG1hY3Jv
KGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIHVuZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFt
TG9ja2VkLCAxKSBcCisgICAgbWFjcm8oY2FuY2VsUmVhZGFibGVTdHJlYW0sIHVuZ3VhcmRlZEJ1
aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbSwgMikgXAorICAgIG1hY3JvKHByb21pc2VJbnZva2VP
ck5vb3AsIHVuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wLCAzKSBcCisKKyNkZWZp
bmUgV0VCQ09SRV9CVUlMVElOX1VOR1VBUkRFREJVSUxUSU5fSVNSRUFEQUJMRVNUUkVBTUxPQ0tF
RCAxCisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9VTkdVQVJERURCVUlMVElOX0NBTkNFTFJFQURB
QkxFU1RSRUFNIDEKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX1VOR1VBUkRFREJVSUxUSU5fUFJP
TUlTRUlOVk9LRU9STk9PUCAxCisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJV
SUxUSU5fQlVJTFRJTl9DT0RFKG1hY3JvKSBcCisgICAgbWFjcm8odW5ndWFyZGVkQnVpbHRpbklz
UmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlLCBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkLCBzX3VuZ3Vh
cmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUxlbmd0aCkgXAorICAgIG1hY3Jv
KHVuZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGUsIGNhbmNlbFJlYWRhYmxl
U3RyZWFtLCBzX3VuZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGVMZW5ndGgp
IFwKKyAgICBtYWNybyh1bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGUsIHBy
b21pc2VJbnZva2VPck5vb3AsIHNfdW5ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BD
b2RlTGVuZ3RoKSBcCisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5f
QlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcCisgICAgbWFjcm8oY2FuY2VsUmVhZGFibGVT
dHJlYW0pIFwKKyAgICBtYWNybyhpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKSBcCisgICAgbWFjcm8o
cHJvbWlzZUludm9rZU9yTm9vcCkgXAorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFU
T1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorICAgIEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKworV0VCQ09S
RV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9H
RU5FUkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIFdF
QkNPUkVfQlVJTFRJTl9VTkdVQVJERURCVUlMVElOX0VYSVNUUyhvYmplY3QsIGZ1bmMpIGRlZmlu
ZWQgV0VCQ09SRV9CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc19oCisKKyMj
IyBFbmQgRmlsZTogVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmgKKworIyMjIEJlZ2luIEZpbGU6
IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5jcHAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUg
Q2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8g
Tk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEph
dmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmgiCisKKyNpbmNs
dWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSA8cnVudGltZS9FeGVjdXRhYmxl
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1
bnRpbWUvSlNDZWxsSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvU3RydWN0dXJlSW5saW5l
cy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVk0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
b25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc191bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0
cmVhbUxvY2tlZENvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpD
YW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc191bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0
cmVhbUxvY2tlZENvZGVMZW5ndGggPSAxMjc7Citjb25zdCBjaGFyKiBzX3VuZ3VhcmRlZEJ1aWx0
aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZSA9CisgICAiKGZ1bmN0aW9uIChzdHJlYW0pXG4i
IFwKKyAgICJ7XG4iIFwKKyAgICIgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBcCisg
ICAiICAgIHJldHVybiAhIXN0cmVhbS5AcmVhZGVyO1xuIiBcCisgICAifSlcbiIgXAorOworCitj
b25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc191bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFi
bGVTdHJlYW1Db2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fu
bm90Q29uc3RydWN0OworY29uc3QgaW50IHNfdW5ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxl
U3RyZWFtQ29kZUxlbmd0aCA9IDUxNDsKK2NvbnN0IGNoYXIqIHNfdW5ndWFyZGVkQnVpbHRpbkNh
bmNlbFJlYWRhYmxlU3RyZWFtQ29kZSA9CisgICAiKGZ1bmN0aW9uIChzdHJlYW0sIHJlYXNvbilc
biIgXAorICAgIntcbiIgXAorICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBc
CisgICAiICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQpXG4i
IFwKKyAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiIgXAorICAgIiAgICBp
ZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZClcbiIgXAorICAgIiAg
ICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpO1xuIiBcCisg
ICAiICAgIHN0cmVhbS5AcXVldWUgPSBbXTtcbiIgXAorICAgIiAgICBAZmluaXNoQ2xvc2luZ1Jl
YWRhYmxlU3RyZWFtKHN0cmVhbSk7XG4iIFwKKyAgICIgICAgcmV0dXJuIEBwcm9taXNlSW52b2tl
T3JOb29wKHN0cmVhbS5AdW5kZXJseWluZ1NvdXJjZSwgXCJjYW5jZWxcIiwgW3JlYXNvbl0pLnRo
ZW4oZnVuY3Rpb24oKSB7IH0pO1xuIiBcCisgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNv
bnN0cnVjdEFiaWxpdHkgc191bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVD
b25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7
Citjb25zdCBpbnQgc191bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVMZW5n
dGggPSA0Nzc7Citjb25zdCBjaGFyKiBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JO
b29wQ29kZSA9CisgICAiKGZ1bmN0aW9uIChvYmplY3QsIGtleSwgYXJncylcbiIgXAorICAgIntc
biIgXAorICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHRy
eSB7XG4iIFwKKyAgICIgICAgICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTtcbiIgXAorICAg
IiAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QgPT09IFwidW5kZWZpbmVkXCIpXG4iIFwKKyAgICIg
ICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4iIFwKKyAgICIgICAgICAgIHZh
ciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9iamVjdCwgYXJncyk7XG4iIFwKKyAgICIgICAgICAg
IHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcbiIgXAorICAgIiAgICB9XG4iIFwKKyAg
ICIgICAgY2F0Y2goZXJyb3IpIHtcbiIgXAorICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVq
ZWN0KGVycm9yKTtcbiIgXAorICAgIiAgICB9XG4iIFwKKyAgICJ9KVxuIiBcCis7CisKKworI2Rl
ZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJn
dW1lbnRDb3VudCkgXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0
b3IoSlNDOjpWTSYgdm0pIFwKK3tcCisgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBz
dGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcCisgICAgcmV0dXJu
IGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS51bmd1YXJkZWRCdWlsdGluQnVpbHRpbnMo
KS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVu
Y3Rpb25zKCkudW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpKTsg
XAorfQorV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklO
RV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKwor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjIyMgRW5kIEZpbGU6IFVuZ3VhcmRlZEJ1aWx0aW5C
dWlsdGlucy5jcHAKKworIyMjIEJlZ2luIEZpbGU6IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dy
YXBwZXIuaAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0
IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8v
IGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dl
bmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5z
V3JhcHBlcl9oCisjZGVmaW5lIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAorCisj
aW5jbHVkZSAiVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmgiCisjaW5jbHVkZSA8YnVpbHRpbnMv
QnVpbHRpblV0aWxzLmg+CisjaW5jbHVkZSA8Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxydW50
aW1lL0pTRnVuY3Rpb24uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBVbmd1YXJk
ZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyIDogcHJpdmF0ZSBKU0M6OldlYWtIYW5kbGVPd25lciB7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcihK
U0M6OlZNKiB2bSkKKyAgICAgICAgOiBtX3ZtKCp2bSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNI
X1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJWkVfQlVJTFRJ
Tl9OQU1FUykKKyNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUs
IGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UoSlNDOjptYWtlU291cmNl
KFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpKSkKKyAgICAg
ICAgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKElOSVRJQUxJ
WkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5fU09V
UkNFX01FTUJFUlMKKyAgICB7CisgICAgfQorCisjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNV
VEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCisgICAgY29uc3QgSlNDOjpT
b3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNl
OyB9CisgICAgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKEVY
UE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFC
TEVTCisKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNU
SU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCisKKyAgICB2b2lk
IGV4cG9ydE5hbWVzKCk7CisKK3ByaXZhdGU6CisgICAgSlNDOjpWTSYgbV92bTsKKworICAgIFdF
QkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNM
QVJFX0JVSUxUSU5fTkFNRVMpCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1C
RVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpTb3VyY2VDb2RlIG1f
IyNuYW1lIyNTb3VyY2U7XAorICAgIEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFS
REVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQor
I3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworCit9OworCisjZGVmaW5lIERF
RklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitp
bmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5ndWFyZGVkQnVpbHRpbkJ1
aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tcCisgICAgaWYgKCFtXyMjbmFt
ZSMjRXhlY3V0YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gSlNDOjpXZWFr
PEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6Y3JlYXRlQnVpbHRpbkV4ZWN1
dGFibGUobV92bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCks
IHNfIyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRhYmxl
KTtcCisgICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKK30KK1dFQkNPUkVf
Rk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9FWEVD
VVRBQkxFUykKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUworCitpbmxpbmUgdm9p
ZCBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyOjpleHBvcnROYW1lcygpCit7CisjZGVm
aW5lIEVYUE9SVF9GVU5DVElPTl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+YXBwZW5k
RXh0ZXJuYWxOYW1lKG5hbWUjI1B1YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUoKSk7Cisg
ICAgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1F
KEVYUE9SVF9GVU5DVElPTl9OQU1FKQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTl9OQU1FCit9CisK
K2NsYXNzIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zIHsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9ucyhKU0M6OlZNJiB2bSkgOiBt
X3ZtKHZtKSB7IH0KKworICAgIHZvaWQgaW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CisgICAg
dm9pZCB2aXNpdChKU0M6OlNsb3RWaXNpdG9yJik7CisKK3B1YmxpYzoKKyAgICBKU0M6OlZNJiBt
X3ZtOworCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhmdW5jdGlvbk5h
bWUpIFwKKyAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5jdGlv
bk5hbWUjI0Z1bmN0aW9uOworICAgIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JV
SUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5k
ZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCit9OworCitpbmxpbmUgdm9pZCBVbmd1
YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9uczo6aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTihjb2RlTmFtZSwgZnVuY3Rp
b25OYW1lLCBsZW5ndGgpXAorICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3Zt
LCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbiht
X3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7CisgICAgV0VC
Q09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9SVF9GVU5DVElP
TikKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT04KK30KKworaW5saW5lIHZvaWQgVW5ndWFyZGVkQnVp
bHRpbkJ1aWx0aW5GdW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7
CisjZGVmaW5lIFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFtZSMj
RnVuY3Rpb24pOworICAgIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5f
RlVOQ1RJT05fTkFNRShWSVNJVF9GVU5DVElPTikKKyN1bmRlZiBWSVNJVF9GVU5DVElPTgorfQor
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVuZ3VhcmRlZEJ1aWx0aW5C
dWlsdGluc1dyYXBwZXJfaAorCisjIyMgRW5kIEZpbGU6IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlu
c1dyYXBwZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS14bWxDYXNpbmdUZXN0LVNlcGFyYXRlLmpzLXJl
c3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVj
dGVkL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDE5Y2Y5YmE1MTIwOWY2MTliNjMxMmQ0OGI3NDM3NTIxMTlmZjNlNAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVk
L1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTAsMCArMSwzMTgg
QEAKKyMjIyBCZWdpbiBGaWxlOiB4bWxDYXNpbmdUZXN0QnVpbHRpbnMuaAorLyoKKyAqIENvcHly
aWdodCAoYykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAK
KyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2Vu
ZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3Jp
cHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5
CisKKyNpZm5kZWYgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zX2gKKyNkZWZpbmUgeG1sQ2FzaW5nVGVz
dEJ1aWx0aW5zX2gKKworI2luY2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oPgorCituYW1l
c3BhY2UgSlNDIHsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK30KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisvKiB4bWxDYXNpbmdUZXN0ICovCitleHRlcm4gY29uc3QgY2hhciogc194bWxD
YXNpbmdUZXN0WE1MQ2FzaW5nVGVzdENvZGU7CitleHRlcm4gY29uc3QgaW50IHNfeG1sQ2FzaW5n
VGVzdFhNTENhc2luZ1Rlc3RDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0
QWJpbGl0eSBzX3htbENhc2luZ1Rlc3RYTUxDYXNpbmdUZXN0Q29kZUNvbnN0cnVjdEFiaWxpdHk7
CitleHRlcm4gY29uc3QgY2hhciogc194bWxDYXNpbmdUZXN0Q3NzQ2FzaW5nVGVzdENvZGU7Citl
eHRlcm4gY29uc3QgaW50IHNfeG1sQ2FzaW5nVGVzdENzc0Nhc2luZ1Rlc3RDb2RlTGVuZ3RoOwor
ZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3htbENhc2luZ1Rlc3RDc3NDYXNp
bmdUZXN0Q29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc194bWxDYXNp
bmdUZXN0VXJsQ2FzaW5nVGVzdENvZGU7CitleHRlcm4gY29uc3QgaW50IHNfeG1sQ2FzaW5nVGVz
dFVybENhc2luZ1Rlc3RDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJp
bGl0eSBzX3htbENhc2luZ1Rlc3RVcmxDYXNpbmdUZXN0Q29kZUNvbnN0cnVjdEFiaWxpdHk7CisK
KyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9EQVRBKG1hY3Jv
KSBcCisgICAgbWFjcm8oeG1sQ2FzaW5nVGVzdCwgeG1sQ2FzaW5nVGVzdFhNTENhc2luZ1Rlc3Qs
IDEpIFwKKyAgICBtYWNybyhjc3NDYXNpbmdUZXN0LCB4bWxDYXNpbmdUZXN0Q3NzQ2FzaW5nVGVz
dCwgMikgXAorICAgIG1hY3JvKHVybENhc2luZ1Rlc3QsIHhtbENhc2luZ1Rlc3RVcmxDYXNpbmdU
ZXN0LCAzKSBcCisKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX1hNTENBU0lOR1RFU1RfWE1MQ0FT
SU5HVEVTVCAxCisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9YTUxDQVNJTkdURVNUX0NTU0NBU0lO
R1RFU1QgMQorI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fWE1MQ0FTSU5HVEVTVF9VUkxDQVNJTkdU
RVNUIDEKKworI2RlZmluZSBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0NP
REUobWFjcm8pIFwKKyAgICBtYWNybyh4bWxDYXNpbmdUZXN0WE1MQ2FzaW5nVGVzdENvZGUsIHht
bENhc2luZ1Rlc3QsIHNfeG1sQ2FzaW5nVGVzdFhNTENhc2luZ1Rlc3RDb2RlTGVuZ3RoKSBcCisg
ICAgbWFjcm8oeG1sQ2FzaW5nVGVzdENzc0Nhc2luZ1Rlc3RDb2RlLCBjc3NDYXNpbmdUZXN0LCBz
X3htbENhc2luZ1Rlc3RDc3NDYXNpbmdUZXN0Q29kZUxlbmd0aCkgXAorICAgIG1hY3JvKHhtbENh
c2luZ1Rlc3RVcmxDYXNpbmdUZXN0Q29kZSwgdXJsQ2FzaW5nVGVzdCwgc194bWxDYXNpbmdUZXN0
VXJsQ2FzaW5nVGVzdENvZGVMZW5ndGgpIFwKKworI2RlZmluZSBXRUJDT1JFX0ZPUkVBQ0hfWE1M
Q0FTSU5HVEVTVF9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFwKKyAgICBtYWNybyhjc3ND
YXNpbmdUZXN0KSBcCisgICAgbWFjcm8odXJsQ2FzaW5nVGVzdCkgXAorICAgIG1hY3JvKHhtbENh
c2luZ1Rlc3QpIFwKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1l
LCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKKyAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0
YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisKK1dFQkNPUkVfRk9SRUFDSF9Y
TUxDQVNJTkdURVNUX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3Vu
ZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKKworI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5f
WE1MQ0FTSU5HVEVTVF9FWElTVFMob2JqZWN0LCBmdW5jKSBkZWZpbmVkIFdFQkNPUkVfQlVJTFRJ
Tl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVuYworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyB4bWxDYXNpbmdUZXN0QnVpbHRpbnNfaAorCisjIyMgRW5kIEZpbGU6IHhtbENhc2lu
Z1Rlc3RCdWlsdGlucy5oCisKKyMjIyBCZWdpbiBGaWxlOiB4bWxDYXNpbmdUZXN0QnVpbHRpbnMu
Y3BwCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMg
YXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVp
bHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJh
dGUtanMtYnVpbHRpbnMucHkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInhtbENh
c2luZ1Rlc3RCdWlsdGlucy5oIgorCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgor
I2luY2x1ZGUgPHJ1bnRpbWUvRXhlY3V0YWJsZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ2VsbElubGluZXMuaD4KKyNpbmNs
dWRlIDxydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL1ZNLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNf
eG1sQ2FzaW5nVGVzdFhNTENhc2luZ1Rlc3RDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29u
c3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfeG1sQ2FzaW5nVGVz
dFhNTENhc2luZ1Rlc3RDb2RlTGVuZ3RoID0gMTI3OworY29uc3QgY2hhciogc194bWxDYXNpbmdU
ZXN0WE1MQ2FzaW5nVGVzdENvZGUgPQorICAgIihmdW5jdGlvbiAoc3RyZWFtKVxuIiBcCisgICAi
e1xuIiBcCisgICAiICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICBy
ZXR1cm4gISFzdHJlYW0uQHJlYWRlcjtcbiIgXAorICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlND
OjpDb25zdHJ1Y3RBYmlsaXR5IHNfeG1sQ2FzaW5nVGVzdENzc0Nhc2luZ1Rlc3RDb2RlQ29uc3Ry
dWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29u
c3QgaW50IHNfeG1sQ2FzaW5nVGVzdENzc0Nhc2luZ1Rlc3RDb2RlTGVuZ3RoID0gNTE0OworY29u
c3QgY2hhciogc194bWxDYXNpbmdUZXN0Q3NzQ2FzaW5nVGVzdENvZGUgPQorICAgIihmdW5jdGlv
biAoc3RyZWFtLCByZWFzb24pXG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAgXCJ1c2Ugc3RyaWN0
XCI7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRh
YmxlU3RyZWFtQ2xvc2VkKVxuIiBcCisgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZl
KCk7XG4iIFwKKyAgICIgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVy
cm9yZWQpXG4iIFwKKyAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChzdHJlYW0uQHN0
b3JlZEVycm9yKTtcbiIgXAorICAgIiAgICBzdHJlYW0uQHF1ZXVlID0gW107XG4iIFwKKyAgICIg
ICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pO1xuIiBcCisgICAiICAgIHJl
dHVybiBAcHJvbWlzZUludm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsIFwiY2Fu
Y2VsXCIsIFtyZWFzb25dKS50aGVuKGZ1bmN0aW9uKCkgeyB9KTtcbiIgXAorICAgIn0pXG4iIFwK
KzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfeG1sQ2FzaW5nVGVzdFVybENhc2lu
Z1Rlc3RDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90
Q29uc3RydWN0OworY29uc3QgaW50IHNfeG1sQ2FzaW5nVGVzdFVybENhc2luZ1Rlc3RDb2RlTGVu
Z3RoID0gNDc3OworY29uc3QgY2hhciogc194bWxDYXNpbmdUZXN0VXJsQ2FzaW5nVGVzdENvZGUg
PQorICAgIihmdW5jdGlvbiAob2JqZWN0LCBrZXksIGFyZ3MpXG4iIFwKKyAgICJ7XG4iIFwKKyAg
ICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICB0cnkge1xuIiBc
CisgICAiICAgICAgICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07XG4iIFwKKyAgICIgICAgICAg
IGlmICh0eXBlb2YgbWV0aG9kID09PSBcInVuZGVmaW5lZFwiKVxuIiBcCisgICAiICAgICAgICAg
ICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuIiBcCisgICAiICAgICAgICB2YXIgcmVzdWx0
ID0gbWV0aG9kLkBhcHBseShvYmplY3QsIGFyZ3MpO1xuIiBcCisgICAiICAgICAgICByZXR1cm4g
UHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XG4iIFwKKyAgICIgICAgfVxuIiBcCisgICAiICAgIGNh
dGNoKGVycm9yKSB7XG4iIFwKKyAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJv
cik7XG4iIFwKKyAgICIgICAgfVxuIiBcCisgICAifSlcbiIgXAorOworCisKKyNkZWZpbmUgREVG
SU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291
bnQpIFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6
Vk0mIHZtKSBcCit7XAorICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nh
c3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXAorICAgIHJldHVybiBjbGllbnRE
YXRhLT5idWlsdGluRnVuY3Rpb25zKCkueG1sQ2FzaW5nVGVzdEJ1aWx0aW5zKCkuY29kZU5hbWUj
I0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLnht
bENhc2luZ1Rlc3RCdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSk7IFwKK30KK1dFQkNPUkVf
Rk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFU
T1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCisKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorIyMjIEVuZCBGaWxlOiB4bWxDYXNpbmdUZXN0QnVpbHRpbnMuY3BwCisKKyMjIyBC
ZWdpbiBGaWxlOiB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyLmgKKy8qCisgKiBDb3B5cmln
aHQgKGMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisg
Ki8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVy
YXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQor
CisjaWZuZGVmIHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXJfaAorI2RlZmluZSB4bWxDYXNp
bmdUZXN0QnVpbHRpbnNXcmFwcGVyX2gKKworI2luY2x1ZGUgInhtbENhc2luZ1Rlc3RCdWlsdGlu
cy5oIgorI2luY2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oPgorI2luY2x1ZGUgPGJ5dGVj
b2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg+CisjaW5jbHVkZSA8cnVudGltZS9JZGVu
dGlmaWVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0Z1bmN0aW9uLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlciA6IHByaXZhdGUg
SlNDOjpXZWFrSGFuZGxlT3duZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IHhtbENhc2luZ1Rl
c3RCdWlsdGluc1dyYXBwZXIoSlNDOjpWTSogdm0pCisgICAgICAgIDogbV92bSgqdm0pCisgICAg
ICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJ
TklUSUFMSVpFX0JVSUxUSU5fTkFNRVMpCisjZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VS
Q0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNl
KEpTQzo6bWFrZVNvdXJjZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFtZSwg
bGVuZ3RoKSkpCisgICAgICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5f
Q09ERShJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgSU5JVElBTEla
RV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCisgICAgeworICAgIH0KKworI2RlZmluZSBFWFBPU0Vf
QlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorICAgIEpT
Qzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXAorICAg
IGNvbnN0IEpTQzo6U291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV8j
I25hbWUjI1NvdXJjZTsgfQorICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxU
SU5fQ09ERShFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJ
Tl9FWEVDVVRBQkxFUworCisgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJ
Tl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKQorCisg
ICAgdm9pZCBleHBvcnROYW1lcygpOworCitwcml2YXRlOgorICAgIEpTQzo6Vk0mIG1fdm07CisK
KyAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0ZVTkNUSU9OX05BTUUo
REVDTEFSRV9CVUlMVElOX05BTUVTKQorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0Vf
TUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorICAgIEpTQzo6U291cmNlQ29k
ZSBtXyMjbmFtZSMjU291cmNlO1wKKyAgICBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZT4gbV8jI25hbWUjI0V4ZWN1dGFibGU7CisgICAgV0VCQ09SRV9GT1JFQUNIX1hN
TENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykK
KyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKKworfTsKKworI2RlZmluZSBE
RUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAor
aW5saW5lIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHhtbENhc2luZ1Rlc3RCdWls
dGluc1dyYXBwZXI6Om5hbWUjI0V4ZWN1dGFibGUoKSBcCit7XAorICAgIGlmICghbV8jI25hbWUj
I0V4ZWN1dGFibGUpXAorICAgICAgICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9IEpTQzo6V2VhazxK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPihKU0M6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRh
YmxlKG1fdm0sIG1fIyNuYW1lIyNTb3VyY2UsIGZ1bmN0aW9uTmFtZSMjUHVibGljTmFtZSgpLCBz
XyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0eSksIHRoaXMsICZtXyMjbmFtZSMjRXhlY3V0YWJsZSk7
XAorICAgIHJldHVybiBtXyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtcCit9CitXRUJDT1JFX0ZP
UkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJM
RVMpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMKKworaW5saW5lIHZvaWQgeG1s
Q2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcjo6ZXhwb3J0TmFtZXMoKQoreworI2RlZmluZSBFWFBP
UlRfRlVOQ1RJT05fTkFNRShuYW1lKSBtX3ZtLnByb3BlcnR5TmFtZXMtPmFwcGVuZEV4dGVybmFs
TmFtZShuYW1lIyNQdWJsaWNOYW1lKCksIG5hbWUjI1ByaXZhdGVOYW1lKCkpOworICAgIFdFQkNP
UkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShFWFBPUlRfRlVO
Q1RJT05fTkFNRSkKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT05fTkFNRQorfQorCitjbGFzcyB4bWxD
YXNpbmdUZXN0QnVpbHRpbkZ1bmN0aW9ucyB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgeG1sQ2Fz
aW5nVGVzdEJ1aWx0aW5GdW5jdGlvbnMoSlNDOjpWTSYgdm0pIDogbV92bSh2bSkgeyB9CisKKyAg
ICB2b2lkIGluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYpOworICAgIHZvaWQgdmlzaXQoSlNDOjpT
bG90VmlzaXRvciYpOworCitwdWJsaWM6CisgICAgSlNDOjpWTSYgbV92bTsKKworI2RlZmluZSBE
RUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMoZnVuY3Rpb25OYW1lKSBcCisgICAgSlNDOjpX
cml0ZUJhcnJpZXI8SlNDOjpKU0Z1bmN0aW9uPiBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbjsK
KyAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0ZVTkNUSU9OX05BTUUo
REVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9T
T1VSQ0VfTUVNQkVSUworfTsKKworaW5saW5lIHZvaWQgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5GdW5j
dGlvbnM6OmluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworI2RlZmlu
ZSBFWFBPUlRfRlVOQ1RJT04oY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKVwKKyAgICBt
XyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbi5zZXQobV92bSwgJmdsb2JhbE9iamVjdCwgSlNDOjpK
U0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24obV92bSwgY29kZU5hbWUjI0dlbmVyYXRv
cihtX3ZtKSwgJmdsb2JhbE9iamVjdCkpOworICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdU
RVNUX0JVSUxUSU5fQ09ERShFWFBPUlRfRlVOQ1RJT04pCisjdW5kZWYgRVhQT1JUX0ZVTkNUSU9O
Cit9CisKK2lubGluZSB2b2lkIHhtbENhc2luZ1Rlc3RCdWlsdGluRnVuY3Rpb25zOjp2aXNpdChK
U0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworI2RlZmluZSBWSVNJVF9GVU5DVElPTihuYW1l
KSB2aXNpdG9yLmFwcGVuZCgmbV8jI25hbWUjI0Z1bmN0aW9uKTsKKyAgICBXRUJDT1JFX0ZPUkVB
Q0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoVklTSVRfRlVOQ1RJT04pCisj
dW5kZWYgVklTSVRfRlVOQ1RJT04KK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyX2gKKworIyMjIEVuZCBGaWxlOiB4
bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9VcGRhdGVDb250ZW50cy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9VcGRhdGVD
b250ZW50cy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTJmOTUzMmNiNmZiMGFi
YWY1MjBkYWUwNDg1OGFjOTJhNGZjNjI0MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVXBkYXRlQ29udGVudHMucHkK
KysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0jIS91c3IvYmluL3B5dGhvbgotCi0jIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0jIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIHB1dGVyLCBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCi0jICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0jICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCi0jIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0jIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSMg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECi0jIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgotIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgc3lzCi1pbXBvcnQgb3MKLQotYXNzZXJ0KGxlbihzeXMu
YXJndikgPT0gMykKLQotY29tcCA9IHN5cy5hcmd2WzFdCi1maWxlbmFtZSA9IHN5cy5hcmd2WzJd
Ci0KLXQgPSBGYWxzZQotCi1pZiBvcy5wYXRoLmlzZmlsZShmaWxlbmFtZSk6Ci0gICAgZiA9IG9w
ZW4oZmlsZW5hbWUsICdyJykKLSAgICBjb21wYXJhdG9yID0gZi5yZWFkKCkKLSAgICBmLmNsb3Nl
KCkKLSAgICB0ID0gVHJ1ZQotCi1pZiAobm90IHQgb3IgY29tcCAhPSBjb21wYXJhdG9yKToKLSAg
ICBmID0gb3BlbihmaWxlbmFtZSwgJ3cnKQotICAgIGYud3JpdGUoY29tcCkKLSAgICBmLmNsb3Nl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5jcHAKaW5kZXggNzNlYmU0Nzk5MzVmY2E3NDA5ZmQ5MzJmODg5YjY1ODRiZTU4YjYx
NC4uODE2YjRhNWQzMGI1MjBiNWQxZGZlYWVhYjJmOTM5NGM2OGJkYzBhMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAK
QEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVh
dGVFeGVjdXRhYmxlSW50ZXJuYWwoVk0mLCBjb25zdCBTb3VyY2VDb2QKIEJ1aWx0aW5FeGVjdXRh
Ymxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKFZNJiB2bSkKICAgICA6IG1fdm0odm0pCiAjZGVmaW5l
IElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxl
bmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKG1ha2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJv
bUxpdGVyYWwoc18jI25hbWUsIGxlbmd0aCkpKQotICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oSU5J
VElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5f
Q09ERShJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCiAjdW5kZWYgRVhQT1NFX0JV
SUxUSU5fU1RSSU5HUwogewogfQpAQCAtMTMyLDcgKzEzMiw3IEBAIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6Om5hbWUjI0V4ZWN1dGFibGUoKSBcCiAgICAg
ICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gV2VhazxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZT4oY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUobV8jI25hbWUjI1NvdXJjZSwgbV92bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5mdW5jdGlvbk5hbWUjI1B1YmxpY05hbWUoKSwgc18jI25h
bWUjI0NvbnN0cnVjdEFiaWxpdHkpLCB0aGlzLCAmbV8jI25hbWUjI0V4ZWN1dGFibGUpO1wKICAg
ICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7XAogfQotSlNDX0ZPUkVBQ0hfQlVJ
TFRJTihERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKK0pTQ19GT1JFQUNIX0JVSUxUSU5fQ09E
RShERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKICN1bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VS
Q0VTCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluRXhlY3V0YWJsZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuaAppbmRleCA2YTk4MzIxN2EwYTg4NDU3ZWYwOThmYmNiOTUxMjNkNTlhNTI1
MTc1Li5lYzhkNTc3MDRiODdjNTg0YTkzNmRkZTQxN2Q2MjlmODU3YjM2NTcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCkBA
IC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1l
IyNFeGVjdXRhYmxlKCk7IFwKIGNvbnN0IFNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIHsgcmV0
dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KICAgICAKLSAgICBKU0NfRk9SRUFDSF9CVUlMVElOKEVY
UE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShF
WFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKICN1bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VSQ0VT
CiAKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRGVmYXVsdENvbnN0cnVj
dG9yKENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7CkBAIC02Miw3ICs2
Miw3IEBAIHByaXZhdGU6CiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhu
YW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aClcCiAgICAgU291cmNlQ29kZSBtXyMjbmFtZSMjU291
cmNlOyBcCiAgICAgV2VhazxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4gbV8jI25hbWUjI0V4
ZWN1dGFibGU7Ci0gICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihERUNMQVJFX0JVSUxUSU5fU09VUkNF
X01FTUJFUlMpCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9T
T1VSQ0VfTUVNQkVSUykKICN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQppbmRleCA2ZmE3OGNlYTI4
NzM4YzBmMTc0NTE0N2YwNDk3M2FjYjZjYTgzNmQ4Li5hMjI1Y2JlNjdkODBkYWEyZmQzZTk4ZjE5
MDUyZWMwOTgxOGQyM2Y4IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRl
X2hhc2hfdGFibGUKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxl
CkBAIC0zMTksNyArMzE5LDcgQEAgc3ViIG91dHB1dCgpIHsKICAgICAgICAgaWYgKCR2YWx1ZXNb
JGldeyJ0eXBlIn0gZXEgIkZ1bmN0aW9uIikgIHsKICAgICAgICAgICAgIG15ICR0YWJsZUhlYWQg
PSAkbmFtZTsKICAgICAgICAgICAgICR0YWJsZUhlYWQgPX4gcy9UYWJsZSQvLzsKLSAgICAgICAg
ICAgIHByaW50ICIgI2lmIEpTQ19CVUlMVElOX0VYSVNUUygiIC4gdWMoJHRhYmxlSGVhZCAuICRr
ZXkpIC4iKVxuIjsKKyAgICAgICAgICAgIHByaW50ICIgI2lmIEpTQ19CVUlMVElOX0VYSVNUUygi
IC4gdWMoJHRhYmxlSGVhZCkgLiAiLCAiIC4gdWMoJGtleSkgLiIpXG4iOwogICAgICAgICAgICAg
cHJpbnQgIiAgIHsgXCIka2V5XCIsICgoJGF0dHJzWyRpXSkgJiB+RnVuY3Rpb24pIHwgQnVpbHRp
biwgJGludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8QnVpbHRpbkdlbmVyYXRvcj4o
IiAuICR0YWJsZUhlYWQgLiB1Y2ZpcnN0KCRrZXkpIC4gIkNvZGVHZW5lcmF0b3IpLCAoaW50cHRy
X3QpJHNlY29uZFZhbHVlIH0gfSxcbiI7CiAgICAgICAgICAgICBwcmludCAiICNlbHNlXG4iCiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1i
dWlsdGlucyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGZmNDE4NzNkYTJiNjVhNzcxMTRjZjVkNDFlODdh
NGMwZDMwNjM3Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMKKysrIC9kZXYvbnVs
bApAQCAtMSwzNDMgKzAsMCBAQAotIyEvdXNyL2Jpbi9weXRob24KLSMgQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0jIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0j
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotIyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIyBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotIyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWlt
cG9ydCBhcmdwYXJzZQotaW1wb3J0IGZpbGVjbXAKLWltcG9ydCBmbm1hdGNoCi1pbXBvcnQgb3MK
LWltcG9ydCByZQotaW1wb3J0IHNodXRpbAotaW1wb3J0IHN5cwotaW1wb3J0IGRhdGV0aW1lCi1p
bXBvcnQganNvbgotCi1wYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCi1wYXJzZXIu
YWRkX2FyZ3VtZW50KCdpbnB1dF9maWxlJywgbmFyZ3M9JyonLCBoZWxwPSdJbnB1dCBKUyBmaWxl
cyB3aGljaCBidWlsdGlucyBnZW5lcmF0ZWQgZnJvbScpCi1wYXJzZXIuYWRkX2FyZ3VtZW50KCct
LWlucHV0LWRpcmVjdG9yeScsIGhlbHA9J0FsbCBKUyBmaWxlcyB3aWxsIGJlIHVzZWQgYXMgaW5w
dXQgZnJvbSB0aGlzIGRpcmVjdG9yeS4nKQotcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1vdXRwdXQn
LCBoZWxwPSdwYXRoIHRvIG91dHB1dCBjcHAgb3IgaCBmaWxlJykKLXBhcnNlci5hZGRfYXJndW1l
bnQoJy0tcHJlZml4JywgZGVmYXVsdD0nSlNDJywgaGVscD0ncHJlZml4IHVzZWQgZm9yIHB1Ymxp
YyBtYWNyb3MnKQotcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1uYW1lc3BhY2UnLCBkZWZhdWx0PSdK
U0MnLCBoZWxwPSdDKysgbmFtZXNwYWNlJykKLWFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCi0K
LWNvcHlyaWdodFRleHQgPSAiIiIgKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
LSAqL1xuCi0iIiIKLQotZ2VuZXJhdG9yU3RyaW5nID0gIi8qIEdlbmVyYXRlZCBieSAlcyBkbyBu
b3QgaGFuZCBlZGl0LiAqL1xuIiAlIG9zLnBhdGguYmFzZW5hbWUoX19maWxlX18pCi0KLWZ1bmN0
aW9uSGVhZFJlZ0V4cCA9IHJlLmNvbXBpbGUociIoPzpmdW5jdGlvbnxjb25zdHJ1Y3Rvcilccytc
dytccypcKC4qP1wpIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKLWZ1bmN0aW9uTmFtZVJlZ0V4cCA9
IHJlLmNvbXBpbGUociIoPzpmdW5jdGlvbnxjb25zdHJ1Y3RvcilccysoXHcrKVxzKlwoIiwgcmUu
TVVMVElMSU5FIHwgcmUuUykKLWZ1bmN0aW9uSXNDb25zdHJ1Y3RvclJlZ0V4cCA9IHJlLmNvbXBp
bGUociJeY29uc3RydWN0b3IiLCByZS5NVUxUSUxJTkUgfCByZS5TKQotZnVuY3Rpb25QYXJhbWV0
ZXJGaW5kZXIgPSByZS5jb21waWxlKHIiXig/OmZ1bmN0aW9ufGNvbnN0cnVjdG9yKVxzKyg/Olx3
KylccypcKCgoPzpccypcdyspP1xzKig/OlxzKixccypcdyspKik/XHMqXCkiLCByZS5NVUxUSUxJ
TkUgfCByZS5TKQotCi1tdWx0aWxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXCou
Kj9cKlwvIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKLXNpbmdsZUxpbmVDb21tZW50UmVnRXhwID0g
cmUuY29tcGlsZShyIlwvXC8uKj9cbiIsIHJlLk1VTFRJTElORSB8IHJlLlMpCi0KLWRlZiBnZXRD
b3B5cmlnaHQoc291cmNlKToKLSAgICBjb3B5cmlnaHRCbG9jayA9IG11bHRpbGluZUNvbW1lbnRS
ZWdFeHAuZmluZGFsbChzb3VyY2UpWzBdCi0gICAgY29weXJpZ2h0QmxvY2sgPSBjb3B5cmlnaHRC
bG9ja1s6Y29weXJpZ2h0QmxvY2suaW5kZXgoIlJlZGlzdHJpYnV0aW9uIildCi0gICAgY29weVJp
Z2h0TGluZXMgPSBbXQotCi0gICAgZm9yIGxpbmUgaW4gY29weXJpZ2h0QmxvY2suc3BsaXQoIlxu
Iik6Ci0gICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIi8qIiwgIiIpCi0gICAgICAgIGxpbmUg
PSBsaW5lLnJlcGxhY2UoIiovIiwgIiIpCi0gICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIioi
LCAiIikKLSAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiQ29weXJpZ2h0IiwgIiIpCi0gICAg
ICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoImNvcHlyaWdodCIsICIiKQotICAgICAgICBsaW5lID0g
bGluZS5yZXBsYWNlKCIoQykiLCAiIikKLSAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKGMp
IiwgIiIpCi0gICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKLSAgICAgICAgaWYgbGVuKGxpbmUp
ID09IDA6Ci0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGNvcHlSaWdodExpbmVzLmFw
cGVuZChsaW5lKQotICAgIAotICAgIHJldHVybiBsaXN0KHNldChjb3B5UmlnaHRMaW5lcykpCi0K
LWNsYXNzIEZ1bmN0aW9uKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHNv
dXJjZSwgaXNDb25zdHJ1Y3RvciwgcGFyYW1ldGVycyk6Ci0gICAgICAgIHNlbGYubmFtZSA9IG5h
bWUKLSAgICAgICAgc2VsZi5zb3VyY2UgPSBzb3VyY2UKLSAgICAgICAgc2VsZi5pc0NvbnN0cnVj
dG9yID0gaXNDb25zdHJ1Y3RvcgotICAgICAgICBzZWxmLnBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJz
Ci0KLSAgICBkZWYgbWFuZ2xlTmFtZShzZWxmLCBvYmplY3QpOgotICAgICAgICBxTmFtZSA9IG9i
amVjdCArICIuIiArIHNlbGYubmFtZQotICAgICAgICBtYW5nbGVkTmFtZSA9ICIiCi0gICAgICAg
IGkgPSAwCi0gICAgICAgIHdoaWxlIGkgPCBsZW4ocU5hbWUpOgotICAgICAgICAgICAgaWYgcU5h
bWVbaV0gPT0gJy4nOgotICAgICAgICAgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWUg
KyBxTmFtZVtpICsgMV0udXBwZXIoKQotICAgICAgICAgICAgICAgIGkgPSBpICsgMQotICAgICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lICsg
cU5hbWVbaV0KLSAgICAgICAgICAgIGkgPSBpICsgMQotICAgICAgICBpZiBzZWxmLmlzQ29uc3Ry
dWN0b3I6Ci0gICAgICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lICsgIkNvbnN0cnVj
dG9yIgotICAgICAgICByZXR1cm4gbWFuZ2xlZE5hbWUKLQotZGVmIGdldEZ1bmN0aW9ucyhzb3Vy
Y2UpOgotCi0gICAgc291cmNlID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5zdWIoIi8qKi8iLCBz
aW5nbGVMaW5lQ29tbWVudFJlZ0V4cC5zdWIoIi8vXG4iLCBzb3VyY2UpKQotCi0gICAgbWF0Y2hl
cyA9IFsgZiBmb3IgZiBpbiBmdW5jdGlvbkhlYWRSZWdFeHAuZmluZGl0ZXIoc291cmNlKV0KLSAg
ICBmdW5jdGlvbkJvdW5kcyA9IFtdCi0gICAgc3RhcnQgPSAwCi0gICAgZW5kID0gMAotICAgIGZv
ciBtYXRjaCBpbiBtYXRjaGVzOgotICAgICAgICBzdGFydCA9IG1hdGNoLnN0YXJ0KCkKLSAgICAg
ICAgaWYgc3RhcnQgPCBlbmQ6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBlbmQgPSBt
YXRjaC5lbmQoKQotICAgICAgICB3aGlsZSBzb3VyY2VbZW5kXSAhPSAneyc6Ci0gICAgICAgICAg
ICBlbmQgPSBlbmQgKyAxCi0gICAgICAgIGRlcHRoID0gMQotICAgICAgICBlbmQgPSBlbmQgKyAx
Ci0gICAgICAgIHdoaWxlIGRlcHRoID4gMDoKLSAgICAgICAgICAgIGlmIHNvdXJjZVtlbmRdID09
ICd7JzoKLSAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRoICsgMQotICAgICAgICAgICAgZWxp
ZiBzb3VyY2VbZW5kXSA9PSAnfSc6Ci0gICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCAtIDEK
LSAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKLSAgICAgICAgZnVuY3Rpb25Cb3VuZHMuYXBwZW5k
KChzdGFydCwgZW5kKSkKLQotICAgIGZ1bmN0aW9ucyA9IFtzb3VyY2Vbc3RhcnQ6ZW5kXS5zdHJp
cCgpIGZvciAoc3RhcnQsIGVuZCkgaW4gZnVuY3Rpb25Cb3VuZHNdCi0gICAgcmVzdWx0ID0gW10K
LSAgICBmb3IgZnVuY3Rpb24gaW4gZnVuY3Rpb25zOgotICAgICAgICBmdW5jdGlvbiA9IG11bHRp
bGluZUNvbW1lbnRSZWdFeHAuc3ViKCIiLCBmdW5jdGlvbikKLSAgICAgICAgZnVuY3Rpb25OYW1l
ID0gZnVuY3Rpb25OYW1lUmVnRXhwLmZpbmRhbGwoZnVuY3Rpb24pWzBdCi0gICAgICAgIGZ1bmN0
aW9uSXNDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uSXNDb25zdHJ1Y3RvclJlZ0V4cC5tYXRjaChmdW5j
dGlvbikgIT0gTm9uZQotICAgICAgICBmdW5jdGlvblBhcmFtZXRlcnMgPSBmdW5jdGlvblBhcmFt
ZXRlckZpbmRlci5maW5kYWxsKGZ1bmN0aW9uKVswXS5zcGxpdCgnLCcpCi0gICAgICAgIGlmIGxl
bihmdW5jdGlvblBhcmFtZXRlcnNbMF0pID09IDA6Ci0gICAgICAgICAgICBmdW5jdGlvblBhcmFt
ZXRlcnMgPSBbXQotCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoRnVuY3Rpb24oZnVuY3Rpb25OYW1l
LCBmdW5jdGlvbiwgZnVuY3Rpb25Jc0NvbnN0cnVjdG9yLCBmdW5jdGlvblBhcmFtZXRlcnMpKQot
ICAgIHJldHVybiByZXN1bHQKLQotZGVmIHdyaXRlSW5jbHVkZURpcmVjdGl2ZXMod3JpdGVyLCBo
ZWFkZXJOYW1lcyk6Ci0gICAgZm9yIGhlYWRlck5hbWUgaW4gaGVhZGVyTmFtZXM6Ci0gICAgICAg
IHdyaXRlci53cml0ZSgiI2luY2x1ZGUgIiArIGhlYWRlck5hbWUgKyAiXG4iKQotCi1kZWYgZ2Vu
ZXJhdGVDb2RlKHNvdXJjZSk6Ci0gICAgaW5wdXRGaWxlID0gb3Blbihzb3VyY2UsICJyIikKLSAg
ICBiYXNlTmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoc291cmNlKS5yZXBsYWNlKCIuanMiLCAiIikK
LSAgICAKLSAgICBzb3VyY2UgPSAiIgotICAgIGZvciBsaW5lIGluIGlucHV0RmlsZToKLSAgICAg
ICAgc291cmNlID0gc291cmNlICsgbGluZQotICAgIAotICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAi
Y3lnd2luIjoKLSAgICAgICAgc291cmNlID0gc291cmNlLnJlcGxhY2UoIlxyXG4iLCAiXG4iKQot
ICAgIHJldHVybiAoYmFzZU5hbWUsIGdldEZ1bmN0aW9ucyhzb3VyY2UpLCBnZXRDb3B5cmlnaHQo
c291cmNlKSkKLQotYnVpbHRpbnMgPSBbXQotY29weXJpZ2h0cyA9IFtdCi0ob3V0cHV0X2Jhc2Us
IF8pID0gb3MucGF0aC5zcGxpdGV4dChhcmdzLm91dHB1dCkKLQotaWYgYXJncy5pbnB1dF9kaXJl
Y3Rvcnk6Ci0gICAgZm9yIGZpbGUgaW4gb3MubGlzdGRpcihhcmdzLmlucHV0X2RpcmVjdG9yeSk6
Ci0gICAgICAgIGFyZ3MuaW5wdXRfZmlsZS5hcHBlbmQob3MucGF0aC5qb2luKGFyZ3MuaW5wdXRf
ZGlyZWN0b3J5LCBmaWxlKSkKLQotZm9yIGZpbGUgaW4gYXJncy5pbnB1dF9maWxlOgotICAgIGlm
IGZubWF0Y2guZm5tYXRjaChmaWxlLCAnKi5qcycpOgotICAgICAgICAoYmFzZU5hbWUsIGZ1bmN0
aW9ucywgb2JqZWN0Q29weXJpZ2h0cykgPSBnZW5lcmF0ZUNvZGUoZmlsZSkKLSAgICAgICAgY29w
eXJpZ2h0cy5leHRlbmQob2JqZWN0Q29weXJpZ2h0cykKLSAgICAgICAgYnVpbHRpbnMuYXBwZW5k
KChiYXNlTmFtZSwgZnVuY3Rpb25zKSkKLW5hbWVzcGFjZSA9IGFyZ3MubmFtZXNwYWNlCi1tYWNy
b1ByZWZpeCA9IGFyZ3MucHJlZml4Ci1zY29wZU5hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBh
dGguYmFzZW5hbWUoYXJncy5vdXRwdXQpKVswXQotaW5jbHVkZUd1YXJkID0gc2NvcGVOYW1lICsg
Il9IIgotaGVhZGVyTmFtZSA9IHNjb3BlTmFtZSArICIuaCIKLQotaGVhZGVySW5jbHVkZXMgPSBb
IlwiQnVpbHRpblV0aWxzLmhcIiJdIGlmIG5hbWVzcGFjZSA9PSAiSlNDIiBlbHNlIFsiPGJ1aWx0
aW5zL0J1aWx0aW5VdGlscy5oPiJdCi1jb250ZW50SW5jbHVkZXMgPSBbIlwiQnVpbHRpbkV4ZWN1
dGFibGVzLmhcIiIsICJcIkV4ZWN1dGFibGUuaFwiIiwgIlwiSlNDZWxsSW5saW5lcy5oXCIiLCAi
XCJWTS5oXCIiXSBpZiBuYW1lc3BhY2UgPT0gIkpTQyIgZWxzZSBbIjxydW50aW1lL0V4ZWN1dGFi
bGUuaD4iLCAiPHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oPiIsICI8cnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oPiIsICI8cnVudGltZS9KU0NlbGxJbmxpbmVzLmg+IiwgIjxydW50aW1lL1ZN
Lmg+IiwgIlwiV2ViQ29yZUpTQ2xpZW50RGF0YS5oXCIiXQotCi1jb3B5cmlnaHRzID0gbGlzdChz
ZXQoY29weXJpZ2h0cykpCi0KLWNvcHlyaWdodEJvZHkgPSAiIgotZm9yIGNvcHlyaWdodCBpbiBj
b3B5cmlnaHRzOgotICAgIGNvcHlyaWdodEJvZHkgPSBjb3B5cmlnaHRCb2R5ICsiICogQ29weXJp
Z2h0IChDKSAiICsgY29weXJpZ2h0ICsgIlxuIgotCi1idWlsdGluc0hlYWRlciA9IG9wZW4ob3V0
cHV0X2Jhc2UgKyAiLmgudG1wIiwgInciKQotYnVpbHRpbnNJbXBsZW1lbnRhdGlvbiA9IG9wZW4o
b3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCAidyIpCi1jb3B5cmlnaHRUZXh0ID0gIi8qXG4iICsg
Y29weXJpZ2h0Qm9keSArIGNvcHlyaWdodFRleHQKLWJ1aWx0aW5zSGVhZGVyLndyaXRlKCIiIiVz
Ci0lcwotCi0jaWZuZGVmICVzCi0jZGVmaW5lICVzCi0KLSIiIiAlIChnZW5lcmF0b3JTdHJpbmcs
IGNvcHlyaWdodFRleHQsIGluY2x1ZGVHdWFyZCwgaW5jbHVkZUd1YXJkKSkKLQotd3JpdGVJbmNs
dWRlRGlyZWN0aXZlcyhidWlsdGluc0hlYWRlciwgaGVhZGVySW5jbHVkZXMpCi0KLWJ1aWx0aW5z
SGVhZGVyLndyaXRlKCIiIgotbmFtZXNwYWNlIEpTQyB7Ci0gICAgY2xhc3MgRnVuY3Rpb25FeGVj
dXRhYmxlOwotfQotCi1uYW1lc3BhY2UgJXMgewotCi0iIiIgJSBuYW1lc3BhY2UpCi0KLWNvZGVS
ZWZlcmVuY2VzID0gW10KLQotZm9yIChvYmplY3ROYW1lLCBmdW5jdGlvbnMpIGluIGJ1aWx0aW5z
OgotICAgIHByaW50KCJHZW5lcmF0aW5nIGJpbmRpbmdzIGZvciB0aGUgJXMgYnVpbHRpbi4iICUg
b2JqZWN0TmFtZSkKLSAgICBidWlsdGluc0hlYWRlci53cml0ZSgiLyogJXMgZnVuY3Rpb25zICov
XG4iICUgb2JqZWN0TmFtZSkKLSAgICBmb3IgZnVuY3Rpb24gaW4gZnVuY3Rpb25zOgotICAgICAg
ICBuYW1lID0gZnVuY3Rpb24ubmFtZQotICAgICAgICBtYW5nbGVkTmFtZSA9IGZ1bmN0aW9uLm1h
bmdsZU5hbWUob2JqZWN0TmFtZSkKLSAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZVsw
XS5sb3dlcigpICsgbWFuZ2xlZE5hbWVbMTpdICsgIkNvZGUiCi0gICAgICAgIGNvZGVSZWZlcmVu
Y2VzLmFwcGVuZCgobWFuZ2xlZE5hbWUsIGZ1bmN0aW9uKSkKLSAgICAgICAgYnVpbHRpbnNIZWFk
ZXIud3JpdGUoImV4dGVybiBjb25zdCBjaGFyKiBzXyVzO1xuIiAlIG1hbmdsZWROYW1lKQotICAg
ICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiZXh0ZXJuIGNvbnN0IGludCBzXyVzTGVuZ3RoO1xu
IiAlIG1hbmdsZWROYW1lKQotICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiZXh0ZXJuIGNv
bnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzXyVzQ29uc3RydWN0QWJpbGl0eTtcbiIgJSBtYW5n
bGVkTmFtZSkKLSAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG4iKQotICAgIGJ1aWx0aW5zSGVh
ZGVyLndyaXRlKCIjZGVmaW5lICVzX0ZPUkVBQ0hfJXNfQlVJTFRJTihtYWNybykgXFxcbiIgJSAo
bWFjcm9QcmVmaXgsIG9iamVjdE5hbWUucmVwbGFjZSgiLiIsICJfIikudXBwZXIoKSkpCi0gICAg
Zm9yIGZ1bmN0aW9uIGluIGZ1bmN0aW9uczoKLSAgICAgICAgbWFuZ2xlZE5hbWUgPSBmdW5jdGlv
bi5tYW5nbGVOYW1lKG9iamVjdE5hbWUpCi0gICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIg
ICAgbWFjcm8oJXMsICVzLCAlZCkgXFxcbiIgJSAoZnVuY3Rpb24ubmFtZSwgbWFuZ2xlZE5hbWUs
IGxlbihmdW5jdGlvbi5wYXJhbWV0ZXJzKSkpCi0gICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxu
IikKLSAgICBmb3IgZnVuY3Rpb24gaW4gZnVuY3Rpb25zOgotICAgICAgICBidWlsdGluc0hlYWRl
ci53cml0ZSgiI2RlZmluZSAlc19CVUlMVElOXyVzIDFcbiIgJSAobWFjcm9QcmVmaXgsIGZ1bmN0
aW9uLm1hbmdsZU5hbWUob2JqZWN0TmFtZSkudXBwZXIoKSkpCi0gICAgYnVpbHRpbnNIZWFkZXIu
d3JpdGUoIlxuXG4iKQotbmFtZXMgPSBbXQotYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUg
JXNfRk9SRUFDSF9CVUlMVElOKG1hY3JvKVxcXG4iICUgbWFjcm9QcmVmaXgpCi1mb3IgKGNvZGVS
ZWZlcmVuY2UsIGZ1bmN0aW9uKSBpbiBjb2RlUmVmZXJlbmNlczoKLSAgICBidWlsdGluc0hlYWRl
ci53cml0ZSgiICAgIG1hY3JvKCVzLCAlcywgc18lc0xlbmd0aCkgXFxcbiIgJSAoY29kZVJlZmVy
ZW5jZSwgZnVuY3Rpb24ubmFtZSwgY29kZVJlZmVyZW5jZSkpCi0gICAgbmFtZXMuYXBwZW5kKGZ1
bmN0aW9uLm5hbWUpCi0KLWJ1aWx0aW5zSGVhZGVyLndyaXRlKCJcblxuIikKLWJ1aWx0aW5zSGVh
ZGVyLndyaXRlKCIjZGVmaW5lICVzX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3Jv
KSBcXFxuIiAlIG1hY3JvUHJlZml4KQotZm9yIG5hbWUgaW4gc29ydGVkKHNldChuYW1lcykpOgot
ICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIgICAgbWFjcm8oJXMpIFxcXG4iICUgbmFtZSkKLWJ1
aWx0aW5zSGVhZGVyLndyaXRlKCIiIgotCi0jZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFU
T1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKLSAgICBKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7Ci0KLSVzX0ZP
UkVBQ0hfQlVJTFRJTihERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQotI3VuZGVmIERFQ0xBUkVf
QlVJTFRJTl9HRU5FUkFUT1IKLQotI2RlZmluZSAlc19CVUlMVElOX0VYSVNUUyhuYW1lKSBkZWZp
bmVkICVzX0JVSUxUSU5fICMjIG5hbWUKLQotfQotCi0jZW5kaWYgLy8gJXMKLQotIiIiICUgKG1h
Y3JvUHJlZml4LCBtYWNyb1ByZWZpeCwgbWFjcm9QcmVmaXgsIGluY2x1ZGVHdWFyZCkpCi0KLWJ1
aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIiJXMKLSVzCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLQotI2luY2x1ZGUgIiVzIgotCi0iIiIgICUgKGdlbmVyYXRvclN0cmluZywgY29weXJpZ2h0
VGV4dCwgaGVhZGVyTmFtZSkpCi0KLXdyaXRlSW5jbHVkZURpcmVjdGl2ZXMoYnVpbHRpbnNJbXBs
ZW1lbnRhdGlvbiwgY29udGVudEluY2x1ZGVzKQotCi1idWlsdGluc0ltcGxlbWVudGF0aW9uLndy
aXRlKCIiIgotbmFtZXNwYWNlICVzIHsKLQotIiIiICAlIChuYW1lc3BhY2UpKQotCi0KLQotZm9y
IChjb2RlUmVmZXJlbmNlLCBmdW5jdGlvbikgaW4gY29kZVJlZmVyZW5jZXM6Ci0gICAgc291cmNl
ID0gZnVuY3Rpb24uc291cmNlCi0gICAgc291cmNlID0gIihmdW5jdGlvbiAiICsgc291cmNlW3Nv
dXJjZS5pbmRleCgiKCIpOl0gKyAiKSIKLSAgICBsaW5lcyA9IGpzb24uZHVtcHMoc291cmNlKVsx
Oi0xXS5zcGxpdCgiXFxuIikKLSAgICBzb3VyY2VMZW5ndGggPSBsZW4oc291cmNlKQotICAgIHNv
dXJjZSA9ICIiCi0gICAgZm9yIGxpbmUgaW4gbGluZXM6Ci0gICAgICAgIHNvdXJjZSA9IHNvdXJj
ZSArICgiICAgIFwiJXNcXG5cIiBcXFxuIiAlIGxpbmUpCi0gICAgYnVpbHRpbnNJbXBsZW1lbnRh
dGlvbi53cml0ZSgiY29uc3QgY2hhciogc18lcyA9XG4lcztcblxuIiAlIChjb2RlUmVmZXJlbmNl
LCBzb3VyY2UpKQotICAgIGJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoImNvbnN0IGludCBz
XyVzTGVuZ3RoID0gJWQ7XG5cbiIgJSAoY29kZVJlZmVyZW5jZSwgc291cmNlTGVuZ3RoICsgMSkp
ICMgKyAxIGZvciBcbgotICAgIGNvbnN0cnVjdEFiaWxpdHkgPSAiSlNDOjpDb25zdHJ1Y3RBYmls
aXR5OjpDYW5ub3RDb25zdHJ1Y3QiCi0gICAgaWYgZnVuY3Rpb24uaXNDb25zdHJ1Y3RvcjoKLSAg
ICAgICAgY29uc3RydWN0QWJpbGl0eSA9ICJKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0
cnVjdCIKLSAgICBidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCJjb25zdCBKU0M6OkNvbnN0
cnVjdEFiaWxpdHkgc18lc0NvbnN0cnVjdEFiaWxpdHkgPSAlcztcblxuIiAlIChjb2RlUmVmZXJl
bmNlLCBjb25zdHJ1Y3RBYmlsaXR5KSkgIyArIDEgZm9yIFxuCi0KLWJ1aWx0aW5zSW1wbGVtZW50
YXRpb24ud3JpdGUoIiIiCi0jZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFt
ZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAotSlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCi0iIiIpOwotCi1pZiAobmFt
ZXNwYWNlID09ICJKU0MiKToKLSAgICBidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIntc
XAotICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFi
bGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2Uo
KSk7IFxcCi0iIiIpCi1lbHNlOgotICAgIGJ1aWx0aW5OYW1lID0gc2NvcGVOYW1lWzBdLmxvd2Vy
KCkgKyBzY29wZU5hbWVbMTpdCi0gICAgYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiIiJ7
XFwKLSAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGll
bnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFxcCi0gICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0
aW5GdW5jdGlvbnMoKS4lcygpLmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVu
dERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4lcygpLmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCi0i
IiIlIChidWlsdGluTmFtZSwgYnVpbHRpbk5hbWUpKQotCi1idWlsdGluc0ltcGxlbWVudGF0aW9u
LndyaXRlKCIiIn0KLSVzX0ZPUkVBQ0hfQlVJTFRJTihERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1Ip
Ci0jdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCi19Ci0KLSIiIiUgKG1hY3JvUHJlZml4
KSkKLQotYnVpbHRpbnNIZWFkZXIuY2xvc2UoKQotYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi5jbG9z
ZSgpCi0KLWlmIChub3Qgb3MucGF0aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmgiKSkgb3IgKG5v
dCBmaWxlY21wLmNtcChvdXRwdXRfYmFzZSArICIuaC50bXAiLCBvdXRwdXRfYmFzZSArICIuaCIs
IHNoYWxsb3c9RmFsc2UpKToKLSAgICBpZiAob3MucGF0aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAi
LmgiKSk6Ci0gICAgICAgIG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIuaCIpCi0gICAgb3MucmVu
YW1lKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsIG91dHB1dF9iYXNlICsgIi5oIikKLWVsc2U6Ci0g
ICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5oLnRtcCIpCi0KLWlmIChub3Qgb3MucGF0aC5l
eGlzdHMob3V0cHV0X2Jhc2UgKyAiLmNwcCIpKSBvciAobm90IGZpbGVjbXAuY21wKG91dHB1dF9i
YXNlICsgIi5jcHAudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmNwcCIsIHNoYWxsb3c9RmFsc2UpKToK
LSAgICBpZiAob3MucGF0aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmNwcCIpKToKLSAgICAgICAg
b3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5jcHAiKQotICAgIG9zLnJlbmFtZShvdXRwdXRfYmFz
ZSArICIuY3BwLnRtcCIsIG91dHB1dF9iYXNlICsgIi5jcHAiKQotZWxzZToKLSAgICBvcy5yZW1v
dmUob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA1Y2Yx
YmMxZWMyMDYzNmI3NjY4OTgxN2NkYTE3ZDNkNzg0OGNkOGQ5Li4wZjBjOGMyYTFkY2Y5NTgxZDk4
MWYyMDNiNzBiOTUwN2I3ZTE4YmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODIxLDE0ICs4
MjEsMTQgQEAgc2V0KFdlYkNvcmVfSURMX0ZJTEVTCiBpZiAoV0lOMzIpCiAgICAgaWYgKElOVEVS
TkFMX0JVSUxEKQogICAgICAgICBzZXQoV2ViQ29yZV9JTlNQRUNUT1JfU0NSSVBUU19ESVIgIiR7
Q01BS0VfQklOQVJZX0RJUn0vLi4vaW5jbHVkZS9wcml2YXRlL0phdmFTY3JpcHRDb3JlIikKLSAg
ICAgICAgc2V0KFdlYkNvcmVfR0VORVJBVEVfSlNfQlVJTFRJTlNfU0NSSVBUU19ESVIgIiR7Q01B
S0VfQklOQVJZX0RJUn0vLi4vaW5jbHVkZS9wcml2YXRlL0phdmFTY3JpcHRDb3JlIikKKyAgICAg
ICAgc2V0KEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSICIke0NNQUtFX0JJTkFSWV9ESVJ9Ly4u
L2luY2x1ZGUvcHJpdmF0ZS9KYXZhU2NyaXB0Q29yZSIpCiAgICAgZWxzZSAoKQogICAgICAgICBz
ZXQoV2ViQ29yZV9JTlNQRUNUT1JfU0NSSVBUU19ESVIgIiR7SkFWQVNDUklQVENPUkVfRElSfS9p
bnNwZWN0b3Ivc2NyaXB0cyIpCi0gICAgICAgIHNldChXZWJDb3JlX0dFTkVSQVRFX0pTX0JVSUxU
SU5TX1NDUklQVFNfRElSICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0iKQorICAgICAgICBzZXQoSmF2
YVNjcmlwdENvcmVfU0NSSVBUU19ESVIgIiR7SkFWQVNDUklQVENPUkVfRElSfSIpCiAgICAgZW5k
aWYgKCkKIGVsc2UgKCkKICAgICBzZXQoV2ViQ29yZV9JTlNQRUNUT1JfU0NSSVBUU19ESVIgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3Ivc2NyaXB0cyIpCi0gICAgc2V0KFdlYkNvcmVf
R0VORVJBVEVfSlNfQlVJTFRJTlNfU0NSSVBUU19ESVIgIiR7SkFWQVNDUklQVENPUkVfRElSfSIp
CisgICAgc2V0KEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSICIke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0iKQogZW5kaWYgKCkKIAogc2V0KFdlYkNvcmVfU09VUkNFUwpAQCAtMzM1Myw3ICszMzUzLDEx
IEBAIHNldChXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSAke0RFUklWRURfU09V
UkNFU19XRUJDT1JFX0RJUn0vV29ya2VyR2xvCiBzZXQoREVESUNBVEVEV09SS0VSR0xPQkFMU0NP
UEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKIHNldChJRExfQVRUUklCVVRF
U19GSUxFICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQp
CiAKLXNldChXRUJDT1JFX0pTX0JVSUxUSU5TCitXRUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNf
SUZfRVhJU1RTKCkKKworIyBXZWJDb3JlIEpTIEJ1aWx0aW5zCisKK3NldChXZWJDb3JlX0JVSUxU
SU5TX1NPVVJDRVMKICAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3N0cmVhbXMvQnl0ZUxlbmd0
aFF1ZXVpbmdTdHJhdGVneS5qcwogICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3RyZWFtcy9D
b3VudFF1ZXVpbmdTdHJhdGVneS5qcwogICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbS5qcwpAQCAtMzM2Miw3ICszMzY2LDM1IEBAIHNldChXRUJDT1JFX0pT
X0JVSUxUSU5TCiAgICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyLmpzCiApCiAKLVdFQktJVF9JTkNMVURFX0NPTkZJR19GSUxFU19JRl9FWElTVFMo
KQorc2V0KEJVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTCisgICAgJChKYXZhU2NyaXB0Q29yZV9T
Q1JJUFRTX0RJUikvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5CisgICAgJChKYXZhU2NyaXB0Q29yZV9T
Q1JJUFRTX0RJUikvYnVpbHRpbnNfbW9kZWwucHkKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQ
VFNfRElSKS9idWlsdGluc190ZW1wbGF0ZXMucHkKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQ
VFNfRElSKS9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorICAgICQoSmF2YVNjcmlwdENvcmVfU0NS
SVBUU19ESVIpL2dlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2hlYWRlci5weQorICAgICQoSmF2
YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2ltcGxl
bWVudGF0aW9uLnB5CisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGVf
YnVpbHRpbnNfc2VwYXJhdGVfaGVhZGVyLnB5CisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRT
X0RJUikvZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkKKyAgICAk
KEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV93
cmFwcGVyLnB5CisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvbGF6eXdyaXRlci5w
eQorCitmb3JlYWNoIChfYnVpbHRpblNvdXJjZSAke1dlYkNvcmVfQlVJTFRJTlNfU09VUkNFU30p
CisgICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChfb2JqZWN0TmFtZSAke19idWlsdGluU291cmNl
fSBOQU1FX1dFKQorICAgIGFkZF9jdXN0b21fY29tbWFuZCgKKyAgICAgICAgT1VUUFVUICR7REVS
SVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS8ke19vYmplY3ROYW1lfUJ1aWx0aW5zLmNwcAorICAg
ICAgICAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9LyR7X29iamVjdE5hbWV9
QnVpbHRpbnMuaAorICAgICAgICAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9
LyR7X29iamVjdE5hbWV9QnVpbHRpbnNXcmFwcGVyLmggCisgICAgICAgIE1BSU5fREVQRU5ERU5D
WSAke0JVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTfS9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQor
ICAgICAgICBERVBFTkRTICR7X2J1aWx0aW5Tb3VyY2V9ICR7QlVJTFRJTlNfR0VORVJBVE9SX1ND
UklQVFN9CisgICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0
Q29yZV9TQ1JJUFRTX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgLS1mcmFtZXdvcmsgV2Vi
Q29yZSAtLW91dHB1dC1kaXJlY3RvcnkgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9ICR7
X2J1aWx0aW5Tb3VyY2V9CisgICAgICAgIFZFUkJBVElNKQorICAgIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUworICAgICAgICAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vJHtfb2Jq
ZWN0TmFtZX1CdWlsdGlucy5oCisgICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElS
fS8ke19vYmplY3ROYW1lfUJ1aWx0aW5zV3JhcHBlci5oCisgICAgKQorICAgIEFERF9TT1VSQ0Vf
V0VCQ09SRV9ERVJJVkVEX0RFUEVOREVOQ0lFUygke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9qcy9X
ZWJDb3JlSlNCdWlsdGlucy5jcHAgJHtfb2JqZWN0TmFtZX1CdWlsdGlucy5jcHApCitlbmRmb3Jl
YWNoICgpCisKIAogIyBHZW5lcmF0ZSBJbnNwZWN0b3JPdmVybGF5UGFnZS5oCiBhZGRfY3VzdG9t
X2NvbW1hbmQoCkBAIC0zMzcyLDcgKzM0MDQsOCBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAg
REVQRU5EUyBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheVBhZ2UuY3NzIGluc3BlY3Rvci9JbnNw
ZWN0b3JPdmVybGF5UGFnZS5qcwogICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtX
ZWJDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vaW5saW5lLWFuZC1taW5pZnktc3R5bGVzaGVl
dHMtYW5kLXNjcmlwdHMucHkgJHtXRUJDT1JFX0RJUn0vaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJs
YXlQYWdlLmh0bWwgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3Rvck92ZXJs
YXlQYWdlLmNvbWJpbmVkLmh0bWwKICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke1dl
YkNvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS94eGQucGwgSW5zcGVjdG9yT3ZlcmxheVBhZ2Vf
aHRtbCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yT3ZlcmxheVBhZ2Uu
Y29tYmluZWQuaHRtbCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yT3Zl
cmxheVBhZ2UuaAotICAgIFZFUkJBVElNKQorICAgIFZFUkJBVElNCispCiBsaXN0KEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3Rvck92
ZXJsYXlQYWdlLmgpCiAKIApAQCAtMzM4NCw3ICszNDE3LDggQEAgYWRkX2N1c3RvbV9jb21tYW5k
KAogICAgIENPTU1BTkQgZWNobyAiLy8jIHNvdXJjZVVSTD1fX1dlYkluc3BlY3RvckNvbW1hbmRM
aW5lQVBJTW9kdWxlU291cmNlX18iID4gJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0Nv
bW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1pbi5qcwogICAgIENPTU1BTkQgJHtQWVRIT05fRVhF
Q1VUQUJMRX0gJHtXZWJDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0vanNtaW4ucHkgPCAke1dF
QkNPUkVfRElSfS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuanMgPj4gJHtE
RVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLm1p
bi5qcwogICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7V2ViQ29yZV9JTlNQRUNUT1Jf
U0NSSVBUU19ESVJ9L3h4ZC5wbCBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9qcyAke0RFUklW
RURfU09VUkNFU19XRUJDT1JFX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpz
ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJj
ZS5oCi0gICAgVkVSQkFUSU0pCisgICAgVkVSQkFUSU0KKykKIGxpc3QoQVBQRU5EIFdlYkNvcmVf
U09VUkNFUyAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1
bGVTb3VyY2UuaCkKIAogCkBAIC0zNTg1LDIzICszNjE5LDYgQEAgR0VORVJBVEVfQklORElOR1Mo
V2ViQ29yZVRlc3RTdXBwb3J0X1NPVVJDRVMKICAgICAke1NVUFBMRU1FTlRBTF9ERVBFTkRFTkNZ
X0ZJTEV9CiAgICAgJHtBRERJVElPTkFMX0JJTkRJTkdTX0RFUEVOREVOQ0lFU30pCiAKLSMgV2Vi
Q29yZSBKUyBCdWlsdGlucwotZm9yZWFjaCAoX2J1aWx0aW5qcyAke1dFQkNPUkVfSlNfQlVJTFRJ
TlN9KQotICAgIGdldF9maWxlbmFtZV9jb21wb25lbnQoX25hbWUgJHtfYnVpbHRpbmpzfSBOQU1F
X1dFKQotICAgIGFkZF9jdXN0b21fY29tbWFuZCgKLSAgICAgICAgT1VUUFVUICR7REVSSVZFRF9T
T1VSQ0VTX1dFQkNPUkVfRElSfS8ke19uYW1lfUJ1aWx0aW5zV3JhcHBlci5oICR7REVSSVZFRF9T
T1VSQ0VTX1dFQkNPUkVfRElSfS8ke19uYW1lfUJ1aWx0aW5zLmggJHtERVJJVkVEX1NPVVJDRVNf
V0VCQ09SRV9ESVJ9LyR7X25hbWV9QnVpbHRpbnMuY3BwCi0gICAgICAgIE1BSU5fREVQRU5ERU5D
WSAke1dFQkNPUkVfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucwotICAgICAgICBERVBFTkRTICR7
V2ViQ29yZV9HRU5FUkFURV9KU19CVUlMVElOU19TQ1JJUFRTX0RJUn0vZ2VuZXJhdGUtanMtYnVp
bHRpbnMKLSAgICAgICAgREVQRU5EUyAke19idWlsdGluanN9Ci0gICAgICAgIENPTU1BTkQgJHtQ
WVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2dlbmVyYXRlLWpz
LWJ1aWx0aW5zIC0taW5wdXQgJHtfYnVpbHRpbmpzfSAtLW91dHB1dF9kaXIgJHtERVJJVkVEX1NP
VVJDRVNfV0VCQ09SRV9ESVJ9IC0tZ2VuZXJhdGVfanNfYnVpbHRpbnNfcGF0aCAke1dlYkNvcmVf
R0VORVJBVEVfSlNfQlVJTFRJTlNfU0NSSVBUU19ESVJ9Ci0gICAgICAgIFZFUkJBVElNKQotICAg
IGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwotICAgICAgICAke0RFUklWRURfU09VUkNFU19X
RUJDT1JFX0RJUn0vJHtfbmFtZX1CdWlsdGlucy5oCi0gICAgICAgICR7REVSSVZFRF9TT1VSQ0VT
X1dFQkNPUkVfRElSfS8ke19uYW1lfUJ1aWx0aW5zV3JhcHBlci5oCi0gICAgKQotICAgIEFERF9T
T1VSQ0VfV0VCQ09SRV9ERVJJVkVEX0RFUEVOREVOQ0lFUygke1dFQkNPUkVfRElSfS9iaW5kaW5n
cy9qcy9XZWJDb3JlSlNCdWlsdGlucy5jcHAgJHtfbmFtZX1CdWlsdGlucy5jcHApCi1lbmRmb3Jl
YWNoICgpCi0KIEFERF9TT1VSQ0VfV0VCQ09SRV9ERVJJVkVEX0RFUEVOREVOQ0lFUygke1dFQkNP
UkVfRElSfS9odG1sL0hUTUxUcmVlQnVpbGRlci5jcHAgTWF0aE1MTmFtZXMuY3BwKQogCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDQ2NjU0ZjJhZDMxODg5ZGIzNDI1N2JmZDhj
OGZhYzkzZTJkZjA0YjUuLjRhZTI4ZDgyNTc4NTNjYWJlOTNlODE4Y2IxYmUxOWFmYjlmNzUyMWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNzkyLDcgKzc5Miw2IEBAIGFsbCA6
IFwKICAgICAkKFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSBcCiAgICAgJChK
U19ET01fSEVBREVSUykgXAogICAgICQoV0VCX0RPTV9IRUFERVJTKSBcCi0gICAgJChXRUJDT1JF
X0pTX0JVSUxUSU5TKSBcCiAgICAgXAogICAgIENTU0dyYW1tYXIuY3BwIFwKICAgICBDU1NQcm9w
ZXJ0eU5hbWVzLmNwcCBcCkBAIC0xMjUxLDcgKzEyNTAsNyBAQCBXZWJSZXBsYXlJbnB1dHMuaCA6
ICQoSU5QVVRfR0VORVJBVE9SX1NQRUNJRklDQVRJT05TKSAkKElOUFVUX0dFTkVSQVRPUl9TQ1JJ
UFRTKQogCiAjIFdlYkNvcmUgSlMgQnVpbHRpbnMKIAotV0VCQ09SRV9KU19CVUlMVElOUyA9IFwK
K1dlYkNvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvc3Ry
ZWFtcy9CeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmpzIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvc3RyZWFtcy9Db3VudFF1ZXVpbmdTdHJhdGVneS5qcyBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMgXApAQCAtMTI2MCwxMCArMTI1OSwzMSBAQCBX
RUJDT1JFX0pTX0JVSUxUSU5TID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtUmVhZGVyLmpzIFwKICMKIAotYWxsIDogJChXRUJDT1JFX0pTX0JVSUxUSU5T
OiUuanM9JUJ1aWx0aW5zLmNwcCkKK0JVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTID0gXAorICAg
ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zX2dlbmVyYXRvci5weSBcCisg
ICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnNfbW9kZWwucHkgXAorICAg
ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zX3RlbXBsYXRlcy5weSBcCisg
ICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmlu
ZWRfaGVhZGVyLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0
ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weSBcCisgICAgJChKYXZhU2NyaXB0
Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaGVhZGVyLnB5IFwK
KyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZV9idWlsdGluc19zZXBh
cmF0ZV9pbXBsZW1lbnRhdGlvbi5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJ
UikvZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfd3JhcHBlci5weSBcCisgICAgJChKYXZhU2Ny
aXB0Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgXAorICAgICQoSmF2
YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2xhenl3cml0ZXIucHkgXAorIworCisjIEFkZGluZy9y
ZW1vdmluZyBzY3JpcHRzIHNob3VsZCB0cmlnZ2VyIHJlZ2VuZXJhdGlvbiwgYnV0IGNoYW5naW5n
IHdoaWNoIGJ1aWx0aW5zIGFyZQorIyBnZW5lcmF0ZWQgc2hvdWxkIG5vdCBhZmZlY3Qgb3RoZXIg
YnVpbHRpbnMgd2hlbiBub3QgcGFzc2luZyAnLS1jb21iaW5lZCcgdG8gdGhlIGdlbmVyYXRvci4K
KworLlBIT05ZOiBmb3JjZQorV2ViQ29yZV9CVUlMVElOU19ERVBFTkRFTkNJRVNfTElTVCA6ICQo
SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL1VwZGF0ZUNvbnRlbnRzLnB5IGZvcmNlCisJJChQ
WVRIT04pICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL1VwZGF0ZUNvbnRlbnRzLnB5ICck
KEJVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTKScgJEAKKworJUJ1aWx0aW5zLmg6ICUuanMgJChC
VUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUykgV2ViQ29yZV9CVUlMVElOU19ERVBFTkRFTkNJRVNf
TElTVAorCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZS1q
cy1idWlsdGlucy5weSAtLW91dHB1dC1kaXJlY3RvcnkgLiAtLWZyYW1ld29yayBXZWJDb3JlICQ8
CiAKLSVCdWlsdGlucy5jcHA6ICUuanMKLQkkKFBZVEhPTikgJChXZWJDb3JlKS9nZW5lcmF0ZS1q
cy1idWlsdGlucyAtLWlucHV0ICQ8IC0tZ2VuZXJhdGVfanNfYnVpbHRpbnNfcGF0aCAkKEdlbmVy
YXRlSlNCdWlsdGluc1NjcmlwdHMpCithbGwgOiAkKG5vdGRpciAkKFdlYkNvcmVfQlVJTFRJTlNf
U09VUkNFUzolLmpzPSVCdWlsdGlucy5oKSkKKwkKIAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDlkY2JhZWMwOGFhNGI0Njk3NzhkNThkNjY2MzdmYTMxYmRkYmUxODYuLjIzMGQ1
YjkzNDFkM2Y0NTQwNjI1YmQ2YjQ3MjZkYjU3ZTIxMGU5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0OTIsNyArMTQ5Miw3
IEBACiAJCTQxMjlERjg2MUJCNUI4MEMwMDMyMkExNiAvKiBKU1JlYWRhYmxlU3RyZWFtUHJpdmF0
ZUNvbnN0cnVjdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDEyOURGODQxQkI1QjdGNzAwMzIyQTE2IC8qIEpTUmVhZGFibGVTdHJlYW1Qcml2YXRl
Q29uc3RydWN0b3JzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDEzOEQzMzUxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4dC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzOEQzMzMxMjQ0MDU0
ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4dC5oICovOyB9OwogCQk0MTM4RDMzNjEyNDQwNTQ4MDAz
MjNEMzMgLyogRXZlbnRDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxMzhEMzM0MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQu
Y3BwICovOyB9OwotCQk0MTNDMkMzNDFCQzI5QThGMDA3NTIwNEMgLyogSlNET01Db25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQzJD
MzMxQkMyOUE3QjAwNzUyMDRDIC8qIEpTRE9NQ29uc3RydWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVNTRVRfVEFHUyA9ICgpOyB9OyB9OworCQk0MTNDMkMzNDFCQzI5QThGMDA3NTIwNEMgLyogSlNE
T01Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDEzQzJDMzMxQkMyOUE3QjAwNzUyMDRDIC8qIEpTRE9NQ29uc3RydWN0b3IuaCAqLzsg
fTsKIAkJNDE1MDcxNTcxNjg1MDY3MzAwQzNDN0IzIC8qIFNlbGVjdG9yRmlsdGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNTA3MTU1MTY4NTA2
NzMwMEMzQzdCMyAvKiBTZWxlY3RvckZpbHRlci5jcHAgKi87IH07CiAJCTQxNTA3MTU4MTY4NTA2
NzMwMEMzQzdCMyAvKiBTZWxlY3RvckZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1MDcxNTYxNjg1MDY3MzAwQzNDN0IzIC8qIFNlbGVjdG9y
RmlsdGVyLmggKi87IH07CiAJCTQxNTBGOUYxMTJCNkUwRTcwMDA4Qzg2MCAvKiBTbGlkZXJUaHVt
YkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxNTBGOUVGMTJCNkUwRTcwMDA4Qzg2MCAvKiBTbGlkZXJUaHVtYkVsZW1lbnQuaCAqLzsgfTsK
QEAgLTE1MjUsOSArMTUyNSw5IEBACiAJCTQxOUJDMkRFMTY4NTMyOTkwMEQ2NEQ2RCAvKiBWaXNp
dGVkTGlua1N0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxOUJDMkRDMTY4NTMyOTkwMEQ2NEQ2RCAvKiBWaXNpdGVkTGlua1N0YXRlLmNwcCAq
LzsgfTsKIAkJNDE5QkMyREYxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUJDMkREMTY4
NTMyOTkwMEQ2NEQ2RCAvKiBWaXNpdGVkTGlua1N0YXRlLmggKi87IH07CiAJCTQxOUJFNzU2MUJD
N0Y0MUIwMEUxQzg1QiAvKiBXZWJDb3JlSlNCdWlsdGluSW50ZXJuYWxzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTlCRTc1MzFCQzdGM0RCMDBFMUM4
NUIgLyogV2ViQ29yZUpTQnVpbHRpbkludGVybmFscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQxOUJFNzU3MUJDN0Y0MjEwMEUxQzg1QiAvKiBX
ZWJDb3JlSlNCdWlsdGlucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTlCRTc1NDFCQzdGM0RCMDBFMUM4NUIgLyogV2ViQ29yZUpTQnVpbHRpbnMu
Y3BwICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07Ci0JCTQxOUJFNzU4MUJD
N0Y0MjcwMEUxQzg1QiAvKiBXZWJDb3JlSlNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QkU3NTUxQkM3RjNEQjAwRTFDODVCIC8qIFdl
YkNvcmVKU0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsK
LQkJNDE5QkU3NTkxQkM3RjQyQjAwRTFDODVCIC8qIFdlYkNvcmVCdWlsdGluTmFtZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUJFNzUyMUJDN0Yz
REIwMEUxQzg1QiAvKiBXZWJDb3JlQnVpbHRpbk5hbWVzLmggKi87IHNldHRpbmdzID0ge0FTU0VU
X1RBR1MgPSAoKTsgfTsgfTsKKwkJNDE5QkU3NTcxQkM3RjQyMTAwRTFDODVCIC8qIFdlYkNvcmVK
U0J1aWx0aW5zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxOUJFNzU0MUJDN0YzREIwMEUxQzg1QiAvKiBXZWJDb3JlSlNCdWlsdGlucy5jcHAgKi87
IH07CisJCTQxOUJFNzU4MUJDN0Y0MjcwMEUxQzg1QiAvKiBXZWJDb3JlSlNCdWlsdGlucy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QkU3NTUxQkM3
RjNEQjAwRTFDODVCIC8qIFdlYkNvcmVKU0J1aWx0aW5zLmggKi87IH07CisJCTQxOUJFNzU5MUJD
N0Y0MkIwMEUxQzg1QiAvKiBXZWJDb3JlQnVpbHRpbk5hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTlCRTc1MjFCQzdGM0RCMDBFMUM4NUIgLyog
V2ViQ29yZUJ1aWx0aW5OYW1lcy5oICovOyB9OwogCQk0MUEzRDU4RTEwMUMxNTJEMDAzMTZEMDcg
LyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTNENThDMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRX
b3JrZXJUaHJlYWQuY3BwICovOyB9OwogCQk0MUEzRDU4RjEwMUMxNTJEMDAzMTZEMDcgLyogRGVk
aWNhdGVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUEzRDU4RDEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhy
ZWFkLmggKi87IH07CiAJCTQxQkY3MDBDMEZFODZGNDkwMDVFOERFQyAvKiBNZXNzYWdlUG9ydENo
YW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
QkY3MDBBMEZFODZGNDkwMDVFOERFQyAvKiBNZXNzYWdlUG9ydENoYW5uZWwuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjM3Miw4ICs2MzcyLDgg
QEAKIAkJRTFGRjhGNjgxODA3NDYwODAwMTMyNjc0IC8qIEpTU3VidGxlQ3J5cHRvQ3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkY4RjY2
MTgwNzQ2MDgwMDEzMjY3NCAvKiBKU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAgKi87IH07CiAJCUUx
RkY4RjZDMTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZGOEY2QTE4MERC
NUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwICovOyB9OwogCQlFMUZG
OEY2RDE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkY4RjZCMTgwREI1QkUw
MDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oICovOyB9OwotCQlFMzg4Mzg5ODFC
QUQxNDVGMDBENjJFRTMgLyogSlNNb2R1bGVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIEpT
TW9kdWxlTG9hZGVyLmNwcCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9Owot
CQlFMzg4Mzg5OTFCQUQxNDVGMDBENjJFRTMgLyogSlNNb2R1bGVMb2FkZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODgzODk1MUJBRDE0NUYwMEQ2
MkVFMyAvKiBKU01vZHVsZUxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7
IH07IH07CisJCUUzODgzODk4MUJBRDE0NUYwMEQ2MkVFMyAvKiBKU01vZHVsZUxvYWRlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NDFC
QUQxNDVGMDBENjJFRTMgLyogSlNNb2R1bGVMb2FkZXIuY3BwICovOyB9OworCQlFMzg4Mzg5OTFC
QUQxNDVGMDBENjJFRTMgLyogSlNNb2R1bGVMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBKU01v
ZHVsZUxvYWRlci5oICovOyB9OwogCQlFNDAxQzI3NTE3Q0U1M0VDMDBDNDFBMzUgLyogRWxlbWVu
dEl0ZXJhdG9yQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTQwMUMyNzQxN0NFNTNFQzAwQzQxQTM1IC8qIEVsZW1lbnRJdGVyYXRvckFz
c2VydGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFNDI0QTM5RTEzMzBERjAxMDBDRjZEQzkgLyogTGVnYWN5VGlsZUdyaWRUaWxlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDI0QTM5RDEzMzBE
RjAxMDBDRjZEQzkgLyogTGVnYWN5VGlsZUdyaWRUaWxlLmggKi87IH07CiAJCUU0MjRBM0EwMTMz
MERGMUUwMENGNkRDOSAvKiBMZWdhY3lUaWxlR3JpZFRpbGUubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDI0QTM5RjEzMzBERjFFMDBDRjZEQzkgLyog
TGVnYWN5VGlsZUdyaWRUaWxlLm1tICovOyB9OwpAQCAtNjQyMiw4ICs2NDIyLDggQEAKIAkJRTQ0
QjRCQjMxNDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9yQ2hlY2tlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDRCNEJCMTE0MTY1MEQ3MDAyQjFE
OEIgLyogU2VsZWN0b3JDaGVja2VyLmNwcCAqLzsgfTsKIAkJRTQ0QjRCQjQxNDE2NTBENzAwMkIx
RDhCIC8qIFNlbGVjdG9yQ2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTQ0QjRCQjIxNDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9yQ2hlY2tl
ci5oICovOyB9OwogCQlFNDRFRTNBODE3NTc3RUJEMDBFRUU4Q0YgLyogRm9udEdlbmVyaWNGYW1p
bGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NDRFRTNBNjE3NTc2RTU1MDBFRUU4Q0YgLyogRm9udEdlbmVyaWNGYW1pbGllcy5jcHAgKi87IH07
Ci0JCUU0NEZBMTg1MUJDQTZCNUEwMDkxQjZFRiAvKiBDb21wb3NlZFRyZWVJdGVyYXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ0RkExODQxQkNB
NkI1QTAwOTFCNkVGIC8qIENvbXBvc2VkVHJlZUl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FT
U0VUX1RBR1MgPSAoKTsgfTsgfTsKLQkJRTQ0RkExODcxQkNBOTE1NjAwOTFCNkVGIC8qIENvbXBv
c2VkVHJlZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0NEZBMTg2MUJDQTkxNTYwMDkxQjZFRiAvKiBDb21wb3NlZFRyZWVJdGVyYXRv
ci5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJRTQ0RkExODUx
QkNBNkI1QTAwOTFCNkVGIC8qIENvbXBvc2VkVHJlZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDRGQTE4NDFCQ0E2QjVBMDA5MUI2RUYg
LyogQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCAqLzsgfTsKKwkJRTQ0RkExODcxQkNBOTE1NjAwOTFC
NkVGIC8qIENvbXBvc2VkVHJlZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NEZBMTg2MUJDQTkxNTYwMDkxQjZFRiAvKiBDb21wb3Nl
ZFRyZWVJdGVyYXRvci5jcHAgKi87IH07CiAJCUU0NTMyMkFCMTQwQ0UyNjcwMDVBMEY5MiAvKiBT
ZWxlY3RvclF1ZXJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0NTMyMkE5MTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmNwcCAqLzsg
fTsKIAkJRTQ1MzIyQUMxNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NTMyMkFBMTQwQ0UyNjcw
MDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmggKi87IH07CiAJCUU0NTM5MDFEMEVBRkNBQ0EwMDM2
OTVDOCAvKiBNSU1FVHlwZVJlZ2lzdHJ5SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1MzkwMTgwRUFGQ0FDQTAwMzY5NUM4IC8qIE1JTUVUeXBl
UmVnaXN0cnlJT1MubW0gKi87IH07CkBAIC0xMTMxMCw3ICsxMTMxMCw2IEBACiAJCTk4Q0U0MzI1
MTI5RTAwQkQwMDU4MjFEQyAvKiBMaW5rTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IExpbmtMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5OENFNDMyOTEyOUUwMEU1MDA1ODIxREMgLyogTGlua0xvYWRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5rTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk4RUIxRjk0MTMxM0ZFMDUwMEQwRTFFQSAvKiBOb3RJbXBsZW1lbnRlZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb3RJbXBsZW1lbnRlZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk5OTA4QjBFQzFCQ0FDRjFGMDBFRDBGNjUgLyogZ2VuZXJh
dGUtanMtYnVpbHRpbnMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSAiZ2Vu
ZXJhdGUtanMtYnVpbHRpbnMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBF
RDFCQ0FDRjkxMDBFRDBGNjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5qcyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRl
Z3kuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEVFMUJDQUNGOTEwMEVE
MEY2NSAvKiBDb3VudFF1ZXVpbmdTdHJhdGVneS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2
YXNjcmlwdDsgcGF0aCA9IENvdW50UXVldWluZ1N0cmF0ZWd5LmpzOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5OTA4QjBFRjFCQ0FDRjkxMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW0u
anMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVh
bS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1Mjg3LDcgKzE1Mjg2LDYgQEAK
IAkJMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIFdlYktpdCAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJOTkwOEIwRUMxQkNBQ0YxRjAwRUQwRjY1IC8q
IGdlbmVyYXRlLWpzLWJ1aWx0aW5zICovLAogCQkJCTY1Qzk3QUYyMDhFQTkwODgwMEFDRDI3MyAv
KiBjb25maWcuaCAqLywKIAkJCQlFREVDOTgwMjBBRUQ3RTE3MDA1OTEzN0YgLyogV2ViQ29yZVBy
ZWZpeC5oICovLAogCQkJCTkzMDcwNjEzMDlFMENBODIwMEIxN0ZFNCAvKiBEZXJpdmVkU291cmNl
cy5tYWtlICovLApAQCAtMjgxNDMsNyArMjgxNDEsNyBAQAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKLQkJ
CXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmVcIlxuY2QgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZVwiXG5cbi9iaW4vbG4gLXNmaCBcIiR7U1JDUk9PVH1cIiBXZWJDb3JlXG5leHBv
cnQgV2ViQ29yZT1cIldlYkNvcmVcIlxuZXhwb3J0IEluc3BlY3RvclNjcmlwdHM9XCIke0pBVkFT
Q1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVJ9XCJcbmV4cG9ydCBXZWJSZXBsYXlTY3JpcHRz
PVwiJHtKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSfVwiXG5leHBvcnQgR2VuZXJh
dGVKU0J1aWx0aW5zU2NyaXB0cz1cIiR7SkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJ
Un1cIlxuXG5pZiBbICEgJENDIF07IHRoZW5cbiAgICBleHBvcnQgQ0M9XCJgeGNydW4gLWZpbmQg
Y2xhbmdgXCJcbmZpXG5cbmlmIFsgISAkR1BFUkYgXTsgdGhlblxuICAgIGV4cG9ydCBHUEVSRj1c
ImB4Y3J1biAtZmluZCBncGVyZmBcIlxuZmlcblxuaWYgWyBcIiR7QUNUSU9OfVwiID0gXCJidWls
ZFwiIC1vIFwiJHtBQ1RJT059XCIgPSBcImluc3RhbGxcIiAtbyBcIiR7QUNUSU9OfVwiID0gXCJp
bnN0YWxsaGRyc1wiIF07IHRoZW5cbiAgICBtYWtlICAtLW5vLWJ1aWx0aW4tcnVsZXMgLWYgXCJX
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2VcIiAtaiBgL3Vzci9zYmluL3N5c2N0bCAtbiBody5h
Y3RpdmVjcHVgIFNES1JPT1Q9XCIke1NES1JPT1R9XCJcbmZpXG4iOworCQkJc2hlbGxTY3JpcHQg
PSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZVwiXG5jZCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9XZWJDb3JlXCJc
blxuL2Jpbi9sbiAtc2ZoIFwiJHtTUkNST09UfVwiIFdlYkNvcmVcbmV4cG9ydCBXZWJDb3JlPVwi
V2ViQ29yZVwiXG5leHBvcnQgSW5zcGVjdG9yU2NyaXB0cz1cIiR7SkFWQVNDUklQVENPUkVfUFJJ
VkFURV9IRUFERVJTX0RJUn1cIlxuZXhwb3J0IFdlYlJlcGxheVNjcmlwdHM9XCIke0pBVkFTQ1JJ
UFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVJ9XCJcbmV4cG9ydCBKYXZhU2NyaXB0Q29yZV9TQ1JJ
UFRTX0RJUj1cIiR7SkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUn1cIlxuXG5pZiBb
ICEgJENDIF07IHRoZW5cbiAgICBleHBvcnQgQ0M9XCJgeGNydW4gLWZpbmQgY2xhbmdgXCJcbmZp
XG5cbmlmIFsgISAkR1BFUkYgXTsgdGhlblxuICAgIGV4cG9ydCBHUEVSRj1cImB4Y3J1biAtZmlu
ZCBncGVyZmBcIlxuZmlcblxuaWYgWyBcIiR7QUNUSU9OfVwiID0gXCJidWlsZFwiIC1vIFwiJHtB
Q1RJT059XCIgPSBcImluc3RhbGxcIiAtbyBcIiR7QUNUSU9OfVwiID0gXCJpbnN0YWxsaGRyc1wi
IF07IHRoZW5cbiAgICBtYWtlICAtLW5vLWJ1aWx0aW4tcnVsZXMgLWYgXCJXZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2VcIiAtaiBgL3Vzci9zYmluL3N5c2N0bCAtbiBody5hY3RpdmVjcHVgIFNE
S1JPT1Q9XCIke1NES1JPT1R9XCJcbmZpXG4iOwogCQl9OwogLyogRW5kIFBCWFNoZWxsU2NyaXB0
QnVpbGRQaGFzZSBzZWN0aW9uICovCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IDJhZjk3OTllZDFlYmVkNGZiOWNiOGQ5NGY2NzY4YWM5
NTYyY2ZjMDIuLmUzOGQzNTMwOTE4Y2MwYWY2OTMzOWZhNzIxOTVhNzQ0NmNhY2U5OGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtOTQs
NyArOTQsNyBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0RPTVdpbmRvd1NoZWxsKiBzaGVsbCkKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKFwKICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1
aWx0aW5GdW5jdGlvbnMoKS5yZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zKCkubmFtZSMj
UHJpdmF0ZU5hbWUoKSwgXAogICAgICAgICAgICAgbV9wcml2YXRlRnVuY3Rpb25zLnJlYWRhYmxl
U3RyZWFtSW50ZXJuYWxzKCkubV8jI25hbWUjI0Z1bmN0aW9uLmdldCgpICwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KSwKLSAgICAgICAgV0VCQ09SRVJFQURBQkxFU1RSRUFNSU5URVJOQUxTX0ZPUkVB
Q0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfR0xPQkFMX1NUQVRJQykKKyAgICAgICAg
V0VCQ09SRV9GT1JFQUNIX1JFQURBQkxFU1RSRUFNSU5URVJOQUxTX0JVSUxUSU5fRlVOQ1RJT05f
TkFNRShERUNMQVJFX0dMT0JBTF9TVEFUSUMpCiAjdW5kZWYgREVDTEFSRV9HTE9CQUxfU1RBVElD
CiAjZW5kaWYKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZ2VuZXJhdGUtanMt
YnVpbHRpbnMgYi9Tb3VyY2UvV2ViQ29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNjFkZDY0MmU3Y2EyZjg5YTc4ZTFkMWE1MDNkOGI5NzgyYjQw
NDQ4MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucworKysgL2Rldi9udWxsCkBAIC0xLDE4MSAr
MCwwIEBACi0jIS91c3IvYmluL3B5dGhvbgotIyBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFy
ZSBtZXQ6Ci0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0j
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0jIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotIyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0jIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotIyBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0jIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi1pbXBvcnQgYXJncGFy
c2UKLWltcG9ydCBmaWxlY21wCi1pbXBvcnQgb3MKLWltcG9ydCBzdWJwcm9jZXNzCi0KLWZyb20g
c3RyaW5nIGltcG9ydCBUZW1wbGF0ZQotCi0KLXBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFy
c2VyKCkKLXBhcnNlci5hZGRfYXJndW1lbnQoJy0tb3V0cHV0X2RpcicsIGRlZmF1bHQ9JycsIGhl
bHA9J291dHB1dCBkaXJlY3RvcnknKQotcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1pbnB1dCcsIGhl
bHA9J3BhdGggdG8gaW5wdXQgSlMgZmlsZScpCi1wYXJzZXIuYWRkX2FyZ3VtZW50KCctLWdlbmVy
YXRlX2pzX2J1aWx0aW5zX3BhdGgnLCBoZWxwPSdwYXRoIHRvIGRpcmVjdG9yeSBjb250YWluaW5n
IEphdmFTY3JpcHRDb3JlXCdzIGdlbmVyYXRlLWpzLWJ1aWx0aW5zJykKLQotYXJncyA9IHBhcnNl
ci5wYXJzZV9hcmdzKCkKLWZpbGVuYW1lID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2Vu
YW1lKGFyZ3MuaW5wdXQpKVswXQotCi0jIGdlbmVyYXRlIEpTIGJ1aWx0aW5zCi1uYW1lc3BhY2Ug
PSAiV2ViQ29yZSIKLXByZWZpeCA9ICJXRUJDT1JFIiArIGZpbGVuYW1lLnVwcGVyKCkKLW91dHB1
dCA9IG9zLnBhdGguam9pbihhcmdzLm91dHB1dF9kaXIsIGZpbGVuYW1lICsgIkJ1aWx0aW5zIikK
LWpzY19nZW5lcmF0ZV9idWlsdGluX3NjcmlwdCA9IG9zLnBhdGguam9pbihhcmdzLmdlbmVyYXRl
X2pzX2J1aWx0aW5zX3BhdGgsICJnZW5lcmF0ZS1qcy1idWlsdGlucyIpCi0KLXN1YnByb2Nlc3Mu
Y2FsbChbInB5dGhvbiIsIGpzY19nZW5lcmF0ZV9idWlsdGluX3NjcmlwdCwgIi0tb3V0cHV0Iiwg
b3V0cHV0LCAiLS1uYW1lc3BhY2UiLCBuYW1lc3BhY2UsICItLXByZWZpeCIsIHByZWZpeCwgYXJn
cy5pbnB1dF0sIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKLQotIyBnZW5lcmF0ZSBKUyBidWls
dGlucyB3cmFwcGVyCi1vdXRwdXRfYmFzZSA9IG91dHB1dCArICJXcmFwcGVyIgotCi1idWlsdGlu
c1dyYXBwZXJIZWFkZXIgPSBvcGVuKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsICJ3IikKLQotYnVp
bHRpbnNXcmFwcGVySGVhZGVyLndyaXRlKFRlbXBsYXRlKAotIiIiCi0vKiBHZW5lcmF0ZWQgYnkg
Z2VuZXJhdGUtanMtYnVpbHRpbnMgZG8gbm90IGhhbmQgZWRpdC4gKi8KLQotLyoKLSAqCi0gKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg
IDAyMTEwLTEzMDEgIFVTQQotICovCi0KLSNpZm5kZWYgJHtGaWxlbmFtZX1CdWlsdGluc1dyYXBw
ZXJfaAotI2RlZmluZSAke0ZpbGVuYW1lfUJ1aWx0aW5zV3JhcHBlcl9oCi0KLSNpbmNsdWRlICIk
e0ZpbGVuYW1lfUJ1aWx0aW5zLmgiCi0jaW5jbHVkZSA8Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuaD4KLSNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4KLSNpbmNs
dWRlIDxydW50aW1lL0lkZW50aWZpZXIuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24u
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyAke0ZpbGVuYW1lfUJ1aWx0aW5zV3Jh
cHBlciA6IHByaXZhdGUgSlNDOjpXZWFrSGFuZGxlT3duZXIgewotcHVibGljOgotICAgIGV4cGxp
Y2l0ICR7RmlsZW5hbWV9QnVpbHRpbnNXcmFwcGVyKEpTQzo6Vk0qIHZtKQotICAgICAgICA6IG1f
dm0oKnZtKQotICAgICAgICAke1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUo
SU5JVElBTElaRV9CVUlMVElOX05BTUVTKQotI2RlZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fU09V
UkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpICwgbV8jI25hbWUjI1NvdXJj
ZShKU0M6Om1ha2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc18jI25hbWUs
IGxlbmd0aCkpKQotICAgICAgICAke1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOKElOSVRJQUxJWkVf
QlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKLSN1bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNF
X01FTUJFUlMKLSAgICB7Ci0gICAgfQotCi0jZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFC
TEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcXAotICAgIEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXFwKLSAgICBjb25zdCBKU0M6OlNv
dXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7
IH0KLSAgICAke1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFC
TEVTKQotI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCi0KLSAgICAke1ByZWZpeH1f
Rk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJf
QUNDRVNTT1IpCi0KLSAgICB2b2lkIGV4cG9ydE5hbWVzKCk7Ci0KLXByaXZhdGU6Ci0gICAgSlND
OjpWTSYgbV92bTsKLQotICAgICR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFN
RShERUNMQVJFX0JVSUxUSU5fTkFNRVMpCi0KLSNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJD
RV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcXAotICAgIEpTQzo6U291cmNl
Q29kZSBtXyMjbmFtZSMjU291cmNlO1xcCi0gICAgSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVjdXRhYmxlOwotICAgICR7UHJlZml4fV9GT1JF
QUNIX0JVSUxUSU4oREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQotI3VuZGVmIERFQ0xB
UkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUwotCi19OwotCi0jZGVmaW5lIERFRklORV9CVUlMVElO
X0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcXAotaW5saW5lIEpTQzo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqICR7RmlsZW5hbWV9QnVpbHRpbnNXcmFwcGVyOjpu
YW1lIyNFeGVjdXRhYmxlKCkgXFwKLXtcXAotICAgIGlmICghbV8jI25hbWUjI0V4ZWN1dGFibGUp
XFwKLSAgICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUgPSBKU0M6OldlYWs8SlNDOjpVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZT4oSlNDOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShtX3ZtLCBt
XyMjbmFtZSMjU291cmNlLCBmdW5jdGlvbk5hbWUjI1B1YmxpY05hbWUoKSwgc18jI25hbWUjI0Nv
bnN0cnVjdEFiaWxpdHkpLCB0aGlzLCAmbV8jI25hbWUjI0V4ZWN1dGFibGUpO1xcCi0gICAgcmV0
dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1xcCi19Ci0ke1ByZWZpeH1fRk9SRUFDSF9C
VUlMVElOKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQotI3VuZGVmIERFRklORV9CVUlMVElO
X0VYRUNVVEFCTEVTCi0KLWlubGluZSB2b2lkICR7RmlsZW5hbWV9QnVpbHRpbnNXcmFwcGVyOjpl
eHBvcnROYW1lcygpCi17Ci0jZGVmaW5lIEVYUE9SVF9GVU5DVElPTl9OQU1FKG5hbWUpIG1fdm0u
cHJvcGVydHlOYW1lcy0+YXBwZW5kRXh0ZXJuYWxOYW1lKG5hbWUjI1B1YmxpY05hbWUoKSwgbmFt
ZSMjUHJpdmF0ZU5hbWUoKSk7Ci0gICAgJHtQcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElP
Tl9OQU1FKEVYUE9SVF9GVU5DVElPTl9OQU1FKQotI3VuZGVmIEVYUE9SVF9GVU5DVElPTl9OQU1F
Ci19Ci0KLWNsYXNzICR7RmlsZW5hbWV9QnVpbHRpbkZ1bmN0aW9ucyB7Ci1wdWJsaWM6Ci0gICAg
ZXhwbGljaXQgJHtGaWxlbmFtZX1CdWlsdGluRnVuY3Rpb25zKEpTQzo6Vk0mIHZtKSA6IG1fdm0o
dm0pIHsgfQotCi0gICAgdm9pZCBpbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKLSAgICB2b2lk
IHZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImKTsKLQotcHVibGljOgotICAgIEpTQzo6Vk0mIG1fdm07
Ci0KLSNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKGZ1bmN0aW9uTmFtZSkg
XFwKLSAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5h
bWUjI0Z1bmN0aW9uOwotICAgICR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFN
RShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCi0jdW5kZWYgREVDTEFSRV9CVUlMVElO
X1NPVVJDRV9NRU1CRVJTCi19OwotCi1pbmxpbmUgdm9pZCAke0ZpbGVuYW1lfUJ1aWx0aW5GdW5j
dGlvbnM6OmluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotI2RlZmlu
ZSBFWFBPUlRfRlVOQ1RJT04oY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKVxcCi0gICAg
bV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmplY3QsIEpTQzo6
SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKG1fdm0sIGNvZGVOYW1lIyNHZW5lcmF0
b3IobV92bSksICZnbG9iYWxPYmplY3QpKTsKLSAgICAke1ByZWZpeH1fRk9SRUFDSF9CVUlMVElO
KEVYUE9SVF9GVU5DVElPTikKLSN1bmRlZiBFWFBPUlRfRlVOQ1RJT04KLX0KLQotaW5saW5lIHZv
aWQgJHtGaWxlbmFtZX1CdWlsdGluRnVuY3Rpb25zOjp2aXNpdChKU0M6OlNsb3RWaXNpdG9yJiB2
aXNpdG9yKQotewotI2RlZmluZSBWSVNJVF9GVU5DVElPTihuYW1lKSB2aXNpdG9yLmFwcGVuZCgm
bV8jI25hbWUjI0Z1bmN0aW9uKTsKLSAgICAke1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0ZVTkNU
SU9OX05BTUUoVklTSVRfRlVOQ1RJT04pCi0jdW5kZWYgVklTSVRfRlVOQ1RJT04KLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gJHtGaWxlbmFtZX1CdWlsdGluc1dyYXBw
ZXJfaAotIiIiKS5zdWJzdGl0dXRlKGRpY3QoRmlsZW5hbWU9ZmlsZW5hbWUsIFByZWZpeD1wcmVm
aXgpKSkKLQotYnVpbHRpbnNXcmFwcGVySGVhZGVyLmNsb3NlKCkKLQotaWYgKG5vdCBvcy5wYXRo
LmV4aXN0cyhvdXRwdXRfYmFzZSArICIuaCIpKSBvciAobm90IGZpbGVjbXAuY21wKG91dHB1dF9i
YXNlICsgIi5oLnRtcCIsIG91dHB1dF9iYXNlICsgIi5oIiwgc2hhbGxvdz1GYWxzZSkpOgotICAg
IGlmIChvcy5wYXRoLmV4aXN0cyhvdXRwdXRfYmFzZSArICIuaCIpKToKLSAgICAgICAgb3MucmVt
b3ZlKG91dHB1dF9iYXNlICsgIi5oIikKLSAgICBvcy5yZW5hbWUob3V0cHV0X2Jhc2UgKyAiLmgu
dG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmgiKQotZWxzZToKLSAgICBvcy5yZW1vdmUob3V0cHV0X2Jh
c2UgKyAiLmgudG1wIikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBmN2ZlMjJlNjYzMjA4YjI1ODgxNzNhZDEzYzQ3MzMxOWJiNmNmODBmLi5jOWQ3
MGRjY2QyZjEyNDcwODZiYTRlNGI1MjAyNmM5N2VhZDZhYWNjIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTUtMTAt
MTMgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVzdHJ1Y3R1cmUg
Z2VuZXJhdGUtanMtYmluZGluZ3Mgc2NyaXB0IHRvIGJlIG1vZHVsYXIgYW5kIHRlc3RhYmxlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk5MjkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBzdHVi
IHNoZWxsIHNjcmlwdCBhbmQgYmFzaWMgd2Via2l0cHkgc3VwcG9ydCBmb3IgcnVubmluZyBidWls
dGlucworICAgICAgICBnZW5lcmF0b3IgdGVzdHMuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1i
dWlsdGlucy1nZW5lcmF0b3ItdGVzdHM6IEFkZGVkLgorICAgICAgICAobWFpbik6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb2RlZ2VuL19faW5pdF9fLnB5OiBBZGRlZC4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2NvZGVnZW4vbWFpbi5weTogQWRkZWQuCisKKyAgICAgICAgICAg
IFRoZSBvbmx5IGludGVyZXN0aW5nIGRpZmZlcmVuY2UgaGVyZSBmcm9tIHRoZSBpbnNwZWN0b3Ig
cHJvdG9jb2wKKyAgICAgICAgICAgIGdlbmVyYXRvciBlcXVpdmFsZW50IGlzIHRoYXQgdGhpcyBp
bXBsZW1lbnRhdGlvbiBkZWNvZGVzIHRoZSB0YXJnZXQKKyAgICAgICAgICAgIGZyYW1ld29yayBh
bmQgb3V0cHV0IG1vZGUgKGNvbWJpbmVkIG9yIHNlcGFyYXRlKSBmcm9tIHRoZSB0ZXN0J3MgZmls
ZSBuYW1lLgorCisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvclRlc3RzKToKKyAgICAgICAgKEJ1
aWx0aW5zR2VuZXJhdG9yVGVzdHMuX19pbml0X18pOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0
b3JUZXN0cy5nZW5lcmF0ZV9mcm9tX2pzX2J1aWx0aW5zKToKKyAgICAgICAgKEJ1aWx0aW5zR2Vu
ZXJhdG9yVGVzdHMud3JpdGVfZXJyb3JfZmlsZSk6CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRv
clRlc3RzLmRldGVjdF9jaGFuZ2VzKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHMu
cnVuX3Rlc3RzKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHMubWFpbik6CisKIDIw
MTUtMTAtMTMgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAg
TWFjIERlYnVnIGFuZCAzMi1iaXQgcXVldWVzIHNob3VsZCBiZSBzZXBhcmF0ZQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy9ydW4tYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzIGIvVG9vbHMvU2Ny
aXB0cy9ydW4tYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzCm5ldyBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzOThjNzhjYTEw
ZWM1OTc2MjY2MTJjODU1NTNhYmQxYTRlNmZiZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9T
Y3JpcHRzL3J1bi1idWlsdGlucy1nZW5lcmF0b3ItdGVzdHMKQEAgLTAsMCArMSw0MiBAQAorIyEv
dXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CitpbXBvcnQgc3lzCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGV4ZWN1dGl2
ZQorCitkZWYgbWFpbihhcmd2KToKKyAgICAiIiJSdW5zIHRoZSBKUyBidWlsdGlucyBjb2RlIGdl
bmVyYXRvciBvbiB0ZXN0IGlucHV0IGZpbGVzIGFuZCBjb21wYXJlcworICAgIHRoZSByZXN1bHRz
IHdpdGggcmVmZXJlbmNlIGZpbGVzLgorCisgICAgT3B0aW9uczoKKyAgICAgICAtLXJlc2V0LXJl
c3VsdHM6IE92ZXJ3cml0ZXMgdGhlIHJlZmVyZW5jZSBmaWxlcyB3aXRoIHRoZSBnZW5lcmF0ZWQg
cmVzdWx0cy4KKworICAgICIiIgorICAgIHJlc2V0X3Jlc3VsdHMgPSAiLS1yZXNldC1yZXN1bHRz
IiBpbiBhcmd2CisKKyAgICBmcm9tIHdlYmtpdHB5LmNvZGVnZW4ubWFpbiBpbXBvcnQgQnVpbHRp
bnNHZW5lcmF0b3JUZXN0cworICAgIHJldHVybiBCdWlsdGluc0dlbmVyYXRvclRlc3RzKHJlc2V0
X3Jlc3VsdHMsIGV4ZWN1dGl2ZS5FeGVjdXRpdmUoKSkubWFpbigpCisKK2lmIF9fbmFtZV9fID09
ICdfX21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbihzeXMuYXJndikpCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvZGVnZW4vX19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvZGVnZW4vX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWY2NWJlZTViYjc3ZTk2
ZWJjN2NkOWM0NzY0MDY5MGZiZGE4YWMxOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29kZWdlbi9fX2luaXRfXy5weQpAQCAtMCwwICsxIEBACisjIFJlcXVpcmVk
IGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGUgZmlsZXMKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29kZWdlbi9tYWluLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb2RlZ2VuL21haW4ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDAzOTZkYjlhMzhi
ZTBmMDdiZTE4NjNiODhhZWQ0MWVkZjk3ZDk2OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29kZWdlbi9tYWluLnB5CkBAIC0wLDAgKzEsMTQ0IEBACisjIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMgIkFTCisjIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorIyBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyMgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisj
IEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBv
cworaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzeXMKK2ltcG9ydCB0ZW1w
ZmlsZQorZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLmRldGVjdGlvbiBpbXBvcnQg
ZGV0ZWN0X3NjbV9zeXN0ZW0KK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUg
aW1wb3J0IFNjcmlwdEVycm9yCisKKworY2xhc3MgQnVpbHRpbnNHZW5lcmF0b3JUZXN0czoKKwor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXNldF9yZXN1bHRzLCBleGVjdXRpdmUpOgorICAgICAg
ICBzZWxmLnJlc2V0X3Jlc3VsdHMgPSByZXNldF9yZXN1bHRzCisgICAgICAgIHNlbGYuZXhlY3V0
aXZlID0gZXhlY3V0aXZlCisKKyAgICBkZWYgZ2VuZXJhdGVfZnJvbV9qc19idWlsdGlucyhzZWxm
LCBidWlsdGluc19maWxlLCBvdXRwdXRfZGlyZWN0b3J5LCBmcmFtZXdvcmtfbmFtZT0iIiwgY29t
YmluZWRfb3V0cHV0cz1GYWxzZSk6CisgICAgICAgIGNtZCA9IFsncHl0aG9uJywKKyAgICAgICAg
ICAgICAgICdKYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5JywK
KyAgICAgICAgICAgICAgICctLW91dHB1dC1kaXJlY3RvcnknLCBvdXRwdXRfZGlyZWN0b3J5LAor
ICAgICAgICAgICAgICAgJy0tZm9yY2UnLAorICAgICAgICAgICAgICAgJy0tZnJhbWV3b3JrJywg
ZnJhbWV3b3JrX25hbWUsCisgICAgICAgICAgICAgICAnLS10ZXN0J10KKworICAgICAgICBpZiBj
b21iaW5lZF9vdXRwdXRzOgorICAgICAgICAgICAgY21kLmFwcGVuZCgnLS1jb21iaW5lZCcpCisK
KyAgICAgICAgY21kLmFwcGVuZChidWlsdGluc19maWxlKQorCisgICAgICAgIGV4aXRfY29kZSA9
IDAKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3RkZXJyX291dHB1dCA9IHNlbGYuZXhlY3V0
aXZlLnJ1bl9jb21tYW5kKGNtZCkKKyAgICAgICAgICAgIGlmIHN0ZGVycl9vdXRwdXQ6CisgICAg
ICAgICAgICAgICAgc2VsZi53cml0ZV9lcnJvcl9maWxlKGJ1aWx0aW5zX2ZpbGUsIG91dHB1dF9k
aXJlY3RvcnksIHN0ZGVycl9vdXRwdXQpCisgICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciwgZToK
KyAgICAgICAgICAgIHByaW50IGUub3V0cHV0CisgICAgICAgICAgICBleGl0X2NvZGUgPSBlLmV4
aXRfY29kZQorICAgICAgICByZXR1cm4gZXhpdF9jb2RlCisKKyAgICBkZWYgd3JpdGVfZXJyb3Jf
ZmlsZShzZWxmLCBpbnB1dF9maWxlcGF0aCwgb3V0cHV0X2RpcmVjdG9yeSwgZXJyb3Jfb3V0cHV0
KToKKyAgICAgICAgb3V0cHV0X2ZpbGVwYXRoID0gb3MucGF0aC5qb2luKG91dHB1dF9kaXJlY3Rv
cnksIG9zLnBhdGguYmFzZW5hbWUoaW5wdXRfZmlsZXBhdGgpICsgJy1lcnJvcicpCisKKyAgICAg
ICAgd2l0aCBvcGVuKG91dHB1dF9maWxlcGF0aCwgInciKSBhcyBvdXRwdXRfZmlsZToKKyAgICAg
ICAgICAgIG91dHB1dF9maWxlLndyaXRlKGVycm9yX291dHB1dCkKKworICAgIGRlZiBkZXRlY3Rf
Y2hhbmdlcyhzZWxmLCB3b3JrX2RpcmVjdG9yeSwgcmVmZXJlbmNlX2RpcmVjdG9yeSk6CisgICAg
ICAgIGNoYW5nZXNfZm91bmQgPSBGYWxzZQorICAgICAgICBmb3Igb3V0cHV0X2ZpbGUgaW4gb3Mu
bGlzdGRpcih3b3JrX2RpcmVjdG9yeSk6CisgICAgICAgICAgICBjbWQgPSBbJ2RpZmYnLAorICAg
ICAgICAgICAgICAgICAgICctdScsCisgICAgICAgICAgICAgICAgICAgJy1OJywKKyAgICAgICAg
ICAgICAgICAgICBvcy5wYXRoLmpvaW4ocmVmZXJlbmNlX2RpcmVjdG9yeSwgb3V0cHV0X2ZpbGUp
LAorICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbih3b3JrX2RpcmVjdG9yeSwgb3V0cHV0
X2ZpbGUpXQorCisgICAgICAgICAgICBleGl0X2NvZGUgPSAwCisgICAgICAgICAgICB0cnk6Cisg
ICAgICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi5leGVjdXRpdmUucnVuX2NvbW1hbmQoY21kKQor
ICAgICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgorICAgICAgICAgICAgICAgIG91dHB1
dCA9IGUub3V0cHV0CisgICAgICAgICAgICAgICAgZXhpdF9jb2RlID0gZS5leGl0X2NvZGUKKwor
ICAgICAgICAgICAgaWYgZXhpdF9jb2RlIG9yIG91dHB1dDoKKyAgICAgICAgICAgICAgICBwcmlu
dCAnRkFJTDogJXMnICUgb3V0cHV0X2ZpbGUKKyAgICAgICAgICAgICAgICBwcmludCBvdXRwdXQK
KyAgICAgICAgICAgICAgICBjaGFuZ2VzX2ZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICBwcmludCAnUEFTUzogJXMnICUgb3V0cHV0X2ZpbGUKKyAgICAgICAg
cmV0dXJuIGNoYW5nZXNfZm91bmQKKworICAgIGRlZiBydW5fdGVzdHMoc2VsZiwgaW5wdXRfZGly
ZWN0b3J5LCByZWZlcmVuY2VfZGlyZWN0b3J5KToKKyAgICAgICAgd29ya19kaXJlY3RvcnkgPSBy
ZWZlcmVuY2VfZGlyZWN0b3J5CisKKyAgICAgICAgcGFzc2VkID0gVHJ1ZQorICAgICAgICBmb3Ig
aW5wdXRfZmlsZSBpbiBvcy5saXN0ZGlyKGlucHV0X2RpcmVjdG9yeSk6CisgICAgICAgICAgICAo
dGVzdF9uYW1lLCBleHRlbnNpb24pID0gb3MucGF0aC5zcGxpdGV4dChpbnB1dF9maWxlKQorICAg
ICAgICAgICAgaWYgZXh0ZW5zaW9uICE9ICcuanMnOgorICAgICAgICAgICAgICAgIGNvbnRpbnVl
CisgICAgICAgICAgICAjIEdlbmVyYXRlIG91dHB1dCBpbnRvIHRoZSB3b3JrIGRpcmVjdG9yeSAo
ZWl0aGVyIHRoZSBnaXZlbiBvbmUgb3IgYQorICAgICAgICAgICAgIyB0ZW1wIG9uZSBpZiBub3Qg
cmVzZXRfcmVzdWx0cyBpcyBwZXJmb3JtZWQpCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5yZXNl
dF9yZXN1bHRzOgorICAgICAgICAgICAgICAgIHdvcmtfZGlyZWN0b3J5ID0gdGVtcGZpbGUubWtk
dGVtcCgpCisKKyAgICAgICAgICAgIChmcmFtZXdvcmtfbmFtZSwgdGVzdF9jYXNlLCBvdXRwdXRf
bW9kZSkgPSB0ZXN0X25hbWUuc3BsaXQoJy0nKQorICAgICAgICAgICAgaWYgbm90IGZyYW1ld29y
a19uYW1lIG9yIG5vdCBvdXRwdXRfbW9kZSBvciBub3QgdGVzdF9jYXNlOgorICAgICAgICAgICAg
ICAgIHByaW50ICJJbnZhbGlkIHRlc3QgY2FzZSBuYW1lOiBzaG91bGQgYmUgRnJhbWV3b3JrLVRl
c3RDYXNlTmFtZS1PdXRwdXRNb2RlLmpzIgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAg
ICAgICAgICAgIGNvbWJpbmVkX291dHB1dHMgPSBvdXRwdXRfbW9kZSA9PSAiQ29tYmluZWQiCisg
ICAgICAgICAgICBpZiBzZWxmLmdlbmVyYXRlX2Zyb21fanNfYnVpbHRpbnMob3MucGF0aC5qb2lu
KGlucHV0X2RpcmVjdG9yeSwgaW5wdXRfZmlsZSksIHdvcmtfZGlyZWN0b3J5LCBmcmFtZXdvcmtf
bmFtZT1mcmFtZXdvcmtfbmFtZSwgY29tYmluZWRfb3V0cHV0cz1jb21iaW5lZF9vdXRwdXRzKToK
KyAgICAgICAgICAgICAgICBwYXNzZWQgPSBGYWxzZQorCisgICAgICAgICAgICBpZiBzZWxmLnJl
c2V0X3Jlc3VsdHM6CisgICAgICAgICAgICAgICAgcHJpbnQgIlJlc2V0IHJlc3VsdHMgZm9yIHRl
c3Q6ICVzIiAlIChpbnB1dF9maWxlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAg
ICAgICAgICMgRGV0ZWN0IGNoYW5nZXMKKyAgICAgICAgICAgIGlmIHNlbGYuZGV0ZWN0X2NoYW5n
ZXMod29ya19kaXJlY3RvcnksIHJlZmVyZW5jZV9kaXJlY3RvcnkpOgorICAgICAgICAgICAgICAg
IHBhc3NlZCA9IEZhbHNlCisgICAgICAgICAgICBzaHV0aWwucm10cmVlKHdvcmtfZGlyZWN0b3J5
KQorCisgICAgICAgIHJldHVybiBwYXNzZWQKKworICAgIGRlZiBtYWluKHNlbGYpOgorICAgICAg
ICBjdXJyZW50X3NjbSA9IGRldGVjdF9zY21fc3lzdGVtKG9zLmN1cmRpcikKKyAgICAgICAgb3Mu
Y2hkaXIob3MucGF0aC5qb2luKGN1cnJlbnRfc2NtLmNoZWNrb3V0X3Jvb3QsICdTb3VyY2UnKSkK
KworICAgICAgICBhbGxfdGVzdHNfcGFzc2VkID0gVHJ1ZQorCisgICAgICAgIGlucHV0X2RpcmVj
dG9yeSA9IG9zLnBhdGguam9pbignSmF2YVNjcmlwdENvcmUnLCAnU2NyaXB0cycsICd0ZXN0cycs
ICdidWlsdGlucycpCisgICAgICAgIHJlZmVyZW5jZV9kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4o
J0phdmFTY3JpcHRDb3JlJywgJ1NjcmlwdHMnLCAndGVzdHMnLCAnYnVpbHRpbnMnLCAnZXhwZWN0
ZWQnKQorICAgICAgICBpZiBub3Qgc2VsZi5ydW5fdGVzdHMoaW5wdXRfZGlyZWN0b3J5LCByZWZl
cmVuY2VfZGlyZWN0b3J5KToKKyAgICAgICAgICAgIGFsbF90ZXN0c19wYXNzZWQgPSBGYWxzZQor
CisgICAgICAgIHByaW50ICcnCisgICAgICAgIGlmIGFsbF90ZXN0c19wYXNzZWQ6CisgICAgICAg
ICAgICBwcmludCAnQWxsIHRlc3RzIFBBU1MhJworICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHByaW50ICdTb21lIHRlc3RzIEZBSUwhIChUbyB1cGRhdGUg
dGhlIHJlZmVyZW5jZSBmaWxlcywgZXhlY3V0ZSAicnVuLWJ1aWx0aW5zLWdlbmVyYXRvci10ZXN0
cyAtLXJlc2V0LXJlc3VsdHMiKScKKyAgICAgICAgICAgIHJldHVybiAtMQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263082</attachid>
            <date>2015-10-14 10:04:28 -0700</date>
            <delta_ts>2015-10-14 13:05:35 -0700</delta_ts>
            <desc>Fix Mac</desc>
            <filename>bug-149929-20151014100351.patch</filename>
            <type>text/plain</type>
            <size>271288</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MjU2NGRkMjExNDdmNjg2ZTgwMDdkMjc1ZjFjNWI1ZGE3ODRhOTQwLi5lZjdiY2M5ZDE2MDNhNTY5
ZTVhYWI1NmQxMjk1YWUwMmU2YTcxNzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODcgQEAKKzIwMTUtMTAtMTMgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmVzdHJ1Y3R1cmUgZ2VuZXJhdGUtanMtYmluZGluZ3Mgc2NyaXB0IHRvIGJlIG1v
ZHVsYXIgYW5kIHRlc3RhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDk5MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGlzIGEgbmV3IGNvZGUgZ2VuZXJhdG9yLCBiYXNlZCBvbiB0aGUgcmVw
bGF5IGlucHV0cyBjb2RlIGdlbmVyYXRvciBhbmQKKyAgICAgICAgdGhlIGluc3BlY3RvciBwcm90
b2NvbCBjb2RlIGdlbmVyYXRvciwgd2hpY2ggcHJvZHVjZXMgdmFyaW91cyBmaWxlcyBmb3IgSlMK
KyAgICAgICAgYnVpbHRpbnMuCisKKyAgICAgICAgUmVsYXRpdmUgdG8gdGhlIGdlbmVyYXRvciBp
dCByZXBsYWNlcywgdGhpcyBvbmUgY29uc29saWRhdGVzIHR3byBzY3JpcHRzIGluCisgICAgICAg
IEphdmFTY3JpcHRDb3JlIGFuZCBXZWJDb3JlIGludG8gYSBzaW5nbGUgc2NyaXB0IHdpdGggbXVs
dGlwbGUgZmlsZXMuIFBhcnNlZAorICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnVpbHRp
bnMgZmlsZSBpcyBzdG9yZWQgaW4gYmFja2VuZC1pbmRlcGVuZGVudCBtb2RlbAorICAgICAgICBv
YmplY3RzLiBFYWNoIG91dHB1dCBmaWxlIGhhcyBpdHMgb3duIGNvZGUgZ2VuZXJhdG9yIHRoYXQg
dXNlcyB0aGUgbW9kZWwgdG8KKyAgICAgICAgcHJvZHVjZSByZXN1bHRpbmcgY29kZS4gR2VuZXJh
dG9ycyBhcmUgYWRkaXRpb25hbGx5IHBhcmFtZXRlcml6ZWQgYnkgdGhlIHRhcmdldAorICAgICAg
ICBmcmFtZXdvcmsgKHRvIGNob29zZSBjb3JyZWN0IG1hY3JvcyBhbmQgaW5jbHVkZXMpIGFuZCBv
dXRwdXQgbW9kZSAob25lCisgICAgICAgIGhlYWRlci9pbXBsZW1lbnRhdGlvbiBmaWxlIHBlciBi
dWlsdGluIG9yIHBlciBmcmFtZXdvcmspLgorCisgICAgICAgIEl0IGluY2x1ZGVzIGEgZmV3IHNp
bXBsZSB0ZXN0cyBvZiB0aGUgZ2VuZXJhdG9yJ3MgZnVuY3Rpb25hbGl0eS4gVGhlc2UgcmVzdWx0
LQorICAgICAgICBiYXNlZCB0ZXN0cyB3aWxsIGJlY29tZSBpbmNyZWFzaW5nbHkgbW9yZSBpbXBv
cnRhbnQgYXMgd2Ugc3RhcnQgdG8gYWRkIHN1cHBvcnQKKyAgICAgICAgZm9yIGJ1aWx0aW5zIGFu
bm90YXRpb24gc3VjaCBhcyBAb3B0aW9uYWwsIEBpbnRlcm5hbCwgZXRjLiB0byB0aGUgY29kZSBn
ZW5lcmF0b3IuCisKKyAgICAgICAgU29tZSBvZiB0aGVzZSBjb21wbGV4aXRpZXMsIHN1Y2ggYXMg
aGF2aW5nIHR3byBvdXRwdXQgbW9kZXMsIHdpbGwgYmUgcmVtb3ZlZCBpbgorICAgICAgICBzdWJz
ZXF1ZW50IHBhdGNoZXMuIFRoaXMgcGF0Y2ggaXMgaW50ZW5kZWQgdG8gZXhhY3RseSByZXBsYWNl
IHRoZSBleGlzdGluZworICAgICAgICBmdW5jdGlvbmFsaXR5IHdpdGggYSB1bmlmaWVkIHNjcmlw
dCB0aGF0IG1ha2VzIGFkZGl0aW9uYWwgY2xlYW51cHMgc3RyYWlnaHRmb3J3YXJkLgorCisgICAg
ICAgIEFkZGl0aW9uYWwgY2xlYW51cCBhbmQgY29uc29saWRhdGlvbiBiZXR3ZWVuIGluc3BlY3Rv
ciBjb2RlIGdlbmVyYXRvciBzY3JpcHRzCisgICAgICAgIGFuZCB0aGlzIHNjcmlwdCB3aWxsIGJl
IHB1cnN1ZWQgaW4gZm9sbG93dXAgcGF0Y2hlcy4KKworICAgICAgICBOZXcgdGVzdHM6CisKKyAg
ICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21p
c2UtQ29tYmluZWQuanMKKyAgICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0
Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5qcworICAgICAgICBTY3JpcHRzL3Rlc3Rz
L2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qcwor
ICAgICAgICBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2Vw
YXJhdGUuanMKKyAgICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUd1YXJkZWRJ
bnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMKKyAgICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlu
cy9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMKKyAgICAgICAgU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMKKworCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisKKyAgICAgICAgICAgIERlZmluZSBKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTX0RJUiBleHBsaWNpdGx5IHNvIHRoZSBhZGRfY3VzdG9tX2NvbW1hbmQgYW5kCisg
ICAgICAgICAgICBzaGFyZWQgZmlsZSBsaXN0cyBhcmUgaWRlbnRpY2FsIGJldHdlZW4gSmF2YVNj
cmlwdENvcmUgYW5kIFdlYkNvcmUuCisKKyAgICAgICAgICAgIFRoZSBvdXRwdXQgZmlsZXMgYWRk
aXRpb25hbGx5IGRlcGVuZCBvbiBhbGwgYnVpbHRpbiBnZW5lcmF0b3Igc2NyaXB0IGZpbGVzCisg
ICAgICAgICAgICBhbmQgaW5wdXQgZmlsZXMgdGhhdCBhcmUgY29tYmluZWQgaW50byB0aGUgc2lu
Z2xlIGhlYWRlci9pbXBsZW1lbnRhdGlvbiBmaWxlLgorCisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKworICAgICAgICAgICAgRGVmaW5lIEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
IGV4cGxpY2l0bHkgc28gdGhlIHJ1bGUgZm9yIGNvZGUgZ2VuZXJhdGlvbiBhbmQKKyAgICAgICAg
ICAgIHNoYXJlZCBmaWxlIGxpc3RzIGFyZSBpZGVudGljYWwgYmV0d2VlbiBKYXZhU2NyaXB0Q29y
ZSBhbmQgV2ViQ29yZS4KKworICAgICAgICAgICAgVGhlIG91dHB1dCBmaWxlcyBhZGRpdGlvbmFs
bHkgZGVwZW5kIG9uIGFsbCBidWlsdGluIGdlbmVyYXRvciBzY3JpcHQgZmlsZXMKKyAgICAgICAg
ICAgIGFuZCBpbnB1dCBmaWxlcyB0aGF0IGFyZSBjb21iaW5lZCBpbnRvIHRoZSBzaW5nbGUgaGVh
ZGVyL2ltcGxlbWVudGF0aW9uIGZpbGUuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICAgICBNYXJrIHRoZSBuZXcgYnVpbHRp
bnMgZ2VuZXJhdG9yIGZpbGVzIGFzIHByaXZhdGUgaGVhZGVycyBzbyB3ZSBjYW4gdXNlIHRoZW0g
ZnJvbQorICAgICAgICAgICAgV2ViQ29yZS4KKworICAgICAgICAqIFNjcmlwdHMvVXBkYXRlQ29u
dGVudHMucHk6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVXBkYXRlQ29udGVu
dHMucHkuCisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9fX2luaXRfXy5weTogQWRkZWQuCisg
ICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGlucy5weTogQWRkZWQuCisgICAgICAgICog
U2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0b3IucHk6IEFkZGVkLiBUaGlzIGZpbGUg
Y29udGFpbnMgdGhlIGJhc2UgZ2VuZXJhdG9yLgorICAgICAgICAoV0tfbGNmaXJzdCk6CisgICAg
ICAgIChXS191Y2ZpcnN0KToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yKToKKyAgICAgICAg
KEJ1aWx0aW5zR2VuZXJhdG9yLl9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9y
Lm1vZGVsKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yLmdlbmVyYXRlX2xpY2Vuc2UpOgor
ICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3IuZ2VuZXJhdGVfaW5jbHVkZXNfZnJvbV9lbnRyaWVz
KToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAgICAg
IChCdWlsdGluc0dlbmVyYXRvci5vdXRwdXRfZmlsZW5hbWUpOgorICAgICAgICAoQnVpbHRpbnNH
ZW5lcmF0b3IubWFuZ2xlZE5hbWVGb3JGdW5jdGlvbik6CisgICAgICAgIChCdWlsdGluc0dlbmVy
YXRvci5tYW5nbGVkTmFtZUZvckZ1bmN0aW9uLnRvQ2FtZWwpOgorICAgICAgICAqIFNjcmlwdHMv
YnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHk6IEFkZGVkLiBUaGlzIGZpbGUgY29udGFpbnMgYnVp
bHRpbnMgbW9kZWwgb2JqZWN0cy4KKyAgICAgICAgKFBhcnNlRXhjZXB0aW9uKToKKyAgICAgICAg
KEZyYW1ld29yayk6CisgICAgICAgIChGcmFtZXdvcmsuX19pbml0X18pOgorICAgICAgICAoRnJh
bWV3b3JrLnNldHRpbmcpOgorICAgICAgICAoRnJhbWV3b3JrLmZyb21TdHJpbmcpOgorICAgICAg
ICAoRnJhbWV3b3Jrcyk6CisgICAgICAgIChCdWlsdGluT2JqZWN0KToKKyAgICAgICAgKEJ1aWx0
aW5PYmplY3QuX19pbml0X18pOgorICAgICAgICAoQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAg
KEJ1aWx0aW5GdW5jdGlvbi5fX2luaXRfXyk6CisgICAgICAgIChCdWlsdGluRnVuY3Rpb24uZnJv
bVN0cmluZyk6CisgICAgICAgIChCdWlsdGluRnVuY3Rpb24uX19zdHJfXyk6CisgICAgICAgIChC
dWlsdGluc0NvbGxlY3Rpb24pOgorICAgICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLl9faW5pdF9f
KToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5wYXJzZV9idWlsdGluc19maWxlKToKKyAg
ICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5jb3B5cmlnaHRzKToKKyAgICAgICAgKEJ1aWx0aW5z
Q29sbGVjdGlvbi5hbGxfZnVuY3Rpb25zKToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5f
cGFyc2VfY29weXJpZ2h0X2xpbmVzKToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5fcGFy
c2VfZnVuY3Rpb25zKToKKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBs
YXRlcy5weTogQWRkZWQuCisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvclRlbXBsYXRlcyk6Cisg
ICAgICAgICogU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9oZWFk
ZXIucHk6IEFkZGVkLgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEhlYWRlckdlbmVyYXRvcik6
CisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSGVhZGVyR2VuZXJhdG9yLl9faW5pdF9fKToKKyAg
ICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJHZW5lcmF0b3Iub3V0cHV0X2ZpbGVuYW1lKToK
KyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJHZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0
KToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJHZW5lcmF0b3IuZ2VuZXJhdGVfZm9y
d2FyZF9kZWNsYXJhdGlvbnMpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAg
ICAgKFZNKToKKyAgICAgICAgKENvbnN0cnVjdEFiaWxpdHkpOgorICAgICAgICAoZ2VuZXJhdGVf
c2VjdGlvbl9mb3Jfb2JqZWN0KToKKyAgICAgICAgKGdlbmVyYXRlX2V4dGVybnNfZm9yX29iamVj
dCk6CisgICAgICAgIChnZW5lcmF0ZV9tYWNyb3NfZm9yX29iamVjdCk6CisgICAgICAgIChnZW5l
cmF0ZV9kZWZpbmVzX2Zvcl9vYmplY3QpOgorICAgICAgICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3Jf
Y29kZV90YWJsZV9tYWNybyk6CisgICAgICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX25h
bWVfbWFjcm8pOgorICAgICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNf
Y29tYmluZWRfaW1wbGVtZW50YXRpb24ucHk6IEFkZGVkLgorICAgICAgICAoQnVpbHRpbnNDb21i
aW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRJ
bXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fX2luaXRfXyk6CisgICAgICAgIChCdWlsdGluc0NvbWJp
bmVkSW1wbGVtZW50YXRpb25HZW5lcmF0b3Iub3V0cHV0X2ZpbGVuYW1lKToKKyAgICAgICAgKEJ1
aWx0aW5zQ29tYmluZWRJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgor
ICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yLmdlbmVyYXRl
X2hlYWRlcl9pbmNsdWRlcyk6CisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSW1wbGVtZW50YXRp
b25HZW5lcmF0b3IuZ2VuZXJhdGVfZW1iZWRkZWRfY29kZV9zdHJpbmdfc2VjdGlvbnMpOgorICAg
ICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaGVhZGVy
LnB5OiBBZGRlZC4KKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0b3IpOgor
ICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvci5fX2luaXRfXyk6CisgICAg
ICAgIChCdWlsdGluc1NlcGFyYXRlSGVhZGVyR2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSk6Cisg
ICAgICAgIChCdWlsdGluc1NlcGFyYXRlSGVhZGVyR2VuZXJhdG9yLm1hY3JvX3ByZWZpeCk6Cisg
ICAgICAgIChCdWlsdGluc1NlcGFyYXRlSGVhZGVyR2VuZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6
CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlSGVhZGVyR2VuZXJhdG9yLmdlbmVyYXRlX2Zvcndh
cmRfZGVjbGFyYXRpb25zKToKKyAgICAgICAgKEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAg
IChnZW5lcmF0ZV9oZWFkZXJfaW5jbHVkZXMpOgorICAgICAgICAoZ2VuZXJhdGVfc2VjdGlvbl9m
b3Jfb2JqZWN0KToKKyAgICAgICAgKGdlbmVyYXRlX2V4dGVybnNfZm9yX29iamVjdCk6CisgICAg
ICAgIChnZW5lcmF0ZV9tYWNyb3NfZm9yX29iamVjdCk6CisgICAgICAgIChnZW5lcmF0ZV9kZWZp
bmVzX2Zvcl9vYmplY3QpOgorICAgICAgICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV90YWJs
ZV9tYWNybyk6CisgICAgICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX25hbWVfbWFjcm8p
OgorICAgICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVf
aW1wbGVtZW50YXRpb24ucHk6IEFkZGVkLgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUltcGxl
bWVudGF0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRh
dGlvbkdlbmVyYXRvci5fX2luaXRfXyk6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlSW1wbGVt
ZW50YXRpb25HZW5lcmF0b3Iub3V0cHV0X2ZpbGVuYW1lKToKKyAgICAgICAgKEJ1aWx0aW5zU2Vw
YXJhdGVJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5tYWNyb19wcmVmaXgpOgorICAgICAgICAoQnVp
bHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6Cisg
ICAgICAgIChCdWlsdGluc1NlcGFyYXRlSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVf
aGVhZGVyX2luY2x1ZGVzKToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlv
bkdlbmVyYXRvci5nZW5lcmF0ZV9lbWJlZGRlZF9jb2RlX3N0cmluZ19zZWN0aW9ucyk6CisgICAg
ICAgICogU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV93cmFwcGVy
LnB5OiBBZGRlZC4KKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9yKToK
KyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9yLl9faW5pdF9fKToKKyAg
ICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSk6
CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlV3JhcHBlckdlbmVyYXRvci5tYWNyb19wcmVmaXgp
OgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZVdyYXBwZXJHZW5lcmF0b3IuZ2VuZXJhdGVfb3V0
cHV0KToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9yLmdlbmVyYXRl
X2hlYWRlcl9pbmNsdWRlcyk6CisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlu
cy5weTogQWRkZWQuCisKKyAgICAgICAgICAgIFBhcnNlIGNvbW1hbmQgbGluZSBvcHRpb25zLCBk
ZWNpZGUgd2hpY2ggZ2VuZXJhdG9ycyBhbmQgb3V0cHV0IG1vZGVzIHRvIHVzZS4KKworICAgICAg
ICAoZ2VuZXJhdGVfYmluZGluZ3NfZm9yX2J1aWx0aW5zX2ZpbGVzKToKKyAgICAgICAgKiBTY3Jp
cHRzL2xhenl3cml0ZXIucHk6IENvcGllZCBmcm9tIHRoZSBpbnNwZWN0b3IgcHJvdG9jb2wgZ2Vu
ZXJhdG9yLgorICAgICAgICAoTGF6eUZpbGVXcml0ZXIpOgorICAgICAgICAoTGF6eUZpbGVXcml0
ZXIuX19pbml0X18pOgorICAgICAgICAoTGF6eUZpbGVXcml0ZXIud3JpdGUpOgorICAgICAgICAo
TGF6eUZpbGVXcml0ZXIuY2xvc2UpOgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
SmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90
eXBlLUNvbWJpbmVkLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5z
L0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qczogQWRkZWQuCisg
ICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUd1YXJkZWRCdWlsdGluLVNl
cGFyYXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNv
cmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qczogQWRkZWQuCisgICAgICAgICog
U2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUu
anM6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS14bWxD
YXNpbmdUZXN0LVNlcGFyYXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1
aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1Db21iaW5lZC5q
cy1yZXN1bHQ6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0
ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMtcmVzdWx0OiBB
ZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3Jp
cHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qcy1yZXN1bHQ6IEFkZGVkLgorICAg
ICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkQnVp
bHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQ6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMv
YnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRl
LmpzLXJlc3VsdDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBl
Y3RlZC9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0OiBBZGRlZC4K
KyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUteG1sQ2Fz
aW5nVGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQ6IEFkZGVkLgorICAgICAgICAqIGJ1aWx0aW5zL0J1
aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6
QnVpbHRpbkV4ZWN1dGFibGVzKToKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJs
ZXMuaDoKKyAgICAgICAgKiBjcmVhdGVfaGFzaF90YWJsZToKKworICAgICAgICAgICAgVXBkYXRl
IHRoZSBnZW5lcmF0ZWQgYnVpbHRpbiBtYWNybyBuYW1lcy4KKworICAgICAgICAqIGdlbmVyYXRl
LWpzLWJ1aWx0aW5zOiBSZW1vdmVkLgorCiAyMDE1LTEwLTEyICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ29kZUJsb2NrIHdyaXRlIGJhcnJpZXJzIHNob3Vs
ZCBiZSBwcmVjaXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjgyOGQ3ZDAwMzgyNWJkNjE4YTEyYTY0ZjRiNzgw
MTM5ZGYwYjUzZS4uOWU1MDVmNWVmMjk4M2E1YzBlMTA4NjY0YWI5MDQyZjZiYmYxNTA1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE1LTEwLTEzICBCcmlhbiBCdXJnICA8YmJ1cmdA
YXBwbGUuY29tPgorCisgICAgICAgIFJlc3RydWN0dXJlIGdlbmVyYXRlLWpzLWJpbmRpbmdzIHNj
cmlwdCB0byBiZSBtb2R1bGFyIGFuZCB0ZXN0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5OTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKworICAgICAgICAgICAg
RGVmaW5lIEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSIGV4cGxpY2l0bHkgc28gdGhlIGFkZF9j
dXN0b21fY29tbWFuZCBhbmQKKyAgICAgICAgICAgIHNoYXJlZCBmaWxlIGxpc3RzIGFyZSBpZGVu
dGljYWwgYmV0d2VlbiBKYXZhU2NyaXB0Q29yZSBhbmQgV2ViQ29yZS4KKworICAgICAgICAgICAg
VGhlIG91dHB1dCBmaWxlcyBhZGRpdGlvbmFsbHkgZGVwZW5kIG9uIGFsbCBidWlsdGluIGdlbmVy
YXRvciBzY3JpcHQgZmlsZXMuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorCisg
ICAgICAgICAgICBVc2UgSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIgc28gdGhhdCB0aGUgcnVs
ZSBmb3IgY29kZSBnZW5lcmF0aW9uIGFuZAorICAgICAgICAgICAgc2hhcmVkIGZpbGUgbGlzdHMg
YXJlIGlkZW50aWNhbCBiZXR3ZWVuIEphdmFTY3JpcHRDb3JlIGFuZCBXZWJDb3JlLgorCisgICAg
ICAgICAgICBUaGUgb3V0cHV0IGZpbGVzIGFkZGl0aW9uYWxseSBkZXBlbmQgb24gYWxsIGJ1aWx0
aW4gZ2VuZXJhdG9yIHNjcmlwdCBmaWxlcy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAgICAgRGVmaW5lIEphdmFTY3JpcHRDb3JlX1ND
UklQVFNfRElSIGJlZm9yZSBjYWxsaW5nIERlcml2ZWRTb3VyY2VzLm1ha2UuCisgICAgICAgICAg
ICBUaGlzIHdpbGwgZXZlbnR1YWxseSBiZSBtZXJnZWQgd2l0aCB0aGUgb3RoZXIgc2ltaWxhciBz
Y3JpcHQgcGF0aHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpmaW5pc2hDcmVhdGlvbik6CisK
KyAgICAgICAgICAgIFVwZGF0ZSB0aGUgZ2VuZXJhdGVkIGJ1aWx0aW4gbWFjcm8gbmFtZXMuCisK
KyAgICAgICAgKiBnZW5lcmF0ZS1qcy1idWlsdGluczogUmVtb3ZlZC4KKwogMjAxNS0xMC0xMyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEF2b2lkIHVzZWxlc3Mg
Y29waWVzIGluIHJhbmdlLWxvb3BzIHRoYXQgYXJlIHVzaW5nICdhdXRvJwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGI4MDQ5MjJmMmI1Yzg3ZmM2NWM2MzBkMWEzMTE2NmZl
MWZmYTY3ZjAuLjFkZmE2ZDAzMWRkZjQzYTE2NTgzN2M2MDIxNjgwMzE0ZjgyZjA3NDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTcwMiw2ICs3MDIsOCBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfTElCUkFSSUVTCiAgICAgJHtJQ1VfSTE4Tl9MSUJSQVJJRVN9CiApCiAKK3Nl
dChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUiAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L1Njcmlw
dHMiKQorCiBpZiAoVVNFX1VESVM4NikKICAgICBzZXQoVURJU19HRU5fREVQCiAgICAgICAgIGRp
c2Fzc2VtYmxlci91ZGlzODYvdWRfb3Bjb2RlLnB5CkBAIC0xMDc0LDYgKzEwNzYsMTkgQEAgYWRk
X2N1c3RvbV9jb21tYW5kKAogICAgIFZFUkJBVElNKQogCiAjIEpTQ0J1aWx0aW5zCisKK3NldChC
VUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUworICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVIpL2J1aWx0aW5zX2dlbmVyYXRvci5weQorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVIpL2J1aWx0aW5zX21vZGVsLnB5CisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikv
YnVpbHRpbnNfdGVtcGxhdGVzLnB5CisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikv
Z2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
KS9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9oZWFkZXIucHkKKyAgICAkKEphdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRhdGlv
bi5weQorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlX2J1aWx0aW5z
X3NlcGFyYXRlX2hlYWRlci5weQorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2dl
bmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5CisgICAgJChKYXZhU2Ny
aXB0Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfd3JhcHBlci5w
eQorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2xhenl3cml0ZXIucHkKKwogc2V0
KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vYnVpbHRpbnMvQXJyYXlDb25zdHJ1Y3Rvci5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElS
fS9idWlsdGlucy9BcnJheUl0ZXJhdG9yLnByb3RvdHlwZS5qcwpAQCAtMTA5NSwxMCArMTExMCwx
MSBAQCBzZXQoSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUwogKQogCiBhZGRfY3VzdG9t
X2NvbW1hbmQoCi0gICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElS
fS9KU0NCdWlsdGlucy5jcHAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9K
U0NCdWlsdGlucy5oCi0gICBNQUlOX0RFUEVOREVOQ1kgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9E
SVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zCi0gICBERVBFTkRTICR7SmF2YVNjcmlwdENvcmVfQlVJ
TFRJTlNfU09VUkNFU30KLSAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9D
VVJSRU5UX1NPVVJDRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zIC0taW5wdXQtZGlyZWN0b3J5
ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9idWlsdGlucyAtLW91dHB1dCAke0RFUklWRURf
U09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcAorICAgT1VUUFVUICR7
REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuY3BwCisgICAg
ICAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5o
CisgICBNQUlOX0RFUEVOREVOQ1kgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vZ2VuZXJh
dGUtanMtYnVpbHRpbnMucHkKKyAgIERFUEVORFMgJHtKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19T
T1VSQ0VTfSAke0JVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTfQorICAgQ09NTUFORCAke1BZVEhP
Tl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9nZW5lcmF0ZS1qcy1i
dWlsdGlucy5weSAtLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtLWlucHV0LWRpcmVjdG9yeSAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMgLS1vdXRwdXQtZGlyZWN0b3J5ICR7REVSSVZF
RF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0KICAgIFZFUkJBVElNKQogCiBsaXN0KEFQUEVO
RCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCmluZGV4IDEwMTVkZGM3Nzk4NzgwZWU5NzI2MjNmNGM4ZThkM2M3NWE5ZTRiNzEu
LmJjMGI0NWY5NDkwYjAyN2E0NWE4NWVjNTYyZjVjNTVmY2YyNDg2ZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC03MSwxMiArNzEsMTIgQEAgYWxsIDog
XAogICAgIHVkaXM4Nl9pdGFiLmggXAogICAgIEJ5dGVjb2Rlcy5oIFwKICAgICBJbml0Qnl0ZWNv
ZGVzLmFzbSBcCi0gICAgSlNDQnVpbHRpbnMgXAorICAgIEpTQ0J1aWx0aW5zLmggXAogIwogCi0j
IGJ1aWx0aW4gZnVuY3Rpb25zCiBQWVRIT04gPSBweXRob24KIFBFUkwgPSBwZXJsCitKYXZhU2Ny
aXB0Q29yZV9TQ1JJUFRTX0RJUiA9ICQoSmF2YVNjcmlwdENvcmUpL1NjcmlwdHMKIAogaWZlcSAo
JChPUyksV2luZG93c19OVCkKICAgICBERUxFVEUgPSBjbWQgLy9DIGRlbApAQCAtODUsMTUgKzg1
LDIzIEBAIGVsc2UKIGVuZGlmCiAjIC0tLS0tLS0tCiAKLS5QSE9OWTogSlNDQnVpbHRpbnMKLUpT
Q0J1aWx0aW5zOiAkKEphdmFTY3JpcHRDb3JlKS9nZW5lcmF0ZS1qcy1idWlsdGlucyBKU0NCdWls
dGlucy5oIEpTQ0J1aWx0aW5zLmNwcAotSlNDQnVpbHRpbnMuaDogJChKYXZhU2NyaXB0Q29yZSkv
Z2VuZXJhdGUtanMtYnVpbHRpbnMgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMgSlNDQnVpbHRp
bnNTb3VyY2VzCi0JJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRlLWpzLWJ1aWx0
aW5zIC0taW5wdXQtZGlyZWN0b3J5ICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zIC0tb3V0cHV0
ICRACi0KLUpTQ0J1aWx0aW5zLmNwcDogSlNDQnVpbHRpbnMuaAorIyBKYXZhU2NyaXB0IGJ1aWx0
aW5zLgorCitCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUyA9IFwKKyAgICAkKEphdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSKS9idWlsdGlucy9fX2luaXRfXy5weSBcCisgICAgJChKYXZhU2NyaXB0
Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5IFwKKyAgICAk
KEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGlucy9idWlsdGluc19tb2RlbC5weSBc
CisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnMvYnVpbHRpbnNfdGVt
cGxhdGVzLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGlucy9n
ZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9oZWFkZXIucHkgXAorICAgICQoSmF2YVNjcmlwdENv
cmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2ltcGxl
bWVudGF0aW9uLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGlu
cy9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9oZWFkZXIucHkgXAorICAgICQoSmF2YVNjcmlw
dENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2lt
cGxlbWVudGF0aW9uLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWls
dGlucy9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV93cmFwcGVyLnB5IFwKKyAgICAkKEphdmFT
Y3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZS1qcy1idWlsdGlucy5weSBcCisgICAgJChK
YXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvbGF6eXdyaXRlci5weSBcCisjCiAKLS5QSE9OWTog
SlNDQnVpbHRpbnNTb3VyY2VzCi1KU0NCdWlsdGluc1NvdXJjZXM6IFwKK0phdmFTY3JpcHRDb3Jl
X0JVSUxUSU5TX1NPVVJDRVMgPSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXJy
YXlDb25zdHJ1Y3Rvci5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXJyYXlJ
dGVyYXRvci5wcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0Fy
cmF5LnByb3RvdHlwZS5qcyBcCkBAIC0xMTAsOCArMTE4LDE5IEBAIEpTQ0J1aWx0aW5zU291cmNl
czogXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1JlZmxlY3RPYmplY3QuanMgXAog
ICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1N0cmluZ0NvbnN0cnVjdG9yLmpzIFwKICAg
ICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TdHJpbmdJdGVyYXRvci5wcm90b3R5cGUuanMg
XAorICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1R5cGVkQXJyYXkucHJvdG90eXBlLmpz
IFwKICMKIAorIyBUaGUgY29tYmluZWQgb3V0cHV0IGZpbGUgZGVwZW5kcyBvbiB0aGUgY29udGVu
dHMgb2YgYnVpbHRpbnMgYW5kIGdlbmVyYXRvciBzY3JpcHRzLCBzbworIyBhZGRpbmcsIG1vZGlm
eWluZywgb3IgcmVtb3ZpbmcgYnVpbHRpbnMgb3Igc2NyaXB0cyB3aWxsIHRyaWdnZXIgcmVnZW5l
cmF0aW9uIG9mIGZpbGVzLgorCisuUEhPTlk6IGZvcmNlCitKYXZhU2NyaXB0Q29yZV9CVUlMVElO
U19ERVBFTkRFTkNJRVNfTElTVCA6ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL1VwZGF0
ZUNvbnRlbnRzLnB5IGZvcmNlCisJJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVIpL1VwZGF0ZUNvbnRlbnRzLnB5ICckKEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMp
ICQoQlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMpJyAkQAorCitKU0NCdWlsdGlucy5oOiAkKEJV
SUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTKSAkKEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJD
RVMpIEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX0RFUEVOREVOQ0lFU19MSVNUCisJJChQWVRIT04p
ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5IC0t
Y29tYmluZWQgLS1vdXRwdXQtZGlyZWN0b3J5IC4gLS1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUg
JChKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTKQorCiAjIGxvb2t1cCB0YWJsZXMgZm9y
IGNsYXNzZXMKIAogJS5sdXQuaDogY3JlYXRlX2hhc2hfdGFibGUgJS5jcHAKQEAgLTE5OCw4ICsy
MTcsOCBAQCBhbGwgOiBcCiAjIGFkZGluZywgbW9kaWZ5aW5nLCBvciByZW1vdmluZyBkb21haW5z
IHdpbGwgdHJpZ2dlciByZWdlbmVyYXRpb24gb2YgaW5zcGVjdG9yIGZpbGVzLgogCiAuUEhPTlk6
IGZvcmNlCi1FbmFibGVkSW5zcGVjdG9yRG9tYWlucyA6ICQoSmF2YVNjcmlwdENvcmUpL1VwZGF0
ZUNvbnRlbnRzLnB5IGZvcmNlCi0JJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmUpL1VwZGF0ZUNv
bnRlbnRzLnB5ICckKElOU1BFQ1RPUl9ET01BSU5TKScgJEAKK0VuYWJsZWRJbnNwZWN0b3JEb21h
aW5zIDogJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvVXBkYXRlQ29udGVudHMucHkgZm9y
Y2UKKwkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvVXBkYXRlQ29udGVu
dHMucHkgJyQoSU5TUEVDVE9SX0RPTUFJTlMpJyAkQAogCiBDb21iaW5lZERvbWFpbnMuanNvbiA6
IGluc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWNvbWJpbmVkLWluc3BlY3Rvci1qc29uLnB5ICQo
SU5TUEVDVE9SX0RPTUFJTlMpIEVuYWJsZWRJbnNwZWN0b3JEb21haW5zCiAJJChQWVRIT04pICQo
SmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWNvbWJpbmVkLWluc3Bl
Y3Rvci1qc29uLnB5ICQoSU5TUEVDVE9SX0RPTUFJTlMpID4gLi9Db21iaW5lZERvbWFpbnMuanNv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4NDE2NTI4ZjljNTJmYTU2NTdmYjYz
ZjNkM2QyMWQ5MTY1NjEzZjNjLi4yYmI0MWJmZThkNTM4ZTk4ZTg0MmQwZDE4ODVjYTczMWZlNGEx
ZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTU2LDcgKzk1Niw2IEBACiAJ
CTJBREZBMjYzMThFRjM1NDAwMDRGOUZDQyAvKiBHQ0xvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFERkEyNjIxOEVGMzU0MDAwNEY5RkND
IC8qIEdDTG9nZ2luZy5jcHAgKi87IH07CiAJCTJBRjczODJDMThCQkJGOTIwMDhBNUEzNyAvKiBT
dHJ1Y3R1cmVJRFRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJBRjczODJBMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNw
cCAqLzsgfTsKIAkJMkFGNzM4MkQxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBRjczODJC
MThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMkRGQjhBRkUxQkIzMjNCRDAwOTNEMjM3
IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTcxREE4MEQxODgwRDcxRjAwRDFGMjk5IC8qIGdlbmVyYXRlLWpzLWJ1
aWx0aW5zICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTM3MUQ4NDJEMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRDg0MkMxN0M5OEI2RTAwRUNGOTk0
IC8qIGxpYnouZHlsaWIgKi87IH07CiAJCTQxMzU5Q0YzMEZERDg5QUQwMDIwNjE4MCAvKiBEYXRl
Q29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRDIxMjAyMjkwQUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVDb252ZXJzaW9uLmggKi87IH07CiAJ
CTQxREVBMTMyMUI5RjMxNjMwMDZENjVERCAvKiBCdWlsdGluVXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxREVBMTMxMUI5RjMxNTQwMDZENjVE
RCAvKiBCdWlsdGluVXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTIxMSw2ICsxMjEwLDE4IEBACiAJCTk2OUEwNzlCMEVEMUQzQUUwMEYx
RjY4MSAvKiBPcGNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk2OUEwNzk1MEVEMUQzQUUwMEYxRjY4MSAvKiBPcGNvZGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5Nzg4MDE0MDE0NzFBRDkyMDA0
MUIwMTYgLyogSlNEYXRlTWF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5Nzg4RkMyMjE0NzFBRDBDMDA2OENFMkQgLyogSlNEYXRlTWF0aC5jcHAg
Ki87IH07CiAJCTk3ODgwMTQxMTQ3MUFEOTIwMDQxQjAxNiAvKiBKU0RhdGVNYXRoLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Nzg4RkMyMzE0NzFBRDBD
MDA2OENFMkQgLyogSlNEYXRlTWF0aC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTk5MUQ1RUQ0MUJDQzM1QUEwMEU0QzI1RCAvKiBnZW5lcmF0ZS1q
cy1idWlsdGlucy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk5MDQ0QjMxMUJDQzIzREMwMDdDMjUwRCAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucy5weSAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OTFENUVE
NTFCQ0MzNUIxMDBFNEMyNUQgLyogYnVpbHRpbnNfZ2VuZXJhdG9yLnB5IGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkwNDRCM0IxQkNDMjQ5MTAwN0MyNTBE
IC8qIGJ1aWx0aW5zX2dlbmVyYXRvci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk5OTFENUVENjFCQ0MzNUIxMDBFNEMyNUQgLyogYnVpbHRpbnNf
bW9kZWwucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
OTA0NEIzQzFCQ0MyNDkxMDA3QzI1MEQgLyogYnVpbHRpbnNfbW9kZWwucHkgKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTkxRDVFRDcxQkNDMzVCMTAw
RTRDMjVEIC8qIGJ1aWx0aW5zX3RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MDQ0QjNEMUJDQzI0OTEwMDdDMjUwRCAvKiBidWlsdGlu
c190ZW1wbGF0ZXMucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJOTkxRDVFRDgxQkNDMzVCMTAwRTRDMjVEIC8qIGdlbmVyYXRlX2J1aWx0aW5zX2Nv
bWJpbmVkX2hlYWRlci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk5MDQ0QjNFMUJDQzI0OTEwMDdDMjUwRCAvKiBnZW5lcmF0ZV9idWlsdGluc19jb21i
aW5lZF9oZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJOTkxRDVFRDkxQkNDMzVCMTAwRTRDMjVEIC8qIGdlbmVyYXRlX2J1aWx0aW5zX2Nv
bWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTkwNDRCM0YxQkNDMjQ5MTAwN0MyNTBEIC8qIGdlbmVyYXRlX2J1aWx0
aW5zX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5MUQ1RURBMUJDQzM1QjEwMEU0QzI1RCAvKiBnZW5l
cmF0ZV9idWlsdGluc19zZXBhcmF0ZV9oZWFkZXIucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTA0NEI0MTFCQ0MyQjA1MDA3QzI1MEQgLyogZ2VuZXJh
dGVfYnVpbHRpbnNfc2VwYXJhdGVfaGVhZGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5MUQ1RURCMUJDQzM1QjEwMEU0QzI1RCAvKiBnZW5l
cmF0ZV9idWlsdGluc19zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MDQ0QjQyMUJDQzJCMDUwMDdDMjUwRCAv
KiBnZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weSAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OTFENUVEQzFCQ0MzNUIx
MDBFNEMyNUQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfd3JhcHBlci5weSBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MDQ0QjQzMUJDQzJCMDUw
MDdDMjUwRCAvKiBnZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV93cmFwcGVyLnB5ICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5MUQ1RUREMUJDQzM1
QjMwMEU0QzI1RCAvKiBsYXp5d3JpdGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTkwNDRCNDAxQkNDMjQ5MTAwN0MyNTBEIC8qIGxhenl3cml0ZXIu
cHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTkx
RDVFREYxQkNDNjMwQzAwRTRDMjVEIC8qIFVwZGF0ZUNvbnRlbnRzLnB5IGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkxRDVFREUxQkNDNjJFQTAwRTRDMjVE
IC8qIFVwZGF0ZUNvbnRlbnRzLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTk5MUQ1RUUxMUJDQzY0NjkwMEU0QzI1RCAvKiBidWlsdGlucy5weSBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MUQ1RUUwMUJD
QzY0MTUwMEU0QzI1RCAvKiBidWlsdGlucy5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5OTI4RkYzQjE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBs
YXlJbnB1dHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTkyOEZGMzkxOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmNwcCAqLzsgfTsK
IAkJOTkyOEZGM0MxOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTI4RkYzQTE4QUM0QUVDMDBC
OENGMTIgLyogSlNSZXBsYXlJbnB1dHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk5OTYyMzFFOTE4RDE4MDQyMDBDMDNGREEgLyogSW5zcGVjdG9y
QmFja2VuZENvbW1hbmRzLmpzIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTUzMjQzOTYxODU2QTQ3NTAwMkVENjkyIC8qIEluc3BlY3RvckJhY2tlbmRDb21t
YW5kcy5qcyAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMzExMSw2ICszMTIyLDE5IEBACiAJCTk2OUEwOTIyMEVEMUUwOUMwMEYxRjY4MSAvKiBDb21w
bGV0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbXBsZXRp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Nzg4RkMyMjE0NzFBRDBDMDA2
OENFMkQgLyogSlNEYXRlTWF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0RhdGVNYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc4OEZD
MjMxNDcxQUQwQzAwNjhDRTJEIC8qIEpTRGF0ZU1hdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNEYXRlTWF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
OTA0NEIzMTFCQ0MyM0RDMDA3QzI1MEQgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSAiZ2VuZXJhdGUtanMtYnVpbHRpbnMucHki
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTA0NEIzQTFCQ0MyNDkxMDA3QzI1MEQg
LyogX19pbml0X18ucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBfX2lu
aXRfXy5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTkwNDRCM0IxQkNDMjQ5MTAw
N0MyNTBEIC8qIGJ1aWx0aW5zX2dlbmVyYXRvci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5
dGhvbjsgcGF0aCA9IGJ1aWx0aW5zX2dlbmVyYXRvci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTkwNDRCM0MxQkNDMjQ5MTAwN0MyNTBEIC8qIGJ1aWx0aW5zX21vZGVsLnB5ICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gYnVpbHRpbnNfbW9kZWwucHk7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MDQ0QjNEMUJDQzI0OTEwMDdDMjUwRCAvKiBi
dWlsdGluc190ZW1wbGF0ZXMucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGgg
PSBidWlsdGluc190ZW1wbGF0ZXMucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5
MDQ0QjNFMUJDQzI0OTEwMDdDMjUwRCAvKiBnZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9oZWFk
ZXIucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBnZW5lcmF0ZV9idWls
dGluc19jb21iaW5lZF9oZWFkZXIucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5
MDQ0QjNGMUJDQzI0OTEwMDdDMjUwRCAvKiBnZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBs
ZW1lbnRhdGlvbi5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGdlbmVy
YXRlX2J1aWx0aW5zX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5OyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5OTA0NEI0MDFCQ0MyNDkxMDA3QzI1MEQgLyogbGF6eXdyaXRlci5weSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGxhenl3cml0ZXIucHk7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MDQ0QjQxMUJDQzJCMDUwMDdDMjUwRCAvKiBnZW5l
cmF0ZV9idWlsdGluc19zZXBhcmF0ZV9oZWFkZXIucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5w
eXRob247IHBhdGggPSBnZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9oZWFkZXIucHk7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MDQ0QjQyMUJDQzJCMDUwMDdDMjUwRCAvKiBnZW5l
cmF0ZV9idWlsdGluc19zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
c2NyaXB0LnB5dGhvbjsgcGF0aCA9IGdlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2ltcGxlbWVu
dGF0aW9uLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTA0NEI0MzFCQ0MyQjA1
MDA3QzI1MEQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfd3JhcHBlci5weSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGdlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRl
X3dyYXBwZXIucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MUQ1RURFMUJDQzYy
RUEwMEU0QzI1RCAvKiBVcGRhdGVDb250ZW50cy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5
dGhvbjsgcGF0aCA9IFVwZGF0ZUNvbnRlbnRzLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5OTFENUVFMDFCQ0M2NDE1MDBFNEMyNUQgLyogYnVpbHRpbnMucHkgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBidWlsdGlucy5weTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTkyOEZGMzkxOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVwbGF5SW5wdXRzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkyOEZGM0ExOEFDNEFFQzAwQjhDRjEy
IC8qIEpTUmVwbGF5SW5wdXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
UmVwbGF5SW5wdXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MjhGRjNEMThB
QzRCMUMwMEI4Q0YxMiAvKiBKU0lucHV0cy5qc29uICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5qc29uOyBwYXRo
ID0gSlNJbnB1dHMuanNvbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMzMDYsNyAr
MzMzMCw2IEBACiAJCUE3MTIzNkU0MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUT3Bjb2RlczMyXzY0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY2MUExMTc1NEEyMTAwMjQ2
NUE3IC8qIFJlZ0V4cEppdFRhYmxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZWdFeHBKaXRUYWJsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY4
MjExMTc4RUI0QjAwMjQ2NUE3IC8qIGNyZWF0ZV9yZWdleF90YWJsZXMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgZmls
ZUVuY29kaW5nID0gNDsgcGF0aCA9IGNyZWF0ZV9yZWdleF90YWJsZXM7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUE3MURBODBEMTg4MEQ3MUYwMEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1i
dWlsdGlucyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1q
cy1idWlsdGlucyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI0MTc5NzYw
MUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNDVGVzdFJ1bm5lclV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjUxNzk3NjAxRTAwOTgwMjhDIC8qIEpTQ1Rlc3RSdW5uZXJV
dGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NUZXN0UnVubmVyVXRp
bHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjkxNzk3NjAzRDAwOTgw
MjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTRnVuY3Rpb25JbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0z
ODI3LDcgKzM4NTAsNiBAQAogCQkJCTg2MDRGNEYyMTQzQTZDNDQwMEIyOTVGNSAvKiBDaGFuZ2VM
b2cgKi8sCiAJCQkJRjY5MkE4NTQwMjU1NTk3RDAxRkY2MEY3IC8qIGNyZWF0ZV9oYXNoX3RhYmxl
ICovLAogCQkJCUE3MThGODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVz
ICovLAotCQkJCUE3MURBODBEMTg4MEQ3MUYwMEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlu
cyAqLywKIAkJCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAqLywKIAkJCQlG
NjhFQkI4QzAyNTVENEM2MDFGRjYwRjcgLyogY29uZmlnLmggKi8sCiAJCQkJRjVDMjkwRTYwMjg0
Rjk4RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggKi8sCkBAIC0zODM5LDEyICsz
ODYxLDkgQEAKIAkJCQlBN0Q4MDE5RjE4ODBENjZFMDAyNkMzOUIgLyogYnVpbHRpbnMgKi8sCiAJ
CQkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovLAogCQkJCTdFMzlEODFE
MEVDMzhFRkEwMDNBRjExQSAvKiBieXRlY29tcGlsZXIgKi8sCi0JCQkJMUM5MDUxM0UwQkE5RTg4
MzAwODFFOUQwIC8qIENvbmZpZ3VyYXRpb25zICovLAogCQkJCTE0ODBEQjlBMEREQzIyMzEwMDND
RkRGMiAvKiBkZWJ1Z2dlciAqLywKLQkJCQk2NTBGREY4RDA5RDBGQ0E3MDA3NjlFNTQgLyogRGVy
aXZlZCBTb3VyY2VzICovLAogCQkJCTg2RUM5REIzMTMyOERGNDQwMDJCMkFENyAvKiBkZmcgKi8s
CiAJCQkJMEZGNDI3MkUxNThFQkNDRTAwNENCOUZGIC8qIGRpc2Fzc2VtYmxlciAqLywKLQkJCQkw
ODY3RDY5QUZFODQwMjhGQzAyQUFDMDcgLyogRnJhbWV3b3JrcyAqLywKIAkJCQkwRkVBMDlGQzE3
MDUxMzdGMDBCQjcyMkMgLyogZnRsICovLAogCQkJCTE0MkUzMTJBMTM0RkYwQTYwMEFGQURCNSAv
KiBoZWFwICovLAogCQkJCUE1QkExNURGMTgyMzQwOTIwMEE4MkU2OSAvKiBpbnNwZWN0b3IgKi8s
CkBAIC0zODUzLDE1ICszODcyLDE5IEBACiAJCQkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8q
IGxsaW50ICovLAogCQkJCTBGQ0VGQUFEMTgwNUNBNDQwMDQ3MkNFNCAvKiBsbHZtICovLAogCQkJ
CTdFMzlEODM3MEVDM0EzODgwMDNBRjExQSAvKiBwYXJzZXIgKi8sCi0JCQkJMDM0NzY4REZGRjM4
QTUwNDExREI5QzhCIC8qIFByb2R1Y3RzICovLAogCQkJCTk1QUI4MzFBMERBNDJDNjkwMEJDODNG
MyAvKiBwcm9maWxlciAqLywKIAkJCQk5OUU0NUEwQzE4QTAxRTkzMDAyNkQ4OEYgLyogcmVwbGF5
ICovLAotCQkJCTkzMkZDM0MyMDgyNEJCNzAwMDVCM0M3NSAvKiBSZXNvdXJjZXMgKi8sCiAJCQkJ
N0VGNkUwQkIwRUI3QTFFQzAwNzlBRkFGIC8qIHJ1bnRpbWUgKi8sCiAJCQkJMTQxMjExMDAwQTQ4
NzcyNjAwNDgwMjU1IC8qIHRlc3RzICovLAogCQkJCTg2MDNDRUYwMTRDNzUzRUYwMEFFNTlFMyAv
KiB0b29scyAqLywKIAkJCQk3Qjk4RDEzMzFCNjBDRDFFMDAyM0IxQTQgLyogd2FzbSAqLywKIAkJ
CQk4NkVBQzQ4QzBGOTNFOEI5MDA4RUM5NDggLyogeWFyciAqLywKKwkJCQk2NTBGREY4RDA5RDBG
Q0E3MDA3NjlFNTQgLyogRGVyaXZlZCBTb3VyY2VzICovLAorCQkJCTk5MDQ0QjMwMUJDQzIzQjIw
MDdDMjUwRCAvKiBTY3JpcHRzICovLAorCQkJCTkzMkZDM0MyMDgyNEJCNzAwMDVCM0M3NSAvKiBS
ZXNvdXJjZXMgKi8sCisJCQkJMDg2N0Q2OUFGRTg0MDI4RkMwMkFBQzA3IC8qIEZyYW1ld29ya3Mg
Ki8sCisJCQkJMDM0NzY4REZGRjM4QTUwNDExREI5QzhCIC8qIFByb2R1Y3RzICovLAorCQkJCTFD
OTA1MTNFMEJBOUU4ODMwMDgxRTlEMCAvKiBDb25maWd1cmF0aW9ucyAqLywKIAkJCSk7CiAJCQlu
YW1lID0gSmF2YVNjcmlwdENvcmU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNTcy
Nyw2ICs1NzUwLDM0IEBACiAJCQlwYXRoID0gYnl0ZWNvZGU7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OworCQk5OTA0NEIzMDFCQ0MyM0IyMDA3QzI1MEQgLyogU2NyaXB0cyAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJOTkwNDRCMzkxQkND
MjNGRjAwN0MyNTBEIC8qIGJ1aWx0aW5zICovLAorCQkJCTk5MDQ0QjMxMUJDQzIzREMwMDdDMjUw
RCAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucy5weSAqLywKKwkJCQk5OTA0NEI0MDFCQ0MyNDkxMDA3
QzI1MEQgLyogbGF6eXdyaXRlci5weSAqLywKKwkJCQk5OTFENUVERTFCQ0M2MkVBMDBFNEMyNUQg
LyogVXBkYXRlQ29udGVudHMucHkgKi8sCisJCQkpOworCQkJcGF0aCA9IFNjcmlwdHM7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk5OTA0NEIzOTFCQ0MyM0ZGMDA3QzI1MEQg
LyogYnVpbHRpbnMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCTk5MDQ0QjNBMUJDQzI0OTEwMDdDMjUwRCAvKiBfX2luaXRfXy5weSAqLywKKwkJCQk5OTFE
NUVFMDFCQ0M2NDE1MDBFNEMyNUQgLyogYnVpbHRpbnMucHkgKi8sCisJCQkJOTkwNDRCM0IxQkND
MjQ5MTAwN0MyNTBEIC8qIGJ1aWx0aW5zX2dlbmVyYXRvci5weSAqLywKKwkJCQk5OTA0NEIzQzFC
Q0MyNDkxMDA3QzI1MEQgLyogYnVpbHRpbnNfbW9kZWwucHkgKi8sCisJCQkJOTkwNDRCM0QxQkND
MjQ5MTAwN0MyNTBEIC8qIGJ1aWx0aW5zX3RlbXBsYXRlcy5weSAqLywKKwkJCQk5OTA0NEIzRTFC
Q0MyNDkxMDA3QzI1MEQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaGVhZGVyLnB5ICov
LAorCQkJCTk5MDQ0QjNGMUJDQzI0OTEwMDdDMjUwRCAvKiBnZW5lcmF0ZV9idWlsdGluc19jb21i
aW5lZF9pbXBsZW1lbnRhdGlvbi5weSAqLywKKwkJCQk5OTA0NEI0MTFCQ0MyQjA1MDA3QzI1MEQg
LyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaGVhZGVyLnB5ICovLAorCQkJCTk5MDQ0QjQy
MUJDQzJCMDUwMDdDMjUwRCAvKiBnZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9pbXBsZW1lbnRh
dGlvbi5weSAqLywKKwkJCQk5OTA0NEI0MzFCQ0MyQjA1MDA3QzI1MEQgLyogZ2VuZXJhdGVfYnVp
bHRpbnNfc2VwYXJhdGVfd3JhcHBlci5weSAqLywKKwkJCSk7CisJCQlwYXRoID0gYnVpbHRpbnM7
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk5OUU0NUEwQzE4QTAxRTkzMDAy
NkQ4OEYgLyogcmVwbGF5ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKQEAgLTYwMjQsNiArNjA3NSwxMCBAQAogCQkJCUZFQTA4NjIwMTgyQjdBMDQwMEY2RDg1MSAv
KiBCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4MDFBNTE4ODBENjZFMDAyNkMz
OUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzVFRTlCMjE4
QUFCN0UyMDBBQUQwNDMgLyogQnVpbHRpbk5hbWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTFE
NUVFMTFCQ0M2NDY5MDBFNEMyNUQgLyogYnVpbHRpbnMucHkgaW4gSGVhZGVycyAqLywKKwkJCQk5
OTFENUVENTFCQ0MzNUIxMDBFNEMyNUQgLyogYnVpbHRpbnNfZ2VuZXJhdG9yLnB5IGluIEhlYWRl
cnMgKi8sCisJCQkJOTkxRDVFRDYxQkNDMzVCMTAwRTRDMjVEIC8qIGJ1aWx0aW5zX21vZGVsLnB5
IGluIEhlYWRlcnMgKi8sCisJCQkJOTkxRDVFRDcxQkNDMzVCMTAwRTRDMjVEIC8qIGJ1aWx0aW5z
X3RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovLAogCQkJCTQxREVBMTMyMUI5RjMxNjMwMDZENjVE
RCAvKiBCdWlsdGluVXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTlFNzI5NDBCMTkwRjA1MTQw
MDFBOTFCNSAvKiBCdW5kbGVQYXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5NzE1RUQ4
RTQ2MDBGMTY3QjIgLyogQnV0dGVyZmx5LmggaW4gSGVhZGVycyAqLywKQEAgLTYwNTEsNiArNjEw
Niw3IEBACiAJCQkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRU
b0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjNCN0UyQjE5QTExQjgwMDBE
OUJDNTYgLyogQ2FsbFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTQyMTdFQTlG
NTkwMEFCQjIxNyAvKiBDQ2FsbEhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMUMzRERB
MUJCQ0UwOUUwMEU1MjNFNCAvKiBDZWxsU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNkFB
QUU1MEUxRjQyNjUwMEFEODdEOCAvKiBDbGFzc0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RTA1MDI2MUFBOTA5NTYwMEQzM0IzMyAvKiBDbG9uZWRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk2OUEwNzk3MEVEMUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suaCBpbiBIZWFkZXJz
ICovLApAQCAtNjE4MiwxMCArNjIzOCw4IEBACiAJCQkJQTc4QTk3NzUxNzk3MzhCODAwOURGNzQ0
IC8qIERGR0ZhaWxlZEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCRkYzQzAxNzk4
Njg5NDAwMDJGNDYyIC8qIERGR0ZpbHRyYXRpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3OEE5Nzc3MTc5NzM4QjgwMDlERjc0NCAvKiBERkdGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICov
LAotCQkJCTdCODMyOUJGMUJCMjFGRTMwMDY0OUE2RSAvKiBXQVNNRnVuY3Rpb25MTFZNSVJHZW5l
cmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkJEQzE2MTUxQzVENEYwMENEODkxMCAvKiBE
RkdGaXh1cFBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlEMzM5NzE3RkZDNEU2MDA3M0My
QkMgLyogREZHRmx1c2hlZEF0LmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjMyQkQxMTFCQjM0RjE5
MDA5M0E1N0YgLyogSGVhcEhlbHBlclBvb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0Y4
MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdGbHVzaEZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyREQ4MTUxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0ZvckFsbEtpbGxzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjY5Q0M4OTE5M0FDNjBBMDA0NTc1OUUgLyogREZHRnJvemVuVmFsdWUuaCBpbiBI
ZWFkZXJzICovLApAQCAtNjI1NCw3ICs2MzA4LDYgQEAKIAkJCQkwRkIxNzY2MzE5NkI4RjlFMDA5
MTA1MkEgLyogREZHUHVyZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjNBMUJGQTFBOUVD
QjdEMDAwREUwMUEgLyogREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2RUM5REQxMTMyOERGODIwMDJCMkFENyAvKiBERkdSZWdpc3RlckJhbmsuaCBpbiBIZWFk
ZXJzICovLAotCQkJCURFQTdFMjQ1MUJCQzY3N0YwMEQ3ODQ0MCAvKiBKU1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQ0NGQzE4QTYwMDcwMDAxQTI3Rjgg
LyogREZHU2FmZXBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdBNDI0MzE3QTBCQkZEMDBB
OERCODEgLyogREZHU2FmZVRvRXhlY3V0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0MTAxN0Yx
NzlEQUY4MDAwMkVCOEJBIC8qIERGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9y
LmggaW4gSGVhZGVycyAqLywKQEAgLTYzOTgsNyArNjQ1MSwxMiBAQAogCQkJCUE1NEU4RUIxMThC
RkZCQkUwMDU1NkQyOCAvKiBHQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTUzMjQzOTQxODU2OTcwOTAwMkVENjkyIC8qIGdlbmVyYXRlLWNvbWJpbmVkLWluc3Bl
Y3Rvci1qc29uLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQzQ3MDNDQzAxOTI4NDQ5NjAwMTNGQkVB
IC8qIGdlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weSBpbiBIZWFkZXJzICov
LAotCQkJCTJERkI4QUZFMUJCMzIzQkQwMDkzRDIzNyAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyBp
biBIZWFkZXJzICovLAorCQkJCTk5MUQ1RUQ0MUJDQzM1QUEwMEU0QzI1RCAvKiBnZW5lcmF0ZS1q
cy1idWlsdGlucy5weSBpbiBIZWFkZXJzICovLAorCQkJCTk5MUQ1RUQ4MUJDQzM1QjEwMEU0QzI1
RCAvKiBnZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9oZWFkZXIucHkgaW4gSGVhZGVycyAqLywK
KwkJCQk5OTFENUVEOTFCQ0MzNUIxMDBFNEMyNUQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmlu
ZWRfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKKwkJCQk5OTFENUVEQTFCQ0MzNUIx
MDBFNEMyNUQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaGVhZGVyLnB5IGluIEhlYWRl
cnMgKi8sCisJCQkJOTkxRDVFREIxQkNDMzVCMTAwRTRDMjVEIC8qIGdlbmVyYXRlX2J1aWx0aW5z
X3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJOTkxRDVFREMx
QkNDMzVCMTAwRTRDMjVEIC8qIGdlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX3dyYXBwZXIucHkg
aW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzBFQzE5RjVCM0VBMDA5OEY1RUMgLyogZ2VuZXJhdGVf
Y3BwX2FsdGVybmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8s
CiAJCQkJQTVFRjlCMTQxQTFENDNGNjAwNzAyRTkwIC8qIGdlbmVyYXRlX2NwcF9iYWNrZW5kX2Rp
c3BhdGNoZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFRjlCMTUxQTFENDNGQTAw
NzAyRTkwIC8qIGdlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24u
cHkgaW4gSGVhZGVycyAqLywKQEAgLTY0MzUsNiArNjQ5Myw3IEBACiAJCQkJMTQyRTMxMzgxMzRG
RjBBNjAwQUZBREI1IC8qIEhhbmRsZVN0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc4Mjk3
QjEzNzlFOEE4MDBBN0MyQTMgLyogSGFuZGxlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0
QkE3QTk4MTNBQURGRjgwMDVCN0MyQyAvKiBIZWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjMy
QkQxMTFCQjM0RjE5MDA5M0E1N0YgLyogSGVhcEhlbHBlclBvb2wuaCBpbiBIZWFkZXJzICovLAog
CQkJCUMyREE3NzgzMThFMjU5OTkwMDY2RkNCNiAvKiBIZWFwSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkFEODkzMkIxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkE2RjQ2MjYxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVy
YXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtNjU3OSw3ICs2NjM4LDYgQEAKIAkJCQk4NkUzQzYx
NDE2N0JBQkQ3MDA2RDc2MEEgLyogSlNFeHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QjRB
Q0FGMTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYyQjY2RUYxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRmxvYXQzMkFycmF5LmggaW4gSGVhZGVy
cyAqLywKLQkJCQk1MzkxN0U3QjFCNzkwNkZBMDAwRUJEMzMgLyogSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkYwMTdC
NkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
OEM0MUYwRTE2RjVDRDAwQjM0NDYwIC8qIEpTRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3MjAyOEJBMTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCkBAIC02NTg4LDYgKzY2NDYsNyBAQAogCQkJCTBGMkI2NkYzMTdCNkI1QUIwMEE3QUUz
RiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYyQjY2RjQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjUxN0I2QjVBQjAwQTdB
RTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1MzkxN0U3QjFCNzkwNkZBMDAwRUJEMzMgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGVGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkY2MTdCNkI1QUIw
MEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTc5N0UwN0FBMUI4RkNGQjkwMDg0MDBCQSAvKiBKU0dsb2JhbExleGlj
YWxFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjEwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTR2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKQEAgLTY2NjEsNiArNjcyMCw3
IEBACiAJCQkJMEYyQjY2RkIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheUNvbnN0cnVj
dG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RkQxN0I2QjVBQjAwQTdBRTNGIC8qIEpT
VHlwZWRBcnJheVByb3RvdHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkZGMTdCNkI1
QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlzLmggaW4gSGVhZGVycyAqLywKKwkJCQlERUE3RTI0
NTFCQkM2NzdGMDBENzg0NDAgLyogSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNjUwN0QyOUUwRTg3MUU1RTAwRDdEODk2IC8qIEpTVHlwZUluZm8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMkI2NzAyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1VpbnQxNkFycmF5
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjcwMzE3QjZCNUFCMDBBN0FFM0YgLyogSlNVaW50
MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC02Njg0LDYgKzY3NDQsNyBAQAogCQkJCTk2OUEw
NzJBMEVEMUNFNjkwMEYxRjY4MSAvKiBMYWJlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTYwMDk3
QTYwRUJBQkI1ODAwN0E3Mjk3IC8qIExhYmVsU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
QjU0Njc3MTRGNTlCNUMwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJOTkxRDVFREQxQkNDMzVCMzAwRTRDMjVEIC8qIGxhenl3cml0ZXIucHkg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1MjBFMTZGNUNEMDBCMzQ0NjAgLyogTGVnYWN5UHJv
ZmlsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDMxMEUxNkY1Q0QwMEIzNDQ2MCAvKiBM
ZXhlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM1MkUwRTE2RkNFMTAwQjM0NDYwIC8qIExl
eGVyLmx1dC5oIGluIEhlYWRlcnMgKi8sCkBAIC02OTM5LDggKzcwMDAsOCBAQAogCQkJCUE3QjYw
MTgyMTYzOUZEMkEwMDM3MkJBMyAvKiBVbmxpbmtlZENvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTQxNDJFNTExQjc5NkVDRTAwRjRCRjRCIC8qIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJFODkyQzE2RDAyOEFEMDA5RTRGRDIgLyogVW51
c2VkUG9pbnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTkxRDVFREYxQkNDNjMwQzAwRTRDMjVE
IC8qIFVwZGF0ZUNvbnRlbnRzLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NjNCMzgxM0ZDNkZF
OTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEYxQzNEREEx
QkJDRTA5RTAwRTUyM0U0IC8qIENlbGxTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0MjZB
NDgxNDYwQ0JCMzAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTc5RUUwQzAwMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjZDNzM1MTFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZp
cmVEZXRhaWwuaCBpbiBIZWFkZXJzICovLApAQCAtNjk1Miw2ICs3MDEzLDcgQEAKIAkJCQk3QjAy
NDc1NTFCODY4MkREMDA1NDI0NDAgLyogV0FTTUNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJN0JDNTQ3RDMxQjY5NTlBMTAwOTU5QjU4IC8qIFdBU01Gb3JtYXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdCMkUwMTBFMUI5N0FBNjkwMEVGNUQ1QyAvKiBXQVNNRnVuY3Rpb25Db21waWxlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0I4MzI5QkYxQkIyMUZFMzAwNjQ5QTZFIC8qIFdBU01GdW5j
dGlvbkxMVk1JUkdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0IwMjQ3NTcxQjg2ODJF
NDAwNTQyNDQwIC8qIFdBU01GdW5jdGlvblBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0Iw
MjQ3NTkxQjg2OEVCNzAwNTQyNDQwIC8qIFdBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdCMzlGNzZFMUI2MkRFMzIwMDM2MEZCNCAvKiBXQVNNTW9kdWxlUGFy
c2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTc3NjMsNiArNzgyNSw3IEBACiAJCQkJMTQyRTMxMzUx
MzRGRjBBNjAwQUZBREI1IC8qIEhhbmRsZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDJF
MzEzNzEzNEZGMEE2MDBBRkFEQjUgLyogSGFuZGxlU3RhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMTRCQTdBOTcxM0FBREZGODAwNUI3QzJDIC8qIEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMEYzMkJEMTAxQkIzNEYxOTAwOTNBNTdGIC8qIEhlYXBIZWxwZXJQb29sLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUMyNEQzMUUyMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkU1MjZCRDE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRp
bWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFN0JBNjBGMUExQTdDRUMwMEYxRjdCNCAvKiBI
ZWFwVmVyaWZpZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03OTE5LDYgKzc5ODIsNyBAQAogCQkJ
CTBGMkI2NkZBMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQjY2RkMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRB
cnJheVByb3RvdHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQjY2RkUxN0I2QjVBQjAw
QTdBRTNGIC8qIEpTVHlwZWRBcnJheXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREVBN0UyNDQx
QkJDNjc3MjAwRDc4NDQwIC8qIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODZFM0M2MUExNjdCQUJFRTAwNkQ3NjBBIC8qIEpTVmFsdWUubW0gaW4gU291
cmNlcyAqLywKIAkJCQkxNEJENUEzMjBBM0U5MUY2MDBCQUY1OUMgLyogSlNWYWx1ZVJlZi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NkUzQzYxQzE2N0JBQkVFMDA2RDc2MEEgLyogSlNWaXJ0dWFs
TWFjaGluZS5tbSBpbiBTb3VyY2VzICovLApAQCAtNzk5Miw3ICs4MDU2LDYgQEAKIAkJCQkwRjk4
MjA2MDE2QkZFMzgxMDAyNDBEMDIgLyogUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTk1NzQyRjY1MEREMTFGNUEwMDA5MTdGQiAvKiBQcm9maWxlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk1Q0Q0NTc2MEUxQzRGREQwMDg1MzU4RSAvKiBQcm9maWxlR2VuZXJhdG9y
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCURFQTdFMjQ0MUJCQzY3NzIwMEQ3ODQ0MCAvKiBKU1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk1QUI4MzU2MERB
NDNDMzAwMEJDODNGMyAvKiBQcm9maWxlTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkY3
MjlBRDE2NkFEMzVDMDAwRjVCQTMgLyogUHJvZmlsZXJCeXRlY29kZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkY3MjlBRTE2NkFEMzVDMDAwRjVCQTMgLyogUHJvZmlsZXJCeXRlY29kZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC04MTAwLDcgKzgxNjMsNiBAQAogCQkJCTBGRjQyNzQwMTU4RUJF
OEIwMDRDQjlGRiAvKiB1ZGlzODZfZGVjb2RlLmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0
MzE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2X2lucHV0LmMgaW4gU291cmNlcyAqLywKIAkJCQkw
RkY0Mjc0RDE1OEVCRkU2MDA0Q0I5RkYgLyogdWRpczg2X2l0YWJfaG9sZGVyLmMgaW4gU291cmNl
cyAqLywKLQkJCQkwRjMyQkQxMDFCQjM0RjE5MDA5M0E1N0YgLyogSGVhcEhlbHBlclBvb2wuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NDUxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl9z
eW4tYXR0LmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0NjE1OEVCRTkxMDA0Q0I5RkYgLyog
dWRpczg2X3N5bi1pbnRlbC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NDcxNThFQkU5MTAw
NENCOUZGIC8qIHVkaXM4Nl9zeW4uYyBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvVXBkYXRlQ29udGVudHMucHkgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9VcGRhdGVDb250ZW50cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzZkNDZmYjRj
NDIzMDJiODVmZjEwYzg1MWViMzRjMWUyNzg5NGMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvVXBkYXRlQ29udGVudHMucHkKQEAgLTAsMCArMSw0OCBA
QAorIyEvdXNyL2Jpbi9weXRob24KKworIyBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorIyAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
IyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorIyBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHN5cworaW1wb3J0
IG9zCisKK2Fzc2VydChsZW4oc3lzLmFyZ3YpID09IDMpCisKK2NvbXAgPSBzeXMuYXJndlsxXQor
ZmlsZW5hbWUgPSBzeXMuYXJndlsyXQorCit0ID0gRmFsc2UKKworaWYgb3MucGF0aC5pc2ZpbGUo
ZmlsZW5hbWUpOgorICAgIGYgPSBvcGVuKGZpbGVuYW1lLCAncicpCisgICAgY29tcGFyYXRvciA9
IGYucmVhZCgpCisgICAgZi5jbG9zZSgpCisgICAgdCA9IFRydWUKKworaWYgKG5vdCB0IG9yIGNv
bXAgIT0gY29tcGFyYXRvcik6CisgICAgZiA9IG9wZW4oZmlsZW5hbWUsICd3JykKKyAgICBmLndy
aXRlKGNvbXApCisgICAgZi5jbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy9idWlsdGlucy9fX2luaXRfXy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL2J1aWx0aW5zL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkZmNiYTk4MWQ4ZjhkYTA3
ODEzNThjZmU2NGZhMWM3ODA3NGExNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9fX2luaXRfXy5weQpAQCAtMCwwICsxLDMgQEAKKyMg
UmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZSBm
aWxlcworCitmcm9tIGJ1aWx0aW5zIGltcG9ydCAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGlucy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkZmVkNzY2YWYx
NTBiZGFlNGQxYjJjZTc1OTFmODNmMDU5ZjQxNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGlucy5weQpAQCAtMCwwICsxLDEy
IEBACisjIFRoaXMgZmlsZSBpcyB1c2VkIHRvIHNpbXVsYXRlIHRoZSBidWlsdGlucy8gZGlyZWN0
b3J5IHdoZW4gZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKyMgaXMgcnVuIGZyb20gSmF2YVNjcmlw
dENvcmUgZnJhbWV3b3JrJ3MgcHJpdmF0ZSBoZWFkZXJzIGRpcmVjdG9yeSwgd2hpY2ggaXMgZmxh
dHRlbmVkLgorCitmcm9tIGJ1aWx0aW5zX21vZGVsIGltcG9ydCAqCitmcm9tIGJ1aWx0aW5zX3Rl
bXBsYXRlcyBpbXBvcnQgKgorCitmcm9tIGJ1aWx0aW5zX2dlbmVyYXRvciBpbXBvcnQgKgorZnJv
bSBnZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9oZWFkZXIgaW1wb3J0ICoKK2Zyb20gZ2VuZXJh
dGVfYnVpbHRpbnNfY29tYmluZWRfaW1wbGVtZW50YXRpb24gaW1wb3J0ICoKK2Zyb20gZ2VuZXJh
dGVfYnVpbHRpbnNfc2VwYXJhdGVfaGVhZGVyIGltcG9ydCAqCitmcm9tIGdlbmVyYXRlX2J1aWx0
aW5zX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uIGltcG9ydCAqCitmcm9tIGdlbmVyYXRlX2J1aWx0
aW5zX3NlcGFyYXRlX3dyYXBwZXIgaW1wb3J0ICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5weSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43YzIxZjg2YjZkNGE5NGFhM2JjZDczNWVjNGZkODE5Y2JlMThmMWJiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRp
bnNfZ2VuZXJhdG9yLnB5CkBAIC0wLDAgKzEsMTI4IEBACisjIS91c3IvYmluL2VudiBweXRob24K
KyMKKyMgQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHJlCitmcm9tIHN0cmlu
ZyBpbXBvcnQgVGVtcGxhdGUKKworZnJvbSBidWlsdGluc19tb2RlbCBpbXBvcnQgQnVpbHRpbkZ1
bmN0aW9uCitmcm9tIGJ1aWx0aW5zX3RlbXBsYXRlcyBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3JU
ZW1wbGF0ZXMgYXMgVGVtcGxhdGVzCisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwn
KQorCisjIFRoZXNlIG1hdGNoIFdLX2xjZmlyc3QgYW5kIFdLX3VjZmlyc3QgZGVmaW5lZCBpbiBD
b2RlR2VuZXJhdG9yLnBtLgorZGVmIFdLX2xjZmlyc3Qoc3RyKToKKyAgICBzdHIgPSBzdHJbOjFd
Lmxvd2VyKCkgKyBzdHJbMTpdCisgICAgc3RyID0gc3RyLnJlcGxhY2UoJ2hUTUwnLCAnaHRtbCcp
CisgICAgc3RyID0gc3RyLnJlcGxhY2UoJ3VSTCcsICd1cmwnKQorICAgIHN0ciA9IHN0ci5yZXBs
YWNlKCdqUycsICdqcycpCisgICAgc3RyID0gc3RyLnJlcGxhY2UoJ3hNTCcsICd4bWwnKQorICAg
IHN0ciA9IHN0ci5yZXBsYWNlKCd4U0xUJywgJ3hzbHQnKQorICAgIHN0ciA9IHN0ci5yZXBsYWNl
KCdjU1MnLCAnY3NzJykKKyAgICByZXR1cm4gc3RyCisKK2RlZiBXS191Y2ZpcnN0KHN0cik6Cisg
ICAgc3RyID0gc3RyWzoxXS51cHBlcigpICsgc3RyWzE6XQorICAgIHN0ciA9IHN0ci5yZXBsYWNl
KCdYbWwnLCAnWE1MJykKKyAgICBzdHIgPSBzdHIucmVwbGFjZSgnU3ZnJywgJ1NWRycpCisgICAg
cmV0dXJuIHN0cgorCitjbGFzcyBCdWlsdGluc0dlbmVyYXRvcjoKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgbW9kZWwpOgorICAgICAgICBzZWxmLl9tb2RlbCA9IG1vZGVsCisKKyAgICBkZWYgbW9k
ZWwoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9tb2RlbAorCisgICAgZGVmIGdlbmVyYXRl
X2xpY2Vuc2Uoc2VsZik6CisgICAgICAgIHJhd19saWNlbnNlID0gVGVtcGxhdGUoVGVtcGxhdGVz
LkxpY2Vuc2VUZXh0KS5zdWJzdGl0dXRlKE5vbmUpCisgICAgICAgIGNvcHlyaWdodHMgPSBzZWxm
Ll9tb2RlbC5jb3B5cmlnaHRzKCkKKyAgICAgICAgY29weXJpZ2h0cy5zb3J0KCkKKworICAgICAg
ICBsaWNlbnNlX2Jsb2NrID0gW10KKyAgICAgICAgbGljZW5zZV9ibG9jay5hcHBlbmQoIi8qIikK
KyAgICAgICAgZm9yIGNvcHlyaWdodCBpbiBjb3B5cmlnaHRzOgorICAgICAgICAgICAgbGljZW5z
ZV9ibG9jay5hcHBlbmQoIiAqIENvcHlyaWdodCAoYykgJXMiICUgY29weXJpZ2h0KQorICAgICAg
ICBpZiBsZW4oY29weXJpZ2h0cykgPiAwOgorICAgICAgICAgICAgbGljZW5zZV9ibG9jay5hcHBl
bmQoIiAqICIpCisKKyAgICAgICAgZm9yIGxpbmUgaW4gcmF3X2xpY2Vuc2Uuc3BsaXQoJ1xuJyk6
CisgICAgICAgICAgICBsaWNlbnNlX2Jsb2NrLmFwcGVuZCgiICogIiArIGxpbmUpCisKKyAgICAg
ICAgbGljZW5zZV9ibG9jay5hcHBlbmQoIiAqLyIpCisKKyAgICAgICAgcmV0dXJuICdcbicuam9p
bihsaWNlbnNlX2Jsb2NrKQorCisgICAgZGVmIGdlbmVyYXRlX2luY2x1ZGVzX2Zyb21fZW50cmll
cyhzZWxmLCBlbnRyaWVzKToKKyAgICAgICAgaW5jbHVkZXMgPSBzZXQoKQorICAgICAgICBmb3Ig
ZW50cnkgaW4gZW50cmllczoKKyAgICAgICAgICAgIChhbGxvd2VkX2ZyYW1ld29ya19uYW1lcywg
ZGF0YSkgPSBlbnRyeQorICAgICAgICAgICAgKGZyYW1ld29ya19uYW1lLCBoZWFkZXJfcGF0aCkg
PSBkYXRhCisKKyAgICAgICAgICAgIGlmIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsubmFtZSBub3Qg
aW4gYWxsb3dlZF9mcmFtZXdvcmtfbmFtZXM6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAg
ICAgICAgICAgIGlmIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsubmFtZSAhPSBmcmFtZXdvcmtfbmFt
ZToKKyAgICAgICAgICAgICAgICBpbmNsdWRlcy5hZGQoIiNpbmNsdWRlIDwlcz4iICUgaGVhZGVy
X3BhdGgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGluY2x1ZGVzLmFkZCgi
I2luY2x1ZGUgXCIlc1wiIiAlIG9zLnBhdGguYmFzZW5hbWUoaGVhZGVyX3BhdGgpKQorCisgICAg
ICAgIHNvcnRlZF9pbmNsdWRlcyA9IHNvcnRlZChsaXN0KGluY2x1ZGVzKSkKKyAgICAgICAgIyBB
bHdheXMgaW5jbHVkZSBjb25maWcuaCBhbmQgdGhlIGNvdW50ZXJwYXJ0IGhlYWRlciBiZWZvcmUg
b3RoZXIgaGVhZGVycy4KKyAgICAgICAgbmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChzZWxm
Lm91dHB1dF9maWxlbmFtZSgpKQorICAgICAgICBpZiBleHQgIT0gJy5oJzoKKyAgICAgICAgICAg
IHNvcnRlZF9pbmNsdWRlc1s6MF0gPSBbCisgICAgICAgICAgICAgICAgIiNpbmNsdWRlIFwiY29u
ZmlnLmhcIiIsCisgICAgICAgICAgICAgICAgIiNpbmNsdWRlIFwiJXMuaFwiIiAlIG5hbWUsCisg
ICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICBdCisKKyAgICAgICAgcmV0dXJuIHNvcnRl
ZF9pbmNsdWRlcworCisgICAgIyBUaGVzZSBtZXRob2RzIGFyZSBvdmVycmlkZGVuIGJ5IHN1YmNs
YXNzZXMuCisgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKKyAgICAgICAgcGFzcworCisg
ICAgZGVmIG91dHB1dF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgIyBIZWxw
ZXIgbWV0aG9kcy4KKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgbWFuZ2xlZE5hbWVGb3JG
dW5jdGlvbihmdW5jdGlvbik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGZ1bmN0aW9uLCBC
dWlsdGluRnVuY3Rpb24pOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJJbnZhbGlkIGFy
Z3VtZW50IHBhc3NlZCB0byBtYW5nbGVkTmFtZUZvckZ1bmN0aW9uKCkiKQorCisgICAgICAgIG9i
amVjdF9uYW1lID0gZnVuY3Rpb24ub2JqZWN0Lm9iamVjdF9uYW1lCisgICAgICAgIG1hbmdsZWRf
bmFtZSA9ICIlcyVzIiAlIChXS19sY2ZpcnN0KG9iamVjdF9uYW1lKSwgV0tfdWNmaXJzdChmdW5j
dGlvbi5mdW5jdGlvbl9uYW1lKSkKKworICAgICAgICBkZWYgdG9DYW1lbChtYXRjaCk6CisgICAg
ICAgICAgICBzdHIgPSBtYXRjaC5ncm91cCgwKQorICAgICAgICAgICAgcmV0dXJuIHN0clsxXS51
cHBlcigpCisgICAgICAgIG1hbmdsZWRfbmFtZSA9IHJlLnN1YihyJ1wuW2Etel0nLCB0b0NhbWVs
LCBtYW5nbGVkX25hbWUsIGZsYWdzPXJlLklHTk9SRUNBU0UpCisgICAgICAgIGlmIGZ1bmN0aW9u
LmlzX2NvbnN0cnVjdG9yOgorICAgICAgICAgICAgbWFuZ2xlZF9uYW1lID0gbWFuZ2xlZF9uYW1l
ICsgIkNvbnN0cnVjdG9yIgorICAgICAgICByZXR1cm4gbWFuZ2xlZF9uYW1lCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19tb2RlbC5w
eSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVs
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmI1ZDRiZGU2NGQ2YmE2Y2QxZDA3MzUzZDRmMmJkNWVhMTQ1MGFhM2YK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlu
cy9idWlsdGluc19tb2RlbC5weQpAQCAtMCwwICsxLDIzMyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgbG9n
Z2luZworaW1wb3J0IHJlCitpbXBvcnQgb3MKKworbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2ds
b2JhbCcpCisKK19GUkFNRVdPUktfQ09ORklHX01BUCA9IHsKKyAgICAiSmF2YVNjcmlwdENvcmUi
OiB7CisgICAgICAgICJtYWNyb19wcmVmaXgiOiAiSlNDIiwKKyAgICAgICAgIm5hbWVzcGFjZSI6
ICJKU0MiLAorICAgIH0sCisgICAgIldlYkNvcmUiOiB7CisgICAgICAgICJtYWNyb19wcmVmaXgi
OiAiV0VCQ09SRSIsCisgICAgICAgICJuYW1lc3BhY2UiOiAiV2ViQ29yZSIsCisgICAgfSwKK30K
KworZnVuY3Rpb25IZWFkUmVnRXhwID0gcmUuY29tcGlsZShyIig/OmZ1bmN0aW9ufGNvbnN0cnVj
dG9yKVxzK1x3K1xzKlwoLio/XCkiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25OYW1l
UmVnRXhwID0gcmUuY29tcGlsZShyIig/OmZ1bmN0aW9ufGNvbnN0cnVjdG9yKVxzKyhcdyspXHMq
XCgiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25Jc0NvbnN0cnVjdG9yUmVnRXhwID0g
cmUuY29tcGlsZShyIl5jb25zdHJ1Y3RvciIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitmdW5jdGlv
blBhcmFtZXRlckZpbmRlciA9IHJlLmNvbXBpbGUociJeKD86ZnVuY3Rpb258Y29uc3RydWN0b3Ip
XHMrKD86XHcrKVxzKlwoKCg/OlxzKlx3Kyk/XHMqKD86XHMqLFxzKlx3KykqKT9ccypcKSIsIHJl
Lk1VTFRJTElORSB8IHJlLlMpCisKK211bHRpbGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxl
KHIiXC9cKi4qP1wqXC8iLCByZS5NVUxUSUxJTkUgfCByZS5TKQorc2luZ2xlTGluZUNvbW1lbnRS
ZWdFeHAgPSByZS5jb21waWxlKHIiXC9cLy4qP1xuIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKKwor
CitjbGFzcyBQYXJzZUV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgIHBhc3MKKworCitjbGFzcyBG
cmFtZXdvcms6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgorICAgICAgICBzZWxmLl9z
ZXR0aW5ncyA9IF9GUkFNRVdPUktfQ09ORklHX01BUFtuYW1lXQorICAgICAgICBzZWxmLm5hbWUg
PSBuYW1lCisKKyAgICBkZWYgc2V0dGluZyhzZWxmLCBrZXksIGRlZmF1bHQ9JycpOgorICAgICAg
ICByZXR1cm4gc2VsZi5fc2V0dGluZ3MuZ2V0KGtleSwgZGVmYXVsdCkKKworICAgIEBzdGF0aWNt
ZXRob2QKKyAgICBkZWYgZnJvbVN0cmluZyhmcmFtZXdvcmtTdHJpbmcpOgorICAgICAgICBpZiBm
cmFtZXdvcmtTdHJpbmcgPT0gIkphdmFTY3JpcHRDb3JlIjoKKyAgICAgICAgICAgIHJldHVybiBG
cmFtZXdvcmtzLkphdmFTY3JpcHRDb3JlCisKKyAgICAgICAgaWYgZnJhbWV3b3JrU3RyaW5nID09
ICJXZWJDb3JlIjoKKyAgICAgICAgICAgIHJldHVybiBGcmFtZXdvcmtzLldlYkNvcmUKKworICAg
ICAgICByYWlzZSBQYXJzZUV4Y2VwdGlvbigiVW5rbm93biBmcmFtZXdvcms6ICVzIiAlIGZyYW1l
d29ya1N0cmluZykKKworCitjbGFzcyBGcmFtZXdvcmtzOgorICAgIEphdmFTY3JpcHRDb3JlID0g
RnJhbWV3b3JrKCJKYXZhU2NyaXB0Q29yZSIpCisgICAgV2ViQ29yZSA9IEZyYW1ld29yaygiV2Vi
Q29yZSIpCisKKworY2xhc3MgQnVpbHRpbk9iamVjdDoKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
b2JqZWN0X25hbWUsIGZ1bmN0aW9ucyk6CisgICAgICAgIHNlbGYub2JqZWN0X25hbWUgPSBvYmpl
Y3RfbmFtZQorICAgICAgICBzZWxmLmZ1bmN0aW9ucyA9IGZ1bmN0aW9ucworICAgICAgICBzZWxm
LmNvbGxlY3Rpb24gPSBOb25lICAjIFNldCBieSB0aGUgb3duaW5nIEJ1aWx0aW5zQ29sbGVjdGlv
bgorCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBzZWxmLmZ1bmN0aW9uczoKKyAgICAgICAgICAg
IGZ1bmN0aW9uLm9iamVjdCA9IHNlbGYKKworCitjbGFzcyBCdWlsdGluRnVuY3Rpb246CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmN0aW9uX25hbWUsIGZ1bmN0aW9uX3NvdXJjZSwgaXNfY29u
c3RydWN0b3IsIHBhcmFtZXRlcnMpOgorICAgICAgICBzZWxmLmZ1bmN0aW9uX25hbWUgPSBmdW5j
dGlvbl9uYW1lCisgICAgICAgIHNlbGYuZnVuY3Rpb25fc291cmNlID0gZnVuY3Rpb25fc291cmNl
CisgICAgICAgIHNlbGYuaXNfY29uc3RydWN0b3IgPSBpc19jb25zdHJ1Y3RvcgorICAgICAgICBz
ZWxmLnBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzCisgICAgICAgIHNlbGYub2JqZWN0ID0gTm9uZSAg
IyBTZXQgYnkgdGhlIG93bmluZyBCdWlsdGluT2JqZWN0CisKKyAgICBAc3RhdGljbWV0aG9kCisg
ICAgZGVmIGZyb21TdHJpbmcoZnVuY3Rpb25fc3RyaW5nKToKKyAgICAgICAgZnVuY3Rpb25fc291
cmNlID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5zdWIoIiIsIGZ1bmN0aW9uX3N0cmluZykKKyAg
ICAgICAgZnVuY3Rpb25fbmFtZSA9IGZ1bmN0aW9uTmFtZVJlZ0V4cC5maW5kYWxsKGZ1bmN0aW9u
X3NvdXJjZSlbMF0KKyAgICAgICAgaXNfY29uc3RydWN0b3IgPSBmdW5jdGlvbklzQ29uc3RydWN0
b3JSZWdFeHAubWF0Y2goZnVuY3Rpb25fc291cmNlKSAhPSBOb25lCisgICAgICAgIHBhcmFtZXRl
cnMgPSBbcy5zdHJpcCgpIGZvciBzIGluIGZ1bmN0aW9uUGFyYW1ldGVyRmluZGVyLmZpbmRhbGwo
ZnVuY3Rpb25fc291cmNlKVswXS5zcGxpdCgnLCcpXQorICAgICAgICBpZiBsZW4ocGFyYW1ldGVy
c1swXSkgPT0gMDoKKyAgICAgICAgICAgIHBhcmFtZXRlcnMgPSBbXQorCisgICAgICAgIHJldHVy
biBCdWlsdGluRnVuY3Rpb24oZnVuY3Rpb25fbmFtZSwgZnVuY3Rpb25fc291cmNlLCBpc19jb25z
dHJ1Y3RvciwgcGFyYW1ldGVycykKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBp
bnRlcmZhY2UgPSAiJXMoJXMpIiAlIChzZWxmLmZ1bmN0aW9uX25hbWUsICcsICcuam9pbihzZWxm
LnBhcmFtZXRlcnMpKQorICAgICAgICBpZiBzZWxmLmlzX2NvbnN0cnVjdG9yOgorICAgICAgICAg
ICAgaW50ZXJmYWNlID0gaW50ZXJmYWNlICsgIiBbQ29uc3RydWN0b3JdIgorCisgICAgICAgIHJl
dHVybiBpbnRlcmZhY2UKKworCitjbGFzcyBCdWlsdGluc0NvbGxlY3Rpb246CisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGZyYW1ld29ya19uYW1lKToKKyAgICAgICAgc2VsZi5fY29weXJpZ2h0X2xp
bmVzID0gc2V0KCkKKyAgICAgICAgc2VsZi5vYmplY3RzID0gW10KKyAgICAgICAgc2VsZi5mcmFt
ZXdvcmsgPSBGcmFtZXdvcmsuZnJvbVN0cmluZyhmcmFtZXdvcmtfbmFtZSkKKyAgICAgICAgbG9n
LmRlYnVnKCJDcmVhdGVkIG5ldyBCdWlsdGlucyBjb2xsZWN0aW9uLiIpCisKKyAgICBkZWYgcGFy
c2VfYnVpbHRpbnNfZmlsZShzZWxmLCBmaWxlbmFtZSwgdGV4dCk6CisgICAgICAgIGxvZy5kZWJ1
ZygiUGFyc2luZyBidWlsdGlucyBmaWxlOiAlcyIgJSBmaWxlbmFtZSkKKworICAgICAgICBwYXJz
ZWRfY29weXJpZ2h0cyA9IHNldChzZWxmLl9wYXJzZV9jb3B5cmlnaHRfbGluZXModGV4dCkpCisg
ICAgICAgIHNlbGYuX2NvcHlyaWdodF9saW5lcyA9IHNlbGYuX2NvcHlyaWdodF9saW5lcy51bmlv
bihwYXJzZWRfY29weXJpZ2h0cykKKworICAgICAgICBsb2cuZGVidWcoIkZvdW5kIGNvcHlyaWdo
dCBsaW5lczoiKQorICAgICAgICBmb3IgbGluZSBpbiBzZWxmLl9jb3B5cmlnaHRfbGluZXM6Cisg
ICAgICAgICAgICBsb2cuZGVidWcobGluZSkKKyAgICAgICAgbG9nLmRlYnVnKCIiKQorCisgICAg
ICAgIG9iamVjdF9uYW1lLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUo
ZmlsZW5hbWUpKQorICAgICAgICBsb2cuZGVidWcoIlBhcnNpbmcgb2JqZWN0OiAlcyIgJSBvYmpl
Y3RfbmFtZSkKKworICAgICAgICBwYXJzZWRfZnVuY3Rpb25zID0gc2VsZi5fcGFyc2VfZnVuY3Rp
b25zKHRleHQpCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBwYXJzZWRfZnVuY3Rpb25zOgorICAg
ICAgICAgICAgZnVuY3Rpb24ub2JqZWN0ID0gb2JqZWN0X25hbWUKKworICAgICAgICBsb2cuZGVi
dWcoIlBhcnNlZCBmdW5jdGlvbnM6IikKKyAgICAgICAgZm9yIGZ1bmMgaW4gcGFyc2VkX2Z1bmN0
aW9uczoKKyAgICAgICAgICAgIGxvZy5kZWJ1ZyhmdW5jKQorICAgICAgICBsb2cuZGVidWcoIiIp
CisKKyAgICAgICAgbmV3X29iamVjdCA9IEJ1aWx0aW5PYmplY3Qob2JqZWN0X25hbWUsIHBhcnNl
ZF9mdW5jdGlvbnMpCisgICAgICAgIG5ld19vYmplY3QuY29sbGVjdGlvbiA9IHNlbGYKKyAgICAg
ICAgc2VsZi5vYmplY3RzLmFwcGVuZChuZXdfb2JqZWN0KQorCisgICAgZGVmIGNvcHlyaWdodHMo
c2VsZik6CisgICAgICAgIG93bmVyX3RvX3llYXJzID0gZGljdCgpCisgICAgICAgIGNvcHlyaWdo
dFllYXJSZWdFeHAgPSByZS5jb21waWxlKHIiKFxkezR9KVssIF17MCwyfSIpCisgICAgICAgIG93
bmVyU3RhcnRSZWdFeHAgPSByZS5jb21waWxlKHIiW15cZCwgXSIpCisKKyAgICAgICAgIyBSZXR1
cm5zIGRlZHVwbGljYXRlZCBjb3B5cmlnaHRzIGtleWVkIG9uIHRoZSBvd25lci4KKyAgICAgICAg
Zm9yIGxpbmUgaW4gc2VsZi5fY29weXJpZ2h0X2xpbmVzOgorICAgICAgICAgICAgeWVhcnMgPSBz
ZXQoY29weXJpZ2h0WWVhclJlZ0V4cC5maW5kYWxsKGxpbmUpKQorICAgICAgICAgICAgb3duZXJJ
bmRleCA9IG93bmVyU3RhcnRSZWdFeHAuc2VhcmNoKGxpbmUpLnN0YXJ0KCkKKyAgICAgICAgICAg
IG93bmVyID0gbGluZVtvd25lckluZGV4Ol0KKyAgICAgICAgICAgIGxvZy5kZWJ1ZygiRm91bmQg
eWVhcnM6ICVzIGFuZCBvd25lcjogJXMiICUgKHllYXJzLCBvd25lcikpCisgICAgICAgICAgICBp
ZiBvd25lciBub3QgaW4gb3duZXJfdG9feWVhcnM6CisgICAgICAgICAgICAgICAgb3duZXJfdG9f
eWVhcnNbb3duZXJdID0gc2V0KCkKKworICAgICAgICAgICAgb3duZXJfdG9feWVhcnNbb3duZXJd
ID0gb3duZXJfdG9feWVhcnNbb3duZXJdLnVuaW9uKHllYXJzKQorCisgICAgICAgIHJlc3VsdCA9
IFtdCisKKyAgICAgICAgZm9yIG93bmVyLCB5ZWFycyBpbiBvd25lcl90b195ZWFycy5pdGVtcygp
OgorICAgICAgICAgICAgc29ydGVkX3llYXJzID0gbGlzdCh5ZWFycykKKyAgICAgICAgICAgIHNv
cnRlZF95ZWFycy5zb3J0KCkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiVzICVzIiAlICgn
LCAnLmpvaW4oc29ydGVkX3llYXJzKSwgb3duZXIpKQorCisgICAgICAgIHJldHVybiByZXN1bHQK
KworICAgIGRlZiBhbGxfZnVuY3Rpb25zKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBbXQorICAg
ICAgICBmb3Igb2JqZWN0IGluIHNlbGYub2JqZWN0czoKKyAgICAgICAgICAgIHJlc3VsdC5leHRl
bmQob2JqZWN0LmZ1bmN0aW9ucykKKworICAgICAgICByZXN1bHQuc29ydCgpCisgICAgICAgIHJl
dHVybiByZXN1bHQKKworICAgICMgUHJpdmF0ZSBtZXRob2RzLgorCisgICAgZGVmIF9wYXJzZV9j
b3B5cmlnaHRfbGluZXMoc2VsZiwgdGV4dCk6CisgICAgICAgIGxpY2Vuc2VCbG9jayA9IG11bHRp
bGluZUNvbW1lbnRSZWdFeHAuZmluZGFsbCh0ZXh0KVswXQorICAgICAgICBsaWNlbnNlQmxvY2sg
PSBsaWNlbnNlQmxvY2tbOmxpY2Vuc2VCbG9jay5pbmRleCgiUmVkaXN0cmlidXRpb24iKV0KKwor
ICAgICAgICBjb3B5cmlnaHRMaW5lcyA9IFtdCisgICAgICAgIGZvciBsaW5lIGluIGxpY2Vuc2VC
bG9jay5zcGxpdCgiXG4iKToKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIi8qIiwg
IiIpCisgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIqLyIsICIiKQorICAgICAgICAg
ICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKiIsICIiKQorICAgICAgICAgICAgbGluZSA9IGxpbmUu
cmVwbGFjZSgiQ29weXJpZ2h0IiwgIiIpCisgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNl
KCJjb3B5cmlnaHQiLCAiIikKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIihDKSIs
ICIiKQorICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKGMpIiwgIiIpCisgICAgICAg
ICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisKKyAgICAgICAgICAgIGlmIGxlbihsaW5lKSA9PSAw
OgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGNvcHlyaWdodExpbmVz
LmFwcGVuZChsaW5lKQorCisgICAgICAgIHJldHVybiBjb3B5cmlnaHRMaW5lcworCisgICAgZGVm
IF9wYXJzZV9mdW5jdGlvbnMoc2VsZiwgdGV4dCk6CisgICAgICAgIHRleHQgPSBtdWx0aWxpbmVD
b21tZW50UmVnRXhwLnN1YigiLyoqLyIsIHNpbmdsZUxpbmVDb21tZW50UmVnRXhwLnN1YigiLy9c
biIsIHRleHQpKQorCisgICAgICAgIG1hdGNoZXMgPSBbZnVuYyBmb3IgZnVuYyBpbiBmdW5jdGlv
bkhlYWRSZWdFeHAuZmluZGl0ZXIodGV4dCldCisgICAgICAgIGZ1bmN0aW9uQm91bmRzID0gW10K
KyAgICAgICAgc3RhcnQgPSAwCisgICAgICAgIGVuZCA9IDAKKyAgICAgICAgZm9yIG1hdGNoIGlu
IG1hdGNoZXM6CisgICAgICAgICAgICBzdGFydCA9IG1hdGNoLnN0YXJ0KCkKKyAgICAgICAgICAg
IGlmIHN0YXJ0IDwgZW5kOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBl
bmQgPSBtYXRjaC5lbmQoKQorICAgICAgICAgICAgd2hpbGUgdGV4dFtlbmRdICE9ICd7JzoKKyAg
ICAgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAgICBkZXB0aCA9IDEKKyAgICAg
ICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgICAgIHdoaWxlIGRlcHRoID4gMDoKKyAgICAg
ICAgICAgICAgICBpZiB0ZXh0W2VuZF0gPT0gJ3snOgorICAgICAgICAgICAgICAgICAgICBkZXB0
aCA9IGRlcHRoICsgMQorICAgICAgICAgICAgICAgIGVsaWYgdGV4dFtlbmRdID09ICd9JzoKKyAg
ICAgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCAtIDEKKyAgICAgICAgICAgICAgICBlbmQg
PSBlbmQgKyAxCisgICAgICAgICAgICBmdW5jdGlvbkJvdW5kcy5hcHBlbmQoKHN0YXJ0LCBlbmQp
KQorCisgICAgICAgIGZ1bmN0aW9uU3RyaW5ncyA9IFt0ZXh0W3N0YXJ0OmVuZF0uc3RyaXAoKSBm
b3IgKHN0YXJ0LCBlbmQpIGluIGZ1bmN0aW9uQm91bmRzXQorICAgICAgICByZXR1cm4gbWFwKEJ1
aWx0aW5GdW5jdGlvbi5mcm9tU3RyaW5nLCBmdW5jdGlvblN0cmluZ3MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMu
cHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc190ZW1w
bGF0ZXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjVlZGY2NTZlYTJjZWE0ZDBkNGYxZjY5MjVkMzRhOGUxMGFm
M2Q4MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1
aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weQpAQCAtMCwwICsxLDIxOSBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisjIEJ1aWx0aW5zIGdlbmVyYXRvciB0ZW1wbGF0ZXMsIHdoaWNoIGNhbiBiZSBmaWxsZWQgd2l0
aCBzdHJpbmcuVGVtcGxhdGUuCisKKworY2xhc3MgQnVpbHRpbnNHZW5lcmF0b3JUZW1wbGF0ZXM6
CisKKyAgICBMaWNlbnNlVGV4dCA9ICgKKyAgICAiIiJSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKK21vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworYXJl
IG1ldDoKKzEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCitUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CitQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKK0JFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKK0NPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCitTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKK0lOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCitDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIiIiKQorCisgICAgRG9Ob3RFZGl0V2Fybmlu
ZyA9ICgKKyAgICAiIiIvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2Fs
bHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRo
ZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0
aW5zLnB5IiIiKQorCisgICAgSGVhZGVySW5jbHVkZUd1YXJkVG9wID0gKAorICAgICIiIiNpZm5k
ZWYgJHtoZWFkZXJHdWFyZH0KKyNkZWZpbmUgJHtoZWFkZXJHdWFyZH0iIiIpCisKKyAgICBIZWFk
ZXJJbmNsdWRlR3VhcmRCb3R0b20gPSAoCisgICAgIiIiI2VuZGlmIC8vICR7aGVhZGVyR3VhcmR9
CisiIiIpCisKKyAgICBOYW1lc3BhY2VUb3AgPSAoCisgICAgIiIibmFtZXNwYWNlICR7bmFtZXNw
YWNlfSB7IiIiKQorCisgICAgTmFtZXNwYWNlQm90dG9tID0gKAorICAgICIiIn0gLy8gbmFtZXNw
YWNlICR7bmFtZXNwYWNlfSIiIikKKworICAgIENvbWJpbmVkSGVhZGVyU3RhdGljTWFjcm9zID0g
KAorICAgICIiIiNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVu
Y3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAorICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
KiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKworJHttYWNyb1ByZWZpeH1fRk9SRUFD
SF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUNMQVJF
X0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgJHttYWNyb1ByZWZpeH1fQlVJTFRJTl9FWElT
VFMob2JqZWN0LCBmdW5jKSBkZWZpbmVkICR7bWFjcm9QcmVmaXh9X0JVSUxUSU5fICMjIG9iamVj
dCAjIyBfICMjIGZ1bmMiIiIpCisKKyAgICBTZXBhcmF0ZUhlYWRlclN0YXRpY01hY3JvcyA9ICgK
KyAgICAiIiIjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0
aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKKyAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSog
Y29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisKKyR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hf
JHtvYmplY3ROYW1lfV9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1
bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgJHttYWNyb1ByZWZpeH1f
QlVJTFRJTl8ke29iamVjdE5hbWV9X0VYSVNUUyhvYmplY3QsIGZ1bmMpIGRlZmluZWQgJHttYWNy
b1ByZWZpeH1fQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVuYyIiIikKKworICAgIENvbWJp
bmVkSlNDSW1wbGVtZW50YXRpb25TdGF0aWNNYWNyb3MgPSAoCisgICAgIiIiCisjZGVmaW5lIERF
RklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENv
dW50KSBcXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlND
OjpWTSYgdm0pIFxcCit7XFwKKyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNv
ZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5j
b2RlTmFtZSMjU291cmNlKCkpOyBcCit9Ciske21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxUSU5f
Q09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VO
RVJBVE9SCisiIiIpCisKKyAgICBTZXBhcmF0ZUpTQ0ltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9z
ID0gKAorICAgICIiIgorI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUs
IGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
KiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAore1xcCisgICAgcmV0dXJuIHZt
LmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2
bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsgXAorfQorJHttYWNy
b1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxU
SU5fR0VORVJBVE9SKQorI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgorIiIiKQorCisg
ICAgQ29tYmluZWRXZWJDb3JlSW1wbGVtZW50YXRpb25TdGF0aWNNYWNyb3MgPSAoCisgICAgICAg
ICIiIgorI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9u
TmFtZSwgYXJndW1lbnRDb3VudCkgXFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFt
ZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAore1xcCisgICAgSlNWTUNsaWVudERhdGEqIGNs
aWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBc
XAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1l
TEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRh
LT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMj
U291cmNlKCkpOyBcXAorfQorJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NPREUoREVG
SU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgor
IiIiKQorCisgICAgU2VwYXJhdGVXZWJDb3JlSW1wbGVtZW50YXRpb25TdGF0aWNNYWNyb3MgPSAo
CisgICAgICAgICIiIgorI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUs
IGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
KiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAore1xcCisgICAgSlNWTUNsaWVu
dERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVu
dERhdGEpOyBcXAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtv
YmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBj
bGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5j
b2RlTmFtZSMjU291cmNlKCkpOyBcXAorfQorJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVj
dE1hY3JvfV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERF
RklORV9CVUlMVElOX0dFTkVSQVRPUgorIiIiKQorCisgICAgU2VwYXJhdGVXcmFwcGVySGVhZGVy
Qm9pbGVycGxhdGUgPSAoCisgICAgIiIiY2xhc3MgJHtvYmplY3ROYW1lfUJ1aWx0aW5zV3JhcHBl
ciA6IHByaXZhdGUgSlNDOjpXZWFrSGFuZGxlT3duZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0
ICR7b2JqZWN0TmFtZX1CdWlsdGluc1dyYXBwZXIoSlNDOjpWTSogdm0pCisgICAgICAgIDogbV92
bSgqdm0pCisgICAgICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJ
TFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJWkVfQlVJTFRJTl9OQU1FUykKKyNkZWZpbmUgSU5J
VElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3Ro
KSAsIG1fIyNuYW1lIyNTb3VyY2UoSlNDOjptYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZy
b21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpKSkKKyAgICAgICAgJHttYWNyb1ByZWZpeH1fRk9S
RUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoSU5JVElBTElaRV9CVUlMVElOX1NPVVJD
RV9NRU1CRVJTKQorI3VuZGVmIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworICAg
IHsKKyAgICB9CisKKyNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVu
Y3Rpb25OYW1lLCBsZW5ndGgpIFxcCisgICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcXAorICAgIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgbmFt
ZSMjU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQorICAgICR7bWFj
cm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlM
VElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCisKKyAg
ICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fRlVOQ1RJT05f
TkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUikKKworICAgIHZvaWQgZXhw
b3J0TmFtZXMoKTsKKworcHJpdmF0ZToKKyAgICBKU0M6OlZNJiBtX3ZtOworCisgICAgJHttYWNy
b1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVD
TEFSRV9CVUlMVElOX05BTUVTKQorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVN
QkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXFwKKyAgICBKU0M6OlNvdXJjZUNvZGUg
bV8jI25hbWUjI1NvdXJjZTtcXAorICAgIEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKKyAgICAke21hY3JvUHJlZml4fV9GT1JF
QUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01F
TUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCisKK307CisKKyNk
ZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5n
dGgpIFxcCitpbmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogJHtvYmplY3RO
YW1lfUJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFxcCit7XFwKKyAgICBpZiAo
IW1fIyNuYW1lIyNFeGVjdXRhYmxlKVxcCisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0g
SlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6Y3JlYXRlQnVp
bHRpbkV4ZWN1dGFibGUobV92bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25OYW1lIyNQdWJs
aWNOYW1lKCksIHNfIyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNF
eGVjdXRhYmxlKTtcXAorICAgIHJldHVybiBtXyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtcXAor
fQorJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoREVG
SU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJM
RVMKKworaW5saW5lIHZvaWQgJHtvYmplY3ROYW1lfUJ1aWx0aW5zV3JhcHBlcjo6ZXhwb3J0TmFt
ZXMoKQoreworI2RlZmluZSBFWFBPUlRfRlVOQ1RJT05fTkFNRShuYW1lKSBtX3ZtLnByb3BlcnR5
TmFtZXMtPmFwcGVuZEV4dGVybmFsTmFtZShuYW1lIyNQdWJsaWNOYW1lKCksIG5hbWUjI1ByaXZh
dGVOYW1lKCkpOworICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJ
TFRJTl9GVU5DVElPTl9OQU1FKEVYUE9SVF9GVU5DVElPTl9OQU1FKQorI3VuZGVmIEVYUE9SVF9G
VU5DVElPTl9OQU1FCit9CisKK2NsYXNzICR7b2JqZWN0TmFtZX1CdWlsdGluRnVuY3Rpb25zIHsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCAke29iamVjdE5hbWV9QnVpbHRpbkZ1bmN0aW9ucyhKU0M6
OlZNJiB2bSkgOiBtX3ZtKHZtKSB7IH0KKworICAgIHZvaWQgaW5pdChKU0M6OkpTR2xvYmFsT2Jq
ZWN0Jik7CisgICAgdm9pZCB2aXNpdChKU0M6OlNsb3RWaXNpdG9yJik7CisKK3B1YmxpYzoKKyAg
ICBKU0M6OlZNJiBtX3ZtOworCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVS
UyhmdW5jdGlvbk5hbWUpIFxcCisgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU0Z1bmN0aW9u
PiBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbjsKKyAgICAke21hY3JvUHJlZml4fV9GT1JFQUNI
XyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fU09V
UkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCit9Owor
CitpbmxpbmUgdm9pZCAke29iamVjdE5hbWV9QnVpbHRpbkZ1bmN0aW9uczo6aW5pdChKU0M6OkpT
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTihj
b2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXFwKKyAgICBtXyMjZnVuY3Rpb25OYW1lIyNG
dW5jdGlvbi5zZXQobV92bSwgJmdsb2JhbE9iamVjdCwgSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVC
dWlsdGluRnVuY3Rpb24obV92bSwgY29kZU5hbWUjI0dlbmVyYXRvcihtX3ZtKSwgJmdsb2JhbE9i
amVjdCkpOworICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJ
Tl9DT0RFKEVYUE9SVF9GVU5DVElPTikKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT04KK30KKworaW5s
aW5lIHZvaWQgJHtvYmplY3ROYW1lfUJ1aWx0aW5GdW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZp
c2l0b3ImIHZpc2l0b3IpCit7CisjZGVmaW5lIFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3Iu
YXBwZW5kKCZtXyMjbmFtZSMjRnVuY3Rpb24pOworICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hf
JHtvYmplY3RNYWNyb31fQlVJTFRJTl9GVU5DVElPTl9OQU1FKFZJU0lUX0ZVTkNUSU9OKQorI3Vu
ZGVmIFZJU0lUX0ZVTkNUSU9OCit9CisiIiIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9oZWFkZXIu
cHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWls
dGluc19jb21iaW5lZF9oZWFkZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTA4OWZkZjU5YTJiYWU5NjE1ZTk4
YThhNmUyY2MyOTgwNDkzZTYxMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2hlYWRlci5w
eQpAQCAtMCwwICsxLDE2MiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdo
dCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHly
aWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCBs
b2dnaW5nCitpbXBvcnQgcmUKK2ltcG9ydCBzdHJpbmcKK2Zyb20gc3RyaW5nIGltcG9ydCBUZW1w
bGF0ZQorCitmcm9tIGJ1aWx0aW5zX2dlbmVyYXRvciBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3IK
K2Zyb20gYnVpbHRpbnNfdGVtcGxhdGVzIGltcG9ydCBCdWlsdGluc0dlbmVyYXRvclRlbXBsYXRl
cyBhcyBUZW1wbGF0ZXMKKworbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcpCisKKwor
Y2xhc3MgQnVpbHRpbnNDb21iaW5lZEhlYWRlckdlbmVyYXRvcihCdWlsdGluc0dlbmVyYXRvcik6
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZGVsKToKKyAgICAgICAgQnVpbHRpbnNHZW5lcmF0
b3IuX19pbml0X18oc2VsZiwgbW9kZWwpCisKKyAgICBkZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYp
OgorICAgICAgICByZXR1cm4gIiVzQnVpbHRpbnMuaCIgJSBzZWxmLm1vZGVsKCkuZnJhbWV3b3Jr
LnNldHRpbmcoJ25hbWVzcGFjZScpCisKKyAgICBkZWYgZ2VuZXJhdGVfb3V0cHV0KHNlbGYpOgor
ICAgICAgICBhcmdzID0geworICAgICAgICAgICAgJ25hbWVzcGFjZSc6IHNlbGYubW9kZWwoKS5m
cmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNlJyksCisgICAgICAgICAgICAnaGVhZGVyR3VhcmQn
OiBzZWxmLm91dHB1dF9maWxlbmFtZSgpLnJlcGxhY2UoJy4nLCAnXycpLAorICAgICAgICAgICAg
J21hY3JvUHJlZml4Jzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdtYWNyb19wcmVm
aXgnKSwKKyAgICAgICAgfQorCisgICAgICAgIHNlY3Rpb25zID0gW10KKyAgICAgICAgc2VjdGlv
bnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfbGljZW5zZSgpKQorICAgICAgICBzZWN0aW9ucy5hcHBl
bmQoVGVtcGxhdGUoVGVtcGxhdGVzLkRvTm90RWRpdFdhcm5pbmcpLnN1YnN0aXR1dGUoYXJncykp
CisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuSGVhZGVySW5jbHVk
ZUd1YXJkVG9wKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2Vs
Zi5nZW5lcmF0ZV9mb3J3YXJkX2RlY2xhcmF0aW9ucygpKQorICAgICAgICBzZWN0aW9ucy5hcHBl
bmQoVGVtcGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZVRvcCkuc3Vic3RpdHV0ZShhcmdzKSkKKyAg
ICAgICAgZm9yIG9iamVjdCBpbiBzZWxmLm1vZGVsKCkub2JqZWN0czoKKyAgICAgICAgICAgIHNl
Y3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX3NlY3Rpb25fZm9yX29iamVjdChvYmplY3QpKQor
ICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX3Rh
YmxlX21hY3JvKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX3NlY3Rp
b25fZm9yX2NvZGVfbmFtZV9tYWNybygpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxh
dGUoVGVtcGxhdGVzLkNvbWJpbmVkSGVhZGVyU3RhdGljTWFjcm9zKS5zdWJzdGl0dXRlKGFyZ3Mp
KQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZUJv
dHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRl
KFRlbXBsYXRlcy5IZWFkZXJJbmNsdWRlR3VhcmRCb3R0b20pLnN1YnN0aXR1dGUoYXJncykpCisK
KyAgICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNlY3Rpb25zKQorCisgICAgZGVmIGdlbmVyYXRl
X2ZvcndhcmRfZGVjbGFyYXRpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gIiIibmFtZXNwYWNl
IEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBWTTsKKworZW51bSBjbGFz
cyBDb25zdHJ1Y3RBYmlsaXR5IDogdW5zaWduZWQ7Cit9IiIiCisKKyAgICBkZWYgZ2VuZXJhdGVf
c2VjdGlvbl9mb3Jfb2JqZWN0KHNlbGYsIG9iamVjdCk6CisgICAgICAgIGxpbmVzID0gW10KKyAg
ICAgICAgbGluZXMuYXBwZW5kKCcvKiAlcyAqLycgJSBvYmplY3Qub2JqZWN0X25hbWUpCisgICAg
ICAgIGxpbmVzLmV4dGVuZChzZWxmLmdlbmVyYXRlX2V4dGVybnNfZm9yX29iamVjdChvYmplY3Qp
KQorICAgICAgICBsaW5lcy5hcHBlbmQoIiIpCisgICAgICAgIGxpbmVzLmV4dGVuZChzZWxmLmdl
bmVyYXRlX21hY3Jvc19mb3Jfb2JqZWN0KG9iamVjdCkpCisgICAgICAgIGxpbmVzLmFwcGVuZCgi
IikKKyAgICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2VuZXJhdGVfZGVmaW5lc19mb3Jfb2JqZWN0
KG9iamVjdCkpCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCisKKyAgICBkZWYgZ2Vu
ZXJhdGVfZXh0ZXJuc19mb3Jfb2JqZWN0KHNlbGYsIG9iamVjdCk6CisgICAgICAgIGxpbmVzID0g
W10KKworICAgICAgICBmb3IgZnVuY3Rpb24gaW4gb2JqZWN0LmZ1bmN0aW9uczoKKyAgICAgICAg
ICAgIGZ1bmN0aW9uX2FyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ2NvZGVOYW1lJzogQnVpbHRp
bnNHZW5lcmF0b3IubWFuZ2xlZE5hbWVGb3JGdW5jdGlvbihmdW5jdGlvbikgKyAnQ29kZScsCisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiIiJleHRlcm4gY29uc3Qg
Y2hhciogc18lKGNvZGVOYW1lKXM7CitleHRlcm4gY29uc3QgaW50IHNfJShjb2RlTmFtZSlzTGVu
Z3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzXyUoY29kZU5hbWUpc0Nv
bnN0cnVjdEFiaWxpdHk7IiIiICUgZnVuY3Rpb25fYXJncykKKworICAgICAgICByZXR1cm4gbGlu
ZXMKKworICAgIGRlZiBnZW5lcmF0ZV9tYWNyb3NfZm9yX29iamVjdChzZWxmLCBvYmplY3QpOgor
ICAgICAgICBhcmdzID0geworICAgICAgICAgICAgJ21hY3JvUHJlZml4Jzogc2VsZi5tb2RlbCgp
LmZyYW1ld29yay5zZXR0aW5nKCdtYWNyb19wcmVmaXgnKSwKKyAgICAgICAgICAgICdvYmplY3RN
YWNybyc6IG9iamVjdC5vYmplY3RfbmFtZS5yZXBsYWNlKCcuJywgJycpLnVwcGVyKCksCisgICAg
ICAgIH0KKworICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZCgiI2RlZmlu
ZSAlKG1hY3JvUHJlZml4KXNfRk9SRUFDSF8lKG9iamVjdE1hY3JvKXNfQlVJTFRJTl9EQVRBKG1h
Y3JvKSBcXCIgJSBhcmdzKQorICAgICAgICBmb3IgZnVuY3Rpb24gaW4gb2JqZWN0LmZ1bmN0aW9u
czoKKyAgICAgICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ2Z1bmNO
YW1lJzogZnVuY3Rpb24uZnVuY3Rpb25fbmFtZSwKKyAgICAgICAgICAgICAgICAnbWFuZ2xlZE5h
bWUnOiBCdWlsdGluc0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvckZ1bmN0aW9uKGZ1bmN0aW9uKSwK
KyAgICAgICAgICAgICAgICAncGFyYW1Db3VudCc6IGxlbihmdW5jdGlvbi5wYXJhbWV0ZXJzKSwK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIgICAgbWFjcm8oJShm
dW5jTmFtZSlzLCAlKG1hbmdsZWROYW1lKXMsICUocGFyYW1Db3VudClkKSBcXCIgJSBmdW5jdGlv
bl9hcmdzKQorICAgICAgICByZXR1cm4gbGluZXMKKworICAgIGRlZiBnZW5lcmF0ZV9kZWZpbmVz
X2Zvcl9vYmplY3Qoc2VsZiwgb2JqZWN0KToKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBm
b3IgZnVuY3Rpb24gaW4gb2JqZWN0LmZ1bmN0aW9uczoKKyAgICAgICAgICAgIGFyZ3MgPSB7Cisg
ICAgICAgICAgICAgICAgJ21hY3JvUHJlZml4Jzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0
aW5nKCdtYWNyb19wcmVmaXgnKSwKKyAgICAgICAgICAgICAgICAnb2JqZWN0TWFjcm8nOiBvYmpl
Y3Qub2JqZWN0X25hbWUucmVwbGFjZSgnLicsICcnKS51cHBlcigpLAorICAgICAgICAgICAgICAg
ICdmdW5jdGlvbk1hY3JvJzogZnVuY3Rpb24uZnVuY3Rpb25fbmFtZS51cHBlcigpLAorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIjZGVmaW5lICUobWFjcm9QcmVmaXgp
c19CVUlMVElOXyUob2JqZWN0TWFjcm8pc18lKGZ1bmN0aW9uTWFjcm8pcyAxIiAlIGFyZ3MpCisK
KyAgICAgICAgcmV0dXJuIGxpbmVzCisKKyAgICBkZWYgZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29k
ZV90YWJsZV9tYWNybyhzZWxmKToKKyAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICdtYWNy
b1ByZWZpeCc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbWFjcm9fcHJlZml4Jyks
CisgICAgICAgIH0KKworICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZCgi
I2RlZmluZSAlKG1hY3JvUHJlZml4KXNfRk9SRUFDSF9CVUlMVElOX0NPREUobWFjcm8pIFxcIiAl
IGFyZ3MpCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBzZWxmLm1vZGVsKCkuYWxsX2Z1bmN0aW9u
cygpOgorICAgICAgICAgICAgZnVuY3Rpb25fYXJncyA9IHsKKyAgICAgICAgICAgICAgICAnZnVu
Y05hbWUnOiBmdW5jdGlvbi5mdW5jdGlvbl9uYW1lLAorICAgICAgICAgICAgICAgICdjb2RlTmFt
ZSc6IEJ1aWx0aW5zR2VuZXJhdG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rpb24oZnVuY3Rpb24pICsg
J0NvZGUnLAorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiAgICBt
YWNybyglKGNvZGVOYW1lKXMsICUoZnVuY05hbWUpcywgc18lKGNvZGVOYW1lKXNMZW5ndGgpIFxc
IiAlIGZ1bmN0aW9uX2FyZ3MpCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCisKKyAg
ICBkZWYgZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV9uYW1lX21hY3JvKHNlbGYpOgorICAgICAg
ICBhcmdzID0geworICAgICAgICAgICAgJ21hY3JvUHJlZml4Jzogc2VsZi5tb2RlbCgpLmZyYW1l
d29yay5zZXR0aW5nKCdtYWNyb19wcmVmaXgnKSwKKyAgICAgICAgfQorCisgICAgICAgIGxpbmVz
ID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCIjZGVmaW5lICUobWFjcm9QcmVmaXgpc19GT1JF
QUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXFwiICUgYXJncykKKyAgICAgICAgdW5p
cXVlX25hbWVzID0gbGlzdChzZXQoW2Z1bmN0aW9uLmZ1bmN0aW9uX25hbWUgZm9yIGZ1bmN0aW9u
IGluIHNlbGYubW9kZWwoKS5hbGxfZnVuY3Rpb25zKCldKSkKKyAgICAgICAgdW5pcXVlX25hbWVz
LnNvcnQoKQorICAgICAgICBmb3IgZnVuY3Rpb25fbmFtZSBpbiB1bmlxdWVfbmFtZXM6CisgICAg
ICAgICAgICBmdW5jdGlvbl9hcmdzID0geworICAgICAgICAgICAgICAgICdmdW5jTmFtZSc6IGZ1
bmN0aW9uX25hbWUsCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgi
ICAgIG1hY3JvKCUoZnVuY05hbWUpcykgXFwiICUgZnVuY3Rpb25fYXJncykKKyAgICAgICAgcmV0
dXJuICdcbicuam9pbihsaW5lcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9u
LnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvZ2VuZXJhdGVfYnVp
bHRpbnNfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZThjMTM0OTZjNjg4
YjhmMDRhOWZhYWEzZDIyZTZiNDNiMjFhZGM3NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVk
X2ltcGxlbWVudGF0aW9uLnB5CkBAIC0wLDAgKzEsMTIwIEBACisjIS91c3IvYmluL2VudiBweXRo
b24KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCByZQoraW1wb3J0IHN0cmluZworZnJvbSBz
dHJpbmcgaW1wb3J0IFRlbXBsYXRlCitpbXBvcnQganNvbgorCitmcm9tIGJ1aWx0aW5zX2dlbmVy
YXRvciBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3IKK2Zyb20gYnVpbHRpbnNfbW9kZWwgaW1wb3J0
IEZyYW1ld29yaywgRnJhbWV3b3JrcworZnJvbSBidWlsdGluc190ZW1wbGF0ZXMgaW1wb3J0IEJ1
aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVzIGFzIFRlbXBsYXRlcworCitsb2cgPSBsb2dnaW5nLmdl
dExvZ2dlcignZ2xvYmFsJykKKworCitjbGFzcyBCdWlsdGluc0NvbWJpbmVkSW1wbGVtZW50YXRp
b25HZW5lcmF0b3IoQnVpbHRpbnNHZW5lcmF0b3IpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBt
b2RlbCk6CisgICAgICAgIEJ1aWx0aW5zR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYsIG1vZGVsKQor
CisgICAgZGVmIG91dHB1dF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuICIlc0J1aWx0
aW5zLmNwcCIgJSBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpCisK
KyAgICBkZWYgZ2VuZXJhdGVfb3V0cHV0KHNlbGYpOgorICAgICAgICBhcmdzID0geworICAgICAg
ICAgICAgJ25hbWVzcGFjZSc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbmFtZXNw
YWNlJyksCisgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3Jr
LnNldHRpbmcoJ21hY3JvX3ByZWZpeCcpLAorICAgICAgICB9CisKKyAgICAgICAgc2VjdGlvbnMg
PSBbXQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9saWNlbnNlKCkpCisg
ICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuRG9Ob3RFZGl0V2Fybmlu
Zykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJh
dGVfaGVhZGVyX2luY2x1ZGVzKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShU
ZW1wbGF0ZXMuTmFtZXNwYWNlVG9wKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9u
cy5leHRlbmQoc2VsZi5nZW5lcmF0ZV9lbWJlZGRlZF9jb2RlX3N0cmluZ19zZWN0aW9ucygpKQor
ICAgICAgICBpZiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrIGlzIEZyYW1ld29ya3MuSmF2YVNjcmlw
dENvcmU6CisgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkNv
bWJpbmVkSlNDSW1wbGVtZW50YXRpb25TdGF0aWNNYWNyb3MpLnN1YnN0aXR1dGUoYXJncykpCisg
ICAgICAgIGVsaWYgc2VsZi5tb2RlbCgpLmZyYW1ld29yayBpcyBGcmFtZXdvcmtzLldlYkNvcmU6
CisgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkNvbWJpbmVk
V2ViQ29yZUltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9zKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAg
ICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZUJvdHRvbSku
c3Vic3RpdHV0ZShhcmdzKSkKKworICAgICAgICByZXR1cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMp
CisKKyAgICBkZWYgZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKHNlbGYpOgorICAgICAgICBoZWFk
ZXJfaW5jbHVkZXMgPSBbCisgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZSJdLAorICAgICAg
ICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAiYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVz
LmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZSIsICJX
ZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL0V4
ZWN1dGFibGUuaCIpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIChbIkphdmFTY3JpcHRD
b3JlIiwgIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgInJ1
bnRpbWUvSlNDZWxsSW5saW5lcy5oIiksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKFsi
V2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9T
dHJ1Y3R1cmVJbmxpbmVzLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJXZWJD
b3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJKYXZhU2Ny
aXB0Q29yZSIsICJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIs
ICJydW50aW1lL1ZNLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAgIF0KKworICAgICAgICBy
ZXR1cm4gJ1xuJy5qb2luKHNlbGYuZ2VuZXJhdGVfaW5jbHVkZXNfZnJvbV9lbnRyaWVzKGhlYWRl
cl9pbmNsdWRlcykpCisKKyAgICBkZWYgZ2VuZXJhdGVfZW1iZWRkZWRfY29kZV9zdHJpbmdfc2Vj
dGlvbnMoc2VsZik6CisgICAgICAgIHN1YnNlY3Rpb25zID0gW10KKyAgICAgICAgZm9yIGZ1bmN0
aW9uIGluIHNlbGYubW9kZWwoKS5hbGxfZnVuY3Rpb25zKCk6CisgICAgICAgICAgICB0ZXh0ID0g
ZnVuY3Rpb24uZnVuY3Rpb25fc291cmNlCisgICAgICAgICAgICAjIFdyYXAgaXQgaW4gcGFyZW5z
IHRvIGF2b2lkIGFkZGluZyB0byBnbG9iYWwgc2NvcGUuCisgICAgICAgICAgICB0ZXh0ID0gIihm
dW5jdGlvbiAiICsgdGV4dFt0ZXh0LmluZGV4KCIoIik6XSArICIpIgorICAgICAgICAgICAgIyBM
YXp5IHdheSB0byBlc2NhcGUgcXVvdGVzLCBJIHRoaW5rPworICAgICAgICAgICAgdGV4dExpbmVz
ID0ganNvbi5kdW1wcyh0ZXh0KVsxOi0xXS5zcGxpdCgiXFxuIikKKyAgICAgICAgICAgICMgVGhp
cyBsb29rcyBzY2FyeSBiZWNhdXNlIHdlIG5lZWQgdGhlIEpTIHNvdXJjZSBpdHNlbGYgdG8gaGF2
ZSBuZXdsaW5lcy4KKyAgICAgICAgICAgIGVtYmVkZGVkU291cmNlID0gJ1xuJy5qb2luKFsnICAg
IiVzXFxuIiBcXCcgJSBsaW5lIGZvciBsaW5lIGluIHRleHRMaW5lc10pCisKKyAgICAgICAgICAg
IGNvbnN0cnVjdEFiaWxpdHkgPSAiQ2Fubm90Q29uc3RydWN0IgorICAgICAgICAgICAgaWYgZnVu
Y3Rpb24uaXNfY29uc3RydWN0b3I6CisgICAgICAgICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9
ICJDYW5Db25zdHJ1Y3QiCisKKyAgICAgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAgICAg
J2NvZGVOYW1lJzogQnVpbHRpbnNHZW5lcmF0b3IubWFuZ2xlZE5hbWVGb3JGdW5jdGlvbihmdW5j
dGlvbikgKyAnQ29kZScsCisgICAgICAgICAgICAgICAgJ2VtYmVkZGVkU291cmNlJzogZW1iZWRk
ZWRTb3VyY2UsCisgICAgICAgICAgICAgICAgJ2VtYmVkZGVkU291cmNlTGVuZ3RoJzogbGVuKGVt
YmVkZGVkU291cmNlKSArIDEsCisgICAgICAgICAgICAgICAgJ2NhbkNvbnN0cnVjdCc6IGNvbnN0
cnVjdEFiaWxpdHkKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGluZXMgPSBbXQorICAg
ICAgICAgICAgbGluZXMuYXBwZW5kKCJjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc18lKGNv
ZGVOYW1lKXNDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjolKGNhbkNv
bnN0cnVjdClzOyIgJSBhcmdzKQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCJjb25zdCBpbnQg
c18lKGNvZGVOYW1lKXNMZW5ndGggPSAlKGVtYmVkZGVkU291cmNlTGVuZ3RoKWQ7IiAlIGFyZ3Mp
CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoImNvbnN0IGNoYXIqIHNfJShjb2RlTmFtZSlzID1c
biUoZW1iZWRkZWRTb3VyY2Upc1xuOyIgJSBhcmdzKQorICAgICAgICAgICAgc3Vic2VjdGlvbnMu
YXBwZW5kKCdcbicuam9pbihsaW5lcykpCisKKyAgICAgICAgcmV0dXJuIHN1YnNlY3Rpb25zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0
ZV9idWlsdGluc19zZXBhcmF0ZV9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9oZWFkZXIucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTYzZjM2YjIzNWI1NGI3YTViMDYyOTQ1Y2NlOWE1OTIzNDZjMmZmNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2dlbmVyYXRl
X2J1aWx0aW5zX3NlcGFyYXRlX2hlYWRlci5weQpAQCAtMCwwICsxLDE3NSBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdh
c2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgcmUKK2ltcG9ydCBzdHJp
bmcKK2Zyb20gc3RyaW5nIGltcG9ydCBUZW1wbGF0ZQorCitmcm9tIGJ1aWx0aW5zX2dlbmVyYXRv
ciBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3IKK2Zyb20gYnVpbHRpbnNfdGVtcGxhdGVzIGltcG9y
dCBCdWlsdGluc0dlbmVyYXRvclRlbXBsYXRlcyBhcyBUZW1wbGF0ZXMKKworbG9nID0gbG9nZ2lu
Zy5nZXRMb2dnZXIoJ2dsb2JhbCcpCisKKworY2xhc3MgQnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdl
bmVyYXRvcihCdWlsdGluc0dlbmVyYXRvcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZGVs
LCBvYmplY3QpOgorICAgICAgICBCdWlsdGluc0dlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBtb2Rl
bCkKKyAgICAgICAgc2VsZi5vYmplY3QgPSBvYmplY3QKKworICAgIGRlZiBvdXRwdXRfZmlsZW5h
bWUoc2VsZik6CisgICAgICAgIHJldHVybiAiJXNCdWlsdGlucy5oIiAlIHNlbGYub2JqZWN0Lm9i
amVjdF9uYW1lCisKKyAgICBkZWYgbWFjcm9fcHJlZml4KHNlbGYpOgorICAgICAgICByZXR1cm4g
c2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdtYWNyb19wcmVmaXgnKQorCisgICAgZGVm
IGdlbmVyYXRlX291dHB1dChzZWxmKToKKyAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICdu
YW1lc3BhY2UnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpLAor
ICAgICAgICAgICAgJ2hlYWRlckd1YXJkJzogc2VsZi5vdXRwdXRfZmlsZW5hbWUoKS5yZXBsYWNl
KCcuJywgJ18nKSwKKyAgICAgICAgICAgICdtYWNyb1ByZWZpeCc6IHNlbGYubWFjcm9fcHJlZml4
KCksCisgICAgICAgICAgICAnb2JqZWN0TmFtZSc6IHNlbGYub2JqZWN0Lm9iamVjdF9uYW1lLnVw
cGVyKCksCisgICAgICAgIH0KKworICAgICAgICBzZWN0aW9ucyA9IFtdCisgICAgICAgIHNlY3Rp
b25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2xpY2Vuc2UoKSkKKyAgICAgICAgc2VjdGlvbnMuYXBw
ZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5Eb05vdEVkaXRXYXJuaW5nKS5zdWJzdGl0dXRlKGFyZ3Mp
KQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkhlYWRlckluY2x1
ZGVHdWFyZFRvcCkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNl
bGYuZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChz
ZWxmLmdlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zKCkpCisgICAgICAgIHNlY3Rpb25zLmFw
cGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlVG9wKS5zdWJzdGl0dXRlKGFyZ3MpKQor
ICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9zZWN0aW9uX2Zvcl9vYmplY3Qo
c2VsZi5vYmplY3QpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9zZWN0
aW9uX2Zvcl9jb2RlX3RhYmxlX21hY3JvKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxm
LmdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfbmFtZV9tYWNybygpKQorICAgICAgICBzZWN0aW9u
cy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLlNlcGFyYXRlSGVhZGVyU3RhdGljTWFjcm9zKS5z
dWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxh
dGVzLk5hbWVzcGFjZUJvdHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMu
YXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5IZWFkZXJJbmNsdWRlR3VhcmRCb3R0b20pLnN1YnN0
aXR1dGUoYXJncykpCisKKyAgICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNlY3Rpb25zKQorCisg
ICAgZGVmIGdlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zKHNlbGYpOgorICAgICAgICByZXR1
cm4gIiIibmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Cit9IiIiCisK
KyAgICBkZWYgZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKHNlbGYpOgorICAgICAgICBoZWFkZXJf
aW5jbHVkZXMgPSBbCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAg
KCJKYXZhU2NyaXB0Q29yZSIsICJidWlsdGlucy9CdWlsdGluVXRpbHMuaCIpLAorICAgICAgICAg
ICAgKSwKKyAgICAgICAgXQorCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4oc2VsZi5nZW5lcmF0
ZV9pbmNsdWRlc19mcm9tX2VudHJpZXMoaGVhZGVyX2luY2x1ZGVzKSkKKworICAgIGRlZiBnZW5l
cmF0ZV9zZWN0aW9uX2Zvcl9vYmplY3Qoc2VsZiwgb2JqZWN0KToKKyAgICAgICAgbGluZXMgPSBb
XQorICAgICAgICBsaW5lcy5hcHBlbmQoJy8qICVzICovJyAlIG9iamVjdC5vYmplY3RfbmFtZSkK
KyAgICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2VuZXJhdGVfZXh0ZXJuc19mb3Jfb2JqZWN0KG9i
amVjdCkpCisgICAgICAgIGxpbmVzLmFwcGVuZCgiIikKKyAgICAgICAgbGluZXMuZXh0ZW5kKHNl
bGYuZ2VuZXJhdGVfbWFjcm9zX2Zvcl9vYmplY3Qob2JqZWN0KSkKKyAgICAgICAgbGluZXMuYXBw
ZW5kKCIiKQorICAgICAgICBsaW5lcy5leHRlbmQoc2VsZi5nZW5lcmF0ZV9kZWZpbmVzX2Zvcl9v
YmplY3Qob2JqZWN0KSkKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKKworICAgIGRl
ZiBnZW5lcmF0ZV9leHRlcm5zX2Zvcl9vYmplY3Qoc2VsZiwgb2JqZWN0KToKKyAgICAgICAgbGlu
ZXMgPSBbXQorCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBvYmplY3QuZnVuY3Rpb25zOgorICAg
ICAgICAgICAgZnVuY3Rpb25fYXJncyA9IHsKKyAgICAgICAgICAgICAgICAnY29kZU5hbWUnOiBC
dWlsdGluc0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvckZ1bmN0aW9uKGZ1bmN0aW9uKSArICdDb2Rl
JywKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIiImV4dGVybiBj
b25zdCBjaGFyKiBzXyUoY29kZU5hbWUpczsKK2V4dGVybiBjb25zdCBpbnQgc18lKGNvZGVOYW1l
KXNMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfJShjb2RlTmFt
ZSlzQ29uc3RydWN0QWJpbGl0eTsiIiIgJSBmdW5jdGlvbl9hcmdzKQorCisgICAgICAgIHJldHVy
biBsaW5lcworCisgICAgZGVmIGdlbmVyYXRlX21hY3Jvc19mb3Jfb2JqZWN0KHNlbGYsIG9iamVj
dCk6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1h
Y3JvX3ByZWZpeCgpLAorICAgICAgICAgICAgJ29iamVjdE1hY3JvJzogb2JqZWN0Lm9iamVjdF9u
YW1lLnJlcGxhY2UoJy4nLCAnXycpLnVwcGVyKCksCisgICAgICAgIH0KKworICAgICAgICBsaW5l
cyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZCgiI2RlZmluZSAlKG1hY3JvUHJlZml4KXNfRk9S
RUFDSF8lKG9iamVjdE1hY3JvKXNfQlVJTFRJTl9EQVRBKG1hY3JvKSBcXCIgJSBhcmdzKQorICAg
ICAgICBmb3IgZnVuY3Rpb24gaW4gb2JqZWN0LmZ1bmN0aW9uczoKKyAgICAgICAgICAgIGZ1bmN0
aW9uX2FyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ2Z1bmNOYW1lJzogZnVuY3Rpb24uZnVuY3Rp
b25fbmFtZSwKKyAgICAgICAgICAgICAgICAnbWFuZ2xlZE5hbWUnOiBCdWlsdGluc0dlbmVyYXRv
ci5tYW5nbGVkTmFtZUZvckZ1bmN0aW9uKGZ1bmN0aW9uKSwKKyAgICAgICAgICAgICAgICAncGFy
YW1Db3VudCc6IGxlbihmdW5jdGlvbi5wYXJhbWV0ZXJzKSwKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgbGluZXMuYXBwZW5kKCIgICAgbWFjcm8oJShmdW5jTmFtZSlzLCAlKG1hbmdsZWRO
YW1lKXMsICUocGFyYW1Db3VudClkKSBcXCIgJSBmdW5jdGlvbl9hcmdzKQorICAgICAgICByZXR1
cm4gbGluZXMKKworICAgIGRlZiBnZW5lcmF0ZV9kZWZpbmVzX2Zvcl9vYmplY3Qoc2VsZiwgb2Jq
ZWN0KToKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBmb3IgZnVuY3Rpb24gaW4gb2JqZWN0
LmZ1bmN0aW9uczoKKyAgICAgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ21hY3Jv
UHJlZml4Jzogc2VsZi5tYWNyb19wcmVmaXgoKSwKKyAgICAgICAgICAgICAgICAnb2JqZWN0TWFj
cm8nOiBvYmplY3Qub2JqZWN0X25hbWUucmVwbGFjZSgnLicsICdfJykudXBwZXIoKSwKKyAgICAg
ICAgICAgICAgICAnZnVuY3Rpb25NYWNybyc6IGZ1bmN0aW9uLmZ1bmN0aW9uX25hbWUudXBwZXIo
KSwKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiI2RlZmluZSAlKG1h
Y3JvUHJlZml4KXNfQlVJTFRJTl8lKG9iamVjdE1hY3JvKXNfJShmdW5jdGlvbk1hY3JvKXMgMSIg
JSBhcmdzKQorCisgICAgICAgIHJldHVybiBsaW5lcworCisgICAgZGVmIGdlbmVyYXRlX3NlY3Rp
b25fZm9yX2NvZGVfdGFibGVfbWFjcm8oc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAg
ICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ21hY3Jv
X3ByZWZpeCcpLAorICAgICAgICAgICAgJ29iamVjdE1hY3JvJzogc2VsZi5vYmplY3Qub2JqZWN0
X25hbWUudXBwZXIoKSwKKyAgICAgICAgfQorCisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAg
bGluZXMuYXBwZW5kKCIjZGVmaW5lICUobWFjcm9QcmVmaXgpc19GT1JFQUNIXyUob2JqZWN0TWFj
cm8pc19CVUlMVElOX0NPREUobWFjcm8pIFxcIiAlIGFyZ3MpCisgICAgICAgIGZvciBmdW5jdGlv
biBpbiBzZWxmLm9iamVjdC5mdW5jdGlvbnM6CisgICAgICAgICAgICBmdW5jdGlvbl9hcmdzID0g
eworICAgICAgICAgICAgICAgICdmdW5jTmFtZSc6IGZ1bmN0aW9uLmZ1bmN0aW9uX25hbWUsCisg
ICAgICAgICAgICAgICAgJ2NvZGVOYW1lJzogQnVpbHRpbnNHZW5lcmF0b3IubWFuZ2xlZE5hbWVG
b3JGdW5jdGlvbihmdW5jdGlvbikgKyAnQ29kZScsCisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGxpbmVzLmFwcGVuZCgiICAgIG1hY3JvKCUoY29kZU5hbWUpcywgJShmdW5jTmFtZSlzLCBz
XyUoY29kZU5hbWUpc0xlbmd0aCkgXFwiICUgZnVuY3Rpb25fYXJncykKKyAgICAgICAgcmV0dXJu
ICdcbicuam9pbihsaW5lcykKKworICAgIGRlZiBnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX25h
bWVfbWFjcm8oc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbWFjcm9QcmVm
aXgnOiBzZWxmLm1hY3JvX3ByZWZpeCgpLAorICAgICAgICAgICAgJ29iamVjdE1hY3JvJzogc2Vs
Zi5vYmplY3Qub2JqZWN0X25hbWUudXBwZXIoKSwKKyAgICAgICAgfQorCisgICAgICAgIGxpbmVz
ID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCIjZGVmaW5lICUobWFjcm9QcmVmaXgpc19GT1JF
QUNIXyUob2JqZWN0TWFjcm8pc19CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFxcIiAlIGFy
Z3MpCisgICAgICAgIHVuaXF1ZV9uYW1lcyA9IGxpc3Qoc2V0KFtmdW5jdGlvbi5mdW5jdGlvbl9u
YW1lIGZvciBmdW5jdGlvbiBpbiBzZWxmLm9iamVjdC5mdW5jdGlvbnNdKSkKKyAgICAgICAgdW5p
cXVlX25hbWVzLnNvcnQoKQorICAgICAgICBmb3IgZnVuY3Rpb25fbmFtZSBpbiB1bmlxdWVfbmFt
ZXM6CisgICAgICAgICAgICBmdW5jdGlvbl9hcmdzID0geworICAgICAgICAgICAgICAgICdmdW5j
TmFtZSc6IGZ1bmN0aW9uX25hbWUsCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxpbmVz
LmFwcGVuZCgiICAgIG1hY3JvKCUoZnVuY05hbWUpcykgXFwiICUgZnVuY3Rpb25fYXJncykKKyAg
ICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2ltcGxl
bWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvZ2Vu
ZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGZm
OTU2NDBmZjc2ZGJhNDM2NDFlZDQxNTQ1NTUyNGU2NDdjZTRlYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5z
X3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5CkBAIC0wLDAgKzEsMTI5IEBACisjIS91c3IvYmlu
L2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2Fz
aGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCByZQoraW1wb3J0IHN0cmlu
ZworZnJvbSBzdHJpbmcgaW1wb3J0IFRlbXBsYXRlCitpbXBvcnQganNvbgorCitmcm9tIGJ1aWx0
aW5zX2dlbmVyYXRvciBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3IsIFdLX2xjZmlyc3QKK2Zyb20g
YnVpbHRpbnNfbW9kZWwgaW1wb3J0IEZyYW1ld29yaywgRnJhbWV3b3JrcworZnJvbSBidWlsdGlu
c190ZW1wbGF0ZXMgaW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVzIGFzIFRlbXBsYXRl
cworCitsb2cgPSBsb2dnaW5nLmdldExvZ2dlcignZ2xvYmFsJykKKworCitjbGFzcyBCdWlsdGlu
c1NlcGFyYXRlSW1wbGVtZW50YXRpb25HZW5lcmF0b3IoQnVpbHRpbnNHZW5lcmF0b3IpOgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCwgb2JqZWN0KToKKyAgICAgICAgQnVpbHRpbnNHZW5l
cmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWwpCisgICAgICAgIHNlbGYub2JqZWN0ID0gb2JqZWN0
CisKKyAgICBkZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gIiVzQnVp
bHRpbnMuY3BwIiAlIHNlbGYub2JqZWN0Lm9iamVjdF9uYW1lCisKKyAgICBkZWYgbWFjcm9fcHJl
Zml4KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5n
KCdtYWNyb19wcmVmaXgnKQorCisgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKKyAgICAg
ICAgYXJncyA9IHsKKyAgICAgICAgICAgICduYW1lc3BhY2UnOiBzZWxmLm1vZGVsKCkuZnJhbWV3
b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpLAorICAgICAgICAgICAgJ21hY3JvUHJlZml4Jzogc2Vs
Zi5tYWNyb19wcmVmaXgoKSwKKyAgICAgICAgICAgICdvYmplY3RNYWNybyc6IHNlbGYub2JqZWN0
Lm9iamVjdF9uYW1lLnVwcGVyKCksCisgICAgICAgICAgICAnb2JqZWN0TmFtZUxDJzogV0tfbGNm
aXJzdChzZWxmLm9iamVjdC5vYmplY3RfbmFtZSksCisgICAgICAgIH0KKworICAgICAgICBzZWN0
aW9ucyA9IFtdCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2xpY2Vuc2Uo
KSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5Eb05vdEVkaXRX
YXJuaW5nKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5n
ZW5lcmF0ZV9oZWFkZXJfaW5jbHVkZXMoKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBs
YXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VUb3ApLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNl
Y3Rpb25zLmV4dGVuZChzZWxmLmdlbmVyYXRlX2VtYmVkZGVkX2NvZGVfc3RyaW5nX3NlY3Rpb25z
KCkpCisgICAgICAgIGlmIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsgaXMgRnJhbWV3b3Jrcy5KYXZh
U2NyaXB0Q29yZToKKyAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0
ZXMuU2VwYXJhdGVKU0NJbXBsZW1lbnRhdGlvblN0YXRpY01hY3Jvcykuc3Vic3RpdHV0ZShhcmdz
KSkKKyAgICAgICAgZWxpZiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrIGlzIEZyYW1ld29ya3MuV2Vi
Q29yZToKKyAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuU2Vw
YXJhdGVXZWJDb3JlSW1wbGVtZW50YXRpb25TdGF0aWNNYWNyb3MpLnN1YnN0aXR1dGUoYXJncykp
CisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlQm90
dG9tKS5zdWJzdGl0dXRlKGFyZ3MpKQorCisgICAgICAgIHJldHVybiAiXG5cbiIuam9pbihzZWN0
aW9ucykKKworICAgIGRlZiBnZW5lcmF0ZV9oZWFkZXJfaW5jbHVkZXMoc2VsZik6CisgICAgICAg
IGhlYWRlcl9pbmNsdWRlcyA9IFsKKyAgICAgICAgICAgIChbIkphdmFTY3JpcHRDb3JlIl0sCisg
ICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJidWlsdGlucy9CdWlsdGluRXhlY3V0
YWJsZXMuaCIpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIChbIkphdmFTY3JpcHRDb3Jl
IiwgIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgInJ1bnRp
bWUvRXhlY3V0YWJsZS5oIiksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKFsiSmF2YVNj
cmlwdENvcmUiLCAiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUi
LCAicnVudGltZS9KU0NlbGxJbmxpbmVzLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAg
ICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50
aW1lL1N0cnVjdHVyZUlubGluZXMuaCIpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIChb
IldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgInJ1bnRpbWUv
SlNDSlNWYWx1ZUlubGluZXMuaCIpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIChbIkph
dmFTY3JpcHRDb3JlIiwgIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRD
b3JlIiwgInJ1bnRpbWUvVk0uaCIpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIChbIldl
YkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIldlYkNvcmUiLCAiYmluZGluZ3MvanMvV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oIiksCisgICAgICAgICAgICApLAorICAgICAgICBdCisKKyAgICAgICAg
cmV0dXJuICdcbicuam9pbihzZWxmLmdlbmVyYXRlX2luY2x1ZGVzX2Zyb21fZW50cmllcyhoZWFk
ZXJfaW5jbHVkZXMpKQorCisgICAgZGVmIGdlbmVyYXRlX2VtYmVkZGVkX2NvZGVfc3RyaW5nX3Nl
Y3Rpb25zKHNlbGYpOgorICAgICAgICBzdWJzZWN0aW9ucyA9IFtdCisgICAgICAgIGZvciBmdW5j
dGlvbiBpbiBzZWxmLm9iamVjdC5mdW5jdGlvbnM6CisgICAgICAgICAgICB0ZXh0ID0gZnVuY3Rp
b24uZnVuY3Rpb25fc291cmNlCisgICAgICAgICAgICAjIFdyYXAgaXQgaW4gcGFyZW5zIHRvIGF2
b2lkIGFkZGluZyB0byBnbG9iYWwgc2NvcGUuCisgICAgICAgICAgICB0ZXh0ID0gIihmdW5jdGlv
biAiICsgdGV4dFt0ZXh0LmluZGV4KCIoIik6XSArICIpIgorICAgICAgICAgICAgIyBMYXp5IHdh
eSB0byBlc2NhcGUgcXVvdGVzLCBJIHRoaW5rPworICAgICAgICAgICAgdGV4dExpbmVzID0ganNv
bi5kdW1wcyh0ZXh0KVsxOi0xXS5zcGxpdCgiXFxuIikKKyAgICAgICAgICAgICMgVGhpcyBsb29r
cyBzY2FyeSBiZWNhdXNlIHdlIG5lZWQgdGhlIEpTIHNvdXJjZSBpdHNlbGYgdG8gaGF2ZSBuZXds
aW5lcy4KKyAgICAgICAgICAgIGVtYmVkZGVkU291cmNlID0gJ1xuJy5qb2luKFsnICAgIiVzXFxu
IiBcXCcgJSBsaW5lIGZvciBsaW5lIGluIHRleHRMaW5lc10pCisKKyAgICAgICAgICAgIGNvbnN0
cnVjdEFiaWxpdHkgPSAiQ2Fubm90Q29uc3RydWN0IgorICAgICAgICAgICAgaWYgZnVuY3Rpb24u
aXNfY29uc3RydWN0b3I6CisgICAgICAgICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9ICJDYW5D
b25zdHJ1Y3QiCisKKyAgICAgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ2NvZGVO
YW1lJzogQnVpbHRpbnNHZW5lcmF0b3IubWFuZ2xlZE5hbWVGb3JGdW5jdGlvbihmdW5jdGlvbikg
KyAnQ29kZScsCisgICAgICAgICAgICAgICAgJ2VtYmVkZGVkU291cmNlJzogZW1iZWRkZWRTb3Vy
Y2UsCisgICAgICAgICAgICAgICAgJ2VtYmVkZGVkU291cmNlTGVuZ3RoJzogbGVuKGVtYmVkZGVk
U291cmNlKSArIDEsCisgICAgICAgICAgICAgICAgJ2NhbkNvbnN0cnVjdCc6IGNvbnN0cnVjdEFi
aWxpdHkKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGluZXMgPSBbXQorICAgICAgICAg
ICAgbGluZXMuYXBwZW5kKCJjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc18lKGNvZGVOYW1l
KXNDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjolKGNhbkNvbnN0cnVj
dClzOyIgJSBhcmdzKTsKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiY29uc3QgaW50IHNfJShj
b2RlTmFtZSlzTGVuZ3RoID0gJShlbWJlZGRlZFNvdXJjZUxlbmd0aClkOyIgJSBhcmdzKTsKKyAg
ICAgICAgICAgIGxpbmVzLmFwcGVuZCgiY29uc3QgY2hhciogc18lKGNvZGVOYW1lKXMgPVxuJShl
bWJlZGRlZFNvdXJjZSlzXG47IiAlIGFyZ3MpOworICAgICAgICAgICAgc3Vic2VjdGlvbnMuYXBw
ZW5kKCdcbicuam9pbihsaW5lcykpCisKKyAgICAgICAgcmV0dXJuIHN1YnNlY3Rpb25zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9i
dWlsdGluc19zZXBhcmF0ZV93cmFwcGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvYnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfd3JhcHBlci5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43ODE0MWQ2Mjc3Y2ZkYjU0ODE5OGM4ZWY4NjkwNDc0ZjRhNjhiMWZjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvZ2VuZXJhdGVf
YnVpbHRpbnNfc2VwYXJhdGVfd3JhcHBlci5weQpAQCAtMCwwICsxLDk0IEBACisjIS91c3IvYmlu
L2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2Fz
aGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCByZQoraW1wb3J0IHN0cmlu
ZworZnJvbSBzdHJpbmcgaW1wb3J0IFRlbXBsYXRlCisKK2Zyb20gYnVpbHRpbnNfZ2VuZXJhdG9y
IGltcG9ydCBCdWlsdGluc0dlbmVyYXRvcgorZnJvbSBidWlsdGluc190ZW1wbGF0ZXMgaW1wb3J0
IEJ1aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVzIGFzIFRlbXBsYXRlcworCitsb2cgPSBsb2dnaW5n
LmdldExvZ2dlcignZ2xvYmFsJykKKworCitjbGFzcyBCdWlsdGluc1NlcGFyYXRlV3JhcHBlckdl
bmVyYXRvcihCdWlsdGluc0dlbmVyYXRvcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZGVs
LCBvYmplY3QpOgorICAgICAgICBCdWlsdGluc0dlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBtb2Rl
bCkKKyAgICAgICAgc2VsZi5vYmplY3QgPSBvYmplY3QKKworICAgIGRlZiBvdXRwdXRfZmlsZW5h
bWUoc2VsZik6CisgICAgICAgIHJldHVybiAiJXNCdWlsdGluc1dyYXBwZXIuaCIgJSBzZWxmLm9i
amVjdC5vYmplY3RfbmFtZQorCisgICAgZGVmIG1hY3JvX3ByZWZpeChzZWxmKToKKyAgICAgICAg
cmV0dXJuIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbWFjcm9fcHJlZml4JykKKwor
ICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAg
ICAgICAnbmFtZXNwYWNlJzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCduYW1lc3Bh
Y2UnKSwKKyAgICAgICAgICAgICdoZWFkZXJHdWFyZCc6IHNlbGYub3V0cHV0X2ZpbGVuYW1lKCku
cmVwbGFjZSgnLicsICdfJyksCisgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1hY3Jv
X3ByZWZpeCgpLAorICAgICAgICAgICAgJ29iamVjdE5hbWUnOiBzZWxmLm9iamVjdC5vYmplY3Rf
bmFtZSwKKyAgICAgICAgICAgICdvYmplY3RNYWNybyc6IHNlbGYub2JqZWN0Lm9iamVjdF9uYW1l
LnVwcGVyKCksCisgICAgICAgIH0KKworICAgICAgICBzZWN0aW9ucyA9IFtdCisgICAgICAgIHNl
Y3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2xpY2Vuc2UoKSkKKyAgICAgICAgc2VjdGlvbnMu
YXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5Eb05vdEVkaXRXYXJuaW5nKS5zdWJzdGl0dXRlKGFy
Z3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkhlYWRlcklu
Y2x1ZGVHdWFyZFRvcCkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5k
KHNlbGYuZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVu
ZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlVG9wKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAg
ICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLlNlcGFyYXRlV3JhcHBlckhl
YWRlckJvaWxlcnBsYXRlKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBl
bmQoVGVtcGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZUJvdHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkK
KyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5IZWFkZXJJbmNsdWRl
R3VhcmRCb3R0b20pLnN1YnN0aXR1dGUoYXJncykpCisKKyAgICAgICAgcmV0dXJuICJcblxuIi5q
b2luKHNlY3Rpb25zKQorCisgICAgZGVmIGdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcyhzZWxmKToK
KyAgICAgICAgaGVhZGVyX2luY2x1ZGVzID0gWworICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAor
ICAgICAgICAgICAgICAgICgiV2ViQ29yZSIsICIlc0J1aWx0aW5zLmgiICUgc2VsZi5vYmplY3Qu
b2JqZWN0X25hbWUpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAgICAgKFsiV2ViQ29yZSJd
LAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAiYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuaCIpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAgICAgKFsi
V2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAiYnVpbHRpbnMv
QnVpbHRpblV0aWxzLmgiKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgICAgIChbIldlYkNv
cmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgInJ1bnRpbWUvSWRlbnRp
Zmllci5oIiksCisgICAgICAgICAgICApLAorCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisg
ICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL0pTRnVuY3Rpb24uaCIp
LAorICAgICAgICAgICAgKSwKKyAgICAgICAgXQorCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4o
c2VsZi5nZW5lcmF0ZV9pbmNsdWRlc19mcm9tX2VudHJpZXMoaGVhZGVyX2luY2x1ZGVzKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0
aW5zLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRp
bnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDcwNzA5YjQ4MDgzODhlNjc4ZjNkYjIzODJmNDZhM2Q2MzMzOTA2
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVy
YXRlLWpzLWJ1aWx0aW5zLnB5CkBAIC0wLDAgKzEsMTY0IEBACisjIS91c3IvYmluL2VudiBweXRo
b24KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyMgVGhpcyBzY3JpcHQgZ2VuZXJhdGVzIEMrKyBiaW5kaW5ncyBmb3IgSmF2YVNjcmlw
dCBidWlsdGlucy4KKyMgR2VuZXJhdG9ycyBmb3IgaW5kaXZpZHVhbCBmaWxlcyBhcmUgbG9jYXRl
ZCBpbiB0aGUgYnVpbHRpbnMvIGRpcmVjdG9yeS4KKworaW1wb3J0IGZubWF0Y2gKK2ltcG9ydCBs
b2dnaW5nCitpbXBvcnQgb3B0cGFyc2UKK2ltcG9ydCBvcworCitsb2dnaW5nLmJhc2ljQ29uZmln
KGZvcm1hdD0nJShsZXZlbG5hbWUpczogJShtZXNzYWdlKXMnLCBsZXZlbD1sb2dnaW5nLkVSUk9S
KQorbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcpCisKK2Zyb20gbGF6eXdyaXRlciBp
bXBvcnQgTGF6eUZpbGVXcml0ZXIKKworaW1wb3J0IGJ1aWx0aW5zCitmcm9tIGJ1aWx0aW5zIGlt
cG9ydCAqCisKKworZGVmIGdlbmVyYXRlX2JpbmRpbmdzX2Zvcl9idWlsdGluc19maWxlcyhidWls
dGluc19maWxlcz1bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3V0cHV0X3BhdGg9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uY2F0ZW5hdGVfb3V0cHV0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb21iaW5lZF9vdXRwdXQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZyYW1ld29ya19uYW1lPSIiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZV9vdXRwdXQ9RmFsc2UpOgorCisgICAgZ2Vu
ZXJhdG9ycyA9IFtdCisKKyAgICBtb2RlbCA9IEJ1aWx0aW5zQ29sbGVjdGlvbihmcmFtZXdvcmtf
bmFtZT1mcmFtZXdvcmtfbmFtZSkKKworICAgIGZvciBmaWxlcGF0aCBpbiBidWlsdGluc19maWxl
czoKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVwYXRoLCAiciIpIGFzIGZpbGU6CisgICAgICAgICAg
ICBmaWxlX3RleHQgPSBmaWxlLnJlYWQoKQorICAgICAgICAgICAgZmlsZV9uYW1lID0gb3MucGF0
aC5iYXNlbmFtZShmaWxlcGF0aCkKKworICAgICAgICAgICAgIyBJZiB0aGlzIGlzIGEgdGVzdCBm
aWxlLCB0aGVuIHJld3JpdGUgdGhlIGZpbGVuYW1lIHRvIHJlbW92ZSB0aGUKKyAgICAgICAgICAg
ICMgdGVzdCBydW5uaW5nIG9wdGlvbnMgZW5jb2RlZCBpbnRvIHRoZSBmaWxlbmFtZS4KKyAgICAg
ICAgICAgIGlmIGZpbGVfbmFtZS5zdGFydHN3aXRoKGZyYW1ld29ya19uYW1lKToKKyAgICAgICAg
ICAgICAgICAoXywgb2JqZWN0X25hbWUsIF8pID0gZmlsZV9uYW1lLnNwbGl0KCctJykKKyAgICAg
ICAgICAgICAgICBmaWxlX25hbWUgPSBvYmplY3RfbmFtZSArICcuanMnCisgICAgICAgICAgICBt
b2RlbC5wYXJzZV9idWlsdGluc19maWxlKGZpbGVfbmFtZSwgZmlsZV90ZXh0KQorCisgICAgaWYg
Y29tYmluZWRfb3V0cHV0OgorICAgICAgICBsb2cuZGVidWcoIlVzaW5nIGdlbmVyYXRvciBzdHls
ZTogY29tYmluZWQgZmlsZXMgZm9yIGFsbCBidWlsdGlucy4iKQorICAgICAgICBnZW5lcmF0b3Jz
LmFwcGVuZChCdWlsdGluc0NvbWJpbmVkSGVhZGVyR2VuZXJhdG9yKG1vZGVsKSkKKyAgICAgICAg
Z2VuZXJhdG9ycy5hcHBlbmQoQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9y
KG1vZGVsKSkKKyAgICBlbHNlOgorICAgICAgICBsb2cuZGVidWcoIlVzaW5nIGdlbmVyYXRvciBz
dHlsZTogc2luZ2xlIGZpbGVzIGZvciBlYWNoIGJ1aWx0aW4uIikKKyAgICAgICAgZm9yIG9iamVj
dCBpbiBtb2RlbC5vYmplY3RzOgorICAgICAgICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQoQnVpbHRp
bnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvcihtb2RlbCwgb2JqZWN0KSkKKyAgICAgICAgICAgIGdl
bmVyYXRvcnMuYXBwZW5kKEJ1aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlvbkdlbmVyYXRvciht
b2RlbCwgb2JqZWN0KSkKKworICAgICAgICAgICAgaWYgbW9kZWwuZnJhbWV3b3JrIGlzIEZyYW1l
d29ya3MuV2ViQ29yZToKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3JzLmFwcGVuZChCdWlsdGlu
c1NlcGFyYXRlV3JhcHBlckdlbmVyYXRvcihtb2RlbCwgb2JqZWN0KSkKKworICAgIGxvZy5kZWJ1
ZygiIikKKyAgICBsb2cuZGVidWcoIkdlbmVyYXRpbmcgYmluZGluZ3MgZm9yIGJ1aWx0aW5zLiIp
CisKKyAgICB0ZXN0X3Jlc3VsdF9maWxlX2NvbnRlbnRzID0gW10KKworICAgIGZvciBnZW5lcmF0
b3IgaW4gZ2VuZXJhdG9yczoKKyAgICAgICAgb3V0cHV0X2ZpbGVwYXRoID0gb3MucGF0aC5qb2lu
KG91dHB1dF9wYXRoLCBnZW5lcmF0b3Iub3V0cHV0X2ZpbGVuYW1lKCkpCisgICAgICAgIGxvZy5k
ZWJ1ZygiR2VuZXJhdGluZyBvdXRwdXQgZmlsZTogJXMiICUgZ2VuZXJhdG9yLm91dHB1dF9maWxl
bmFtZSgpKQorICAgICAgICBvdXRwdXQgPSBnZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KCkKKwor
ICAgICAgICBsb2cuZGVidWcoIi0tLSIpCisgICAgICAgIGxvZy5kZWJ1ZygiXG4iICsgb3V0cHV0
KQorICAgICAgICBsb2cuZGVidWcoIi0tLSIpCisgICAgICAgIGlmIGNvbmNhdGVuYXRlX291dHB1
dDoKKyAgICAgICAgICAgIHRlc3RfcmVzdWx0X2ZpbGVfY29udGVudHMuYXBwZW5kKCcjIyMgQmVn
aW4gRmlsZTogJXMnICUgZ2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSgpKQorICAgICAgICAgICAg
dGVzdF9yZXN1bHRfZmlsZV9jb250ZW50cy5hcHBlbmQob3V0cHV0KQorICAgICAgICAgICAgdGVz
dF9yZXN1bHRfZmlsZV9jb250ZW50cy5hcHBlbmQoJyMjIyBFbmQgRmlsZTogJXMnICUgZ2VuZXJh
dG9yLm91dHB1dF9maWxlbmFtZSgpKQorICAgICAgICAgICAgdGVzdF9yZXN1bHRfZmlsZV9jb250
ZW50cy5hcHBlbmQoJycpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2cuZGVidWcoIldy
aXRpbmcgZmlsZTogJXMiICUgb3V0cHV0X2ZpbGVwYXRoKQorICAgICAgICAgICAgb3V0cHV0X2Zp
bGUgPSBMYXp5RmlsZVdyaXRlcihvdXRwdXRfZmlsZXBhdGgsIGZvcmNlX291dHB1dCkKKyAgICAg
ICAgICAgIG91dHB1dF9maWxlLndyaXRlKG91dHB1dCkKKyAgICAgICAgICAgIG91dHB1dF9maWxl
LmNsb3NlKCkKKworICAgIGlmIGNvbmNhdGVuYXRlX291dHB1dDoKKyAgICAgICAgZmlsZW5hbWUg
PSBvcy5wYXRoLmpvaW4ob3MucGF0aC5iYXNlbmFtZShidWlsdGluc19maWxlc1swXSkgKyAnLXJl
c3VsdCcpCisgICAgICAgIG91dHB1dF9maWxlcGF0aCA9IG9zLnBhdGguam9pbihvdXRwdXRfcGF0
aCwgZmlsZW5hbWUpCisgICAgICAgIGxvZy5kZWJ1ZygiV3JpdGluZyBmaWxlOiAlcyIgJSBvdXRw
dXRfZmlsZXBhdGgpIAorICAgICAgICBvdXRwdXRfZmlsZSA9IExhenlGaWxlV3JpdGVyKG91dHB1
dF9maWxlcGF0aCwgZm9yY2Vfb3V0cHV0KQorICAgICAgICBvdXRwdXRfZmlsZS53cml0ZSgnXG4n
LmpvaW4odGVzdF9yZXN1bHRfZmlsZV9jb250ZW50cykpCisgICAgICAgIG91dHB1dF9maWxlLmNs
b3NlKCkKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBhbGxvd2VkX2ZyYW1ld29y
a19uYW1lcyA9IFsnSmF2YVNjcmlwdENvcmUnLCAnV2ViQ29yZSddCisgICAgY2xpX3BhcnNlciA9
IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZT0idXNhZ2U6ICVwcm9nIFtvcHRpb25zXSBCdWls
dGluMS5qcyBbLCBCdWlsdGluMi5qcywgLi4uXSIpCisgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9u
KCItaSIsICItLWlucHV0LWRpcmVjdG9yeSIsIGhlbHA9IklmIHNwZWNpZmllZCwgZ2VuZXJhdGVz
IGJ1aWx0aW5zIGZyb20gYWxsIEphdmFTY3JpcHQgZmlsZXMgaW4gdGhlIHNwZWNpZmllZCBkaXJl
Y3RvcnkgaW4gYWRkaXRpb24gdG8gc3BlY2lmaWMgZmlsZXMgcGFzc2VkIGFzIGFyZ3VtZW50cy4i
KQorICAgIGNsaV9wYXJzZXIuYWRkX29wdGlvbigiLW8iLCAiLS1vdXRwdXQtZGlyZWN0b3J5Iiwg
aGVscD0iRGlyZWN0b3J5IHdoZXJlIGdlbmVyYXRlZCBmaWxlcyBzaG91bGQgYmUgd3JpdHRlbi4i
KQorICAgIGNsaV9wYXJzZXIuYWRkX29wdGlvbigiLS1mcmFtZXdvcmsiLCB0eXBlPSJjaG9pY2Ui
LCBjaG9pY2VzPWFsbG93ZWRfZnJhbWV3b3JrX25hbWVzLCBoZWxwPSJEZXN0aW5hdGlvbiBmcmFt
ZXdvcmsgZm9yIGdlbmVyYXRlZCBmaWxlcy4iKQorICAgIGNsaV9wYXJzZXIuYWRkX29wdGlvbigi
LS1mb3JjZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IkZvcmNlIG91dHB1dCBvZiBnZW5l
cmF0ZWQgc2NyaXB0cywgZXZlbiBpZiBub3RoaW5nIGNoYW5nZWQuIikKKyAgICBjbGlfcGFyc2Vy
LmFkZF9vcHRpb24oIi0tY29tYmluZWQiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJQcm9k
dWNlIG9uZSAuaC8uY3BwIGZpbGUgaW5zdGVhZCBvZiBwcm9kdWNpbmcgb25lIHBlciBidWlsdGlu
IG9iamVjdC4iKQorICAgIGNsaV9wYXJzZXIuYWRkX29wdGlvbigiLXYiLCAiLS1kZWJ1ZyIsIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IkxvZyBleHRyYSBvdXRwdXQgZm9yIGRlYnVnZ2luZyB0
aGUgZ2VuZXJhdG9yIGl0c2VsZi4iKQorICAgIGNsaV9wYXJzZXIuYWRkX29wdGlvbigiLXQiLCAi
LS10ZXN0IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iRW5hYmxlIHRlc3QgbW9kZS4iKQor
CisgICAgYXJnX29wdGlvbnMsIGFyZ192YWx1ZXMgPSBjbGlfcGFyc2VyLnBhcnNlX2FyZ3MoKQor
ICAgIGlmIGxlbihhcmdfdmFsdWVzKSBpcyAwIGFuZCBub3QgYXJnX29wdGlvbnMuaW5wdXRfZGly
ZWN0b3J5OgorICAgICAgICByYWlzZSBQYXJzZUV4Y2VwdGlvbigiQXQgbGVhc3Qgb25lIGlucHV0
IGZpbGUgb3IgZGlyZWN0b3J5IGV4cGVjdGVkLiIpCisKKyAgICBpZiBub3QgYXJnX29wdGlvbnMu
b3V0cHV0X2RpcmVjdG9yeToKKyAgICAgICAgcmFpc2UgUGFyc2VFeGNlcHRpb24oIk1pc3Npbmcg
b3V0cHV0IGRpcmVjdG9yeS4iKQorCisgICAgaWYgYXJnX29wdGlvbnMuZGVidWc6CisgICAgICAg
IGxvZy5zZXRMZXZlbChsb2dnaW5nLkRFQlVHKQorCisgICAgaW5wdXRfZmlsZXBhdGhzID0gYXJn
X3ZhbHVlc1s6XQorICAgIGlmIGFyZ19vcHRpb25zLmlucHV0X2RpcmVjdG9yeToKKyAgICAgICAg
Zm9yIGZpbGVwYXRoIGluIG9zLmxpc3RkaXIoYXJnX29wdGlvbnMuaW5wdXRfZGlyZWN0b3J5KToK
KyAgICAgICAgICAgIGlucHV0X2ZpbGVwYXRocy5hcHBlbmQob3MucGF0aC5qb2luKGFyZ19vcHRp
b25zLmlucHV0X2RpcmVjdG9yeSwgZmlsZXBhdGgpKQorCisgICAgaW5wdXRfZmlsZXBhdGhzID0g
ZmlsdGVyKGxhbWJkYSBuYW1lOiBmbm1hdGNoLmZubWF0Y2gobmFtZSwgJyouanMnKSwgaW5wdXRf
ZmlsZXBhdGhzKQorCisgICAgb3B0aW9ucyA9IHsKKyAgICAgICAgJ291dHB1dF9wYXRoJzogYXJn
X29wdGlvbnMub3V0cHV0X2RpcmVjdG9yeSwKKyAgICAgICAgJ2ZyYW1ld29ya19uYW1lJzogYXJn
X29wdGlvbnMuZnJhbWV3b3JrLAorICAgICAgICAnY29tYmluZWRfb3V0cHV0JzogYXJnX29wdGlv
bnMuY29tYmluZWQsCisgICAgICAgICdmb3JjZV9vdXRwdXQnOiBhcmdfb3B0aW9ucy5mb3JjZSwK
KyAgICAgICAgJ2NvbmNhdGVuYXRlX291dHB1dCc6IGFyZ19vcHRpb25zLnRlc3QsCisgICAgfQor
CisgICAgbG9nLmRlYnVnKCJHZW5lcmF0aW5nIGNvZGUgZm9yIGJ1aWx0aW5zLiIpCisgICAgbG9n
LmRlYnVnKCJQYXJzZWQgb3B0aW9uczoiKQorICAgIGZvciBvcHRpb24sIHZhbHVlIGluIG9wdGlv
bnMuaXRlbXMoKToKKyAgICAgICAgbG9nLmRlYnVnKCIgICAgJXM6ICVzIiAlIChvcHRpb24sIHZh
bHVlKSkKKyAgICBsb2cuZGVidWcoIiIpCisgICAgbG9nLmRlYnVnKCJJbnB1dCBmaWxlczoiKQor
ICAgIGZvciBmaWxlcGF0aCBpbiBpbnB1dF9maWxlcGF0aHM6CisgICAgICAgIGxvZy5kZWJ1Zygi
ICAgICVzIiAlIGZpbGVwYXRoKQorICAgIGxvZy5kZWJ1ZygiIikKKworICAgIHRyeToKKyAgICAg
ICAgZ2VuZXJhdGVfYmluZGluZ3NfZm9yX2J1aWx0aW5zX2ZpbGVzKGJ1aWx0aW5zX2ZpbGVzPWlu
cHV0X2ZpbGVwYXRocywgKipvcHRpb25zKQorICAgIGV4Y2VwdCBQYXJzZUV4Y2VwdGlvbiBhcyBl
OgorICAgICAgICBpZiBhcmdfb3B0aW9ucy50ZXN0OgorICAgICAgICAgICAgbG9nLmVycm9yKGUu
bWVzc2FnZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlICAjIEZvcmNlIHRoZSBi
dWlsZCB0byBmYWlsLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
bGF6eXdyaXRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2xhenl3cml0ZXIu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjkzYTJjNjk3Y2FjYmQ3NzQxZmU5OThlZjE5MGViMWNkNmYyNDUzOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2xhenl3cml0
ZXIucHkKQEAgLTAsMCArMSw1OCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHly
aWdodCAoYykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdo
dCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBBIHdyaXRlciB0aGF0IG9ubHkgdXBkYXRl
cyBmaWxlIGlmIGl0IGFjdHVhbGx5IGNoYW5nZWQuCisKKworY2xhc3MgTGF6eUZpbGVXcml0ZXI6
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVwYXRoLCBmb3JjZV9vdXRwdXQpOgorICAgICAg
ICBzZWxmLl9maWxlcGF0aCA9IGZpbGVwYXRoCisgICAgICAgIHNlbGYuX291dHB1dCA9ICIiCisg
ICAgICAgIHNlbGYuZm9yY2Vfb3V0cHV0ID0gZm9yY2Vfb3V0cHV0CisKKyAgICBkZWYgd3JpdGUo
c2VsZiwgdGV4dCk6CisgICAgICAgIHNlbGYuX291dHB1dCArPSB0ZXh0CisKKyAgICBkZWYgY2xv
c2Uoc2VsZik6CisgICAgICAgIHRleHRfY2hhbmdlZCA9IFRydWUKKyAgICAgICAgc2VsZi5fb3V0
cHV0ID0gc2VsZi5fb3V0cHV0LnJzdHJpcCgpICsgIlxuIgorCisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIGlmIHNlbGYuZm9yY2Vfb3V0cHV0OgorICAgICAgICAgICAgICAgIHJhaXNlCisKKyAg
ICAgICAgICAgIHJlYWRfZmlsZSA9IG9wZW4oc2VsZi5fZmlsZXBhdGgsICJyIikKKyAgICAgICAg
ICAgIG9sZF90ZXh0ID0gcmVhZF9maWxlLnJlYWQoKQorICAgICAgICAgICAgcmVhZF9maWxlLmNs
b3NlKCkKKyAgICAgICAgICAgIHRleHRfY2hhbmdlZCA9IG9sZF90ZXh0ICE9IHNlbGYuX291dHB1
dAorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAjIElnbm9yZSwganVzdCBvdmVyd3JpdGUg
YnkgZGVmYXVsdAorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGlmIHRleHRfY2hhbmdlZCBv
ciBzZWxmLmZvcmNlX291dHB1dDoKKyAgICAgICAgICAgIG91dF9maWxlID0gb3BlbihzZWxmLl9m
aWxlcGF0aCwgInciKQorICAgICAgICAgICAgb3V0X2ZpbGUud3JpdGUoc2VsZi5fb3V0cHV0KQor
ICAgICAgICAgICAgb3V0X2ZpbGUuY2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9t
aXNlLUNvbWJpbmVkLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmI0NWQ4MWNlYjllZDkwNjQyNTg0ZmEwYmI0NThkY2YwZGJhZGMzYTIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZh
U2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtQ29tYmluZWQuanMKQEAgLTAsMCArMSw1NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5j
dGlvbiByZWplY3RQcm9taXNlKHByb21pc2UsIHJlYXNvbikKK3sKKyAgICAidXNlIHN0cmljdCI7
CisKKyAgICB2YXIgcmVhY3Rpb25zID0gcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0aW9uczsK
KyAgICBwcm9taXNlLkBwcm9taXNlUmVzdWx0ID0gcmVhc29uOworICAgIHByb21pc2UuQHByb21p
c2VGdWxmaWxsUmVhY3Rpb25zID0gdW5kZWZpbmVkOworICAgIHByb21pc2UuQHByb21pc2VSZWpl
Y3RSZWFjdGlvbnMgPSB1bmRlZmluZWQ7CisgICAgcHJvbWlzZS5AcHJvbWlzZVN0YXRlID0gQHBy
b21pc2VSZWplY3RlZDsKKworICAgIEBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24ucHJvbWlzZVJl
amVjdGVkKHByb21pc2UsIHJlYXNvbiwgcmVhY3Rpb25zKTsKKworICAgIEB0cmlnZ2VyUHJvbWlz
ZVJlYWN0aW9ucyhyZWFjdGlvbnMsIHJlYXNvbik7Cit9CisKK2Z1bmN0aW9uIGZ1bGZpbGxQcm9t
aXNlKHByb21pc2UsIHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciByZWFj
dGlvbnMgPSBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9uczsKKyAgICBwcm9taXNlLkBw
cm9taXNlUmVzdWx0ID0gdmFsdWU7CisgICAgcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlv
bnMgPSB1bmRlZmluZWQ7CisgICAgcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucyA9IHVu
ZGVmaW5lZDsKKyAgICBwcm9taXNlLkBwcm9taXNlU3RhdGUgPSBAcHJvbWlzZUZ1bGZpbGxlZDsK
KworICAgIEBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24ucHJvbWlzZUZ1bGZpbGxlZChwcm9taXNl
LCB2YWx1ZSwgcmVhY3Rpb25zKTsKKworICAgIEB0cmlnZ2VyUHJvbWlzZVJlYWN0aW9ucyhyZWFj
dGlvbnMsIHZhbHVlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJp
bmVkLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2
YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQ0
OGI5ODMyYjY2YTRiZGYwZmUyYzRiZDg3MDEwZjYwYWQ3MmRmMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRD
b3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzCkBAIC0wLDAgKzEsNzggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworZnVu
Y3Rpb24gZXZlcnkoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCit7CisgICAgInVzZSBzdHJpY3Qi
OworCisgICAgaWYgKHRoaXMgPT09IG51bGwpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9y
KCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwi
KTsKKyAgICAKKyAgICBpZiAodGhpcyA9PT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyBuZXcg
QFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5v
dCBiZSB1bmRlZmluZWQiKTsKKyAgICAKKyAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMpOwor
ICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsKKworICAgIGlmICh0eXBl
b2YgY2FsbGJhY2sgIT09ICJmdW5jdGlvbiIpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9y
KCJBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7Cisg
ICAgCisgICAgdmFyIHRoaXNBcmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sx
XSA6IHVuZGVmaW5lZDsKKyAgICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsr
KSB7CisgICAgICAgIGlmICghKGkgaW4gYXJyYXkpKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIGlmICghY2FsbGJhY2suQGNhbGwodGhpc0FyZywgYXJyYXlbaV0sIGksIGFycmF5KSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Z1bmN0aW9uIGZvckVhY2goY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCit7CisgICAg
InVzZSBzdHJpY3QiOworCisgICAgaWYgKHRoaXMgPT09IG51bGwpCisgICAgICAgIHRocm93IG5l
dyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCByZXF1aXJlcyB0aGF0IHx0aGlz
fCBub3QgYmUgbnVsbCIpOworICAgIAorICAgIGlmICh0aGlzID09PSB1bmRlZmluZWQpCisgICAg
ICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCByZXF1aXJl
cyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkIik7CisgICAgCisgICAgdmFyIGFycmF5ID0g
QE9iamVjdCh0aGlzKTsKKyAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7
CisKKyAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQorICAgICAgICB0aHJv
dyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmZvckVhY2ggY2FsbGJhY2sgbXVzdCBi
ZSBhIGZ1bmN0aW9uIik7CisgICAgCisgICAgdmFyIHRoaXNBcmcgPSBhcmd1bWVudHMubGVuZ3Ro
ID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDsKKyAgICAKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChpIGluIGFycmF5KQorICAgICAgICAg
ICAgY2FsbGJhY2suQGNhbGwodGhpc0FyZywgYXJyYXlbaV0sIGksIGFycmF5KTsKKyAgICB9Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlu
cy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmluZWQuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWls
dGluQ29uc3RydWN0b3ItQ29tYmluZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWU4YzFiNDQ5NmNjNTQ0ZjQw
NzczOTUwNDJjZmQyNGU4YTM5NDY2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25z
dHJ1Y3Rvci1Db21iaW5lZC5qcwpAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIG9mKC8qIGl0ZW1zLi4uICovKQor
eworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3Ro
OworICAgIC8vIFRPRE86IE5lZWQgaXNDb25zdHJ1Y3Rvcih0aGlzKSBpbnN0ZWFkIG9mIHR5cGVv
ZiAiZnVuY3Rpb24iIGNoZWNrLgorICAgIHZhciBhcnJheSA9IHR5cGVvZiB0aGlzID09PSAnZnVu
Y3Rpb24nID8gbmV3IHRoaXMobGVuZ3RoKSA6IG5ldyBAQXJyYXkobGVuZ3RoKTsKKyAgICBmb3Ig
KHZhciBrID0gMDsgayA8IGxlbmd0aDsgKytrKQorICAgICAgICBAcHV0QnlWYWxEaXJlY3QoYXJy
YXksIGssIGFyZ3VtZW50c1trXSk7CisgICAgYXJyYXkubGVuZ3RoID0gbGVuZ3RoOworICAgIHJl
dHVybiBhcnJheTsKK30KKworZnVuY3Rpb24gZnJvbShpdGVtcyAvKiwgbWFwRm4sIHRoaXNBcmcg
Ki8pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIHRoaXNPYmogPSB0aGlzOworCisg
ICAgdmFyIG1hcEZuID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRl
ZmluZWQ7CisKKyAgICB2YXIgdGhpc0FyZzsKKworICAgIGlmIChtYXBGbiAhPT0gdW5kZWZpbmVk
KSB7CisgICAgICAgIGlmICh0eXBlb2YgbWFwRm4gIT09ICJmdW5jdGlvbiIpCisgICAgICAgICAg
ICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkuZnJvbSByZXF1aXJlcyB0aGF0IHRoZSBzZWNv
bmQgYXJndW1lbnQsIHdoZW4gcHJvdmlkZWQsIGJlIGEgZnVuY3Rpb24iKTsKKworICAgICAgICBp
ZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpCisgICAgICAgICAgICB0aGlzQXJnID0gYXJndW1lbnRz
WzJdOworICAgIH0KKworICAgIGlmIChpdGVtcyA9PSBudWxsKQorICAgICAgICB0aHJvdyBuZXcg
QFR5cGVFcnJvcigiQXJyYXkuZnJvbSByZXF1aXJlcyBhbiBhcnJheS1saWtlIG9iamVjdCAtIG5v
dCBudWxsIG9yIHVuZGVmaW5lZCIpOworCisgICAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gaXRlbXNb
QHN5bWJvbEl0ZXJhdG9yXTsKKyAgICBpZiAoaXRlcmF0b3JNZXRob2QgIT0gbnVsbCkgeworICAg
ICAgICBpZiAodHlwZW9mIGl0ZXJhdG9yTWV0aG9kICE9PSAiZnVuY3Rpb24iKQorICAgICAgICAg
ICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LmZyb20gcmVxdWlyZXMgdGhhdCB0aGUgcHJv
cGVydHkgb2YgdGhlIGZpcnN0IGFyZ3VtZW50LCBpdGVtc1tTeW1ib2wuaXRlcmF0b3JdLCB3aGVu
IGV4aXN0cywgYmUgYSBmdW5jdGlvbiIpOworCisgICAgICAgIC8vIFRPRE86IE5lZWQgaXNDb25z
dHJ1Y3Rvcih0aGlzT2JqKSBpbnN0ZWFkIG9mIHR5cGVvZiAiZnVuY3Rpb24iIGNoZWNrLgorICAg
ICAgICB2YXIgcmVzdWx0ID0gKHR5cGVvZiB0aGlzT2JqID09PSAiZnVuY3Rpb24iKSA/IEBPYmpl
Y3QobmV3IHRoaXNPYmooKSkgOiBbXTsKKworICAgICAgICB2YXIgayA9IDA7CisgICAgICAgIHZh
ciBpdGVyYXRvciA9IGl0ZXJhdG9yTWV0aG9kLkBjYWxsKGl0ZW1zKTsKKworICAgICAgICAvLyBT
aW5jZSBmb3Itb2YgbG9vcCBvbmNlIG1vcmUgbG9va3MgdXAgdGhlIEBAaXRlcmF0b3IgcHJvcGVy
dHkgb2YgYSBnaXZlbiBpdGVyYWJsZSwKKyAgICAgICAgLy8gaXQgY291bGQgYmUgb2JzZXJ2YWJs
ZSBpZiB0aGUgdXNlciBkZWZpbmVzIGEgZ2V0dGVyIGZvciBAQGl0ZXJhdG9yLgorICAgICAgICAv
LyBUbyBhdm9pZCB0aGlzIHNpdHVhdGlvbiwgd2UgZGVmaW5lIGEgd3JhcHBlciBvYmplY3QgdGhh
dCBAQGl0ZXJhdG9yIGp1c3QgcmV0dXJucyBhIGdpdmVuIGl0ZXJhdG9yLgorICAgICAgICB2YXIg
d3JhcHBlciA9IHsKKyAgICAgICAgICAgIFtAc3ltYm9sSXRlcmF0b3JdKCkgeworICAgICAgICAg
ICAgICAgIHJldHVybiBpdGVyYXRvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAg
ICAgICBmb3IgKHZhciB2YWx1ZSBvZiB3cmFwcGVyKSB7CisgICAgICAgICAgICBpZiAobWFwRm4p
CisgICAgICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywgdGhpc0FyZyA9PT0g
dW5kZWZpbmVkID8gbWFwRm4odmFsdWUsIGspIDogbWFwRm4uQGNhbGwodGhpc0FyZywgdmFsdWUs
IGspKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3Qo
cmVzdWx0LCBrLCB2YWx1ZSk7CisgICAgICAgICAgICBrICs9IDE7CisgICAgICAgIH0KKworICAg
ICAgICByZXN1bHQubGVuZ3RoID0gazsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisK
KyAgICB2YXIgYXJyYXlMaWtlID0gQE9iamVjdChpdGVtcyk7CisgICAgdmFyIGFycmF5TGlrZUxl
bmd0aCA9IEB0b0xlbmd0aChhcnJheUxpa2UubGVuZ3RoKTsKKworICAgIC8vIFRPRE86IE5lZWQg
aXNDb25zdHJ1Y3Rvcih0aGlzT2JqKSBpbnN0ZWFkIG9mIHR5cGVvZiAiZnVuY3Rpb24iIGNoZWNr
LgorICAgIHZhciByZXN1bHQgPSAodHlwZW9mIHRoaXNPYmogPT09ICJmdW5jdGlvbiIpID8gQE9i
amVjdChuZXcgdGhpc09iaihhcnJheUxpa2VMZW5ndGgpKSA6IG5ldyBAQXJyYXkoYXJyYXlMaWtl
TGVuZ3RoKTsKKworICAgIHZhciBrID0gMDsKKyAgICB3aGlsZSAoayA8IGFycmF5TGlrZUxlbmd0
aCkgeworICAgICAgICB2YXIgdmFsdWUgPSBhcnJheUxpa2Vba107CisgICAgICAgIGlmIChtYXBG
bikKKyAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHRoaXNBcmcgPT09IHVu
ZGVmaW5lZCA/IG1hcEZuKHZhbHVlLCBrKSA6IG1hcEZuLkBjYWxsKHRoaXNBcmcsIHZhbHVlLCBr
KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGss
IHZhbHVlKTsKKyAgICAgICAgayArPSAxOworICAgIH0KKworICAgIHJlc3VsdC5sZW5ndGggPSBh
cnJheUxpa2VMZW5ndGg7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEJ1
aWx0aW4tU2VwYXJhdGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9XZWJDb3JlLUd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2
ODg3ZTdlZGNhZDZiMmE4N2VmNWU3ODI5ZDI5M2NlZjAxZTM3MjIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUd1
YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBAb3B0aW9uYWw9U1RSRUFNU19BUEkK
KworZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbUxvY2tlZChzdHJlYW0pCit7CisgICAidXNlIHN0
cmljdCI7CisKKyAgICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjsKK30KKworCitmdW5jdGlvbiBj
YW5jZWxSZWFkYWJsZVN0cmVhbShzdHJlYW0sIHJlYXNvbikKK3sKKyAgICAidXNlIHN0cmljdCI7
CisKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xvc2VkKQorICAg
ICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09
IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChz
dHJlYW0uQHN0b3JlZEVycm9yKTsKKyAgICBzdHJlYW0uQHF1ZXVlID0gW107CisgICAgQGZpbmlz
aENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pOworICAgIHJldHVybiBAcHJvbWlzZUludm9r
ZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsICJjYW5jZWwiLCBbcmVhc29uXSkudGhl
bihmdW5jdGlvbigpIHsgfSk7Cit9CisKKworZnVuY3Rpb24gcHJvbWlzZUludm9rZU9yTm9vcChv
YmplY3QsIGtleSwgYXJncykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB0cnkgeworICAg
ICAgICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07CisgICAgICAgIGlmICh0eXBlb2YgbWV0aG9k
ID09PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsK
KyAgICAgICAgdmFyIHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBhcmdzKTsKKyAgICAg
ICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpOworICAgIH0KKyAgICBjYXRjaChlcnJv
cikgeworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpOworICAgIH0KK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dl
YkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVp
bHRpbi1TZXBhcmF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZjVlN2IzYjg0MWQ1MTBhMjlmNTc2Zjk0MzYw
OTllOGUyNzYyNjU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFy
YXRlLmpzCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24g
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisvLyBAb3B0aW9uYWw9U1RSRUFNU19BUEkKKy8vIEBpbnRlcm5hbAorCitm
dW5jdGlvbiBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKHN0cmVhbSkKK3sKKyAgICJ1c2Ugc3RyaWN0
IjsKKworICAgIHJldHVybiAhIXN0cmVhbS5AcmVhZGVyOworfQorCisKK2Z1bmN0aW9uIGNhbmNl
bFJlYWRhYmxlU3RyZWFtKHN0cmVhbSwgcmVhc29uKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKwor
ICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQpCisgICAgICAg
IHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJl
YWRhYmxlU3RyZWFtRXJyb3JlZCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHN0cmVh
bS5Ac3RvcmVkRXJyb3IpOworICAgIHN0cmVhbS5AcXVldWUgPSBbXTsKKyAgICBAZmluaXNoQ2xv
c2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7CisgICAgcmV0dXJuIEBwcm9taXNlSW52b2tlT3JO
b29wKHN0cmVhbS5AdW5kZXJseWluZ1NvdXJjZSwgImNhbmNlbCIsIFtyZWFzb25dKS50aGVuKGZ1
bmN0aW9uKCkgeyB9KTsKK30KKworCitmdW5jdGlvbiBwcm9taXNlSW52b2tlT3JOb29wKG9iamVj
dCwga2V5LCBhcmdzKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHRyeSB7CisgICAgICAg
IHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTsKKyAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QgPT09
ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAg
ICAgICB2YXIgcmVzdWx0ID0gbWV0aG9kLkBhcHBseShvYmplY3QsIGFyZ3MpOworICAgICAgICBy
ZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7CisgICAgfQorICAgIGNhdGNoKGVycm9yKSB7
CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7CisgICAgfQorfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29y
ZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjliZGM4ZDNiN2U5YmUyOTgwYWZkZDZiNjEzOGMwNDg4ZmViMjZhMGYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWls
dGlucy9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMKQEAgLTAsMCArMSw2MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9u
IGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQoc3RyZWFtKQoreworICAgInVzZSBzdHJpY3QiOworCisg
ICAgcmV0dXJuICEhc3RyZWFtLkByZWFkZXI7Cit9CisKKworZnVuY3Rpb24gY2FuY2VsUmVhZGFi
bGVTdHJlYW0oc3RyZWFtLCByZWFzb24pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYg
KHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUNsb3NlZCkKKyAgICAgICAgcmV0dXJu
IFByb21pc2UucmVzb2x2ZSgpOworICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVT
dHJlYW1FcnJvcmVkKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoc3RyZWFtLkBzdG9y
ZWRFcnJvcik7CisgICAgc3RyZWFtLkBxdWV1ZSA9IFtdOworICAgIEBmaW5pc2hDbG9zaW5nUmVh
ZGFibGVTdHJlYW0oc3RyZWFtKTsKKyAgICByZXR1cm4gQHByb21pc2VJbnZva2VPck5vb3Aoc3Ry
ZWFtLkB1bmRlcmx5aW5nU291cmNlLCAiY2FuY2VsIiwgW3JlYXNvbl0pLnRoZW4oZnVuY3Rpb24o
KSB7IH0pOworfQorCisKK2Z1bmN0aW9uIHByb21pc2VJbnZva2VPck5vb3Aob2JqZWN0LCBrZXks
IGFyZ3MpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdHJ5IHsKKyAgICAgICAgdmFyIG1l
dGhvZCA9IG9iamVjdFtrZXldOworICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gInVuZGVm
aW5lZCIpCisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIHZh
ciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9iamVjdCwgYXJncyk7CisgICAgICAgIHJldHVybiBQ
cm9taXNlLnJlc29sdmUocmVzdWx0KTsKKyAgICB9CisgICAgY2F0Y2goZXJyb3IpIHsKKyAgICAg
ICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLXhtbENh
c2luZ1Rlc3QtU2VwYXJhdGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0
cy9idWlsdGlucy9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZGUzOTNiYzU5ODE0MjgyODdlMGYwNDMxOWRiNmU0MjAyYjU1ZTI2OAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUt
eG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcwpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gQG9wdGlvbmFsPVNUUkVBTVNfQVBJ
CisvLyBAaW50ZXJuYWwKKworZnVuY3Rpb24geG1sQ2FzaW5nVGVzdChzdHJlYW0pCit7CisgICAi
dXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjsKK30KKworCitmdW5j
dGlvbiBjc3NDYXNpbmdUZXN0KHN0cmVhbSwgcmVhc29uKQoreworICAgICJ1c2Ugc3RyaWN0IjsK
KworICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQpCisgICAg
ICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0g
QHJlYWRhYmxlU3RyZWFtRXJyb3JlZCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHN0
cmVhbS5Ac3RvcmVkRXJyb3IpOworICAgIHN0cmVhbS5AcXVldWUgPSBbXTsKKyAgICBAZmluaXNo
Q2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7CisgICAgcmV0dXJuIEBwcm9taXNlSW52b2tl
T3JOb29wKHN0cmVhbS5AdW5kZXJseWluZ1NvdXJjZSwgImNhbmNlbCIsIFtyZWFzb25dKS50aGVu
KGZ1bmN0aW9uKCkgeyB9KTsKK30KKworCitmdW5jdGlvbiB1cmxDYXNpbmdUZXN0KG9iamVjdCwg
a2V5LCBhcmdzKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHRyeSB7CisgICAgICAgIHZh
ciBtZXRob2QgPSBvYmplY3Rba2V5XTsKKyAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QgPT09ICJ1
bmRlZmluZWQiKQorICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgICAg
ICB2YXIgcmVzdWx0ID0gbWV0aG9kLkBhcHBseShvYmplY3QsIGFyZ3MpOworICAgICAgICByZXR1
cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7CisgICAgfQorICAgIGNhdGNoKGVycm9yKSB7Cisg
ICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7CisgICAgfQorfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQv
SmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzLXJlc3VsdCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3Jp
cHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1Db21iaW5lZC5qcy1yZXN1bHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Nj
OGQ2ZWYwZmUxNmI5M2YyMmFmMWMzNWI2YmUyNTljNGZkNzA0NQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0ph
dmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1Db21iaW5lZC5qcy1yZXN1bHQKQEAgLTAsMCAr
MSwxNjggQEAKKyMjIyBCZWdpbiBGaWxlOiBKU0NCdWlsdGlucy5oCisvKgorICogQ29weXJpZ2h0
IChjKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKiAKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
KiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkg
Z2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBz
Y3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5z
LnB5CisKKyNpZm5kZWYgSlNDQnVpbHRpbnNfaAorI2RlZmluZSBKU0NCdWlsdGluc19oCisKK25h
bWVzcGFjZSBKU0MgeworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgVk07CisKK2Vu
dW0gY2xhc3MgQ29uc3RydWN0QWJpbGl0eSA6IHVuc2lnbmVkOworfQorCituYW1lc3BhY2UgSlND
IHsKKworLyogQnVpbHRpbi5Qcm9taXNlICovCitleHRlcm4gY29uc3QgY2hhciogc19idWlsdGlu
UHJvbWlzZVJlamVjdFByb21pc2VDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2J1aWx0aW5Qcm9t
aXNlUmVqZWN0UHJvbWlzZUNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RB
YmlsaXR5IHNfYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHk7
CitleHRlcm4gY29uc3QgY2hhciogc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZTsK
K2V4dGVybiBjb25zdCBpbnQgc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZUxlbmd0
aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvbWlzZUZ1
bGZpbGxQcm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHk7CisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hf
QlVJTFRJTlBST01JU0VfQlVJTFRJTl9EQVRBKG1hY3JvKSBcCisgICAgbWFjcm8ocmVqZWN0UHJv
bWlzZSwgYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNlLCAyKSBcCisgICAgbWFjcm8oZnVsZmls
bFByb21pc2UsIGJ1aWx0aW5Qcm9taXNlRnVsZmlsbFByb21pc2UsIDIpIFwKKworI2RlZmluZSBK
U0NfQlVJTFRJTl9CVUlMVElOUFJPTUlTRV9SRUpFQ1RQUk9NSVNFIDEKKyNkZWZpbmUgSlNDX0JV
SUxUSU5fQlVJTFRJTlBST01JU0VfRlVMRklMTFBST01JU0UgMQorCisjZGVmaW5lIEpTQ19GT1JF
QUNIX0JVSUxUSU5fQ09ERShtYWNybykgXAorICAgIG1hY3JvKGJ1aWx0aW5Qcm9taXNlUmVqZWN0
UHJvbWlzZUNvZGUsIHJlamVjdFByb21pc2UsIHNfYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNl
Q29kZUxlbmd0aCkgXAorICAgIG1hY3JvKGJ1aWx0aW5Qcm9taXNlRnVsZmlsbFByb21pc2VDb2Rl
LCBmdWxmaWxsUHJvbWlzZSwgc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZUxlbmd0
aCkgXAorCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykg
XAorICAgIG1hY3JvKGZ1bGZpbGxQcm9taXNlKSBcCisgICAgbWFjcm8ocmVqZWN0UHJvbWlzZSkg
XAorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9u
TmFtZSwgYXJndW1lbnRDb3VudCkgXAorICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2Rl
TmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKworSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERF
Q0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRP
UgorCisjZGVmaW5lIEpTQ19CVUlMVElOX0VYSVNUUyhvYmplY3QsIGZ1bmMpIGRlZmluZWQgSlND
X0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMKKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZiAvLyBKU0NCdWlsdGluc19oCisKKyMjIyBFbmQgRmlsZTogSlNDQnVpbHRpbnMuaAor
CisjIyMgQmVnaW4gRmlsZTogSlNDQnVpbHRpbnMuY3BwCisvKgorICogQ29weXJpZ2h0IChjKSAy
MDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKiAKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAq
LworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJh
dGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorCisjaW5jbHVk
ZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1
ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb21pc2VSZWplY3RQcm9t
aXNlQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENv
bnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNvZGVMZW5n
dGggPSA1NDE7Citjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNvZGUg
PQorICAgIihmdW5jdGlvbiAocHJvbWlzZSwgcmVhc29uKVxuIiBcCisgICAie1xuIiBcCisgICAi
ICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdmFyIHJlYWN0aW9u
cyA9IHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnM7XG4iIFwKKyAgICIgICAgcHJvbWlz
ZS5AcHJvbWlzZVJlc3VsdCA9IHJlYXNvbjtcbiIgXAorICAgIiAgICBwcm9taXNlLkBwcm9taXNl
RnVsZmlsbFJlYWN0aW9ucyA9IHVuZGVmaW5lZDtcbiIgXAorICAgIiAgICBwcm9taXNlLkBwcm9t
aXNlUmVqZWN0UmVhY3Rpb25zID0gdW5kZWZpbmVkO1xuIiBcCisgICAiICAgIHByb21pc2UuQHBy
b21pc2VTdGF0ZSA9IEBwcm9taXNlUmVqZWN0ZWQ7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICBA
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLnByb21pc2VSZWplY3RlZChwcm9taXNlLCByZWFzb24s
IHJlYWN0aW9ucyk7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICBAdHJpZ2dlclByb21pc2VSZWFj
dGlvbnMocmVhY3Rpb25zLCByZWFzb24pO1xuIiBcCisgICAifSlcbiIgXAorOworCitjb25zdCBK
U0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZUNv
bnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsK
K2NvbnN0IGludCBzX2J1aWx0aW5Qcm9taXNlRnVsZmlsbFByb21pc2VDb2RlTGVuZ3RoID0gNTQw
OworY29uc3QgY2hhciogc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZSA9CisgICAi
KGZ1bmN0aW9uIChwcm9taXNlLCB2YWx1ZSlcbiIgXAorICAgIntcbiIgXAorICAgIiAgICBcInVz
ZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHZhciByZWFjdGlvbnMgPSBwcm9t
aXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucztcbiIgXAorICAgIiAgICBwcm9taXNlLkBwcm9t
aXNlUmVzdWx0ID0gdmFsdWU7XG4iIFwKKyAgICIgICAgcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxS
ZWFjdGlvbnMgPSB1bmRlZmluZWQ7XG4iIFwKKyAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlamVj
dFJlYWN0aW9ucyA9IHVuZGVmaW5lZDtcbiIgXAorICAgIiAgICBwcm9taXNlLkBwcm9taXNlU3Rh
dGUgPSBAcHJvbWlzZUZ1bGZpbGxlZDtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIEBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24ucHJvbWlzZUZ1bGZpbGxlZChwcm9taXNlLCB2YWx1ZSwgcmVhY3Rp
b25zKTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIEB0cmlnZ2VyUHJvbWlzZVJlYWN0aW9ucyhy
ZWFjdGlvbnMsIHZhbHVlKTtcbiIgXAorICAgIn0pXG4iIFwKKzsKKworCisjZGVmaW5lIERFRklO
RV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50
KSBcCitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZN
JiB2bSkgXAore1wKKyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1l
IyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFt
ZSMjU291cmNlKCkpOyB9CitKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5f
R0VORVJBVE9SKQorI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgorCisKK30gLy8gbmFt
ZXNwYWNlIEpTQworIyMjIEVuZCBGaWxlOiBKU0NCdWlsdGlucy5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFT
Y3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzLXJlc3VsdCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRD
b3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzLXJlc3VsdApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODlm
MWU2NWMwMTU0ZDk0NTZjMmQ5ZTlkZmU1N2U5NTRlYTk1MTcwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2
YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMtcmVzdWx0CkBAIC0wLDAg
KzEsMTkyIEBACisjIyMgQmVnaW4gRmlsZTogSlNDQnVpbHRpbnMuaAorLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAq
IAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGlj
YWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkg
dGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVp
bHRpbnMucHkKKworI2lmbmRlZiBKU0NCdWlsdGluc19oCisjZGVmaW5lIEpTQ0J1aWx0aW5zX2gK
KworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBWTTsK
KworZW51bSBjbGFzcyBDb25zdHJ1Y3RBYmlsaXR5IDogdW5zaWduZWQ7Cit9CisKK25hbWVzcGFj
ZSBKU0MgeworCisvKiBCdWlsdGluLnByb3RvdHlwZSAqLworZXh0ZXJuIGNvbnN0IGNoYXIqIHNf
YnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19idWlsdGluUHJv
dG90eXBlRXZlcnlDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0
eSBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNv
bnN0IGNoYXIqIHNfYnVpbHRpblByb3RvdHlwZUZvckVhY2hDb2RlOworZXh0ZXJuIGNvbnN0IGlu
dCBzX2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6
OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGVDb25zdHJ1Y3RB
YmlsaXR5OworCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5QUk9UT1RZUEVfQlVJTFRJTl9E
QVRBKG1hY3JvKSBcCisgICAgbWFjcm8oZXZlcnksIGJ1aWx0aW5Qcm90b3R5cGVFdmVyeSwgMSkg
XAorICAgIG1hY3JvKGZvckVhY2gsIGJ1aWx0aW5Qcm90b3R5cGVGb3JFYWNoLCAxKSBcCisKKyNk
ZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTlBST1RPVFlQRV9FVkVSWSAxCisjZGVmaW5lIEpTQ19C
VUlMVElOX0JVSUxUSU5QUk9UT1RZUEVfRk9SRUFDSCAxCisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hf
QlVJTFRJTl9DT0RFKG1hY3JvKSBcCisgICAgbWFjcm8oYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29k
ZSwgZXZlcnksIHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZUxlbmd0aCkgXAorICAgIG1hY3Jv
KGJ1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZSwgZm9yRWFjaCwgc19idWlsdGluUHJvdG90eXBl
Rm9yRWFjaENvZGVMZW5ndGgpIFwKKworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNU
SU9OX05BTUUobWFjcm8pIFwKKyAgICBtYWNybyhldmVyeSkgXAorICAgIG1hY3JvKGZvckVhY2gp
IFwKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlv
bk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKKyAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29k
ZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisKK0pTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShE
RUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFU
T1IKKworI2RlZmluZSBKU0NfQlVJTFRJTl9FWElTVFMob2JqZWN0LCBmdW5jKSBkZWZpbmVkIEpT
Q19CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYgLy8gSlNDQnVpbHRpbnNfaAorCisjIyMgRW5kIEZpbGU6IEpTQ0J1aWx0aW5zLmgK
KworIyMjIEJlZ2luIEZpbGU6IEpTQ0J1aWx0aW5zLmNwcAorLyoKKyAqIENvcHlyaWdodCAoYykg
MjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KGMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqIAorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
IAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBn
ZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNj
cmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMu
cHkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisKKyNp
bmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisj
aW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvdG90eXBlRXZl
cnlDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29u
c3RydWN0OworY29uc3QgaW50IHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZUxlbmd0aCA9IDEw
MTU7Citjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGUgPQorICAgIihmdW5j
dGlvbiAoY2FsbGJhY2sgKVxuIiBcCisgICAie1xuIiBcCisgICAiICAgIFwidXNlIHN0cmljdFwi
O1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgaWYgKHRoaXMgPT09IG51bGwpXG4iIFwKKyAgICIg
ICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVp
cmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsXCIpO1xuIiBcCisgICAiICAgIFxuIiBcCisgICAi
ICAgIGlmICh0aGlzID09PSB1bmRlZmluZWQpXG4iIFwKKyAgICIgICAgICAgIHRocm93IG5ldyBA
VHlwZUVycm9yKFwiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5v
dCBiZSB1bmRlZmluZWRcIik7XG4iIFwKKyAgICIgICAgXG4iIFwKKyAgICIgICAgdmFyIGFycmF5
ID0gQE9iamVjdCh0aGlzKTtcbiIgXAorICAgIiAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFy
cmF5Lmxlbmd0aCk7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICBpZiAodHlwZW9mIGNhbGxiYWNr
ICE9PSBcImZ1bmN0aW9uXCIpXG4iIFwKKyAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9y
KFwiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvblwiKTtc
biIgXAorICAgIiAgICBcbiIgXAorICAgIiAgICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50cy5sZW5n
dGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuIiBcCisgICAiICAgIFxuIiBcCisg
ICAiICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiIgXAorICAgIiAgICAg
ICAgaWYgKCEoaSBpbiBhcnJheSkpXG4iIFwKKyAgICIgICAgICAgICAgICBjb250aW51ZTtcbiIg
XAorICAgIiAgICAgICAgaWYgKCFjYWxsYmFjay5AY2FsbCh0aGlzQXJnLCBhcnJheVtpXSwgaSwg
YXJyYXkpKVxuIiBcCisgICAiICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuIiBcCisgICAiICAg
IH1cbiIgXAorICAgIiAgICBcbiIgXAorICAgIiAgICByZXR1cm4gdHJ1ZTtcbiIgXAorICAgIn0p
XG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb3RvdHlw
ZUZvckVhY2hDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fu
bm90Q29uc3RydWN0OworY29uc3QgaW50IHNfYnVpbHRpblByb3RvdHlwZUZvckVhY2hDb2RlTGVu
Z3RoID0gOTExOworY29uc3QgY2hhciogc19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGUgPQor
ICAgIihmdW5jdGlvbiAoY2FsbGJhY2sgKVxuIiBcCisgICAie1xuIiBcCisgICAiICAgIFwidXNl
IHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgaWYgKHRoaXMgPT09IG51bGwpXG4i
IFwKKyAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkucHJvdG90eXBlLmZv
ckVhY2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGxcIik7XG4iIFwKKyAgICIgICAg
XG4iIFwKKyAgICIgICAgaWYgKHRoaXMgPT09IHVuZGVmaW5lZClcbiIgXAorICAgIiAgICAgICAg
dGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCByZXF1aXJlcyB0
aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkXCIpO1xuIiBcCisgICAiICAgIFxuIiBcCisgICAi
ICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7XG4iIFwKKyAgICIgICAgdmFyIGxlbmd0aCA9
IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgaWYgKHR5
cGVvZiBjYWxsYmFjayAhPT0gXCJmdW5jdGlvblwiKVxuIiBcCisgICAiICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcihcIkFycmF5LnByb3RvdHlwZS5mb3JFYWNoIGNhbGxiYWNrIG11c3QgYmUg
YSBmdW5jdGlvblwiKTtcbiIgXAorICAgIiAgICBcbiIgXAorICAgIiAgICB2YXIgdGhpc0FyZyA9
IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuIiBcCisg
ICAiICAgIFxuIiBcCisgICAiICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtc
biIgXAorICAgIiAgICAgICAgaWYgKGkgaW4gYXJyYXkpXG4iIFwKKyAgICIgICAgICAgICAgICBj
YWxsYmFjay5AY2FsbCh0aGlzQXJnLCBhcnJheVtpXSwgaSwgYXJyYXkpO1xuIiBcCisgICAiICAg
IH1cbiIgXAorICAgIn0pXG4iIFwKKzsKKworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVS
QVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCitKU0M6OkZ1bmN0
aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAore1wKKyAg
ICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCkt
Pmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyB9
CitKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3Vu
ZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgorCisKK30gLy8gbmFtZXNwYWNlIEpTQworIyMj
IEVuZCBGaWxlOiBKU0NCdWlsdGlucy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0
aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29u
c3RydWN0b3ItQ29tYmluZWQuanMtcmVzdWx0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhNTI5ZWU5MWM2MGIxZWU4
NjZlZDdhZTI0YjA3NmEzYTg4MjI2MDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1C
dWlsdGluQ29uc3RydWN0b3ItQ29tYmluZWQuanMtcmVzdWx0CkBAIC0wLDAgKzEsMjI0IEBACisj
IyMgQmVnaW4gRmlsZTogSlNDQnVpbHRpbnMuaAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBO
T1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2
YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgSlND
QnVpbHRpbnNfaAorI2RlZmluZSBKU0NCdWlsdGluc19oCisKK25hbWVzcGFjZSBKU0MgeworY2xh
c3MgRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgVk07CisKK2VudW0gY2xhc3MgQ29uc3RydWN0
QWJpbGl0eSA6IHVuc2lnbmVkOworfQorCituYW1lc3BhY2UgSlNDIHsKKworLyogQnVpbHRpbkNv
bnN0cnVjdG9yICovCitleHRlcm4gY29uc3QgY2hhciogc19idWlsdGluQ29uc3RydWN0b3JPZkNv
ZGU7CitleHRlcm4gY29uc3QgaW50IHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2RlTGVuZ3RoOwor
ZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Db25zdHJ1Y3Rvck9m
Q29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19idWlsdGluQ29uc3Ry
dWN0b3JGcm9tQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19idWlsdGluQ29uc3RydWN0b3JGcm9t
Q29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGlu
Q29uc3RydWN0b3JGcm9tQ29kZUNvbnN0cnVjdEFiaWxpdHk7CisKKyNkZWZpbmUgSlNDX0ZPUkVB
Q0hfQlVJTFRJTkNPTlNUUlVDVE9SX0JVSUxUSU5fREFUQShtYWNybykgXAorICAgIG1hY3JvKG9m
LCBidWlsdGluQ29uc3RydWN0b3JPZiwgMCkgXAorICAgIG1hY3JvKGZyb20sIGJ1aWx0aW5Db25z
dHJ1Y3RvckZyb20sIDEpIFwKKworI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOQ09OU1RSVUNU
T1JfT0YgMQorI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOQ09OU1RSVUNUT1JfRlJPTSAxCisK
KyNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKG1hY3JvKSBcCisgICAgbWFjcm8oYnVp
bHRpbkNvbnN0cnVjdG9yT2ZDb2RlLCBvZiwgc19idWlsdGluQ29uc3RydWN0b3JPZkNvZGVMZW5n
dGgpIFwKKyAgICBtYWNybyhidWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZSwgZnJvbSwgc19idWls
dGluQ29uc3RydWN0b3JGcm9tQ29kZUxlbmd0aCkgXAorCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JV
SUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXAorICAgIG1hY3JvKGZyb20pIFwKKyAgICBtYWNy
byhvZikgXAorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1
bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
KiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKworSlNDX0ZPUkVBQ0hfQlVJTFRJTl9D
T0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dF
TkVSQVRPUgorCisjZGVmaW5lIEpTQ19CVUlMVElOX0VYSVNUUyhvYmplY3QsIGZ1bmMpIGRlZmlu
ZWQgSlNDX0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBKU0NCdWlsdGluc19oCisKKyMjIyBFbmQgRmlsZTogSlNDQnVpbHRp
bnMuaAorCisjIyMgQmVnaW4gRmlsZTogSlNDQnVpbHRpbnMuY3BwCisvKgorICogQ29weXJpZ2h0
IChjKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICov
CisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0
ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDog
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisKKyNpbmNsdWRl
ICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVk
ZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
Citjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluQ29uc3RydWN0b3JPZkNvZGVD
b25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7
Citjb25zdCBpbnQgc19idWlsdGluQ29uc3RydWN0b3JPZkNvZGVMZW5ndGggPSA0MDQ7Citjb25z
dCBjaGFyKiBzX2J1aWx0aW5Db25zdHJ1Y3Rvck9mQ29kZSA9CisgICAiKGZ1bmN0aW9uICgpXG4i
IFwKKyAgICJ7XG4iIFwKKyAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICJcbiIgXAor
ICAgIiAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiIgXAorICAgIiAgICAvL1xu
IiBcCisgICAiICAgIHZhciBhcnJheSA9IHR5cGVvZiB0aGlzID09PSAnZnVuY3Rpb24nID8gbmV3
IHRoaXMobGVuZ3RoKSA6IG5ldyBAQXJyYXkobGVuZ3RoKTtcbiIgXAorICAgIiAgICBmb3IgKHZh
ciBrID0gMDsgayA8IGxlbmd0aDsgKytrKVxuIiBcCisgICAiICAgICAgICBAcHV0QnlWYWxEaXJl
Y3QoYXJyYXksIGssIGFyZ3VtZW50c1trXSk7XG4iIFwKKyAgICIgICAgYXJyYXkubGVuZ3RoID0g
bGVuZ3RoO1xuIiBcCisgICAiICAgIHJldHVybiBhcnJheTtcbiIgXAorICAgIn0pXG4iIFwKKzsK
KworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpbkNvbnN0cnVjdG9yRnJvbUNv
ZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1
Y3Q7Citjb25zdCBpbnQgc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZUxlbmd0aCA9IDI3MTA7
Citjb25zdCBjaGFyKiBzX2J1aWx0aW5Db25zdHJ1Y3RvckZyb21Db2RlID0KKyAgICIoZnVuY3Rp
b24gKGl0ZW1zIClcbiIgXAorICAgIntcbiIgXAorICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIg
XAorICAgIlxuIiBcCisgICAiICAgIHZhciB0aGlzT2JqID0gdGhpcztcbiIgXAorICAgIlxuIiBc
CisgICAiICAgIHZhciBtYXBGbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFd
IDogdW5kZWZpbmVkO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdmFyIHRoaXNBcmc7XG4iIFwK
KyAgICJcbiIgXAorICAgIiAgICBpZiAobWFwRm4gIT09IHVuZGVmaW5lZCkge1xuIiBcCisgICAi
ICAgICAgICBpZiAodHlwZW9mIG1hcEZuICE9PSBcImZ1bmN0aW9uXCIpXG4iIFwKKyAgICIgICAg
ICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LmZyb20gcmVxdWlyZXMgdGhhdCB0
aGUgc2Vjb25kIGFyZ3VtZW50LCB3aGVuIHByb3ZpZGVkLCBiZSBhIGZ1bmN0aW9uXCIpO1xuIiBc
CisgICAiXG4iIFwKKyAgICIgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMilcbiIgXAor
ICAgIiAgICAgICAgICAgIHRoaXNBcmcgPSBhcmd1bWVudHNbMl07XG4iIFwKKyAgICIgICAgfVxu
IiBcCisgICAiXG4iIFwKKyAgICIgICAgaWYgKGl0ZW1zID09IG51bGwpXG4iIFwKKyAgICIgICAg
ICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkuZnJvbSByZXF1aXJlcyBhbiBhcnJheS1s
aWtlIG9iamVjdCAtIG5vdCBudWxsIG9yIHVuZGVmaW5lZFwiKTtcbiIgXAorICAgIlxuIiBcCisg
ICAiICAgIHZhciBpdGVyYXRvck1ldGhvZCA9IGl0ZW1zW0BzeW1ib2xJdGVyYXRvcl07XG4iIFwK
KyAgICIgICAgaWYgKGl0ZXJhdG9yTWV0aG9kICE9IG51bGwpIHtcbiIgXAorICAgIiAgICAgICAg
aWYgKHR5cGVvZiBpdGVyYXRvck1ldGhvZCAhPT0gXCJmdW5jdGlvblwiKVxuIiBcCisgICAiICAg
ICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5mcm9tIHJlcXVpcmVzIHRoYXQg
dGhlIHByb3BlcnR5IG9mIHRoZSBmaXJzdCBhcmd1bWVudCwgaXRlbXNbU3ltYm9sLml0ZXJhdG9y
XSwgd2hlbiBleGlzdHMsIGJlIGEgZnVuY3Rpb25cIik7XG4iIFwKKyAgICJcbiIgXAorICAgIiAg
ICAgICAgLy9cbiIgXAorICAgIiAgICAgICAgdmFyIHJlc3VsdCA9ICh0eXBlb2YgdGhpc09iaiA9
PT0gXCJmdW5jdGlvblwiKSA/IEBPYmplY3QobmV3IHRoaXNPYmooKSkgOiBbXTtcbiIgXAorICAg
IlxuIiBcCisgICAiICAgICAgICB2YXIgayA9IDA7XG4iIFwKKyAgICIgICAgICAgIHZhciBpdGVy
YXRvciA9IGl0ZXJhdG9yTWV0aG9kLkBjYWxsKGl0ZW1zKTtcbiIgXAorICAgIlxuIiBcCisgICAi
ICAgICAgICAvL1xuIiBcCisgICAiICAgICAgICAvL1xuIiBcCisgICAiICAgICAgICAvL1xuIiBc
CisgICAiICAgICAgICB2YXIgd3JhcHBlciA9IHtcbiIgXAorICAgIiAgICAgICAgICAgIFtAc3lt
Ym9sSXRlcmF0b3JdKCkge1xuIiBcCisgICAiICAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRv
cjtcbiIgXAorICAgIiAgICAgICAgICAgIH1cbiIgXAorICAgIiAgICAgICAgfTtcbiIgXAorICAg
IlxuIiBcCisgICAiICAgICAgICBmb3IgKHZhciB2YWx1ZSBvZiB3cmFwcGVyKSB7XG4iIFwKKyAg
ICIgICAgICAgICAgICBpZiAobWFwRm4pXG4iIFwKKyAgICIgICAgICAgICAgICAgICAgQHB1dEJ5
VmFsRGlyZWN0KHJlc3VsdCwgaywgdGhpc0FyZyA9PT0gdW5kZWZpbmVkID8gbWFwRm4odmFsdWUs
IGspIDogbWFwRm4uQGNhbGwodGhpc0FyZywgdmFsdWUsIGspKTtcbiIgXAorICAgIiAgICAgICAg
ICAgIGVsc2VcbiIgXAorICAgIiAgICAgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0
LCBrLCB2YWx1ZSk7XG4iIFwKKyAgICIgICAgICAgICAgICBrICs9IDE7XG4iIFwKKyAgICIgICAg
ICAgIH1cbiIgXAorICAgIlxuIiBcCisgICAiICAgICAgICByZXN1bHQubGVuZ3RoID0gaztcbiIg
XAorICAgIiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiIgXAorICAgIiAgICB9XG4iIFwKKyAgICJc
biIgXAorICAgIiAgICB2YXIgYXJyYXlMaWtlID0gQE9iamVjdChpdGVtcyk7XG4iIFwKKyAgICIg
ICAgdmFyIGFycmF5TGlrZUxlbmd0aCA9IEB0b0xlbmd0aChhcnJheUxpa2UubGVuZ3RoKTtcbiIg
XAorICAgIlxuIiBcCisgICAiICAgIC8vXG4iIFwKKyAgICIgICAgdmFyIHJlc3VsdCA9ICh0eXBl
b2YgdGhpc09iaiA9PT0gXCJmdW5jdGlvblwiKSA/IEBPYmplY3QobmV3IHRoaXNPYmooYXJyYXlM
aWtlTGVuZ3RoKSkgOiBuZXcgQEFycmF5KGFycmF5TGlrZUxlbmd0aCk7XG4iIFwKKyAgICJcbiIg
XAorICAgIiAgICB2YXIgayA9IDA7XG4iIFwKKyAgICIgICAgd2hpbGUgKGsgPCBhcnJheUxpa2VM
ZW5ndGgpIHtcbiIgXAorICAgIiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlMaWtlW2tdO1xuIiBc
CisgICAiICAgICAgICBpZiAobWFwRm4pXG4iIFwKKyAgICIgICAgICAgICAgICBAcHV0QnlWYWxE
aXJlY3QocmVzdWx0LCBrLCB0aGlzQXJnID09PSB1bmRlZmluZWQgPyBtYXBGbih2YWx1ZSwgaykg
OiBtYXBGbi5AY2FsbCh0aGlzQXJnLCB2YWx1ZSwgaykpO1xuIiBcCisgICAiICAgICAgICBlbHNl
XG4iIFwKKyAgICIgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB2YWx1ZSk7
XG4iIFwKKyAgICIgICAgICAgIGsgKz0gMTtcbiIgXAorICAgIiAgICB9XG4iIFwKKyAgICJcbiIg
XAorICAgIiAgICByZXN1bHQubGVuZ3RoID0gYXJyYXlMaWtlTGVuZ3RoO1xuIiBcCisgICAiICAg
IHJldHVybiByZXN1bHQ7XG4iIFwKKyAgICJ9KVxuIiBcCis7CisKKworI2RlZmluZSBERUZJTkVf
QlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkg
XAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYg
dm0pIFwKK3tcCisgICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMj
RXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUj
I1NvdXJjZSgpKTsgfQorSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dF
TkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKworCit9IC8vIG5hbWVz
cGFjZSBKU0MKKyMjIyBFbmQgRmlsZTogSlNDQnVpbHRpbnMuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3Jl
LUd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4t
U2VwYXJhdGUuanMtcmVzdWx0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0MzZkMmUzNWJhZWZiNzYwNTM4ODg3N2U4
NDZhNzAwYWVmODY4MTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRCdWlsdGluLVNl
cGFyYXRlLmpzLXJlc3VsdApAQCAtMCwwICsxLDMxOCBAQAorIyMjIEJlZ2luIEZpbGU6IEd1YXJk
ZWRCdWlsdGluQnVpbHRpbnMuaAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBU
SElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBm
aWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgR3VhcmRlZEJ1aWx0
aW5CdWlsdGluc19oCisjZGVmaW5lIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNfaAorCisjaW5jbHVk
ZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRnVu
Y3Rpb25FeGVjdXRhYmxlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8qIEd1YXJkZWRC
dWlsdGluICovCitleHRlcm4gY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVT
dHJlYW1Mb2NrZWRDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2d1YXJkZWRCdWlsdGluSXNSZWFk
YWJsZVN0cmVhbUxvY2tlZENvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RB
YmlsaXR5IHNfZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUNvbnN0cnVj
dEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRh
YmxlU3RyZWFtQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19ndWFyZGVkQnVpbHRpbkNhbmNlbFJl
YWRhYmxlU3RyZWFtQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxp
dHkgc19ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUNvbnN0cnVjdEFiaWxp
dHk7CitleHRlcm4gY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5v
b3BDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2d1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9y
Tm9vcENvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3Vh
cmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUNvbnN0cnVjdEFiaWxpdHk7CisKKyNk
ZWZpbmUgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fREFUQShtYWNybykg
XAorICAgIG1hY3JvKGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIGd1YXJkZWRCdWlsdGluSXNSZWFk
YWJsZVN0cmVhbUxvY2tlZCwgMSkgXAorICAgIG1hY3JvKGNhbmNlbFJlYWRhYmxlU3RyZWFtLCBn
dWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtLCAyKSBcCisgICAgbWFjcm8ocHJvbWlz
ZUludm9rZU9yTm9vcCwgZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wLCAzKSBcCisK
KyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX0dVQVJERURCVUlMVElOX0lTUkVBREFCTEVTVFJFQU1M
T0NLRUQgMQorI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fR1VBUkRFREJVSUxUSU5fQ0FOQ0VMUkVB
REFCTEVTVFJFQU0gMQorI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fR1VBUkRFREJVSUxUSU5fUFJP
TUlTRUlOVk9LRU9STk9PUCAxCisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlM
VElOX0JVSUxUSU5fQ09ERShtYWNybykgXAorICAgIG1hY3JvKGd1YXJkZWRCdWlsdGluSXNSZWFk
YWJsZVN0cmVhbUxvY2tlZENvZGUsIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIHNfZ3VhcmRlZEJ1
aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUxlbmd0aCkgXAorICAgIG1hY3JvKGd1YXJk
ZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlLCBjYW5jZWxSZWFkYWJsZVN0cmVhbSwg
c19ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUxlbmd0aCkgXAorICAgIG1h
Y3JvKGd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGUsIHByb21pc2VJbnZva2VP
ck5vb3AsIHNfZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUxlbmd0aCkgXAor
CisjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9O
X05BTUUobWFjcm8pIFwKKyAgICBtYWNybyhjYW5jZWxSZWFkYWJsZVN0cmVhbSkgXAorICAgIG1h
Y3JvKGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQpIFwKKyAgICBtYWNybyhwcm9taXNlSW52b2tlT3JO
b29wKSBcCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVu
Y3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCisgICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUq
IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCitXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRF
REJVSUxUSU5fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYg
REVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9HVUFS
REVEQlVJTFRJTl9FWElTVFMob2JqZWN0LCBmdW5jKSBkZWZpbmVkIFdFQkNPUkVfQlVJTFRJTl8g
IyMgb2JqZWN0ICMjIF8gIyMgZnVuYworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zX2gKKworIyMjIEVuZCBGaWxlOiBHdWFyZGVkQnVp
bHRpbkJ1aWx0aW5zLmgKKworIyMjIEJlZ2luIEZpbGU6IEd1YXJkZWRCdWlsdGluQnVpbHRpbnMu
Y3BwCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMg
YXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVp
bHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJh
dGUtanMtYnVpbHRpbnMucHkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkd1YXJk
ZWRCdWlsdGluQnVpbHRpbnMuaCIKKworI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIK
KyNpbmNsdWRlIDxydW50aW1lL0V4ZWN1dGFibGUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NlbGxJbmxpbmVzLmg+CisjaW5j
bHVkZSA8cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9WTS5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBz
X2d1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVDb25zdHJ1Y3RBYmlsaXR5
ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19n
dWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlTGVuZ3RoID0gMTI3OworY29u
c3QgY2hhciogc19ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlID0KKyAg
ICIoZnVuY3Rpb24gKHN0cmVhbSlcbiIgXAorICAgIntcbiIgXAorICAgIiAgIFwidXNlIHN0cmlj
dFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgcmV0dXJuICEhc3RyZWFtLkByZWFkZXI7XG4i
IFwKKyAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJk
ZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6
Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfZ3VhcmRlZEJ1
aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGVMZW5ndGggPSA1MTQ7Citjb25zdCBjaGFyKiBz
X2d1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlID0KKyAgICIoZnVuY3Rpb24g
KHN0cmVhbSwgcmVhc29uKVxuIiBcCisgICAie1xuIiBcCisgICAiICAgIFwidXNlIHN0cmljdFwi
O1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJs
ZVN0cmVhbUNsb3NlZClcbiIgXAorICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgp
O1xuIiBcCisgICAiICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1FcnJv
cmVkKVxuIiBcCisgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoc3RyZWFtLkBzdG9y
ZWRFcnJvcik7XG4iIFwKKyAgICIgICAgc3RyZWFtLkBxdWV1ZSA9IFtdO1xuIiBcCisgICAiICAg
IEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTtcbiIgXAorICAgIiAgICByZXR1
cm4gQHByb21pc2VJbnZva2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCBcImNhbmNl
bFwiLCBbcmVhc29uXSkudGhlbihmdW5jdGlvbigpIHsgfSk7XG4iIFwKKyAgICJ9KVxuIiBcCis7
CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRCdWlsdGluUHJvbWlzZUlu
dm9rZU9yTm9vcENvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpD
YW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VP
ck5vb3BDb2RlTGVuZ3RoID0gNDc3OworY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpblByb21p
c2VJbnZva2VPck5vb3BDb2RlID0KKyAgICIoZnVuY3Rpb24gKG9iamVjdCwga2V5LCBhcmdzKVxu
IiBcCisgICAie1xuIiBcCisgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwK
KyAgICIgICAgdHJ5IHtcbiIgXAorICAgIiAgICAgICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXld
O1xuIiBcCisgICAiICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gXCJ1bmRlZmluZWRcIilc
biIgXAorICAgIiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiIgXAorICAg
IiAgICAgICAgdmFyIHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBhcmdzKTtcbiIgXAor
ICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xuIiBcCisgICAiICAg
IH1cbiIgXAorICAgIiAgICBjYXRjaChlcnJvcikge1xuIiBcCisgICAiICAgICAgICByZXR1cm4g
UHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuIiBcCisgICAiICAgIH1cbiIgXAorICAgIn0pXG4iIFwK
KzsKKworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rp
b25OYW1lLCBhcmd1bWVudENvdW50KSBcCitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5h
bWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAore1wKKyAgICBKU1ZNQ2xpZW50RGF0YSogY2xp
ZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFwK
KyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmd1YXJkZWRCdWlsdGlu
QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5i
dWlsdGluRnVuY3Rpb25zKCkuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3Vy
Y2UoKSk7IFwKK30KK1dFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUo
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRP
UgorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyMjIyBFbmQgRmlsZTogR3VhcmRlZEJ1aWx0
aW5CdWlsdGlucy5jcHAKKworIyMjIEJlZ2luIEZpbGU6IEd1YXJkZWRCdWlsdGluQnVpbHRpbnNX
cmFwcGVyLmgKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJ
dCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisv
LyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9n
ZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaWZuZGVmIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNX
cmFwcGVyX2gKKyNkZWZpbmUgR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAorCisjaW5j
bHVkZSAiR3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5oIgorI2luY2x1ZGUgPGJ1aWx0aW5zL0J1aWx0
aW5VdGlscy5oPgorI2luY2x1ZGUgPGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9JZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9K
U0Z1bmN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR3VhcmRlZEJ1aWx0
aW5CdWlsdGluc1dyYXBwZXIgOiBwcml2YXRlIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcihKU0M6OlZNKiB2
bSkKKyAgICAgICAgOiBtX3ZtKCp2bSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURC
VUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX0JVSUxUSU5fTkFNRVMpCisj
ZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5h
bWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKEpTQzo6bWFrZVNvdXJjZShTdHJpbmdJbXBs
OjpjcmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFtZSwgbGVuZ3RoKSkpCisgICAgICAgIFdFQkNPUkVf
Rk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoSU5JVElBTElaRV9CVUlMVElOX1NP
VVJDRV9NRU1CRVJTKQorI3VuZGVmIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUwor
ICAgIHsKKyAgICB9CisKKyNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwg
ZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKKyAgICBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFwKKyAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIG5h
bWUjI1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KKyAgICBXRUJD
T1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VY
RUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCisKKyAgICBXRUJD
T1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVf
QlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKQorCisgICAgdm9pZCBleHBvcnROYW1lcygpOwor
Citwcml2YXRlOgorICAgIEpTQzo6Vk0mIG1fdm07CisKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VB
UkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FUykK
KworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25O
YW1lLCBsZW5ndGgpIFwKKyAgICBKU0M6OlNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJjZTtcCisg
ICAgSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNF
eGVjdXRhYmxlOworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NP
REUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJ
Tl9TT1VSQ0VfTUVNQkVSUworCit9OworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFC
TEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitpbmxpbmUgSlNDOjpVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4
ZWN1dGFibGUoKSBcCit7XAorICAgIGlmICghbV8jI25hbWUjI0V4ZWN1dGFibGUpXAorICAgICAg
ICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9IEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlPihKU0M6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fdm0sIG1fIyNuYW1lIyNT
b3VyY2UsIGZ1bmN0aW9uTmFtZSMjUHVibGljTmFtZSgpLCBzXyMjbmFtZSMjQ29uc3RydWN0QWJp
bGl0eSksIHRoaXMsICZtXyMjbmFtZSMjRXhlY3V0YWJsZSk7XAorICAgIHJldHVybiBtXyMjbmFt
ZSMjRXhlY3V0YWJsZS5nZXQoKTtcCit9CitXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5f
QlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIERFRklORV9C
VUlMVElOX0VYRUNVVEFCTEVTCisKK2lubGluZSB2b2lkIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNX
cmFwcGVyOjpleHBvcnROYW1lcygpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTl9OQU1FKG5h
bWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+YXBwZW5kRXh0ZXJuYWxOYW1lKG5hbWUjI1B1YmxpY05h
bWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUoKSk7CisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURC
VUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShFWFBPUlRfRlVOQ1RJT05fTkFNRSkKKyN1bmRl
ZiBFWFBPUlRfRlVOQ1RJT05fTkFNRQorfQorCitjbGFzcyBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5G
dW5jdGlvbnMgeworcHVibGljOgorICAgIGV4cGxpY2l0IEd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1
bmN0aW9ucyhKU0M6OlZNJiB2bSkgOiBtX3ZtKHZtKSB7IH0KKworICAgIHZvaWQgaW5pdChKU0M6
OkpTR2xvYmFsT2JqZWN0Jik7CisgICAgdm9pZCB2aXNpdChKU0M6OlNsb3RWaXNpdG9yJik7CisK
K3B1YmxpYzoKKyAgICBKU0M6OlZNJiBtX3ZtOworCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9T
T1VSQ0VfTUVNQkVSUyhmdW5jdGlvbk5hbWUpIFwKKyAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6
OkpTRnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uOworICAgIFdFQkNPUkVfRk9S
RUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElO
X1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUwor
fTsKKworaW5saW5lIHZvaWQgR3VhcmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zOjppbml0KEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyNkZWZpbmUgRVhQT1JUX0ZVTkNU
SU9OKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aClcCisgICAgbV8jI2Z1bmN0aW9uTmFt
ZSMjRnVuY3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmplY3QsIEpTQzo6SlNGdW5jdGlvbjo6Y3Jl
YXRlQnVpbHRpbkZ1bmN0aW9uKG1fdm0sIGNvZGVOYW1lIyNHZW5lcmF0b3IobV92bSksICZnbG9i
YWxPYmplY3QpKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9D
T0RFKEVYUE9SVF9GVU5DVElPTikKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT04KK30KKworaW5saW5l
IHZvaWQgR3VhcmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zOjp2aXNpdChKU0M6OlNsb3RWaXNp
dG9yJiB2aXNpdG9yKQoreworI2RlZmluZSBWSVNJVF9GVU5DVElPTihuYW1lKSB2aXNpdG9yLmFw
cGVuZCgmbV8jI25hbWUjI0Z1bmN0aW9uKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJV
SUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKFZJU0lUX0ZVTkNUSU9OKQorI3VuZGVmIFZJU0lU
X0ZVTkNUSU9OCit9CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gR3Vh
cmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAorCisjIyMgRW5kIEZpbGU6IEd1YXJkZWRCdWls
dGluQnVpbHRpbnNXcmFwcGVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVp
bHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2Vw
YXJhdGUuanMtcmVzdWx0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyZWQ2N2VjYTQwMGM1MzE4NmZjZGIzNTViNWU0
YmU1MzY5Y2UzZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0
aW4tU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0wLDAgKzEsMzE4IEBACisjIyMgQmVnaW4gRmlsZTog
R3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zLmgKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIw
MTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8g
RE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9t
IEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaWZuZGVm
IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc19oCisjZGVmaW5lIEd1YXJkZWRJbnRlcm5h
bEJ1aWx0aW5CdWlsdGluc19oCisKKyNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4K
KworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Cit9CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworLyogR3VhcmRlZEludGVybmFsQnVpbHRpbiAqLworZXh0ZXJuIGNv
bnN0IGNoYXIqIHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRD
b2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1JlYWRhYmxl
U3RyZWFtTG9ja2VkQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxp
dHkgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVDb25z
dHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfZ3VhcmRlZEludGVybmFsQnVpbHRp
bkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19ndWFyZGVkSW50
ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0
IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFk
YWJsZVN0cmVhbUNvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfZ3Vh
cmRlZEludGVybmFsQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlOworZXh0ZXJuIGNvbnN0
IGludCBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUxlbmd0
aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkSW50ZXJuYWxC
dWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVDb25zdHJ1Y3RBYmlsaXR5OworCisjZGVmaW5l
IFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fREFUQShtYWNy
bykgXAorICAgIG1hY3JvKGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIGd1YXJkZWRJbnRlcm5hbEJ1
aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkLCAxKSBcCisgICAgbWFjcm8oY2FuY2VsUmVhZGFi
bGVTdHJlYW0sIGd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbSwgMikg
XAorICAgIG1hY3JvKHByb21pc2VJbnZva2VPck5vb3AsIGd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Q
cm9taXNlSW52b2tlT3JOb29wLCAzKSBcCisKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX0dVQVJE
RURJTlRFUk5BTEJVSUxUSU5fSVNSRUFEQUJMRVNUUkVBTUxPQ0tFRCAxCisjZGVmaW5lIFdFQkNP
UkVfQlVJTFRJTl9HVUFSREVESU5URVJOQUxCVUlMVElOX0NBTkNFTFJFQURBQkxFU1RSRUFNIDEK
KyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fUFJPTUlTRUlO
Vk9LRU9STk9PUCAxCisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJV
SUxUSU5fQlVJTFRJTl9DT0RFKG1hY3JvKSBcCisgICAgbWFjcm8oZ3VhcmRlZEludGVybmFsQnVp
bHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlLCBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkLCBz
X2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUxlbmd0aCkg
XAorICAgIG1hY3JvKGd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNv
ZGUsIGNhbmNlbFJlYWRhYmxlU3RyZWFtLCBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxS
ZWFkYWJsZVN0cmVhbUNvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhndWFyZGVkSW50ZXJuYWxCdWls
dGluUHJvbWlzZUludm9rZU9yTm9vcENvZGUsIHByb21pc2VJbnZva2VPck5vb3AsIHNfZ3VhcmRl
ZEludGVybmFsQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlTGVuZ3RoKSBcCisKKyNkZWZp
bmUgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9GVU5DVElP
Tl9OQU1FKG1hY3JvKSBcCisgICAgbWFjcm8oY2FuY2VsUmVhZGFibGVTdHJlYW0pIFwKKyAgICBt
YWNybyhpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKSBcCisgICAgbWFjcm8ocHJvbWlzZUludm9rZU9y
Tm9vcCkgXAorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1
bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
KiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKworV0VCQ09SRV9GT1JFQUNIX0dVQVJE
RURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1Ip
CisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIFdFQkNPUkVfQlVJ
TFRJTl9HVUFSREVESU5URVJOQUxCVUlMVElOX0VYSVNUUyhvYmplY3QsIGZ1bmMpIGRlZmluZWQg
V0VCQ09SRV9CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc19oCisK
KyMjIyBFbmQgRmlsZTogR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zLmgKKworIyMjIEJl
Z2luIEZpbGU6IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucy5jcHAKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICog
CisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdl
bmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2Ny
aXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5w
eQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3VhcmRlZEludGVybmFsQnVpbHRp
bkJ1aWx0aW5zLmgiCisKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVk
ZSA8cnVudGltZS9FeGVjdXRhYmxlLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5s
aW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1
bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVk0uaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19ndWFyZGVk
SW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVDb25zdHJ1Y3RBYmlsaXR5
ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19n
dWFyZGVkSW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5ndGggPSAx
Mjc7Citjb25zdCBjaGFyKiBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFt
TG9ja2VkQ29kZSA9CisgICAiKGZ1bmN0aW9uIChzdHJlYW0pXG4iIFwKKyAgICJ7XG4iIFwKKyAg
ICIgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHJldHVybiAhIXN0
cmVhbS5AcmVhZGVyO1xuIiBcCisgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVj
dEFiaWxpdHkgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2Rl
Q29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0
OworY29uc3QgaW50IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFt
Q29kZUxlbmd0aCA9IDUxNDsKK2NvbnN0IGNoYXIqIHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbkNh
bmNlbFJlYWRhYmxlU3RyZWFtQ29kZSA9CisgICAiKGZ1bmN0aW9uIChzdHJlYW0sIHJlYXNvbilc
biIgXAorICAgIntcbiIgXAorICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBc
CisgICAiICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQpXG4i
IFwKKyAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiIgXAorICAgIiAgICBp
ZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZClcbiIgXAorICAgIiAg
ICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpO1xuIiBcCisg
ICAiICAgIHN0cmVhbS5AcXVldWUgPSBbXTtcbiIgXAorICAgIiAgICBAZmluaXNoQ2xvc2luZ1Jl
YWRhYmxlU3RyZWFtKHN0cmVhbSk7XG4iIFwKKyAgICIgICAgcmV0dXJuIEBwcm9taXNlSW52b2tl
T3JOb29wKHN0cmVhbS5AdW5kZXJseWluZ1NvdXJjZSwgXCJjYW5jZWxcIiwgW3JlYXNvbl0pLnRo
ZW4oZnVuY3Rpb24oKSB7IH0pO1xuIiBcCisgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNv
bnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluUHJvbWlzZUludm9rZU9yTm9v
cENvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25z
dHJ1Y3Q7Citjb25zdCBpbnQgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluUHJvbWlzZUludm9rZU9y
Tm9vcENvZGVMZW5ndGggPSA0Nzc7Citjb25zdCBjaGFyKiBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0
aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZSA9CisgICAiKGZ1bmN0aW9uIChvYmplY3QsIGtleSwg
YXJncylcbiIgXAorICAgIntcbiIgXAorICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAg
IlxuIiBcCisgICAiICAgIHRyeSB7XG4iIFwKKyAgICIgICAgICAgIHZhciBtZXRob2QgPSBvYmpl
Y3Rba2V5XTtcbiIgXAorICAgIiAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QgPT09IFwidW5kZWZp
bmVkXCIpXG4iIFwKKyAgICIgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4i
IFwKKyAgICIgICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9iamVjdCwgYXJncyk7
XG4iIFwKKyAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcbiIgXAor
ICAgIiAgICB9XG4iIFwKKyAgICIgICAgY2F0Y2goZXJyb3IpIHtcbiIgXAorICAgIiAgICAgICAg
cmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiIgXAorICAgIiAgICB9XG4iIFwKKyAgICJ9
KVxuIiBcCis7CisKKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUs
IGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUq
IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKK3tcCisgICAgSlNWTUNsaWVudERh
dGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERh
dGEpOyBcCisgICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5ndWFyZGVk
SW50ZXJuYWxCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZt
LCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuZ3VhcmRlZEludGVybmFsQnVpbHRpbkJ1
aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpKTsgXAorfQorV0VCQ09SRV9GT1JFQUNIX0dVQVJE
RURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikK
KyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisjIyMgRW5kIEZpbGU6IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucy5jcHAKKwor
IyMjIEJlZ2luIEZpbGU6IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIuaAor
LyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9t
YXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5z
IGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpz
LWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3Jh
cHBlcl9oCisjZGVmaW5lIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAor
CisjaW5jbHVkZSAiR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zLmgiCisjaW5jbHVkZSA8
YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+CisjaW5jbHVkZSA8Ynl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0lkZW50aWZpZXIuaD4KKyNpbmNs
dWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyIDogcHJpdmF0ZSBKU0M6Oldl
YWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgR3VhcmRlZEludGVybmFsQnVp
bHRpbkJ1aWx0aW5zV3JhcHBlcihKU0M6OlZNKiB2bSkKKyAgICAgICAgOiBtX3ZtKCp2bSkKKyAg
ICAgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9GVU5D
VElPTl9OQU1FKElOSVRJQUxJWkVfQlVJTFRJTl9OQU1FUykKKyNkZWZpbmUgSU5JVElBTElaRV9C
VUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNu
YW1lIyNTb3VyY2UoSlNDOjptYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFs
KHNfIyNuYW1lLCBsZW5ndGgpKSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRF
Uk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVS
UykKKyN1bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKKyAgICB7CisgICAg
fQorCisjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFt
ZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMj
RXhlY3V0YWJsZSgpOyBcCisgICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2Uo
KSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CisgICAgV0VCQ09SRV9GT1JFQUNI
X0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNV
VEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCisKKyAgICBXRUJDT1JF
X0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVD
TEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCisKKyAgICB2b2lkIGV4cG9ydE5hbWVz
KCk7CisKK3ByaXZhdGU6CisgICAgSlNDOjpWTSYgbV92bTsKKworICAgIFdFQkNPUkVfRk9SRUFD
SF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JV
SUxUSU5fTkFNRVMpCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5h
bWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpTb3VyY2VDb2RlIG1fIyNuYW1l
IyNTb3VyY2U7XAorICAgIEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
PiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVS
TkFMQlVJTFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQor
I3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworCit9OworCisjZGVmaW5lIERF
RklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitp
bmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogR3VhcmRlZEludGVybmFsQnVp
bHRpbkJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tcCisgICAgaWYgKCFt
XyMjbmFtZSMjRXhlY3V0YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gSlND
OjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6Y3JlYXRlQnVpbHRp
bkV4ZWN1dGFibGUobV92bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25OYW1lIyNQdWJsaWNO
YW1lKCksIHNfIyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVj
dXRhYmxlKTtcCisgICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKK30KK1dF
QkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShERUZJTkVf
QlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUwor
CitpbmxpbmUgdm9pZCBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyOjpleHBv
cnROYW1lcygpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTl9OQU1FKG5hbWUpIG1fdm0ucHJv
cGVydHlOYW1lcy0+YXBwZW5kRXh0ZXJuYWxOYW1lKG5hbWUjI1B1YmxpY05hbWUoKSwgbmFtZSMj
UHJpdmF0ZU5hbWUoKSk7CisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxU
SU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKEVYUE9SVF9GVU5DVElPTl9OQU1FKQorI3VuZGVmIEVY
UE9SVF9GVU5DVElPTl9OQU1FCit9CisKK2NsYXNzIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWls
dGluRnVuY3Rpb25zIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBHdWFyZGVkSW50ZXJuYWxCdWls
dGluQnVpbHRpbkZ1bmN0aW9ucyhKU0M6OlZNJiB2bSkgOiBtX3ZtKHZtKSB7IH0KKworICAgIHZv
aWQgaW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CisgICAgdm9pZCB2aXNpdChKU0M6OlNsb3RW
aXNpdG9yJik7CisKK3B1YmxpYzoKKyAgICBKU0M6OlZNJiBtX3ZtOworCisjZGVmaW5lIERFQ0xB
UkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhmdW5jdGlvbk5hbWUpIFwKKyAgICBKU0M6OldyaXRl
QmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uOworICAg
IFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05f
TkFNRShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlM
VElOX1NPVVJDRV9NRU1CRVJTCit9OworCitpbmxpbmUgdm9pZCBHdWFyZGVkSW50ZXJuYWxCdWls
dGluQnVpbHRpbkZ1bmN0aW9uczo6aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBs
ZW5ndGgpXAorICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihtX3ZtLCBjb2Rl
TmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7CisgICAgV0VCQ09SRV9GT1JF
QUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9SVF9GVU5DVElPTikK
KyN1bmRlZiBFWFBPUlRfRlVOQ1RJT04KK30KKworaW5saW5lIHZvaWQgR3VhcmRlZEludGVybmFs
QnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit7CisjZGVmaW5lIFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFt
ZSMjRnVuY3Rpb24pOworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElO
X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShWSVNJVF9GVU5DVElPTikKKyN1bmRlZiBWSVNJVF9GVU5D
VElPTgorfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEd1YXJkZWRJ
bnRlcm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAorCisjIyMgRW5kIEZpbGU6IEd1YXJkZWRJ
bnRlcm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Vbmd1YXJk
ZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBh
cmF0ZS5qcy1yZXN1bHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTYyNWQ1NmM3MDE2ZTJjMDAzMDk2ZjFjNzhlYTI4
NDNjNTg1ZTIwMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBh
cmF0ZS5qcy1yZXN1bHQKQEAgLTAsMCArMSwzMTggQEAKKyMjIyBCZWdpbiBGaWxlOiBVbmd1YXJk
ZWRCdWlsdGluQnVpbHRpbnMuaAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBU
SElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBm
aWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgVW5ndWFyZGVkQnVp
bHRpbkJ1aWx0aW5zX2gKKyNkZWZpbmUgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zX2gKKworI2lu
Y2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oPgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNz
IEZ1bmN0aW9uRXhlY3V0YWJsZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvKiBVbmd1
YXJkZWRCdWlsdGluICovCitleHRlcm4gY29uc3QgY2hhciogc191bmd1YXJkZWRCdWlsdGluSXNS
ZWFkYWJsZVN0cmVhbUxvY2tlZENvZGU7CitleHRlcm4gY29uc3QgaW50IHNfdW5ndWFyZGVkQnVp
bHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6
Q29uc3RydWN0QWJpbGl0eSBzX3VuZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2Vk
Q29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc191bmd1YXJkZWRCdWls
dGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlOworZXh0ZXJuIGNvbnN0IGludCBzX3VuZ3VhcmRl
ZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlND
OjpDb25zdHJ1Y3RBYmlsaXR5IHNfdW5ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFt
Q29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc191bmd1YXJkZWRCdWls
dGluUHJvbWlzZUludm9rZU9yTm9vcENvZGU7CitleHRlcm4gY29uc3QgaW50IHNfdW5ndWFyZGVk
QnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6
Q29uc3RydWN0QWJpbGl0eSBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29k
ZUNvbnN0cnVjdEFiaWxpdHk7CisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJV
SUxUSU5fQlVJTFRJTl9EQVRBKG1hY3JvKSBcCisgICAgbWFjcm8oaXNSZWFkYWJsZVN0cmVhbUxv
Y2tlZCwgdW5ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIDEpIFwKKyAgICBt
YWNybyhjYW5jZWxSZWFkYWJsZVN0cmVhbSwgdW5ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxl
U3RyZWFtLCAyKSBcCisgICAgbWFjcm8ocHJvbWlzZUludm9rZU9yTm9vcCwgdW5ndWFyZGVkQnVp
bHRpblByb21pc2VJbnZva2VPck5vb3AsIDMpIFwKKworI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5f
VU5HVUFSREVEQlVJTFRJTl9JU1JFQURBQkxFU1RSRUFNTE9DS0VEIDEKKyNkZWZpbmUgV0VCQ09S
RV9CVUlMVElOX1VOR1VBUkRFREJVSUxUSU5fQ0FOQ0VMUkVBREFCTEVTVFJFQU0gMQorI2RlZmlu
ZSBXRUJDT1JFX0JVSUxUSU5fVU5HVUFSREVEQlVJTFRJTl9QUk9NSVNFSU5WT0tFT1JOT09QIDEK
KworI2RlZmluZSBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUo
bWFjcm8pIFwKKyAgICBtYWNybyh1bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tl
ZENvZGUsIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIHNfdW5ndWFyZGVkQnVpbHRpbklzUmVhZGFi
bGVTdHJlYW1Mb2NrZWRDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8odW5ndWFyZGVkQnVpbHRpbkNh
bmNlbFJlYWRhYmxlU3RyZWFtQ29kZSwgY2FuY2VsUmVhZGFibGVTdHJlYW0sIHNfdW5ndWFyZGVk
QnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUxlbmd0aCkgXAorICAgIG1hY3JvKHVuZ3Vh
cmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZSwgcHJvbWlzZUludm9rZU9yTm9vcCwg
c191bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVMZW5ndGgpIFwKKworI2Rl
ZmluZSBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05B
TUUobWFjcm8pIFwKKyAgICBtYWNybyhjYW5jZWxSZWFkYWJsZVN0cmVhbSkgXAorICAgIG1hY3Jv
KGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQpIFwKKyAgICBtYWNybyhwcm9taXNlSW52b2tlT3JOb29w
KSBcCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rp
b25OYW1lLCBhcmd1bWVudENvdW50KSBcCisgICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNv
ZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCitXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVE
QlVJTFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBE
RUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX1VOR1VB
UkRFREJVSUxUSU5fRVhJU1RTKG9iamVjdCwgZnVuYykgZGVmaW5lZCBXRUJDT1JFX0JVSUxUSU5f
ICMjIG9iamVjdCAjIyBfICMjIGZ1bmMKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zX2gKKworIyMjIEVuZCBGaWxlOiBVbmd1YXJk
ZWRCdWlsdGluQnVpbHRpbnMuaAorCisjIyMgQmVnaW4gRmlsZTogVW5ndWFyZGVkQnVpbHRpbkJ1
aWx0aW5zLmNwcAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUu
IEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IK
Ky8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnMuaCIKKworI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVu
dERhdGEuaCIKKyNpbmNsdWRlIDxydW50aW1lL0V4ZWN1dGFibGUuaD4KKyNpbmNsdWRlIDxydW50
aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NlbGxJbmxpbmVz
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVu
dGltZS9WTS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0
QWJpbGl0eSBzX3VuZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUNvbnN0
cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2Nv
bnN0IGludCBzX3VuZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUxlbmd0
aCA9IDEyNzsKK2NvbnN0IGNoYXIqIHNfdW5ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1M
b2NrZWRDb2RlID0KKyAgICIoZnVuY3Rpb24gKHN0cmVhbSlcbiIgXAorICAgIntcbiIgXAorICAg
IiAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgcmV0dXJuICEhc3Ry
ZWFtLkByZWFkZXI7XG4iIFwKKyAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0
QWJpbGl0eSBzX3VuZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGVDb25zdHJ1
Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25z
dCBpbnQgc191bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlTGVuZ3RoID0g
NTE0OworY29uc3QgY2hhciogc191bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1D
b2RlID0KKyAgICIoZnVuY3Rpb24gKHN0cmVhbSwgcmVhc29uKVxuIiBcCisgICAie1xuIiBcCisg
ICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgaWYgKHN0cmVh
bS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUNsb3NlZClcbiIgXAorICAgIiAgICAgICAgcmV0
dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuIiBcCisgICAiICAgIGlmIChzdHJlYW0uQHN0YXRlID09
PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKVxuIiBcCisgICAiICAgICAgICByZXR1cm4gUHJvbWlz
ZS5yZWplY3Qoc3RyZWFtLkBzdG9yZWRFcnJvcik7XG4iIFwKKyAgICIgICAgc3RyZWFtLkBxdWV1
ZSA9IFtdO1xuIiBcCisgICAiICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFt
KTtcbiIgXAorICAgIiAgICByZXR1cm4gQHByb21pc2VJbnZva2VPck5vb3Aoc3RyZWFtLkB1bmRl
cmx5aW5nU291cmNlLCBcImNhbmNlbFwiLCBbcmVhc29uXSkudGhlbihmdW5jdGlvbigpIHsgfSk7
XG4iIFwKKyAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3Vu
Z3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBK
U0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX3VuZ3Vh
cmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUxlbmd0aCA9IDQ3NzsKK2NvbnN0IGNo
YXIqIHNfdW5ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlID0KKyAgICIoZnVu
Y3Rpb24gKG9iamVjdCwga2V5LCBhcmdzKVxuIiBcCisgICAie1xuIiBcCisgICAiICAgIFwidXNl
IHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdHJ5IHtcbiIgXAorICAgIiAgICAg
ICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldO1xuIiBcCisgICAiICAgICAgICBpZiAodHlwZW9m
IG1ldGhvZCA9PT0gXCJ1bmRlZmluZWRcIilcbiIgXAorICAgIiAgICAgICAgICAgIHJldHVybiBQ
cm9taXNlLnJlc29sdmUoKTtcbiIgXAorICAgIiAgICAgICAgdmFyIHJlc3VsdCA9IG1ldGhvZC5A
YXBwbHkob2JqZWN0LCBhcmdzKTtcbiIgXAorICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVz
b2x2ZShyZXN1bHQpO1xuIiBcCisgICAiICAgIH1cbiIgXAorICAgIiAgICBjYXRjaChlcnJvcikg
e1xuIiBcCisgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuIiBcCisg
ICAiICAgIH1cbiIgXAorICAgIn0pXG4iIFwKKzsKKworCisjZGVmaW5lIERFRklORV9CVUlMVElO
X0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCitKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAor
e1wKKyAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGll
bnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRp
bkZ1bmN0aW9ucygpLnVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNFeGVjdXRh
YmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS51bmd1YXJkZWRC
dWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCkpOyBcCit9CitXRUJDT1JFX0ZPUkVB
Q0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9S
KQorI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgorCisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKyMjIyBFbmQgRmlsZTogVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmNwcAorCisjIyMg
QmVnaW4gRmlsZTogVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlci5oCisvKgorICogQ29w
eXJpZ2h0IChjKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
IAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBn
ZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNj
cmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMu
cHkKKworI2lmbmRlZiBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyX2gKKyNkZWZpbmUg
VW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9oCisKKyNpbmNsdWRlICJVbmd1YXJkZWRC
dWlsdGluQnVpbHRpbnMuaCIKKyNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4KKyNp
bmNsdWRlIDxieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgorI2luY2x1ZGUg
PHJ1bnRpbWUvSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dy
YXBwZXIgOiBwcml2YXRlIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAgICBleHBs
aWNpdCBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyKEpTQzo6Vk0qIHZtKQorICAgICAg
ICA6IG1fdm0oKnZtKQorICAgICAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9C
VUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElaRV9CVUlMVElOX05BTUVTKQorI2RlZmluZSBJ
TklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5n
dGgpICwgbV8jI25hbWUjI1NvdXJjZShKU0M6Om1ha2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRl
RnJvbUxpdGVyYWwoc18jI25hbWUsIGxlbmd0aCkpKQorICAgICAgICBXRUJDT1JFX0ZPUkVBQ0hf
VU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9N
RU1CRVJTKQorI3VuZGVmIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworICAgIHsK
KyAgICB9CisKKyNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rp
b25OYW1lLCBsZW5ndGgpIFwKKyAgICBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBu
YW1lIyNFeGVjdXRhYmxlKCk7IFwKKyAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIG5hbWUjI1Nv
dXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KKyAgICBXRUJDT1JFX0ZP
UkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoRVhQT1NFX0JVSUxUSU5fRVhFQ1VU
QUJMRVMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMKKworICAgIFdFQkNPUkVf
Rk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JV
SUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUikKKworICAgIHZvaWQgZXhwb3J0TmFtZXMoKTsKKwor
cHJpdmF0ZToKKyAgICBKU0M6OlZNJiBtX3ZtOworCisgICAgV0VCQ09SRV9GT1JFQUNIX1VOR1VB
UkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FUykK
KworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25O
YW1lLCBsZW5ndGgpIFwKKyAgICBKU0M6OlNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJjZTtcCisg
ICAgSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNF
eGVjdXRhYmxlOworICAgIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5f
Q09ERShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlM
VElOX1NPVVJDRV9NRU1CRVJTCisKK307CisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VU
QUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKK2lubGluZSBKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyOjpuYW1l
IyNFeGVjdXRhYmxlKCkgXAore1wKKyAgICBpZiAoIW1fIyNuYW1lIyNFeGVjdXRhYmxlKVwKKyAg
ICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUgPSBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZT4oSlNDOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShtX3ZtLCBtXyMjbmFt
ZSMjU291cmNlLCBmdW5jdGlvbk5hbWUjI1B1YmxpY05hbWUoKSwgc18jI25hbWUjI0NvbnN0cnVj
dEFiaWxpdHkpLCB0aGlzLCAmbV8jI25hbWUjI0V4ZWN1dGFibGUpO1wKKyAgICByZXR1cm4gbV8j
I25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7XAorfQorV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJV
SUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIERF
RklORV9CVUlMVElOX0VYRUNVVEFCTEVTCisKK2lubGluZSB2b2lkIFVuZ3VhcmRlZEJ1aWx0aW5C
dWlsdGluc1dyYXBwZXI6OmV4cG9ydE5hbWVzKCkKK3sKKyNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9O
X05BTUUobmFtZSkgbV92bS5wcm9wZXJ0eU5hbWVzLT5hcHBlbmRFeHRlcm5hbE5hbWUobmFtZSMj
UHVibGljTmFtZSgpLCBuYW1lIyNQcml2YXRlTmFtZSgpKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hf
VU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoRVhQT1JUX0ZVTkNUSU9OX05B
TUUpCisjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OX05BTUUKK30KKworY2xhc3MgVW5ndWFyZGVkQnVp
bHRpbkJ1aWx0aW5GdW5jdGlvbnMgeworcHVibGljOgorICAgIGV4cGxpY2l0IFVuZ3VhcmRlZEJ1
aWx0aW5CdWlsdGluRnVuY3Rpb25zKEpTQzo6Vk0mIHZtKSA6IG1fdm0odm0pIHsgfQorCisgICAg
dm9pZCBpbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKKyAgICB2b2lkIHZpc2l0KEpTQzo6U2xv
dFZpc2l0b3ImKTsKKworcHVibGljOgorICAgIEpTQzo6Vk0mIG1fdm07CisKKyNkZWZpbmUgREVD
TEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKGZ1bmN0aW9uTmFtZSkgXAorICAgIEpTQzo6V3Jp
dGVCYXJyaWVyPEpTQzo6SlNGdW5jdGlvbj4gbV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb247Cisg
ICAgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1F
KERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5f
U09VUkNFX01FTUJFUlMKK307CisKK2lubGluZSB2b2lkIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlu
RnVuY3Rpb25zOjppbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyNk
ZWZpbmUgRVhQT1JUX0ZVTkNUSU9OKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aClcCisg
ICAgbV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmplY3QsIEpT
Qzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKG1fdm0sIGNvZGVOYW1lIyNHZW5l
cmF0b3IobV92bSksICZnbG9iYWxPYmplY3QpKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFS
REVEQlVJTFRJTl9CVUlMVElOX0NPREUoRVhQT1JUX0ZVTkNUSU9OKQorI3VuZGVmIEVYUE9SVF9G
VU5DVElPTgorfQorCitpbmxpbmUgdm9pZCBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9u
czo6dmlzaXQoSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyNkZWZpbmUgVklTSVRfRlVO
Q1RJT04obmFtZSkgdmlzaXRvci5hcHBlbmQoJm1fIyNuYW1lIyNGdW5jdGlvbik7CisgICAgV0VC
Q09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKFZJU0lU
X0ZVTkNUSU9OKQorI3VuZGVmIFZJU0lUX0ZVTkNUSU9OCit9CisKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9oCisK
KyMjIyBFbmQgRmlsZTogVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlci5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3Rl
ZC9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS14bWxDYXNp
bmdUZXN0LVNlcGFyYXRlLmpzLXJlc3VsdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MTljZjliYTUxMjA5ZjYxOWI2
MzEyZDQ4Yjc0Mzc1MjExOWZmM2U0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS14bWxDYXNpbmdU
ZXN0LVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMCwwICsxLDMxOCBAQAorIyMjIEJlZ2luIEZpbGU6
IHhtbENhc2luZ1Rlc3RCdWlsdGlucy5oCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IENhbm9u
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBF
RElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2Ny
aXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lmbmRlZiB4bWxDYXNp
bmdUZXN0QnVpbHRpbnNfaAorI2RlZmluZSB4bWxDYXNpbmdUZXN0QnVpbHRpbnNfaAorCisjaW5j
bHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3Mg
RnVuY3Rpb25FeGVjdXRhYmxlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8qIHhtbENh
c2luZ1Rlc3QgKi8KK2V4dGVybiBjb25zdCBjaGFyKiBzX3htbENhc2luZ1Rlc3RYTUxDYXNpbmdU
ZXN0Q29kZTsKK2V4dGVybiBjb25zdCBpbnQgc194bWxDYXNpbmdUZXN0WE1MQ2FzaW5nVGVzdENv
ZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfeG1sQ2FzaW5n
VGVzdFhNTENhc2luZ1Rlc3RDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFy
KiBzX3htbENhc2luZ1Rlc3RDc3NDYXNpbmdUZXN0Q29kZTsKK2V4dGVybiBjb25zdCBpbnQgc194
bWxDYXNpbmdUZXN0Q3NzQ2FzaW5nVGVzdENvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpD
b25zdHJ1Y3RBYmlsaXR5IHNfeG1sQ2FzaW5nVGVzdENzc0Nhc2luZ1Rlc3RDb2RlQ29uc3RydWN0
QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX3htbENhc2luZ1Rlc3RVcmxDYXNpbmdUZXN0
Q29kZTsKK2V4dGVybiBjb25zdCBpbnQgc194bWxDYXNpbmdUZXN0VXJsQ2FzaW5nVGVzdENvZGVM
ZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfeG1sQ2FzaW5nVGVz
dFVybENhc2luZ1Rlc3RDb2RlQ29uc3RydWN0QWJpbGl0eTsKKworI2RlZmluZSBXRUJDT1JFX0ZP
UkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0RBVEEobWFjcm8pIFwKKyAgICBtYWNybyh4bWxD
YXNpbmdUZXN0LCB4bWxDYXNpbmdUZXN0WE1MQ2FzaW5nVGVzdCwgMSkgXAorICAgIG1hY3JvKGNz
c0Nhc2luZ1Rlc3QsIHhtbENhc2luZ1Rlc3RDc3NDYXNpbmdUZXN0LCAyKSBcCisgICAgbWFjcm8o
dXJsQ2FzaW5nVGVzdCwgeG1sQ2FzaW5nVGVzdFVybENhc2luZ1Rlc3QsIDMpIFwKKworI2RlZmlu
ZSBXRUJDT1JFX0JVSUxUSU5fWE1MQ0FTSU5HVEVTVF9YTUxDQVNJTkdURVNUIDEKKyNkZWZpbmUg
V0VCQ09SRV9CVUlMVElOX1hNTENBU0lOR1RFU1RfQ1NTQ0FTSU5HVEVTVCAxCisjZGVmaW5lIFdF
QkNPUkVfQlVJTFRJTl9YTUxDQVNJTkdURVNUX1VSTENBU0lOR1RFU1QgMQorCisjZGVmaW5lIFdF
QkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fQ09ERShtYWNybykgXAorICAgIG1h
Y3JvKHhtbENhc2luZ1Rlc3RYTUxDYXNpbmdUZXN0Q29kZSwgeG1sQ2FzaW5nVGVzdCwgc194bWxD
YXNpbmdUZXN0WE1MQ2FzaW5nVGVzdENvZGVMZW5ndGgpIFwKKyAgICBtYWNybyh4bWxDYXNpbmdU
ZXN0Q3NzQ2FzaW5nVGVzdENvZGUsIGNzc0Nhc2luZ1Rlc3QsIHNfeG1sQ2FzaW5nVGVzdENzc0Nh
c2luZ1Rlc3RDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8oeG1sQ2FzaW5nVGVzdFVybENhc2luZ1Rl
c3RDb2RlLCB1cmxDYXNpbmdUZXN0LCBzX3htbENhc2luZ1Rlc3RVcmxDYXNpbmdUZXN0Q29kZUxl
bmd0aCkgXAorCisjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5f
RlVOQ1RJT05fTkFNRShtYWNybykgXAorICAgIG1hY3JvKGNzc0Nhc2luZ1Rlc3QpIFwKKyAgICBt
YWNybyh1cmxDYXNpbmdUZXN0KSBcCisgICAgbWFjcm8oeG1sQ2FzaW5nVGVzdCkgXAorCisjZGVm
aW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJn
dW1lbnRDb3VudCkgXAorICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2Vu
ZXJhdG9yKEpTQzo6Vk0mKTsKKworV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJ
Tl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlMVElO
X0dFTkVSQVRPUgorCisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9YTUxDQVNJTkdURVNUX0VYSVNU
UyhvYmplY3QsIGZ1bmMpIGRlZmluZWQgV0VCQ09SRV9CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAj
IyBmdW5jCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIHhtbENhc2luZ1Rl
c3RCdWlsdGluc19oCisKKyMjIyBFbmQgRmlsZTogeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zLmgKKwor
IyMjIEJlZ2luIEZpbGU6IHhtbENhc2luZ1Rlc3RCdWlsdGlucy5jcHAKKy8qCisgKiBDb3B5cmln
aHQgKGMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisg
Ki8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVy
YXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAieG1sQ2FzaW5nVGVzdEJ1aWx0aW5zLmgi
CisKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSA8cnVudGltZS9F
eGVjdXRhYmxlLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgorI2lu
Y2x1ZGUgPHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvU3RydWN0
dXJlSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVk0uaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc194bWxDYXNpbmdUZXN0WE1MQ2Fz
aW5nVGVzdENvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5u
b3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc194bWxDYXNpbmdUZXN0WE1MQ2FzaW5nVGVzdENvZGVM
ZW5ndGggPSAxMjc7Citjb25zdCBjaGFyKiBzX3htbENhc2luZ1Rlc3RYTUxDYXNpbmdUZXN0Q29k
ZSA9CisgICAiKGZ1bmN0aW9uIChzdHJlYW0pXG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICBcInVz
ZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHJldHVybiAhIXN0cmVhbS5AcmVh
ZGVyO1xuIiBcCisgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkg
c194bWxDYXNpbmdUZXN0Q3NzQ2FzaW5nVGVzdENvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpD
b25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc194bWxDYXNpbmdU
ZXN0Q3NzQ2FzaW5nVGVzdENvZGVMZW5ndGggPSA1MTQ7Citjb25zdCBjaGFyKiBzX3htbENhc2lu
Z1Rlc3RDc3NDYXNpbmdUZXN0Q29kZSA9CisgICAiKGZ1bmN0aW9uIChzdHJlYW0sIHJlYXNvbilc
biIgXAorICAgIntcbiIgXAorICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBc
CisgICAiICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQpXG4i
IFwKKyAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiIgXAorICAgIiAgICBp
ZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZClcbiIgXAorICAgIiAg
ICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpO1xuIiBcCisg
ICAiICAgIHN0cmVhbS5AcXVldWUgPSBbXTtcbiIgXAorICAgIiAgICBAZmluaXNoQ2xvc2luZ1Jl
YWRhYmxlU3RyZWFtKHN0cmVhbSk7XG4iIFwKKyAgICIgICAgcmV0dXJuIEBwcm9taXNlSW52b2tl
T3JOb29wKHN0cmVhbS5AdW5kZXJseWluZ1NvdXJjZSwgXCJjYW5jZWxcIiwgW3JlYXNvbl0pLnRo
ZW4oZnVuY3Rpb24oKSB7IH0pO1xuIiBcCisgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNv
bnN0cnVjdEFiaWxpdHkgc194bWxDYXNpbmdUZXN0VXJsQ2FzaW5nVGVzdENvZGVDb25zdHJ1Y3RB
YmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBp
bnQgc194bWxDYXNpbmdUZXN0VXJsQ2FzaW5nVGVzdENvZGVMZW5ndGggPSA0Nzc7Citjb25zdCBj
aGFyKiBzX3htbENhc2luZ1Rlc3RVcmxDYXNpbmdUZXN0Q29kZSA9CisgICAiKGZ1bmN0aW9uIChv
YmplY3QsIGtleSwgYXJncylcbiIgXAorICAgIntcbiIgXAorICAgIiAgICBcInVzZSBzdHJpY3Rc
IjtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHRyeSB7XG4iIFwKKyAgICIgICAgICAgIHZhciBt
ZXRob2QgPSBvYmplY3Rba2V5XTtcbiIgXAorICAgIiAgICAgICAgaWYgKHR5cGVvZiBtZXRob2Qg
PT09IFwidW5kZWZpbmVkXCIpXG4iIFwKKyAgICIgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5y
ZXNvbHZlKCk7XG4iIFwKKyAgICIgICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9i
amVjdCwgYXJncyk7XG4iIFwKKyAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVz
dWx0KTtcbiIgXAorICAgIiAgICB9XG4iIFwKKyAgICIgICAgY2F0Y2goZXJyb3IpIHtcbiIgXAor
ICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiIgXAorICAgIiAgICB9
XG4iIFwKKyAgICJ9KVxuIiBcCis7CisKKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFU
T1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKK3tcCisgICAg
SlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+
KHZtLmNsaWVudERhdGEpOyBcCisgICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlv
bnMoKS54bWxDYXNpbmdUZXN0QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5r
KHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkueG1sQ2FzaW5nVGVzdEJ1aWx0aW5z
KCkuY29kZU5hbWUjI1NvdXJjZSgpKTsgXAorfQorV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RF
U1RfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVf
QlVJTFRJTl9HRU5FUkFUT1IKKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjIyMgRW5kIEZp
bGU6IHhtbENhc2luZ1Rlc3RCdWlsdGlucy5jcHAKKworIyMjIEJlZ2luIEZpbGU6IHhtbENhc2lu
Z1Rlc3RCdWlsdGluc1dyYXBwZXIuaAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJ
VCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlw
dCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgeG1sQ2FzaW5n
VGVzdEJ1aWx0aW5zV3JhcHBlcl9oCisjZGVmaW5lIHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBw
ZXJfaAorCisjaW5jbHVkZSAieG1sQ2FzaW5nVGVzdEJ1aWx0aW5zLmgiCisjaW5jbHVkZSA8YnVp
bHRpbnMvQnVpbHRpblV0aWxzLmg+CisjaW5jbHVkZSA8Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0lkZW50aWZpZXIuaD4KKyNpbmNsdWRl
IDxydW50aW1lL0pTRnVuY3Rpb24uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyB4
bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyIDogcHJpdmF0ZSBKU0M6OldlYWtIYW5kbGVPd25l
ciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcihK
U0M6OlZNKiB2bSkKKyAgICAgICAgOiBtX3ZtKCp2bSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNI
X1hNTENBU0lOR1RFU1RfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJWkVfQlVJTFRJTl9O
QU1FUykKKyNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1
bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UoSlNDOjptYWtlU291cmNlKFN0
cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpKSkKKyAgICAgICAg
V0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKElOSVRJQUxJWkVfQlVJ
TFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01F
TUJFUlMKKyAgICB7CisgICAgfQorCisjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVT
KG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCisgICAgY29uc3QgSlNDOjpTb3VyY2VD
b2RlJiBuYW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9Cisg
ICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlM
VElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCisKKyAg
ICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVD
TEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCisKKyAgICB2b2lkIGV4cG9ydE5hbWVz
KCk7CisKK3ByaXZhdGU6CisgICAgSlNDOjpWTSYgbV92bTsKKworICAgIFdFQkNPUkVfRk9SRUFD
SF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fTkFN
RVMpCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0
aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7
XAorICAgIEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFt
ZSMjRXhlY3V0YWJsZTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElO
X0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJ
TFRJTl9TT1VSQ0VfTUVNQkVSUworCit9OworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNV
VEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitpbmxpbmUgSlNDOjpVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMj
RXhlY3V0YWJsZSgpIFwKK3tcCisgICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSlcCisgICAg
ICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU+KEpTQzo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUobV92bSwgbV8jI25hbWUj
I1NvdXJjZSwgZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCksIHNfIyNuYW1lIyNDb25zdHJ1Y3RB
YmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRhYmxlKTtcCisgICAgcmV0dXJuIG1fIyNu
YW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKK30KK1dFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNU
X0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBERUZJTkVf
QlVJTFRJTl9FWEVDVVRBQkxFUworCitpbmxpbmUgdm9pZCB4bWxDYXNpbmdUZXN0QnVpbHRpbnNX
cmFwcGVyOjpleHBvcnROYW1lcygpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTl9OQU1FKG5h
bWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+YXBwZW5kRXh0ZXJuYWxOYW1lKG5hbWUjI1B1YmxpY05h
bWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUoKSk7CisgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lO
R1RFU1RfQlVJTFRJTl9GVU5DVElPTl9OQU1FKEVYUE9SVF9GVU5DVElPTl9OQU1FKQorI3VuZGVm
IEVYUE9SVF9GVU5DVElPTl9OQU1FCit9CisKK2NsYXNzIHhtbENhc2luZ1Rlc3RCdWlsdGluRnVu
Y3Rpb25zIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCB4bWxDYXNpbmdUZXN0QnVpbHRpbkZ1bmN0
aW9ucyhKU0M6OlZNJiB2bSkgOiBtX3ZtKHZtKSB7IH0KKworICAgIHZvaWQgaW5pdChKU0M6OkpT
R2xvYmFsT2JqZWN0Jik7CisgICAgdm9pZCB2aXNpdChKU0M6OlNsb3RWaXNpdG9yJik7CisKK3B1
YmxpYzoKKyAgICBKU0M6OlZNJiBtX3ZtOworCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VS
Q0VfTUVNQkVSUyhmdW5jdGlvbk5hbWUpIFwKKyAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpT
RnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uOworICAgIFdFQkNPUkVfRk9SRUFD
SF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fU09V
UkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCit9Owor
CitpbmxpbmUgdm9pZCB4bWxDYXNpbmdUZXN0QnVpbHRpbkZ1bmN0aW9uczo6aW5pdChKU0M6OkpT
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTihj
b2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXAorICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1
bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1
aWx0aW5GdW5jdGlvbihtX3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2Jq
ZWN0KSk7CisgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKEVY
UE9SVF9GVU5DVElPTikKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT04KK30KKworaW5saW5lIHZvaWQg
eG1sQ2FzaW5nVGVzdEJ1aWx0aW5GdW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisjZGVmaW5lIFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKCZt
XyMjbmFtZSMjRnVuY3Rpb24pOworICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JV
SUxUSU5fRlVOQ1RJT05fTkFNRShWSVNJVF9GVU5DVElPTikKKyN1bmRlZiBWSVNJVF9GVU5DVElP
TgorfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIHhtbENhc2luZ1Rl
c3RCdWlsdGluc1dyYXBwZXJfaAorCisjIyMgRW5kIEZpbGU6IHhtbENhc2luZ1Rlc3RCdWlsdGlu
c1dyYXBwZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1VwZGF0ZUNvbnRl
bnRzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1VwZGF0ZUNvbnRlbnRzLnB5CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MmY5NTMyY2I2ZmIwYWJhZjUyMGRhZTA0ODU4YWM5MmE0
ZmM2MjQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9VcGRhdGVDb250ZW50cy5weQorKysgL2Rldi9udWxsCkBAIC0x
LDQ4ICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCi0KLSMgQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSMg
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKLSMgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSMgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSMgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKLSMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotIyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
LSMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0jIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWlt
cG9ydCBzeXMKLWltcG9ydCBvcwotCi1hc3NlcnQobGVuKHN5cy5hcmd2KSA9PSAzKQotCi1jb21w
ID0gc3lzLmFyZ3ZbMV0KLWZpbGVuYW1lID0gc3lzLmFyZ3ZbMl0KLQotdCA9IEZhbHNlCi0KLWlm
IG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lKToKLSAgICBmID0gb3BlbihmaWxlbmFtZSwgJ3InKQot
ICAgIGNvbXBhcmF0b3IgPSBmLnJlYWQoKQotICAgIGYuY2xvc2UoKQotICAgIHQgPSBUcnVlCi0K
LWlmIChub3QgdCBvciBjb21wICE9IGNvbXBhcmF0b3IpOgotICAgIGYgPSBvcGVuKGZpbGVuYW1l
LCAndycpCi0gICAgZi53cml0ZShjb21wKQotICAgIGYuY2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAppbmRleCA3
M2ViZTQ3OTkzNWZjYTc0MDlmZDkzMmY4ODliNjU4NGJlNThiNjE0Li44MTZiNGE1ZDMwYjUyMGI1
ZDFkZmVhZWFiMmY5Mzk0YzY4YmRjMGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtNDAsNyArNDAsNyBAQCBz
dGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5h
bChWTSYsIGNvbnN0IFNvdXJjZUNvZAogQnVpbHRpbkV4ZWN1dGFibGVzOjpCdWlsdGluRXhlY3V0
YWJsZXMoVk0mIHZtKQogICAgIDogbV92bSh2bSkKICNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElO
X1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNT
b3VyY2UobWFrZVNvdXJjZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFtZSwg
bGVuZ3RoKSkpCi0gICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihJTklUSUFMSVpFX0JVSUxUSU5fU09V
UkNFX01FTUJFUlMpCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKElOSVRJQUxJWkVfQlVJ
TFRJTl9TT1VSQ0VfTUVNQkVSUykKICN1bmRlZiBFWFBPU0VfQlVJTFRJTl9TVFJJTkdTCiB7CiB9
CkBAIC0xMzIsNyArMTMyLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5F
eGVjdXRhYmxlczo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKICAgICAgICAgbV8jI25hbWUjI0V4ZWN1
dGFibGUgPSBXZWFrPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPihjcmVhdGVCdWlsdGluRXhl
Y3V0YWJsZShtXyMjbmFtZSMjU291cmNlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmZ1bmN0aW9uTmFtZSMjUHVibGljTmFtZSgpLCBzXyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0
eSksIHRoaXMsICZtXyMjbmFtZSMjRXhlY3V0YWJsZSk7XAogICAgIHJldHVybiBtXyMjbmFtZSMj
RXhlY3V0YWJsZS5nZXQoKTtcCiB9Ci1KU0NfRk9SRUFDSF9CVUlMVElOKERFRklORV9CVUlMVElO
X0VYRUNVVEFCTEVTKQorSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0VY
RUNVVEFCTEVTKQogI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NPVVJDRVMKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCmluZGV4
IDZhOTgzMjE3YTBhODg0NTdlZjA5OGZiY2I5NTEyM2Q1OWE1MjUxNzUuLmVjOGQ1NzcwNGI4N2M1
ODRhOTM2ZGRlNDE3ZDYyOWY4NTdiMzY1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVi
bGljOgogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXAog
Y29uc3QgU291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgeyByZXR1cm4gbV8jI25hbWUjI1NvdXJj
ZTsgfQogICAgIAotICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oRVhQT1NFX0JVSUxUSU5fRVhFQ1VU
QUJMRVMpCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNV
VEFCTEVTKQogI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NPVVJDRVMKIAogICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5k
LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICNk
ZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwg
bGVuZ3RoKVwKICAgICBTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7IFwKICAgICBXZWFrPFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKLSAgICBKU0Nf
Rk9SRUFDSF9CVUlMVElOKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyAgICBKU0Nf
Rk9SRUFDSF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQogI3Vu
ZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2NyZWF0ZV9oYXNoX3RhYmxlCmluZGV4IDZmYTc4Y2VhMjg3MzhjMGYxNzQ1MTQ3ZjA0OTcz
YWNiNmNhODM2ZDguLmEyMjVjYmU2N2Q4MGRhYTJmZDNlOThmMTkwNTJlYzA5ODE4ZDIzZjggMTAw
NzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKQEAgLTMxOSw3ICszMTksNyBA
QCBzdWIgb3V0cHV0KCkgewogICAgICAgICBpZiAoJHZhbHVlc1skaV17InR5cGUifSBlcSAiRnVu
Y3Rpb24iKSAgewogICAgICAgICAgICAgbXkgJHRhYmxlSGVhZCA9ICRuYW1lOwogICAgICAgICAg
ICAgJHRhYmxlSGVhZCA9fiBzL1RhYmxlJC8vOwotICAgICAgICAgICAgcHJpbnQgIiAjaWYgSlND
X0JVSUxUSU5fRVhJU1RTKCIgLiB1YygkdGFibGVIZWFkIC4gJGtleSkgLiIpXG4iOworICAgICAg
ICAgICAgcHJpbnQgIiAjaWYgSlNDX0JVSUxUSU5fRVhJU1RTKCIgLiB1YygkdGFibGVIZWFkKSAu
ICIsICIgLiB1Yygka2V5KSAuIilcbiI7CiAgICAgICAgICAgICBwcmludCAiICAgeyBcIiRrZXlc
IiwgKCgkYXR0cnNbJGldKSAmIH5GdW5jdGlvbikgfCBCdWlsdGluLCAkaW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxCdWlsdGluR2VuZXJhdG9yPigiIC4gJHRhYmxlSGVhZCAuIHVj
Zmlyc3QoJGtleSkgLiAiQ29kZUdlbmVyYXRvciksIChpbnRwdHJfdCkkc2Vjb25kVmFsdWUgfSB9
LFxuIjsKICAgICAgICAgICAgIHByaW50ICIgI2Vsc2VcbiIKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBkZmY0MTg3M2RhMmI2NWE3NzExNGNmNWQ0MWU4N2E0YzBkMzA2MzdjLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucworKysgL2Rldi9udWxsCkBAIC0xLDM0MyArMCwwIEBA
Ci0jIS91c3IvYmluL3B5dGhvbgotIyBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6
Ci0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0jIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0jIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotIyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0jIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotIyBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0jIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGFyZ3BhcnNlCi1pbXBv
cnQgZmlsZWNtcAotaW1wb3J0IGZubWF0Y2gKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQg
c2h1dGlsCi1pbXBvcnQgc3lzCi1pbXBvcnQgZGF0ZXRpbWUKLWltcG9ydCBqc29uCi0KLXBhcnNl
ciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKLXBhcnNlci5hZGRfYXJndW1lbnQoJ2lucHV0
X2ZpbGUnLCBuYXJncz0nKicsIGhlbHA9J0lucHV0IEpTIGZpbGVzIHdoaWNoIGJ1aWx0aW5zIGdl
bmVyYXRlZCBmcm9tJykKLXBhcnNlci5hZGRfYXJndW1lbnQoJy0taW5wdXQtZGlyZWN0b3J5Jywg
aGVscD0nQWxsIEpTIGZpbGVzIHdpbGwgYmUgdXNlZCBhcyBpbnB1dCBmcm9tIHRoaXMgZGlyZWN0
b3J5LicpCi1wYXJzZXIuYWRkX2FyZ3VtZW50KCctLW91dHB1dCcsIGhlbHA9J3BhdGggdG8gb3V0
cHV0IGNwcCBvciBoIGZpbGUnKQotcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1wcmVmaXgnLCBkZWZh
dWx0PSdKU0MnLCBoZWxwPSdwcmVmaXggdXNlZCBmb3IgcHVibGljIG1hY3JvcycpCi1wYXJzZXIu
YWRkX2FyZ3VtZW50KCctLW5hbWVzcGFjZScsIGRlZmF1bHQ9J0pTQycsIGhlbHA9J0MrKyBuYW1l
c3BhY2UnKQotYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKLQotY29weXJpZ2h0VGV4dCA9ICIi
IiAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovXG4KLSIiIgotCi1nZW5l
cmF0b3JTdHJpbmcgPSAiLyogR2VuZXJhdGVkIGJ5ICVzIGRvIG5vdCBoYW5kIGVkaXQuICovXG4i
ICUgb3MucGF0aC5iYXNlbmFtZShfX2ZpbGVfXykKLQotZnVuY3Rpb25IZWFkUmVnRXhwID0gcmUu
Y29tcGlsZShyIig/OmZ1bmN0aW9ufGNvbnN0cnVjdG9yKVxzK1x3K1xzKlwoLio/XCkiLCByZS5N
VUxUSUxJTkUgfCByZS5TKQotZnVuY3Rpb25OYW1lUmVnRXhwID0gcmUuY29tcGlsZShyIig/OmZ1
bmN0aW9ufGNvbnN0cnVjdG9yKVxzKyhcdyspXHMqXCgiLCByZS5NVUxUSUxJTkUgfCByZS5TKQot
ZnVuY3Rpb25Jc0NvbnN0cnVjdG9yUmVnRXhwID0gcmUuY29tcGlsZShyIl5jb25zdHJ1Y3RvciIs
IHJlLk1VTFRJTElORSB8IHJlLlMpCi1mdW5jdGlvblBhcmFtZXRlckZpbmRlciA9IHJlLmNvbXBp
bGUociJeKD86ZnVuY3Rpb258Y29uc3RydWN0b3IpXHMrKD86XHcrKVxzKlwoKCg/OlxzKlx3Kyk/
XHMqKD86XHMqLFxzKlx3KykqKT9ccypcKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCi0KLW11bHRp
bGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cKi4qP1wqXC8iLCByZS5NVUxUSUxJ
TkUgfCByZS5TKQotc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cLy4q
P1xuIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKLQotZGVmIGdldENvcHlyaWdodChzb3VyY2UpOgot
ICAgIGNvcHlyaWdodEJsb2NrID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5maW5kYWxsKHNvdXJj
ZSlbMF0KLSAgICBjb3B5cmlnaHRCbG9jayA9IGNvcHlyaWdodEJsb2NrWzpjb3B5cmlnaHRCbG9j
ay5pbmRleCgiUmVkaXN0cmlidXRpb24iKV0KLSAgICBjb3B5UmlnaHRMaW5lcyA9IFtdCi0KLSAg
ICBmb3IgbGluZSBpbiBjb3B5cmlnaHRCbG9jay5zcGxpdCgiXG4iKToKLSAgICAgICAgbGluZSA9
IGxpbmUucmVwbGFjZSgiLyoiLCAiIikKLSAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKi8i
LCAiIikKLSAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKiIsICIiKQotICAgICAgICBsaW5l
ID0gbGluZS5yZXBsYWNlKCJDb3B5cmlnaHQiLCAiIikKLSAgICAgICAgbGluZSA9IGxpbmUucmVw
bGFjZSgiY29weXJpZ2h0IiwgIiIpCi0gICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIihDKSIs
ICIiKQotICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIoYykiLCAiIikKLSAgICAgICAgbGlu
ZSA9IGxpbmUuc3RyaXAoKQotICAgICAgICBpZiBsZW4obGluZSkgPT0gMDoKLSAgICAgICAgICAg
IGNvbnRpbnVlCi0KLSAgICAgICAgY29weVJpZ2h0TGluZXMuYXBwZW5kKGxpbmUpCi0gICAgCi0g
ICAgcmV0dXJuIGxpc3Qoc2V0KGNvcHlSaWdodExpbmVzKSkKLQotY2xhc3MgRnVuY3Rpb24ob2Jq
ZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgc291cmNlLCBpc0NvbnN0cnVjdG9y
LCBwYXJhbWV0ZXJzKToKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotICAgICAgICBzZWxmLnNv
dXJjZSA9IHNvdXJjZQotICAgICAgICBzZWxmLmlzQ29uc3RydWN0b3IgPSBpc0NvbnN0cnVjdG9y
Ci0gICAgICAgIHNlbGYucGFyYW1ldGVycyA9IHBhcmFtZXRlcnMKLQotICAgIGRlZiBtYW5nbGVO
YW1lKHNlbGYsIG9iamVjdCk6Ci0gICAgICAgIHFOYW1lID0gb2JqZWN0ICsgIi4iICsgc2VsZi5u
YW1lCi0gICAgICAgIG1hbmdsZWROYW1lID0gIiIKLSAgICAgICAgaSA9IDAKLSAgICAgICAgd2hp
bGUgaSA8IGxlbihxTmFtZSk6Ci0gICAgICAgICAgICBpZiBxTmFtZVtpXSA9PSAnLic6Ci0gICAg
ICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZSArIHFOYW1lW2kgKyAxXS51cHBl
cigpCi0gICAgICAgICAgICAgICAgaSA9IGkgKyAxCi0gICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtpXQotICAgICAgICAg
ICAgaSA9IGkgKyAxCi0gICAgICAgIGlmIHNlbGYuaXNDb25zdHJ1Y3RvcjoKLSAgICAgICAgICAg
IG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWUgKyAiQ29uc3RydWN0b3IiCi0gICAgICAgIHJldHVy
biBtYW5nbGVkTmFtZQotCi1kZWYgZ2V0RnVuY3Rpb25zKHNvdXJjZSk6Ci0KLSAgICBzb3VyY2Ug
PSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiLyoqLyIsIHNpbmdsZUxpbmVDb21tZW50UmVn
RXhwLnN1YigiLy9cbiIsIHNvdXJjZSkpCi0KLSAgICBtYXRjaGVzID0gWyBmIGZvciBmIGluIGZ1
bmN0aW9uSGVhZFJlZ0V4cC5maW5kaXRlcihzb3VyY2UpXQotICAgIGZ1bmN0aW9uQm91bmRzID0g
W10KLSAgICBzdGFydCA9IDAKLSAgICBlbmQgPSAwCi0gICAgZm9yIG1hdGNoIGluIG1hdGNoZXM6
Ci0gICAgICAgIHN0YXJ0ID0gbWF0Y2guc3RhcnQoKQotICAgICAgICBpZiBzdGFydCA8IGVuZDoK
LSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGVuZCA9IG1hdGNoLmVuZCgpCi0gICAgICAg
IHdoaWxlIHNvdXJjZVtlbmRdICE9ICd7JzoKLSAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKLSAg
ICAgICAgZGVwdGggPSAxCi0gICAgICAgIGVuZCA9IGVuZCArIDEKLSAgICAgICAgd2hpbGUgZGVw
dGggPiAwOgotICAgICAgICAgICAgaWYgc291cmNlW2VuZF0gPT0gJ3snOgotICAgICAgICAgICAg
ICAgIGRlcHRoID0gZGVwdGggKyAxCi0gICAgICAgICAgICBlbGlmIHNvdXJjZVtlbmRdID09ICd9
JzoKLSAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRoIC0gMQotICAgICAgICAgICAgZW5kID0g
ZW5kICsgMQotICAgICAgICBmdW5jdGlvbkJvdW5kcy5hcHBlbmQoKHN0YXJ0LCBlbmQpKQotCi0g
ICAgZnVuY3Rpb25zID0gW3NvdXJjZVtzdGFydDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwgZW5k
KSBpbiBmdW5jdGlvbkJvdW5kc10KLSAgICByZXN1bHQgPSBbXQotICAgIGZvciBmdW5jdGlvbiBp
biBmdW5jdGlvbnM6Ci0gICAgICAgIGZ1bmN0aW9uID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5z
dWIoIiIsIGZ1bmN0aW9uKQotICAgICAgICBmdW5jdGlvbk5hbWUgPSBmdW5jdGlvbk5hbWVSZWdF
eHAuZmluZGFsbChmdW5jdGlvbilbMF0KLSAgICAgICAgZnVuY3Rpb25Jc0NvbnN0cnVjdG9yID0g
ZnVuY3Rpb25Jc0NvbnN0cnVjdG9yUmVnRXhwLm1hdGNoKGZ1bmN0aW9uKSAhPSBOb25lCi0gICAg
ICAgIGZ1bmN0aW9uUGFyYW1ldGVycyA9IGZ1bmN0aW9uUGFyYW1ldGVyRmluZGVyLmZpbmRhbGwo
ZnVuY3Rpb24pWzBdLnNwbGl0KCcsJykKLSAgICAgICAgaWYgbGVuKGZ1bmN0aW9uUGFyYW1ldGVy
c1swXSkgPT0gMDoKLSAgICAgICAgICAgIGZ1bmN0aW9uUGFyYW1ldGVycyA9IFtdCi0KLSAgICAg
ICAgcmVzdWx0LmFwcGVuZChGdW5jdGlvbihmdW5jdGlvbk5hbWUsIGZ1bmN0aW9uLCBmdW5jdGlv
bklzQ29uc3RydWN0b3IsIGZ1bmN0aW9uUGFyYW1ldGVycykpCi0gICAgcmV0dXJuIHJlc3VsdAot
Ci1kZWYgd3JpdGVJbmNsdWRlRGlyZWN0aXZlcyh3cml0ZXIsIGhlYWRlck5hbWVzKToKLSAgICBm
b3IgaGVhZGVyTmFtZSBpbiBoZWFkZXJOYW1lczoKLSAgICAgICAgd3JpdGVyLndyaXRlKCIjaW5j
bHVkZSAiICsgaGVhZGVyTmFtZSArICJcbiIpCi0KLWRlZiBnZW5lcmF0ZUNvZGUoc291cmNlKToK
LSAgICBpbnB1dEZpbGUgPSBvcGVuKHNvdXJjZSwgInIiKQotICAgIGJhc2VOYW1lID0gb3MucGF0
aC5iYXNlbmFtZShzb3VyY2UpLnJlcGxhY2UoIi5qcyIsICIiKQotICAgIAotICAgIHNvdXJjZSA9
ICIiCi0gICAgZm9yIGxpbmUgaW4gaW5wdXRGaWxlOgotICAgICAgICBzb3VyY2UgPSBzb3VyY2Ug
KyBsaW5lCi0gICAgCi0gICAgaWYgc3lzLnBsYXRmb3JtID09ICJjeWd3aW4iOgotICAgICAgICBz
b3VyY2UgPSBzb3VyY2UucmVwbGFjZSgiXHJcbiIsICJcbiIpCi0gICAgcmV0dXJuIChiYXNlTmFt
ZSwgZ2V0RnVuY3Rpb25zKHNvdXJjZSksIGdldENvcHlyaWdodChzb3VyY2UpKQotCi1idWlsdGlu
cyA9IFtdCi1jb3B5cmlnaHRzID0gW10KLShvdXRwdXRfYmFzZSwgXykgPSBvcy5wYXRoLnNwbGl0
ZXh0KGFyZ3Mub3V0cHV0KQotCi1pZiBhcmdzLmlucHV0X2RpcmVjdG9yeToKLSAgICBmb3IgZmls
ZSBpbiBvcy5saXN0ZGlyKGFyZ3MuaW5wdXRfZGlyZWN0b3J5KToKLSAgICAgICAgYXJncy5pbnB1
dF9maWxlLmFwcGVuZChvcy5wYXRoLmpvaW4oYXJncy5pbnB1dF9kaXJlY3RvcnksIGZpbGUpKQot
Ci1mb3IgZmlsZSBpbiBhcmdzLmlucHV0X2ZpbGU6Ci0gICAgaWYgZm5tYXRjaC5mbm1hdGNoKGZp
bGUsICcqLmpzJyk6Ci0gICAgICAgIChiYXNlTmFtZSwgZnVuY3Rpb25zLCBvYmplY3RDb3B5cmln
aHRzKSA9IGdlbmVyYXRlQ29kZShmaWxlKQotICAgICAgICBjb3B5cmlnaHRzLmV4dGVuZChvYmpl
Y3RDb3B5cmlnaHRzKQotICAgICAgICBidWlsdGlucy5hcHBlbmQoKGJhc2VOYW1lLCBmdW5jdGlv
bnMpKQotbmFtZXNwYWNlID0gYXJncy5uYW1lc3BhY2UKLW1hY3JvUHJlZml4ID0gYXJncy5wcmVm
aXgKLXNjb3BlTmFtZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShhcmdzLm91
dHB1dCkpWzBdCi1pbmNsdWRlR3VhcmQgPSBzY29wZU5hbWUgKyAiX0giCi1oZWFkZXJOYW1lID0g
c2NvcGVOYW1lICsgIi5oIgotCi1oZWFkZXJJbmNsdWRlcyA9IFsiXCJCdWlsdGluVXRpbHMuaFwi
Il0gaWYgbmFtZXNwYWNlID09ICJKU0MiIGVsc2UgWyI8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+
Il0KLWNvbnRlbnRJbmNsdWRlcyA9IFsiXCJCdWlsdGluRXhlY3V0YWJsZXMuaFwiIiwgIlwiRXhl
Y3V0YWJsZS5oXCIiLCAiXCJKU0NlbGxJbmxpbmVzLmhcIiIsICJcIlZNLmhcIiJdIGlmIG5hbWVz
cGFjZSA9PSAiSlNDIiBlbHNlIFsiPHJ1bnRpbWUvRXhlY3V0YWJsZS5oPiIsICI8cnVudGltZS9T
dHJ1Y3R1cmVJbmxpbmVzLmg+IiwgIjxydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+IiwgIjxy
dW50aW1lL0pTQ2VsbElubGluZXMuaD4iLCAiPHJ1bnRpbWUvVk0uaD4iLCAiXCJXZWJDb3JlSlND
bGllbnREYXRhLmhcIiJdCi0KLWNvcHlyaWdodHMgPSBsaXN0KHNldChjb3B5cmlnaHRzKSkKLQot
Y29weXJpZ2h0Qm9keSA9ICIiCi1mb3IgY29weXJpZ2h0IGluIGNvcHlyaWdodHM6Ci0gICAgY29w
eXJpZ2h0Qm9keSA9IGNvcHlyaWdodEJvZHkgKyIgKiBDb3B5cmlnaHQgKEMpICIgKyBjb3B5cmln
aHQgKyAiXG4iCi0KLWJ1aWx0aW5zSGVhZGVyID0gb3BlbihvdXRwdXRfYmFzZSArICIuaC50bXAi
LCAidyIpCi1idWlsdGluc0ltcGxlbWVudGF0aW9uID0gb3BlbihvdXRwdXRfYmFzZSArICIuY3Bw
LnRtcCIsICJ3IikKLWNvcHlyaWdodFRleHQgPSAiLypcbiIgKyBjb3B5cmlnaHRCb2R5ICsgY29w
eXJpZ2h0VGV4dAotYnVpbHRpbnNIZWFkZXIud3JpdGUoIiIiJXMKLSVzCi0KLSNpZm5kZWYgJXMK
LSNkZWZpbmUgJXMKLQotIiIiICUgKGdlbmVyYXRvclN0cmluZywgY29weXJpZ2h0VGV4dCwgaW5j
bHVkZUd1YXJkLCBpbmNsdWRlR3VhcmQpKQotCi13cml0ZUluY2x1ZGVEaXJlY3RpdmVzKGJ1aWx0
aW5zSGVhZGVyLCBoZWFkZXJJbmNsdWRlcykKLQotYnVpbHRpbnNIZWFkZXIud3JpdGUoIiIiCi1u
YW1lc3BhY2UgSlNDIHsKLSAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Ci19Ci0KLW5hbWVz
cGFjZSAlcyB7Ci0KLSIiIiAlIG5hbWVzcGFjZSkKLQotY29kZVJlZmVyZW5jZXMgPSBbXQotCi1m
b3IgKG9iamVjdE5hbWUsIGZ1bmN0aW9ucykgaW4gYnVpbHRpbnM6Ci0gICAgcHJpbnQoIkdlbmVy
YXRpbmcgYmluZGluZ3MgZm9yIHRoZSAlcyBidWlsdGluLiIgJSBvYmplY3ROYW1lKQotICAgIGJ1
aWx0aW5zSGVhZGVyLndyaXRlKCIvKiAlcyBmdW5jdGlvbnMgKi9cbiIgJSBvYmplY3ROYW1lKQot
ICAgIGZvciBmdW5jdGlvbiBpbiBmdW5jdGlvbnM6Ci0gICAgICAgIG5hbWUgPSBmdW5jdGlvbi5u
YW1lCi0gICAgICAgIG1hbmdsZWROYW1lID0gZnVuY3Rpb24ubWFuZ2xlTmFtZShvYmplY3ROYW1l
KQotICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lWzBdLmxvd2VyKCkgKyBtYW5nbGVk
TmFtZVsxOl0gKyAiQ29kZSIKLSAgICAgICAgY29kZVJlZmVyZW5jZXMuYXBwZW5kKChtYW5nbGVk
TmFtZSwgZnVuY3Rpb24pKQotICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiZXh0ZXJuIGNv
bnN0IGNoYXIqIHNfJXM7XG4iICUgbWFuZ2xlZE5hbWUpCi0gICAgICAgIGJ1aWx0aW5zSGVhZGVy
LndyaXRlKCJleHRlcm4gY29uc3QgaW50IHNfJXNMZW5ndGg7XG4iICUgbWFuZ2xlZE5hbWUpCi0g
ICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RB
YmlsaXR5IHNfJXNDb25zdHJ1Y3RBYmlsaXR5O1xuIiAlIG1hbmdsZWROYW1lKQotICAgIGJ1aWx0
aW5zSGVhZGVyLndyaXRlKCJcbiIpCi0gICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUg
JXNfRk9SRUFDSF8lc19CVUlMVElOKG1hY3JvKSBcXFxuIiAlIChtYWNyb1ByZWZpeCwgb2JqZWN0
TmFtZS5yZXBsYWNlKCIuIiwgIl8iKS51cHBlcigpKSkKLSAgICBmb3IgZnVuY3Rpb24gaW4gZnVu
Y3Rpb25zOgotICAgICAgICBtYW5nbGVkTmFtZSA9IGZ1bmN0aW9uLm1hbmdsZU5hbWUob2JqZWN0
TmFtZSkKLSAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiAgICBtYWNybyglcywgJXMsICVk
KSBcXFxuIiAlIChmdW5jdGlvbi5uYW1lLCBtYW5nbGVkTmFtZSwgbGVuKGZ1bmN0aW9uLnBhcmFt
ZXRlcnMpKSkKLSAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG4iKQotICAgIGZvciBmdW5jdGlv
biBpbiBmdW5jdGlvbnM6Ci0gICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lICVz
X0JVSUxUSU5fJXMgMVxuIiAlIChtYWNyb1ByZWZpeCwgZnVuY3Rpb24ubWFuZ2xlTmFtZShvYmpl
Y3ROYW1lKS51cHBlcigpKSkKLSAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG5cbiIpCi1uYW1l
cyA9IFtdCi1idWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSAlc19GT1JFQUNIX0JVSUxUSU4o
bWFjcm8pXFxcbiIgJSBtYWNyb1ByZWZpeCkKLWZvciAoY29kZVJlZmVyZW5jZSwgZnVuY3Rpb24p
IGluIGNvZGVSZWZlcmVuY2VzOgotICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIgICAgbWFjcm8o
JXMsICVzLCBzXyVzTGVuZ3RoKSBcXFxuIiAlIChjb2RlUmVmZXJlbmNlLCBmdW5jdGlvbi5uYW1l
LCBjb2RlUmVmZXJlbmNlKSkKLSAgICBuYW1lcy5hcHBlbmQoZnVuY3Rpb24ubmFtZSkKLQotYnVp
bHRpbnNIZWFkZXIud3JpdGUoIlxuXG4iKQotYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUg
JXNfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFxcXG4iICUgbWFjcm9QcmVm
aXgpCi1mb3IgbmFtZSBpbiBzb3J0ZWQoc2V0KG5hbWVzKSk6Ci0gICAgYnVpbHRpbnNIZWFkZXIu
d3JpdGUoIiAgICBtYWNybyglcykgXFxcbiIgJSBuYW1lKQotYnVpbHRpbnNIZWFkZXIud3JpdGUo
IiIiCi0KLSNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rp
b25OYW1lLCBhcmd1bWVudENvdW50KSBcXAotICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBj
b2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKLQotJXNfRk9SRUFDSF9CVUlMVElOKERFQ0xB
UkVfQlVJTFRJTl9HRU5FUkFUT1IpCi0jdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgot
Ci0jZGVmaW5lICVzX0JVSUxUSU5fRVhJU1RTKG5hbWUpIGRlZmluZWQgJXNfQlVJTFRJTl8gIyMg
bmFtZQotCi19Ci0KLSNlbmRpZiAvLyAlcwotCi0iIiIgJSAobWFjcm9QcmVmaXgsIG1hY3JvUHJl
Zml4LCBtYWNyb1ByZWZpeCwgaW5jbHVkZUd1YXJkKSkKLQotYnVpbHRpbnNJbXBsZW1lbnRhdGlv
bi53cml0ZSgiIiIlcwotJXMKLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiJXMi
Ci0KLSIiIiAgJSAoZ2VuZXJhdG9yU3RyaW5nLCBjb3B5cmlnaHRUZXh0LCBoZWFkZXJOYW1lKSkK
LQotd3JpdGVJbmNsdWRlRGlyZWN0aXZlcyhidWlsdGluc0ltcGxlbWVudGF0aW9uLCBjb250ZW50
SW5jbHVkZXMpCi0KLWJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIiCi1uYW1lc3BhY2Ug
JXMgewotCi0iIiIgICUgKG5hbWVzcGFjZSkpCi0KLQotCi1mb3IgKGNvZGVSZWZlcmVuY2UsIGZ1
bmN0aW9uKSBpbiBjb2RlUmVmZXJlbmNlczoKLSAgICBzb3VyY2UgPSBmdW5jdGlvbi5zb3VyY2UK
LSAgICBzb3VyY2UgPSAiKGZ1bmN0aW9uICIgKyBzb3VyY2Vbc291cmNlLmluZGV4KCIoIik6XSAr
ICIpIgotICAgIGxpbmVzID0ganNvbi5kdW1wcyhzb3VyY2UpWzE6LTFdLnNwbGl0KCJcXG4iKQot
ICAgIHNvdXJjZUxlbmd0aCA9IGxlbihzb3VyY2UpCi0gICAgc291cmNlID0gIiIKLSAgICBmb3Ig
bGluZSBpbiBsaW5lczoKLSAgICAgICAgc291cmNlID0gc291cmNlICsgKCIgICAgXCIlc1xcblwi
IFxcXG4iICUgbGluZSkKLSAgICBidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCJjb25zdCBj
aGFyKiBzXyVzID1cbiVzO1xuXG4iICUgKGNvZGVSZWZlcmVuY2UsIHNvdXJjZSkpCi0gICAgYnVp
bHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiY29uc3QgaW50IHNfJXNMZW5ndGggPSAlZDtcblxu
IiAlIChjb2RlUmVmZXJlbmNlLCBzb3VyY2VMZW5ndGggKyAxKSkgIyArIDEgZm9yIFxuCi0gICAg
Y29uc3RydWN0QWJpbGl0eSA9ICJKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVj
dCIKLSAgICBpZiBmdW5jdGlvbi5pc0NvbnN0cnVjdG9yOgotICAgICAgICBjb25zdHJ1Y3RBYmls
aXR5ID0gIkpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0IgotICAgIGJ1aWx0aW5z
SW1wbGVtZW50YXRpb24ud3JpdGUoImNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzXyVzQ29u
c3RydWN0QWJpbGl0eSA9ICVzO1xuXG4iICUgKGNvZGVSZWZlcmVuY2UsIGNvbnN0cnVjdEFiaWxp
dHkpKSAjICsgMSBmb3IgXG4KLQotYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiIiIKLSNk
ZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFy
Z3VtZW50Q291bnQpIFxcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVy
YXRvcihKU0M6OlZNJiB2bSkgXFwKLSIiIik7Ci0KLWlmIChuYW1lc3BhY2UgPT0gIkpTQyIpOgot
ICAgIGJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIie1xcCi0gICAgcmV0dXJuIHZtLmJ1
aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5i
dWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsgXFwKLSIiIikKLWVsc2U6
Ci0gICAgYnVpbHRpbk5hbWUgPSBzY29wZU5hbWVbMF0ubG93ZXIoKSArIHNjb3BlTmFtZVsxOl0K
LSAgICBidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIntcXAotICAgIEpTVk1DbGllbnRE
YXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnRE
YXRhKTsgXFwKLSAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiVzKCku
Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0
aW9ucygpLiVzKCkuY29kZU5hbWUjI1NvdXJjZSgpKTsgXFwKLSIiIiUgKGJ1aWx0aW5OYW1lLCBi
dWlsdGluTmFtZSkpCi0KLWJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIifQotJXNfRk9S
RUFDSF9CVUlMVElOKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKLSN1bmRlZiBERUZJTkVfQlVJ
TFRJTl9HRU5FUkFUT1IKLX0KLQotIiIiJSAobWFjcm9QcmVmaXgpKQotCi1idWlsdGluc0hlYWRl
ci5jbG9zZSgpCi1idWlsdGluc0ltcGxlbWVudGF0aW9uLmNsb3NlKCkKLQotaWYgKG5vdCBvcy5w
YXRoLmV4aXN0cyhvdXRwdXRfYmFzZSArICIuaCIpKSBvciAobm90IGZpbGVjbXAuY21wKG91dHB1
dF9iYXNlICsgIi5oLnRtcCIsIG91dHB1dF9iYXNlICsgIi5oIiwgc2hhbGxvdz1GYWxzZSkpOgot
ICAgIGlmIChvcy5wYXRoLmV4aXN0cyhvdXRwdXRfYmFzZSArICIuaCIpKToKLSAgICAgICAgb3Mu
cmVtb3ZlKG91dHB1dF9iYXNlICsgIi5oIikKLSAgICBvcy5yZW5hbWUob3V0cHV0X2Jhc2UgKyAi
LmgudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmgiKQotZWxzZToKLSAgICBvcy5yZW1vdmUob3V0cHV0
X2Jhc2UgKyAiLmgudG1wIikKLQotaWYgKG5vdCBvcy5wYXRoLmV4aXN0cyhvdXRwdXRfYmFzZSAr
ICIuY3BwIikpIG9yIChub3QgZmlsZWNtcC5jbXAob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCBv
dXRwdXRfYmFzZSArICIuY3BwIiwgc2hhbGxvdz1GYWxzZSkpOgotICAgIGlmIChvcy5wYXRoLmV4
aXN0cyhvdXRwdXRfYmFzZSArICIuY3BwIikpOgotICAgICAgICBvcy5yZW1vdmUob3V0cHV0X2Jh
c2UgKyAiLmNwcCIpCi0gICAgb3MucmVuYW1lKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIiwgb3V0
cHV0X2Jhc2UgKyAiLmNwcCIpCi1lbHNlOgotICAgIG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIu
Y3BwLnRtcCIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDVjZjFiYzFlYzIwNjM2Yjc2Njg5ODE3
Y2RhMTdkM2Q3ODQ4Y2Q4ZDkuLjBmMGM4YzJhMWRjZjk1ODFkOTgxZjIwM2I3MGI5NTA3YjdlMThi
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC04MjEsMTQgKzgyMSwxNCBAQCBzZXQoV2ViQ29y
ZV9JRExfRklMRVMKIGlmIChXSU4zMikKICAgICBpZiAoSU5URVJOQUxfQlVJTEQpCiAgICAgICAg
IHNldChXZWJDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUiAiJHtDTUFLRV9CSU5BUllfRElSfS8u
Li9pbmNsdWRlL3ByaXZhdGUvSmF2YVNjcmlwdENvcmUiKQotICAgICAgICBzZXQoV2ViQ29yZV9H
RU5FUkFURV9KU19CVUlMVElOU19TQ1JJUFRTX0RJUiAiJHtDTUFLRV9CSU5BUllfRElSfS8uLi9p
bmNsdWRlL3ByaXZhdGUvSmF2YVNjcmlwdENvcmUiKQorICAgICAgICBzZXQoSmF2YVNjcmlwdENv
cmVfU0NSSVBUU19ESVIgIiR7Q01BS0VfQklOQVJZX0RJUn0vLi4vaW5jbHVkZS9wcml2YXRlL0ph
dmFTY3JpcHRDb3JlIikKICAgICBlbHNlICgpCiAgICAgICAgIHNldChXZWJDb3JlX0lOU1BFQ1RP
Ul9TQ1JJUFRTX0RJUiAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9zY3JpcHRzIikK
LSAgICAgICAgc2V0KFdlYkNvcmVfR0VORVJBVEVfSlNfQlVJTFRJTlNfU0NSSVBUU19ESVIgIiR7
SkFWQVNDUklQVENPUkVfRElSfSIpCisgICAgICAgIHNldChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRT
X0RJUiAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9IikKICAgICBlbmRpZiAoKQogZWxzZSAoKQogICAg
IHNldChXZWJDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUiAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2luc3BlY3Rvci9zY3JpcHRzIikKLSAgICBzZXQoV2ViQ29yZV9HRU5FUkFURV9KU19CVUlMVElO
U19TQ1JJUFRTX0RJUiAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9IikKKyAgICBzZXQoSmF2YVNjcmlw
dENvcmVfU0NSSVBUU19ESVIgIiR7SkFWQVNDUklQVENPUkVfRElSfSIpCiBlbmRpZiAoKQogCiBz
ZXQoV2ViQ29yZV9TT1VSQ0VTCkBAIC0zMzUzLDcgKzMzNTMsMTEgQEAgc2V0KFdPUktFUkdMT0JB
TFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9X
b3JrZXJHbG8KIHNldChERURJQ0FURURXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklM
RSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvcnMuaWRsKQogc2V0KElETF9BVFRSSUJVVEVTX0ZJTEUgJHtXRUJDT1JFX0RJ
Un0vYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dCkKIAotc2V0KFdFQkNPUkVfSlNf
QlVJTFRJTlMKK1dFQktJVF9JTkNMVURFX0NPTkZJR19GSUxFU19JRl9FWElTVFMoKQorCisjIFdl
YkNvcmUgSlMgQnVpbHRpbnMKKworc2V0KFdlYkNvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7
V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3RyZWFtcy9CeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5Lmpz
CiAgICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zdHJlYW1zL0NvdW50UXVldWluZ1N0cmF0ZWd5
LmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmpz
CkBAIC0zMzYyLDcgKzMzNjYsMzUgQEAgc2V0KFdFQkNPUkVfSlNfQlVJTFRJTlMKICAgICAke1dF
QkNPUkVfRElSfS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuanMKICkKIAot
V0VCS0lUX0lOQ0xVREVfQ09ORklHX0ZJTEVTX0lGX0VYSVNUUygpCitzZXQoQlVJTFRJTlNfR0VO
RVJBVE9SX1NDUklQVFMKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGlu
c19nZW5lcmF0b3IucHkKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGlu
c19tb2RlbC5weQorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zX3Rl
bXBsYXRlcy5weQorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlLWpz
LWJ1aWx0aW5zLnB5CisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGVf
YnVpbHRpbnNfY29tYmluZWRfaGVhZGVyLnB5CisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRT
X0RJUikvZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkKKyAgICAk
KEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9o
ZWFkZXIucHkKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZV9idWls
dGluc19zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weQorICAgICQoSmF2YVNjcmlwdENvcmVfU0NS
SVBUU19ESVIpL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX3dyYXBwZXIucHkKKyAgICAkKEph
dmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9sYXp5d3JpdGVyLnB5CisKK2ZvcmVhY2ggKF9idWls
dGluU291cmNlICR7V2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTfSkKKyAgICBnZXRfZmlsZW5hbWVf
Y29tcG9uZW50KF9vYmplY3ROYW1lICR7X2J1aWx0aW5Tb3VyY2V9IE5BTUVfV0UpCisgICAgYWRk
X2N1c3RvbV9jb21tYW5kKAorICAgICAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9LyR7X29iamVjdE5hbWV9QnVpbHRpbnMuY3BwCisgICAgICAgICAgICAgICAke0RFUklW
RURfU09VUkNFU19XRUJDT1JFX0RJUn0vJHtfb2JqZWN0TmFtZX1CdWlsdGlucy5oCisgICAgICAg
ICAgICAgICAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vJHtfb2JqZWN0TmFtZX1CdWls
dGluc1dyYXBwZXIuaCAKKyAgICAgICAgTUFJTl9ERVBFTkRFTkNZICR7QlVJTFRJTlNfR0VORVJB
VE9SX1NDUklQVFN9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisgICAgICAgIERFUEVORFMgJHtf
YnVpbHRpblNvdXJjZX0gJHtCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUU30KKyAgICAgICAgQ09N
TUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9n
ZW5lcmF0ZS1qcy1idWlsdGlucy5weSAtLWZyYW1ld29yayBXZWJDb3JlIC0tb3V0cHV0LWRpcmVj
dG9yeSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0gJHtfYnVpbHRpblNvdXJjZX0KKyAg
ICAgICAgVkVSQkFUSU0pCisgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgICAg
ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS8ke19vYmplY3ROYW1lfUJ1aWx0aW5zLmgK
KyAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9LyR7X29iamVjdE5hbWV9QnVp
bHRpbnNXcmFwcGVyLmgKKyAgICApCisgICAgQUREX1NPVVJDRV9XRUJDT1JFX0RFUklWRURfREVQ
RU5ERU5DSUVTKCR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL2pzL1dlYkNvcmVKU0J1aWx0aW5zLmNw
cCAke19vYmplY3ROYW1lfUJ1aWx0aW5zLmNwcCkKK2VuZGZvcmVhY2ggKCkKKwogCiAjIEdlbmVy
YXRlIEluc3BlY3Rvck92ZXJsYXlQYWdlLmgKIGFkZF9jdXN0b21fY29tbWFuZCgKQEAgLTMzNzIs
NyArMzQwNCw4IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBERVBFTkRTIGluc3BlY3Rvci9J
bnNwZWN0b3JPdmVybGF5UGFnZS5jc3MgaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlQYWdlLmpz
CiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke1dlYkNvcmVfSU5TUEVDVE9SX1ND
UklQVFNfRElSfS9pbmxpbmUtYW5kLW1pbmlmeS1zdHlsZXNoZWV0cy1hbmQtc2NyaXB0cy5weSAk
e1dFQkNPUkVfRElSfS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheVBhZ2UuaHRtbCAke0RFUklW
RURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yT3ZlcmxheVBhZ2UuY29tYmluZWQuaHRt
bAogICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7V2ViQ29yZV9JTlNQRUNUT1JfU0NS
SVBUU19ESVJ9L3h4ZC5wbCBJbnNwZWN0b3JPdmVybGF5UGFnZV9odG1sICR7REVSSVZFRF9TT1VS
Q0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JPdmVybGF5UGFnZS5jb21iaW5lZC5odG1sICR7REVS
SVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JPdmVybGF5UGFnZS5oCi0gICAgVkVS
QkFUSU0pCisgICAgVkVSQkFUSU0KKykKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke0RF
UklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yT3ZlcmxheVBhZ2UuaCkKIAogCkBA
IC0zMzg0LDcgKzM0MTcsOCBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgQ09NTUFORCBlY2hv
ICIvLyMgc291cmNlVVJMPV9fV2ViSW5zcGVjdG9yQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Vf
XyIgPiAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UubWluLmpzCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke1dlYkNvcmVf
SU5TUEVDVE9SX1NDUklQVFNfRElSfS9qc21pbi5weSA8ICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyA+PiAke0RFUklWRURfU09VUkNFU19XRUJD
T1JFX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCiAgICAgQ09NTUFORCAk
e1BFUkxfRVhFQ1VUQUJMRX0gJHtXZWJDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0veHhkLnBs
IENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pzICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVf
RElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMgJHtERVJJVkVEX1NPVVJDRVNf
V0VCQ09SRV9ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKLSAgICBWRVJCQVRJTSkK
KyAgICBWRVJCQVRJTQorKQogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7REVSSVZFRF9T
T1VSQ0VTX1dFQkNPUkVfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oKQogCiAKQEAg
LTM1ODUsMjMgKzM2MTksNiBAQCBHRU5FUkFURV9CSU5ESU5HUyhXZWJDb3JlVGVzdFN1cHBvcnRf
U09VUkNFUwogICAgICR7U1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRX0KICAgICAke0FERElU
SU9OQUxfQklORElOR1NfREVQRU5ERU5DSUVTfSkKIAotIyBXZWJDb3JlIEpTIEJ1aWx0aW5zCi1m
b3JlYWNoIChfYnVpbHRpbmpzICR7V0VCQ09SRV9KU19CVUlMVElOU30pCi0gICAgZ2V0X2ZpbGVu
YW1lX2NvbXBvbmVudChfbmFtZSAke19idWlsdGluanN9IE5BTUVfV0UpCi0gICAgYWRkX2N1c3Rv
bV9jb21tYW5kKAotICAgICAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9
LyR7X25hbWV9QnVpbHRpbnNXcmFwcGVyLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9
LyR7X25hbWV9QnVpbHRpbnMuaCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vJHtfbmFt
ZX1CdWlsdGlucy5jcHAKLSAgICAgICAgTUFJTl9ERVBFTkRFTkNZICR7V0VCQ09SRV9ESVJ9L2dl
bmVyYXRlLWpzLWJ1aWx0aW5zCi0gICAgICAgIERFUEVORFMgJHtXZWJDb3JlX0dFTkVSQVRFX0pT
X0JVSUxUSU5TX1NDUklQVFNfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucwotICAgICAgICBERVBF
TkRTICR7X2J1aWx0aW5qc30KLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMgLS1pbnB1dCAk
e19idWlsdGluanN9IC0tb3V0cHV0X2RpciAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0g
LS1nZW5lcmF0ZV9qc19idWlsdGluc19wYXRoICR7V2ViQ29yZV9HRU5FUkFURV9KU19CVUlMVElO
U19TQ1JJUFRTX0RJUn0KLSAgICAgICAgVkVSQkFUSU0pCi0gICAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCi0gICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS8ke19uYW1l
fUJ1aWx0aW5zLmgKLSAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9LyR7X25h
bWV9QnVpbHRpbnNXcmFwcGVyLmgKLSAgICApCi0gICAgQUREX1NPVVJDRV9XRUJDT1JFX0RFUklW
RURfREVQRU5ERU5DSUVTKCR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL2pzL1dlYkNvcmVKU0J1aWx0
aW5zLmNwcCAke19uYW1lfUJ1aWx0aW5zLmNwcCkKLWVuZGZvcmVhY2ggKCkKLQogQUREX1NPVVJD
RV9XRUJDT1JFX0RFUklWRURfREVQRU5ERU5DSUVTKCR7V0VCQ09SRV9ESVJ9L2h0bWwvSFRNTFRy
ZWVCdWlsZGVyLmNwcCBNYXRoTUxOYW1lcy5jcHApCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKaW5kZXggNDY2NTRmMmFkMzE4ODlkYjM0MjU3YmZkOGM4ZmFjOTNlMmRmMDRiNS4uNGFl
MjhkODI1Nzg1M2NhYmU5M2U4MThjYjFiZTE5YWZiOWY3NTIxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCkBAIC03OTIsNyArNzkyLDYgQEAgYWxsIDogXAogICAgICQoV09SS0VSR0xP
QkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIFwKICAgICAkKEpTX0RPTV9IRUFERVJTKSBcCiAg
ICAgJChXRUJfRE9NX0hFQURFUlMpIFwKLSAgICAkKFdFQkNPUkVfSlNfQlVJTFRJTlMpIFwKICAg
ICBcCiAgICAgQ1NTR3JhbW1hci5jcHAgXAogICAgIENTU1Byb3BlcnR5TmFtZXMuY3BwIFwKQEAg
LTEyNTEsNyArMTI1MCw3IEBAIFdlYlJlcGxheUlucHV0cy5oIDogJChJTlBVVF9HRU5FUkFUT1Jf
U1BFQ0lGSUNBVElPTlMpICQoSU5QVVRfR0VORVJBVE9SX1NDUklQVFMpCiAKICMgV2ViQ29yZSBK
UyBCdWlsdGlucwogCi1XRUJDT1JFX0pTX0JVSUxUSU5TID0gXAorV2ViQ29yZV9CVUlMVElOU19T
T1VSQ0VTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL0J5dGVMZW5ndGhRdWV1
aW5nU3RyYXRlZ3kuanMgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL0NvdW50UXVl
dWluZ1N0cmF0ZWd5LmpzIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbS5qcyBcCkBAIC0xMjYwLDEwICsxMjU5LDMxIEBAIFdFQkNPUkVfSlNfQlVJTFRJTlMg
PSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIu
anMgXAogIwogCi1hbGwgOiAkKFdFQkNPUkVfSlNfQlVJTFRJTlM6JS5qcz0lQnVpbHRpbnMuY3Bw
KQorQlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMgPSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9T
Q1JJUFRTX0RJUikvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3Jl
X1NDUklQVFNfRElSKS9idWlsdGluc19tb2RlbC5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9T
Q1JJUFRTX0RJUikvYnVpbHRpbnNfdGVtcGxhdGVzLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3Jl
X1NDUklQVFNfRElSKS9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9oZWFkZXIucHkgXAorICAg
ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVk
X2ltcGxlbWVudGF0aW9uLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9n
ZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9oZWFkZXIucHkgXAorICAgICQoSmF2YVNjcmlwdENv
cmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9u
LnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZV9idWlsdGlu
c19zZXBhcmF0ZV93cmFwcGVyLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
KS9nZW5lcmF0ZS1qcy1idWlsdGlucy5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRT
X0RJUikvbGF6eXdyaXRlci5weSBcCisjCisKKyMgQWRkaW5nL3JlbW92aW5nIHNjcmlwdHMgc2hv
dWxkIHRyaWdnZXIgcmVnZW5lcmF0aW9uLCBidXQgY2hhbmdpbmcgd2hpY2ggYnVpbHRpbnMgYXJl
CisjIGdlbmVyYXRlZCBzaG91bGQgbm90IGFmZmVjdCBvdGhlciBidWlsdGlucyB3aGVuIG5vdCBw
YXNzaW5nICctLWNvbWJpbmVkJyB0byB0aGUgZ2VuZXJhdG9yLgorCisuUEhPTlk6IGZvcmNlCitX
ZWJDb3JlX0JVSUxUSU5TX0RFUEVOREVOQ0lFU19MSVNUIDogJChKYXZhU2NyaXB0Q29yZV9TQ1JJ
UFRTX0RJUikvVXBkYXRlQ29udGVudHMucHkgZm9yY2UKKwkkKFBZVEhPTikgJChKYXZhU2NyaXB0
Q29yZV9TQ1JJUFRTX0RJUikvVXBkYXRlQ29udGVudHMucHkgJyQoQlVJTFRJTlNfR0VORVJBVE9S
X1NDUklQVFMpJyAkQAorCislQnVpbHRpbnMuaDogJS5qcyAkKEJVSUxUSU5TX0dFTkVSQVRPUl9T
Q1JJUFRTKSBXZWJDb3JlX0JVSUxUSU5TX0RFUEVOREVOQ0lFU19MSVNUCisJJChQWVRIT04pICQo
SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5IC0tb3V0
cHV0LWRpcmVjdG9yeSAuIC0tZnJhbWV3b3JrIFdlYkNvcmUgJDwKIAotJUJ1aWx0aW5zLmNwcDog
JS5qcwotCSQoUFlUSE9OKSAkKFdlYkNvcmUpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zIC0taW5wdXQg
JDwgLS1nZW5lcmF0ZV9qc19idWlsdGluc19wYXRoICQoR2VuZXJhdGVKU0J1aWx0aW5zU2NyaXB0
cykKK2FsbCA6ICQobm90ZGlyICQoV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTOiUuanM9JUJ1aWx0
aW5zLmgpKQorCQogCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWRjYmFlYzA4
YWE0YjQ2OTc3OGQ1OGQ2NjYzN2ZhMzFiZGRiZTE4Ni4uMjMwZDViOTM0MWQzZjQ1NDA2MjViZDZi
NDcyNmRiNTdlMjEwZTkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ5Miw3ICsxNDkyLDcgQEAKIAkJNDEyOURGODYxQkI1
QjgwQzAwMzIyQTE2IC8qIEpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5REY4NDFCQjVC
N0Y3MDAzMjJBMTYgLyogSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTM4RDMzNTEy
NDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM4RDMzMzEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRD
b250ZXh0LmggKi87IH07CiAJCTQxMzhEMzM2MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRl
eHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEz
OEQzMzQxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4dC5jcHAgKi87IH07Ci0JCTQxM0My
QzM0MUJDMjlBOEYwMDc1MjA0QyAvKiBKU0RPTUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNDMkMzMzFCQzI5QTdCMDA3NTIwNEMg
LyogSlNET01Db25zdHJ1Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07
IH07CisJCTQxM0MyQzM0MUJDMjlBOEYwMDc1MjA0QyAvKiBKU0RPTUNvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNDMkMzMzFCQzI5
QTdCMDA3NTIwNEMgLyogSlNET01Db25zdHJ1Y3Rvci5oICovOyB9OwogCQk0MTUwNzE1NzE2ODUw
NjczMDBDM0M3QjMgLyogU2VsZWN0b3JGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1MDcxNTUxNjg1MDY3MzAwQzNDN0IzIC8qIFNlbGVj
dG9yRmlsdGVyLmNwcCAqLzsgfTsKIAkJNDE1MDcxNTgxNjg1MDY3MzAwQzNDN0IzIC8qIFNlbGVj
dG9yRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTUwNzE1NjE2ODUwNjczMDBDM0M3QjMgLyogU2VsZWN0b3JGaWx0ZXIuaCAqLzsgfTsKIAkJ
NDE1MEY5RjExMkI2RTBFNzAwMDhDODYwIC8qIFNsaWRlclRodW1iRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1MEY5RUYxMkI2RTBFNzAw
MDhDODYwIC8qIFNsaWRlclRodW1iRWxlbWVudC5oICovOyB9OwpAQCAtMTUyNSw5ICsxNTI1LDkg
QEAKIAkJNDE5QkMyREUxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QkMyREMxNjg1
MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuY3BwICovOyB9OwogCQk0MTlCQzJERjE2
ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QkMyREQxNjg1MzI5OTAwRDY0RDZEIC8qIFZp
c2l0ZWRMaW5rU3RhdGUuaCAqLzsgfTsKIAkJNDE5QkU3NTYxQkM3RjQxQjAwRTFDODVCIC8qIFdl
YkNvcmVKU0J1aWx0aW5JbnRlcm5hbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxOUJFNzUzMUJDN0YzREIwMEUxQzg1QiAvKiBXZWJDb3JlSlNCdWls
dGluSW50ZXJuYWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJNDE5QkU3NTcxQkM3RjQyMTAwRTFDODVCIC8qIFdlYkNvcmVKU0J1aWx0aW5zLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUJFNzU0
MUJDN0YzREIwMEUxQzg1QiAvKiBXZWJDb3JlSlNCdWlsdGlucy5jcHAgKi87IHNldHRpbmdzID0g
e0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKLQkJNDE5QkU3NTgxQkM3RjQyNzAwRTFDODVCIC8qIFdl
YkNvcmVKU0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTlCRTc1NTFCQzdGM0RCMDBFMUM4NUIgLyogV2ViQ29yZUpTQnVpbHRpbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwotCQk0MTlCRTc1OTFCQzdGNDJC
MDBFMUM4NUIgLyogV2ViQ29yZUJ1aWx0aW5OYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QkU3NTIxQkM3RjNEQjAwRTFDODVCIC8qIFdlYkNv
cmVCdWlsdGluTmFtZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9Owor
CQk0MTlCRTc1NzFCQzdGNDIxMDBFMUM4NUIgLyogV2ViQ29yZUpTQnVpbHRpbnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QkU3NTQxQkM3RjNE
QjAwRTFDODVCIC8qIFdlYkNvcmVKU0J1aWx0aW5zLmNwcCAqLzsgfTsKKwkJNDE5QkU3NTgxQkM3
RjQyNzAwRTFDODVCIC8qIFdlYkNvcmVKU0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTlCRTc1NTFCQzdGM0RCMDBFMUM4NUIgLyogV2Vi
Q29yZUpTQnVpbHRpbnMuaCAqLzsgfTsKKwkJNDE5QkU3NTkxQkM3RjQyQjAwRTFDODVCIC8qIFdl
YkNvcmVCdWlsdGluTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxOUJFNzUyMUJDN0YzREIwMEUxQzg1QiAvKiBXZWJDb3JlQnVpbHRpbk5hbWVz
LmggKi87IH07CiAJCTQxQTNENThFMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJU
aHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFBM0Q1OEMxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5jcHAgKi87
IH07CiAJCTQxQTNENThGMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTNENThE
MTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCAqLzsgfTsKIAkJNDFC
RjcwMEMwRkU4NkY0OTAwNUU4REVDIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCRjcwMEEwRkU4NkY0OTAwNUU4
REVDIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC02MzcyLDggKzYzNzIsOCBAQAogCQlFMUZGOEY2ODE4MDc0
NjA4MDAxMzI2NzQgLyogSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRjhGNjYxODA3NDYwODAwMTMyNjc0IC8q
IEpTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcCAqLzsgfTsKIAkJRTFGRjhGNkMxODBEQjVCRTAwMTMy
Njc0IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkY4RjZBMTgwREI1QkUwMDEzMjY3NCAvKiBDcnlw
dG9BbGdvcml0aG1SZWdpc3RyeS5jcHAgKi87IH07CiAJCUUxRkY4RjZEMTgwREI1QkUwMDEzMjY3
NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRjhGNkIxODBEQjVCRTAwMTMyNjc0IC8qIENyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5LmggKi87IH07Ci0JCUUzODgzODk4MUJBRDE0NUYwMEQ2MkVFMyAvKiBK
U01vZHVsZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogSlNNb2R1bGVMb2FkZXIuY3BwICov
OyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07Ci0JCUUzODgzODk5MUJBRDE0NUYw
MEQ2MkVFMyAvKiBKU01vZHVsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxlTG9h
ZGVyLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJRTM4ODM4OTgx
QkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBK
U01vZHVsZUxvYWRlci5jcHAgKi87IH07CisJCUUzODgzODk5MUJBRDE0NUYwMEQ2MkVFMyAvKiBK
U01vZHVsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxlTG9hZGVyLmggKi87IH07
CiAJCUU0MDFDMjc1MTdDRTUzRUMwMEM0MUEzNSAvKiBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDAxQzI3
NDE3Q0U1M0VDMDBDNDFBMzUgLyogRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0MjRBMzlFMTMzMERG
MDEwMENGNkRDOSAvKiBMZWdhY3lUaWxlR3JpZFRpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MjRBMzlEMTMzMERGMDEwMENGNkRDOSAvKiBMZWdh
Y3lUaWxlR3JpZFRpbGUuaCAqLzsgfTsKIAkJRTQyNEEzQTAxMzMwREYxRTAwQ0Y2REM5IC8qIExl
Z2FjeVRpbGVHcmlkVGlsZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0MjRBMzlGMTMzMERGMUUwMENGNkRDOSAvKiBMZWdhY3lUaWxlR3JpZFRpbGUu
bW0gKi87IH07CkBAIC02NDIyLDggKzY0MjIsOCBAQAogCQlFNDRCNEJCMzE0MTY1MEQ3MDAyQjFE
OEIgLyogU2VsZWN0b3JDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEU0NEI0QkIxMTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxlY3RvckNoZWNr
ZXIuY3BwICovOyB9OwogCQlFNDRCNEJCNDE0MTY1MEQ3MDAyQjFEOEIgLyogU2VsZWN0b3JDaGVj
a2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDRC
NEJCMjE0MTY1MEQ3MDAyQjFEOEIgLyogU2VsZWN0b3JDaGVja2VyLmggKi87IH07CiAJCUU0NEVF
M0E4MTc1NzdFQkQwMEVFRThDRiAvKiBGb250R2VuZXJpY0ZhbWlsaWVzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NEVFM0E2MTc1NzZFNTUwMEVF
RThDRiAvKiBGb250R2VuZXJpY0ZhbWlsaWVzLmNwcCAqLzsgfTsKLQkJRTQ0RkExODUxQkNBNkI1
QTAwOTFCNkVGIC8qIENvbXBvc2VkVHJlZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDRGQTE4NDFCQ0E2QjVBMDA5MUI2RUYgLyogQ29t
cG9zZWRUcmVlSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9
OwotCQlFNDRGQTE4NzFCQ0E5MTU2MDA5MUI2RUYgLyogQ29tcG9zZWRUcmVlSXRlcmF0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ0RkExODYx
QkNBOTE1NjAwOTFCNkVGIC8qIENvbXBvc2VkVHJlZUl0ZXJhdG9yLmNwcCAqLzsgc2V0dGluZ3Mg
PSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OworCQlFNDRGQTE4NTFCQ0E2QjVBMDA5MUI2RUYgLyog
Q29tcG9zZWRUcmVlSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU0NEZBMTg0MUJDQTZCNUEwMDkxQjZFRiAvKiBDb21wb3NlZFRyZWVJdGVy
YXRvci5oICovOyB9OworCQlFNDRGQTE4NzFCQ0E5MTU2MDA5MUI2RUYgLyogQ29tcG9zZWRUcmVl
SXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTQ0RkExODYxQkNBOTE1NjAwOTFCNkVGIC8qIENvbXBvc2VkVHJlZUl0ZXJhdG9yLmNwcCAq
LzsgfTsKIAkJRTQ1MzIyQUIxNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1MzIyQTkxNDBD
RTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuY3BwICovOyB9OwogCQlFNDUzMjJBQzE0MENF
MjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1MzIyQUExNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9y
UXVlcnkuaCAqLzsgfTsKIAkJRTQ1MzkwMUQwRUFGQ0FDQTAwMzY5NUM4IC8qIE1JTUVUeXBlUmVn
aXN0cnlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNDUzOTAxODBFQUZDQUNBMDAzNjk1QzggLyogTUlNRVR5cGVSZWdpc3RyeUlPUy5tbSAqLzsg
fTsKQEAgLTExMzEwLDcgKzExMzEwLDYgQEAKIAkJOThDRTQzMjUxMjlFMDBCRDAwNTgyMURDIC8q
IExpbmtMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGlu
a0xvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk4Q0U0MzI5MTI5RTAw
RTUwMDU4MjFEQyAvKiBMaW5rTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IExpbmtMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOThFQjFGOTQx
MzEzRkUwNTAwRDBFMUVBIC8qIE5vdEltcGxlbWVudGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE5vdEltcGxlbWVudGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTk5MDhCMEVDMUJDQUNGMUYwMEVEMEY2NSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1qcy1idWlsdGlucyI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEVEMUJDQUNGOTEwMEVEMEY2NSAv
KiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZh
c2NyaXB0OyBwYXRoID0gQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5qczsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRUUxQkNBQ0Y5MTAwRUQwRjY1IC8qIENvdW50UXVldWlu
Z1N0cmF0ZWd5LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gQ291
bnRRdWV1aW5nU3RyYXRlZ3kuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhC
MEVGMUJDQUNGOTEwMEVEMEY2NSAvKiBSZWFkYWJsZVN0cmVhbS5qcyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtLmpzOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTUyODcsNyArMTUyODYsNiBAQAogCQkwODY3RDY5MUZFODQwMjhG
QzAyQUFDMDcgLyogV2ViS2l0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKLQkJCQk5OTA4QjBFQzFCQ0FDRjFGMDBFRDBGNjUgLyogZ2VuZXJhdGUtanMtYnVpbHRp
bnMgKi8sCiAJCQkJNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oICovLAogCQkJ
CUVERUM5ODAyMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4LmggKi8sCiAJCQkJOTMw
NzA2MTMwOUUwQ0E4MjAwQjE3RkU0IC8qIERlcml2ZWRTb3VyY2VzLm1ha2UgKi8sCkBAIC0yODE0
Myw3ICsyODE0MSw3IEBACiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCQlzaGVsbFBhdGggPSAvYmluL3NoOwotCQkJc2hlbGxTY3JpcHQgPSAibWtk
aXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvV2ViQ29yZVwiXG5j
ZCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9XZWJDb3JlXCJcblxuL2Jp
bi9sbiAtc2ZoIFwiJHtTUkNST09UfVwiIFdlYkNvcmVcbmV4cG9ydCBXZWJDb3JlPVwiV2ViQ29y
ZVwiXG5leHBvcnQgSW5zcGVjdG9yU2NyaXB0cz1cIiR7SkFWQVNDUklQVENPUkVfUFJJVkFURV9I
RUFERVJTX0RJUn1cIlxuZXhwb3J0IFdlYlJlcGxheVNjcmlwdHM9XCIke0pBVkFTQ1JJUFRDT1JF
X1BSSVZBVEVfSEVBREVSU19ESVJ9XCJcbmV4cG9ydCBHZW5lcmF0ZUpTQnVpbHRpbnNTY3JpcHRz
PVwiJHtKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSfVwiXG5cbmlmIFsgISAkQ0Mg
XTsgdGhlblxuICAgIGV4cG9ydCBDQz1cImB4Y3J1biAtZmluZCBjbGFuZ2BcIlxuZmlcblxuaWYg
WyAhICRHUEVSRiBdOyB0aGVuXG4gICAgZXhwb3J0IEdQRVJGPVwiYHhjcnVuIC1maW5kIGdwZXJm
YFwiXG5maVxuXG5pZiBbIFwiJHtBQ1RJT059XCIgPSBcImJ1aWxkXCIgLW8gXCIke0FDVElPTn1c
IiA9IFwiaW5zdGFsbFwiIC1vIFwiJHtBQ1RJT059XCIgPSBcImluc3RhbGxoZHJzXCIgXTsgdGhl
blxuICAgIG1ha2UgIC0tbm8tYnVpbHRpbi1ydWxlcyAtZiBcIldlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZVwiIC1qIGAvdXNyL3NiaW4vc3lzY3RsIC1uIGh3LmFjdGl2ZWNwdWAgU0RLUk9PVD1c
IiR7U0RLUk9PVH1cIlxuZmlcbiI7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiR7QlVJ
TFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9XZWJDb3JlXCJcbmNkIFwiJHtCVUlMVF9Q
Uk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmVcIlxuXG4vYmluL2xuIC1zZmggXCIk
e1NSQ1JPT1R9XCIgV2ViQ29yZVxuZXhwb3J0IFdlYkNvcmU9XCJXZWJDb3JlXCJcbmV4cG9ydCBJ
bnNwZWN0b3JTY3JpcHRzPVwiJHtKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSfVwi
XG5leHBvcnQgV2ViUmVwbGF5U2NyaXB0cz1cIiR7SkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFE
RVJTX0RJUn1cIlxuZXhwb3J0IEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSPVwiJHtKQVZBU0NS
SVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSfVwiXG5cbmlmIFsgISAkQ0MgXTsgdGhlblxuICAg
IGV4cG9ydCBDQz1cImB4Y3J1biAtZmluZCBjbGFuZ2BcIlxuZmlcblxuaWYgWyAhICRHUEVSRiBd
OyB0aGVuXG4gICAgZXhwb3J0IEdQRVJGPVwiYHhjcnVuIC1maW5kIGdwZXJmYFwiXG5maVxuXG5p
ZiBbIFwiJHtBQ1RJT059XCIgPSBcImJ1aWxkXCIgLW8gXCIke0FDVElPTn1cIiA9IFwiaW5zdGFs
bFwiIC1vIFwiJHtBQ1RJT059XCIgPSBcImluc3RhbGxoZHJzXCIgXTsgdGhlblxuICAgIG1ha2Ug
IC0tbm8tYnVpbHRpbi1ydWxlcyAtZiBcIldlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZVwiIC1q
IGAvdXNyL3NiaW4vc3lzY3RsIC1uIGh3LmFjdGl2ZWNwdWAgU0RLUk9PVD1cIiR7U0RLUk9PVH1c
IlxuZmlcbiI7CiAJCX07CiAvKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24g
Ki8KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAK
aW5kZXggMmFmOTc5OWVkMWViZWQ0ZmI5Y2I4ZDk0ZjY3NjhhYzk1NjJjZmMwMi4uZTM4ZDM1MzA5
MThjYzBhZjY5MzM5ZmE3MjE5NWE3NDQ2Y2FjZTk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSlNE
T01XaW5kb3dCYXNlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTRE9NV2luZG93U2hlbGwqIHNo
ZWxsKQogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oXAogICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbkZ1bmN0aW9ucygpLnJl
YWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMoKS5uYW1lIyNQcml2YXRlTmFtZSgpLCBcCiAg
ICAgICAgICAgICBtX3ByaXZhdGVGdW5jdGlvbnMucmVhZGFibGVTdHJlYW1JbnRlcm5hbHMoKS5t
XyMjbmFtZSMjRnVuY3Rpb24uZ2V0KCkgLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAotICAgICAg
ICBXRUJDT1JFUkVBREFCTEVTVFJFQU1JTlRFUk5BTFNfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9O
X05BTUUoREVDTEFSRV9HTE9CQUxfU1RBVElDKQorICAgICAgICBXRUJDT1JFX0ZPUkVBQ0hfUkVB
REFCTEVTVFJFQU1JTlRFUk5BTFNfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfR0xPQkFM
X1NUQVRJQykKICN1bmRlZiBERUNMQVJFX0dMT0JBTF9TVEFUSUMKICNlbmRpZgogICAgIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucyBiL1NvdXJjZS9X
ZWJDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA2MWRkNjQyZTdjYTJmODlhNzhlMWQxYTUwM2Q4Yjk3ODJiNDA0NDgwLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2dlbmVyYXRl
LWpzLWJ1aWx0aW5zCisrKyAvZGV2L251bGwKQEAgLTEsMTgxICswLDAgQEAKLSMhL3Vzci9iaW4v
cHl0aG9uCi0jIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSMgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0j
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0jIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSMgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLWltcG9ydCBhcmdwYXJzZQotaW1wb3J0IGZpbGVjbXAK
LWltcG9ydCBvcwotaW1wb3J0IHN1YnByb2Nlc3MKLQotZnJvbSBzdHJpbmcgaW1wb3J0IFRlbXBs
YXRlCi0KLQotcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQotcGFyc2VyLmFkZF9h
cmd1bWVudCgnLS1vdXRwdXRfZGlyJywgZGVmYXVsdD0nJywgaGVscD0nb3V0cHV0IGRpcmVjdG9y
eScpCi1wYXJzZXIuYWRkX2FyZ3VtZW50KCctLWlucHV0JywgaGVscD0ncGF0aCB0byBpbnB1dCBK
UyBmaWxlJykKLXBhcnNlci5hZGRfYXJndW1lbnQoJy0tZ2VuZXJhdGVfanNfYnVpbHRpbnNfcGF0
aCcsIGhlbHA9J3BhdGggdG8gZGlyZWN0b3J5IGNvbnRhaW5pbmcgSmF2YVNjcmlwdENvcmVcJ3Mg
Z2VuZXJhdGUtanMtYnVpbHRpbnMnKQotCi1hcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotZmls
ZW5hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoYXJncy5pbnB1dCkpWzBd
Ci0KLSMgZ2VuZXJhdGUgSlMgYnVpbHRpbnMKLW5hbWVzcGFjZSA9ICJXZWJDb3JlIgotcHJlZml4
ID0gIldFQkNPUkUiICsgZmlsZW5hbWUudXBwZXIoKQotb3V0cHV0ID0gb3MucGF0aC5qb2luKGFy
Z3Mub3V0cHV0X2RpciwgZmlsZW5hbWUgKyAiQnVpbHRpbnMiKQotanNjX2dlbmVyYXRlX2J1aWx0
aW5fc2NyaXB0ID0gb3MucGF0aC5qb2luKGFyZ3MuZ2VuZXJhdGVfanNfYnVpbHRpbnNfcGF0aCwg
ImdlbmVyYXRlLWpzLWJ1aWx0aW5zIikKLQotc3VicHJvY2Vzcy5jYWxsKFsicHl0aG9uIiwganNj
X2dlbmVyYXRlX2J1aWx0aW5fc2NyaXB0LCAiLS1vdXRwdXQiLCBvdXRwdXQsICItLW5hbWVzcGFj
ZSIsIG5hbWVzcGFjZSwgIi0tcHJlZml4IiwgcHJlZml4LCBhcmdzLmlucHV0XSwgc3RkZXJyPXN1
YnByb2Nlc3MuU1RET1VUKQotCi0jIGdlbmVyYXRlIEpTIGJ1aWx0aW5zIHdyYXBwZXIKLW91dHB1
dF9iYXNlID0gb3V0cHV0ICsgIldyYXBwZXIiCi0KLWJ1aWx0aW5zV3JhcHBlckhlYWRlciA9IG9w
ZW4ob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgInciKQotCi1idWlsdGluc1dyYXBwZXJIZWFkZXIu
d3JpdGUoVGVtcGxhdGUoCi0iIiIKLS8qIEdlbmVyYXRlZCBieSBnZW5lcmF0ZS1qcy1idWlsdGlu
cyBkbyBub3QgaGFuZCBlZGl0LiAqLwotCi0vKgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgot
ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0g
Ki8KLQotI2lmbmRlZiAke0ZpbGVuYW1lfUJ1aWx0aW5zV3JhcHBlcl9oCi0jZGVmaW5lICR7Rmls
ZW5hbWV9QnVpbHRpbnNXcmFwcGVyX2gKLQotI2luY2x1ZGUgIiR7RmlsZW5hbWV9QnVpbHRpbnMu
aCIKLSNpbmNsdWRlIDxieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgotI2lu
Y2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSWRlbnRp
Zmllci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzICR7RmlsZW5hbWV9QnVpbHRpbnNXcmFwcGVyIDogcHJpdmF0ZSBKU0M6
OldlYWtIYW5kbGVPd25lciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgJHtGaWxlbmFtZX1CdWls
dGluc1dyYXBwZXIoSlNDOjpWTSogdm0pCi0gICAgICAgIDogbV92bSgqdm0pCi0gICAgICAgICR7
UHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX0JVSUxUSU5f
TkFNRVMpCi0jZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBm
dW5jdGlvbk5hbWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKEpTQzo6bWFrZVNvdXJjZShT
dHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFtZSwgbGVuZ3RoKSkpCi0gICAgICAg
ICR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU4oSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1C
RVJTKQotI3VuZGVmIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUwotICAgIHsKLSAg
ICB9Ci0KLSNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25O
YW1lLCBsZW5ndGgpIFxcCi0gICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFt
ZSMjRXhlY3V0YWJsZSgpOyBcXAotICAgIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgbmFtZSMjU291
cmNlKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQotICAgICR7UHJlZml4fV9G
T1JFQUNIX0JVSUxUSU4oRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCi0jdW5kZWYgRVhQT1NF
X0JVSUxUSU5fRVhFQ1VUQUJMRVMKLQotICAgICR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fRlVO
Q1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUikKLQotICAgIHZv
aWQgZXhwb3J0TmFtZXMoKTsKLQotcHJpdmF0ZToKLSAgICBKU0M6OlZNJiBtX3ZtOwotCi0gICAg
JHtQcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9O
QU1FUykKLQotI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVu
Y3Rpb25OYW1lLCBsZW5ndGgpIFxcCi0gICAgSlNDOjpTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3Vy
Y2U7XFwKLSAgICBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4gbV8j
I25hbWUjI0V4ZWN1dGFibGU7Ci0gICAgJHtQcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTihERUNMQVJF
X0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCi0jdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9N
RU1CRVJTCi0KLX07Ci0KLSNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwg
ZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFxcCi1pbmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogJHtGaWxlbmFtZX1CdWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4ZWN1dGFibGUoKSBc
XAote1xcCi0gICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSlcXAotICAgICAgICBtXyMjbmFt
ZSMjRXhlY3V0YWJsZSA9IEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
PihKU0M6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fdm0sIG1fIyNuYW1lIyNTb3VyY2UsIGZ1
bmN0aW9uTmFtZSMjUHVibGljTmFtZSgpLCBzXyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0eSksIHRo
aXMsICZtXyMjbmFtZSMjRXhlY3V0YWJsZSk7XFwKLSAgICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1
dGFibGUuZ2V0KCk7XFwKLX0KLSR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU4oREVGSU5FX0JVSUxU
SU5fRVhFQ1VUQUJMRVMpCi0jdW5kZWYgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMKLQotaW5s
aW5lIHZvaWQgJHtGaWxlbmFtZX1CdWlsdGluc1dyYXBwZXI6OmV4cG9ydE5hbWVzKCkKLXsKLSNk
ZWZpbmUgRVhQT1JUX0ZVTkNUSU9OX05BTUUobmFtZSkgbV92bS5wcm9wZXJ0eU5hbWVzLT5hcHBl
bmRFeHRlcm5hbE5hbWUobmFtZSMjUHVibGljTmFtZSgpLCBuYW1lIyNQcml2YXRlTmFtZSgpKTsK
LSAgICAke1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoRVhQT1JUX0ZVTkNU
SU9OX05BTUUpCi0jdW5kZWYgRVhQT1JUX0ZVTkNUSU9OX05BTUUKLX0KLQotY2xhc3MgJHtGaWxl
bmFtZX1CdWlsdGluRnVuY3Rpb25zIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCAke0ZpbGVuYW1l
fUJ1aWx0aW5GdW5jdGlvbnMoSlNDOjpWTSYgdm0pIDogbV92bSh2bSkgeyB9Ci0KLSAgICB2b2lk
IGluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYpOwotICAgIHZvaWQgdmlzaXQoSlNDOjpTbG90Vmlz
aXRvciYpOwotCi1wdWJsaWM6Ci0gICAgSlNDOjpWTSYgbV92bTsKLQotI2RlZmluZSBERUNMQVJF
X0JVSUxUSU5fU09VUkNFX01FTUJFUlMoZnVuY3Rpb25OYW1lKSBcXAotICAgIEpTQzo6V3JpdGVC
YXJyaWVyPEpTQzo6SlNGdW5jdGlvbj4gbV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb247Ci0gICAg
JHtQcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9T
T1VSQ0VfTUVNQkVSUykKLSN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKLX07
Ci0KLWlubGluZSB2b2lkICR7RmlsZW5hbWV9QnVpbHRpbkZ1bmN0aW9uczo6aW5pdChKU0M6OkpT
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0jZGVmaW5lIEVYUE9SVF9GVU5DVElPTihj
b2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXFwKLSAgICBtXyMjZnVuY3Rpb25OYW1lIyNG
dW5jdGlvbi5zZXQobV92bSwgJmdsb2JhbE9iamVjdCwgSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVC
dWlsdGluRnVuY3Rpb24obV92bSwgY29kZU5hbWUjI0dlbmVyYXRvcihtX3ZtKSwgJmdsb2JhbE9i
amVjdCkpOwotICAgICR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU4oRVhQT1JUX0ZVTkNUSU9OKQot
I3VuZGVmIEVYUE9SVF9GVU5DVElPTgotfQotCi1pbmxpbmUgdm9pZCAke0ZpbGVuYW1lfUJ1aWx0
aW5GdW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0jZGVmaW5l
IFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFtZSMjRnVuY3Rpb24p
OwotICAgICR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShWSVNJVF9GVU5D
VElPTikKLSN1bmRlZiBWSVNJVF9GVU5DVElPTgotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyAke0ZpbGVuYW1lfUJ1aWx0aW5zV3JhcHBlcl9oCi0iIiIpLnN1YnN0aXR1
dGUoZGljdChGaWxlbmFtZT1maWxlbmFtZSwgUHJlZml4PXByZWZpeCkpKQotCi1idWlsdGluc1dy
YXBwZXJIZWFkZXIuY2xvc2UoKQotCi1pZiAobm90IG9zLnBhdGguZXhpc3RzKG91dHB1dF9iYXNl
ICsgIi5oIikpIG9yIChub3QgZmlsZWNtcC5jbXAob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0
cHV0X2Jhc2UgKyAiLmgiLCBzaGFsbG93PUZhbHNlKSk6Ci0gICAgaWYgKG9zLnBhdGguZXhpc3Rz
KG91dHB1dF9iYXNlICsgIi5oIikpOgotICAgICAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAi
LmgiKQotICAgIG9zLnJlbmFtZShvdXRwdXRfYmFzZSArICIuaC50bXAiLCBvdXRwdXRfYmFzZSAr
ICIuaCIpCi1lbHNlOgotICAgIG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIuaC50bXAiKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGY3ZmUyMmU2
NjMyMDhiMjU4ODE3M2FkMTNjNDczMzE5YmI2Y2Y4MGYuLmM5ZDcwZGNjZDJmMTI0NzA4NmJhNGU0
YjUyMDI2Yzk3ZWFkNmFhY2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxNS0xMC0xMyAgQnJpYW4gQnVyZyAgPGJi
dXJnQGFwcGxlLmNvbT4KKworICAgICAgICBSZXN0cnVjdHVyZSBnZW5lcmF0ZS1qcy1iaW5kaW5n
cyBzY3JpcHQgdG8gYmUgbW9kdWxhciBhbmQgdGVzdGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTkyOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHN0dWIgc2hlbGwgc2NyaXB0IGFuZCBi
YXNpYyB3ZWJraXRweSBzdXBwb3J0IGZvciBydW5uaW5nIGJ1aWx0aW5zCisgICAgICAgIGdlbmVy
YXRvciB0ZXN0cy4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWJ1aWx0aW5zLWdlbmVyYXRvci10
ZXN0czogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvZGVnZW4vX19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
Y29kZWdlbi9tYWluLnB5OiBBZGRlZC4KKworICAgICAgICAgICAgVGhlIG9ubHkgaW50ZXJlc3Rp
bmcgZGlmZmVyZW5jZSBoZXJlIGZyb20gdGhlIGluc3BlY3RvciBwcm90b2NvbAorICAgICAgICAg
ICAgZ2VuZXJhdG9yIGVxdWl2YWxlbnQgaXMgdGhhdCB0aGlzIGltcGxlbWVudGF0aW9uIGRlY29k
ZXMgdGhlIHRhcmdldAorICAgICAgICAgICAgZnJhbWV3b3JrIGFuZCBvdXRwdXQgbW9kZSAoY29t
YmluZWQgb3Igc2VwYXJhdGUpIGZyb20gdGhlIHRlc3QncyBmaWxlIG5hbWUuCisKKyAgICAgICAg
KEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHMpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3JUZXN0
cy5fX2luaXRfXyk6CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvclRlc3RzLmdlbmVyYXRlX2Zy
b21fanNfYnVpbHRpbnMpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3JUZXN0cy53cml0ZV9l
cnJvcl9maWxlKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHMuZGV0ZWN0X2NoYW5n
ZXMpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3JUZXN0cy5ydW5fdGVzdHMpOgorICAgICAg
ICAoQnVpbHRpbnNHZW5lcmF0b3JUZXN0cy5tYWluKToKKwogMjAxNS0xMC0xMyAgQWxleGV5IFBy
b3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWMgRGVidWcgYW5kIDMyLWJp
dCBxdWV1ZXMgc2hvdWxkIGJlIHNlcGFyYXRlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1
bi1idWlsdGlucy1nZW5lcmF0b3ItdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1idWlsdGlucy1n
ZW5lcmF0b3ItdGVzdHMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM5OGM3OGNhMTBlYzU5NzYyNjYxMmM4NTU1M2Fi
ZDFhNGU2ZmJkNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWJ1aWx0aW5z
LWdlbmVyYXRvci10ZXN0cwpAQCAtMCwwICsxLDQyIEBACisjIS91c3IvYmluL2VudiBweXRob24K
KyMgQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBzeXMKK2Zyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZXhlY3V0aXZlCisKK2RlZiBtYWluKGFyZ3Yp
OgorICAgICIiIlJ1bnMgdGhlIEpTIGJ1aWx0aW5zIGNvZGUgZ2VuZXJhdG9yIG9uIHRlc3QgaW5w
dXQgZmlsZXMgYW5kIGNvbXBhcmVzCisgICAgdGhlIHJlc3VsdHMgd2l0aCByZWZlcmVuY2UgZmls
ZXMuCisKKyAgICBPcHRpb25zOgorICAgICAgIC0tcmVzZXQtcmVzdWx0czogT3ZlcndyaXRlcyB0
aGUgcmVmZXJlbmNlIGZpbGVzIHdpdGggdGhlIGdlbmVyYXRlZCByZXN1bHRzLgorCisgICAgIiIi
CisgICAgcmVzZXRfcmVzdWx0cyA9ICItLXJlc2V0LXJlc3VsdHMiIGluIGFyZ3YKKworICAgIGZy
b20gd2Via2l0cHkuY29kZWdlbi5tYWluIGltcG9ydCBCdWlsdGluc0dlbmVyYXRvclRlc3RzCisg
ICAgcmV0dXJuIEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHMocmVzZXRfcmVzdWx0cywgZXhlY3V0aXZl
LkV4ZWN1dGl2ZSgpKS5tYWluKCkKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBz
eXMuZXhpdChtYWluKHN5cy5hcmd2KSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29kZWdlbi9fX2luaXRfXy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29kZWdlbi9f
X2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjY1YmVlNWJiNzdlOTZlYmM3Y2Q5YzQ3NjQwNjkwZmJk
YThhYzE5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb2RlZ2Vu
L19faW5pdF9fLnB5CkBAIC0wLDAgKzEgQEAKKyMgUmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFy
Y2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZSBmaWxlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb2RlZ2VuL21haW4ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
ZGVnZW4vbWFpbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDM5NmRiOWEzOGJlMGYwN2JlMTg2M2I4OGFlZDQx
ZWRmOTdkOTY5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb2Rl
Z2VuL21haW4ucHkKQEAgLTAsMCArMSwxNDQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKKyMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVECisjIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQQorIyBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgSE9MREVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IG9zCitpbXBvcnQgb3MucGF0aAor
aW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworaW1wb3J0IHRlbXBmaWxlCitmcm9tIHdlYmtpdHB5
LmNvbW1vbi5jaGVja291dC5zY20uZGV0ZWN0aW9uIGltcG9ydCBkZXRlY3Rfc2NtX3N5c3RlbQor
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IK
KworCitjbGFzcyBCdWlsdGluc0dlbmVyYXRvclRlc3RzOgorCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHJlc2V0X3Jlc3VsdHMsIGV4ZWN1dGl2ZSk6CisgICAgICAgIHNlbGYucmVzZXRfcmVzdWx0
cyA9IHJlc2V0X3Jlc3VsdHMKKyAgICAgICAgc2VsZi5leGVjdXRpdmUgPSBleGVjdXRpdmUKKwor
ICAgIGRlZiBnZW5lcmF0ZV9mcm9tX2pzX2J1aWx0aW5zKHNlbGYsIGJ1aWx0aW5zX2ZpbGUsIG91
dHB1dF9kaXJlY3RvcnksIGZyYW1ld29ya19uYW1lPSIiLCBjb21iaW5lZF9vdXRwdXRzPUZhbHNl
KToKKyAgICAgICAgY21kID0gWydweXRob24nLAorICAgICAgICAgICAgICAgJ0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHknLAorICAgICAgICAgICAgICAgJy0t
b3V0cHV0LWRpcmVjdG9yeScsIG91dHB1dF9kaXJlY3RvcnksCisgICAgICAgICAgICAgICAnLS1m
b3JjZScsCisgICAgICAgICAgICAgICAnLS1mcmFtZXdvcmsnLCBmcmFtZXdvcmtfbmFtZSwKKyAg
ICAgICAgICAgICAgICctLXRlc3QnXQorCisgICAgICAgIGlmIGNvbWJpbmVkX291dHB1dHM6Cisg
ICAgICAgICAgICBjbWQuYXBwZW5kKCctLWNvbWJpbmVkJykKKworICAgICAgICBjbWQuYXBwZW5k
KGJ1aWx0aW5zX2ZpbGUpCisKKyAgICAgICAgZXhpdF9jb2RlID0gMAorICAgICAgICB0cnk6Cisg
ICAgICAgICAgICBzdGRlcnJfb3V0cHV0ID0gc2VsZi5leGVjdXRpdmUucnVuX2NvbW1hbmQoY21k
KQorICAgICAgICAgICAgaWYgc3RkZXJyX291dHB1dDoKKyAgICAgICAgICAgICAgICBzZWxmLndy
aXRlX2Vycm9yX2ZpbGUoYnVpbHRpbnNfZmlsZSwgb3V0cHV0X2RpcmVjdG9yeSwgc3RkZXJyX291
dHB1dCkKKyAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgorICAgICAgICAgICAgcHJpbnQg
ZS5vdXRwdXQKKyAgICAgICAgICAgIGV4aXRfY29kZSA9IGUuZXhpdF9jb2RlCisgICAgICAgIHJl
dHVybiBleGl0X2NvZGUKKworICAgIGRlZiB3cml0ZV9lcnJvcl9maWxlKHNlbGYsIGlucHV0X2Zp
bGVwYXRoLCBvdXRwdXRfZGlyZWN0b3J5LCBlcnJvcl9vdXRwdXQpOgorICAgICAgICBvdXRwdXRf
ZmlsZXBhdGggPSBvcy5wYXRoLmpvaW4ob3V0cHV0X2RpcmVjdG9yeSwgb3MucGF0aC5iYXNlbmFt
ZShpbnB1dF9maWxlcGF0aCkgKyAnLWVycm9yJykKKworICAgICAgICB3aXRoIG9wZW4ob3V0cHV0
X2ZpbGVwYXRoLCAidyIpIGFzIG91dHB1dF9maWxlOgorICAgICAgICAgICAgb3V0cHV0X2ZpbGUu
d3JpdGUoZXJyb3Jfb3V0cHV0KQorCisgICAgZGVmIGRldGVjdF9jaGFuZ2VzKHNlbGYsIHdvcmtf
ZGlyZWN0b3J5LCByZWZlcmVuY2VfZGlyZWN0b3J5KToKKyAgICAgICAgY2hhbmdlc19mb3VuZCA9
IEZhbHNlCisgICAgICAgIGZvciBvdXRwdXRfZmlsZSBpbiBvcy5saXN0ZGlyKHdvcmtfZGlyZWN0
b3J5KToKKyAgICAgICAgICAgIGNtZCA9IFsnZGlmZicsCisgICAgICAgICAgICAgICAgICAgJy11
JywKKyAgICAgICAgICAgICAgICAgICAnLU4nLAorICAgICAgICAgICAgICAgICAgIG9zLnBhdGgu
am9pbihyZWZlcmVuY2VfZGlyZWN0b3J5LCBvdXRwdXRfZmlsZSksCisgICAgICAgICAgICAgICAg
ICAgb3MucGF0aC5qb2luKHdvcmtfZGlyZWN0b3J5LCBvdXRwdXRfZmlsZSldCisKKyAgICAgICAg
ICAgIGV4aXRfY29kZSA9IDAKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvdXRw
dXQgPSBzZWxmLmV4ZWN1dGl2ZS5ydW5fY29tbWFuZChjbWQpCisgICAgICAgICAgICBleGNlcHQg
U2NyaXB0RXJyb3IsIGU6CisgICAgICAgICAgICAgICAgb3V0cHV0ID0gZS5vdXRwdXQKKyAgICAg
ICAgICAgICAgICBleGl0X2NvZGUgPSBlLmV4aXRfY29kZQorCisgICAgICAgICAgICBpZiBleGl0
X2NvZGUgb3Igb3V0cHV0OgorICAgICAgICAgICAgICAgIHByaW50ICdGQUlMOiAlcycgJSBvdXRw
dXRfZmlsZQorICAgICAgICAgICAgICAgIHByaW50IG91dHB1dAorICAgICAgICAgICAgICAgIGNo
YW5nZXNfZm91bmQgPSBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHBy
aW50ICdQQVNTOiAlcycgJSBvdXRwdXRfZmlsZQorICAgICAgICByZXR1cm4gY2hhbmdlc19mb3Vu
ZAorCisgICAgZGVmIHJ1bl90ZXN0cyhzZWxmLCBpbnB1dF9kaXJlY3RvcnksIHJlZmVyZW5jZV9k
aXJlY3RvcnkpOgorICAgICAgICB3b3JrX2RpcmVjdG9yeSA9IHJlZmVyZW5jZV9kaXJlY3RvcnkK
KworICAgICAgICBwYXNzZWQgPSBUcnVlCisgICAgICAgIGZvciBpbnB1dF9maWxlIGluIG9zLmxp
c3RkaXIoaW5wdXRfZGlyZWN0b3J5KToKKyAgICAgICAgICAgICh0ZXN0X25hbWUsIGV4dGVuc2lv
bikgPSBvcy5wYXRoLnNwbGl0ZXh0KGlucHV0X2ZpbGUpCisgICAgICAgICAgICBpZiBleHRlbnNp
b24gIT0gJy5qcyc6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgR2Vu
ZXJhdGUgb3V0cHV0IGludG8gdGhlIHdvcmsgZGlyZWN0b3J5IChlaXRoZXIgdGhlIGdpdmVuIG9u
ZSBvciBhCisgICAgICAgICAgICAjIHRlbXAgb25lIGlmIG5vdCByZXNldF9yZXN1bHRzIGlzIHBl
cmZvcm1lZCkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLnJlc2V0X3Jlc3VsdHM6CisgICAgICAg
ICAgICAgICAgd29ya19kaXJlY3RvcnkgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKworICAgICAgICAg
ICAgKGZyYW1ld29ya19uYW1lLCB0ZXN0X2Nhc2UsIG91dHB1dF9tb2RlKSA9IHRlc3RfbmFtZS5z
cGxpdCgnLScpCisgICAgICAgICAgICBpZiBub3QgZnJhbWV3b3JrX25hbWUgb3Igbm90IG91dHB1
dF9tb2RlIG9yIG5vdCB0ZXN0X2Nhc2U6CisgICAgICAgICAgICAgICAgcHJpbnQgIkludmFsaWQg
dGVzdCBjYXNlIG5hbWU6IHNob3VsZCBiZSBGcmFtZXdvcmstVGVzdENhc2VOYW1lLU91dHB1dE1v
ZGUuanMiCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgY29tYmluZWRf
b3V0cHV0cyA9IG91dHB1dF9tb2RlID09ICJDb21iaW5lZCIKKyAgICAgICAgICAgIGlmIHNlbGYu
Z2VuZXJhdGVfZnJvbV9qc19idWlsdGlucyhvcy5wYXRoLmpvaW4oaW5wdXRfZGlyZWN0b3J5LCBp
bnB1dF9maWxlKSwgd29ya19kaXJlY3RvcnksIGZyYW1ld29ya19uYW1lPWZyYW1ld29ya19uYW1l
LCBjb21iaW5lZF9vdXRwdXRzPWNvbWJpbmVkX291dHB1dHMpOgorICAgICAgICAgICAgICAgIHBh
c3NlZCA9IEZhbHNlCisKKyAgICAgICAgICAgIGlmIHNlbGYucmVzZXRfcmVzdWx0czoKKyAgICAg
ICAgICAgICAgICBwcmludCAiUmVzZXQgcmVzdWx0cyBmb3IgdGVzdDogJXMiICUgKGlucHV0X2Zp
bGUpCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgIyBEZXRlY3QgY2hh
bmdlcworICAgICAgICAgICAgaWYgc2VsZi5kZXRlY3RfY2hhbmdlcyh3b3JrX2RpcmVjdG9yeSwg
cmVmZXJlbmNlX2RpcmVjdG9yeSk6CisgICAgICAgICAgICAgICAgcGFzc2VkID0gRmFsc2UKKyAg
ICAgICAgICAgIHNodXRpbC5ybXRyZWUod29ya19kaXJlY3RvcnkpCisKKyAgICAgICAgcmV0dXJu
IHBhc3NlZAorCisgICAgZGVmIG1haW4oc2VsZik6CisgICAgICAgIGN1cnJlbnRfc2NtID0gZGV0
ZWN0X3NjbV9zeXN0ZW0ob3MuY3VyZGlyKQorICAgICAgICBvcy5jaGRpcihvcy5wYXRoLmpvaW4o
Y3VycmVudF9zY20uY2hlY2tvdXRfcm9vdCwgJ1NvdXJjZScpKQorCisgICAgICAgIGFsbF90ZXN0
c19wYXNzZWQgPSBUcnVlCisKKyAgICAgICAgaW5wdXRfZGlyZWN0b3J5ID0gb3MucGF0aC5qb2lu
KCdKYXZhU2NyaXB0Q29yZScsICdTY3JpcHRzJywgJ3Rlc3RzJywgJ2J1aWx0aW5zJykKKyAgICAg
ICAgcmVmZXJlbmNlX2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbignSmF2YVNjcmlwdENvcmUnLCAn
U2NyaXB0cycsICd0ZXN0cycsICdidWlsdGlucycsICdleHBlY3RlZCcpCisgICAgICAgIGlmIG5v
dCBzZWxmLnJ1bl90ZXN0cyhpbnB1dF9kaXJlY3RvcnksIHJlZmVyZW5jZV9kaXJlY3RvcnkpOgor
ICAgICAgICAgICAgYWxsX3Rlc3RzX3Bhc3NlZCA9IEZhbHNlCisKKyAgICAgICAgcHJpbnQgJycK
KyAgICAgICAgaWYgYWxsX3Rlc3RzX3Bhc3NlZDoKKyAgICAgICAgICAgIHByaW50ICdBbGwgdGVz
dHMgUEFTUyEnCisgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgcHJpbnQgJ1NvbWUgdGVzdHMgRkFJTCEgKFRvIHVwZGF0ZSB0aGUgcmVmZXJlbmNlIGZpbGVz
LCBleGVjdXRlICJydW4tYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzIC0tcmVzZXQtcmVzdWx0cyIp
JworICAgICAgICAgICAgcmV0dXJuIC0xCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>263086</attachid>
            <date>2015-10-14 10:38:54 -0700</date>
            <delta_ts>2015-10-14 10:38:54 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews100 for mac-mavericks</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>409782</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
0S3Tjr6sVbkYuPNWr93uTcu85Sxno93lyT0ki6N8bqhjWb6eW8m6MgbX9yAIdvLzMfLSXRjeXtoT
cTO3eZQo4x36pbf7sXgJBt5iFz5rurrJi6Jx8QW+ULp+flzsfKbwUdaXjk4666+MRDgWamt8mkVh
dVwOnVddy2b2QBdRu7VtIIq9Wz5rZIpl3Q7BtugfdHc0sBPXvO3X+2PaX8er48zuFAO5PdAmZuZb
pum+ZqtNla2WVcfEyI3YpGGZU4yBY7VvZmJlw9lTIDvdLJjOl+Ytn7IWP++s2Mlalus7ve16chxV
1SioD79aHblqvHjmHzZfcy8MUt9i7+7NXNEFlun7zj7ZLtdCFbld1ljtjGs0FthqMWSxXKfx4DsS
HTPFt80sqJyqvnFrmVVlZ0uvXy0tK5g+IfKq0QmWvf5h5eWXeGgGzsAKzA4mlWV2hctmPKjmvfew
F0U75TLrBe1Lf8CTuLvqOdp50Tvbnt4ol5JgvlmO0Wl1W93+i8r7/evBFZ/3+xdXyL1rIg5WTri6
WQO5+6Y5bz4rez3J7a0Lvtw4h0Zi9xa77bR1uVnlOWiFR/uUnyav5nFYbLf7afSs2oF2fhE90c0X
03YS6Mutc9Wq+WRbBWpeNrzz+TCvpjKas579fMVKr108L9OLa27ap/ZNNPbec6+lC3ooDryzI1zO
El91ehdHkstZYTaC4lWUYtlV8nIYnudsYlzH74vblu+9QtDeV7NnwZjve+8GNzR9cdis1KduX7Pl
vWMvfP6mNY5PefHMhGkrny+Ybd3MHWaCPg637VN37mrm1bev/cFLtlmOBmYr++e7OjnDzmdt+hdQ
SwMEFAACAAgA7VNORw6C01HQCQAALhIAABEAHABfd3B0X2NlcnRzLzAyLnBlbVVUCQADbpEeVm6R
HlZ1eAsAAQT1AQAABFAAAACdVllz6kYTfedX8JiUc4P2ZaryoA2xSTa74W2kGYFAIEACAb8+3XLi
a1/jfFWfSqZkjXo73XPOOPxUpkka05KTRhMul5b07QmvGT8Vab4nTbn5m3CVfn9fGPNTSrNmeN5F
/ESa0q/L6WpPy/OJN61slZ/Scr0jzWJNJVWbwz+jseXt49PtUILzd6NuUZzRmRP+VfHoxyGjZZKf
dj9KXpTFz5RolrK0vL2/wCvMy6bN4WtOms9x2RSVpqgTWSSS1pQEUW36weSLgZWU/NQk8HxpivJ/
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
qtaYGq3eYNPbHMR36NM1XeUs9/VvrPa01ezNJG4KjMFJxmTidfrN8BeEOSMXkx8vpz+eX02/LO9z
hMsCfmUxpIayA01fwfzgMC8X32FTkJCh6fYXt4+msJ1miwVacKdAGSLy9t7Id5M3WVmeOvxm+g4U
zD0LYd5MLtzbt+/C9PB6gRLPL7ZNX80w/eW7va05LNjl/769fVpOv+GbyEAI1ZZMwmu4vHLhzfT1
R/ch7qdA4ipMLp9gF0yPfCg5Uxdw3j5nat1VOtBU4bT+urzGkoUXef32NRUge76ZfP4c3ZU7QgDj
cGKh6fmFe52OtJXMYK9vz396kyLshf0fa+BEQ9Or9LerIwsgCC7W588ffzoP7+JhEqQQbyZ3+XxP
MQ5nf0tlcLE2J+ZueYcx1vs/0Ou/cMCv3l25t9Ojb/ZMvV43/e8p7MDnVXEe1ucgfzQFAf8C2NHk
n1BLAwQUAAIACAAnVE5H2GrfL+0DAABECwAARwAcAGFjY2Vzc2liaWxpdHkvYWRqYWNlbnQtY29u
dGludWF0aW9ucy1jYXVzZS1hc3NlcnRpb24tZmFpbHVyZS1zdGRlcnIudHh0VVQJAAPZkR5W2ZEe
VnV4CwABBPUBAAAEUAAAAKWWbW/bNhDH3+tT6NVqFyugZ0vCMMBRki5p3AZR27zYBoEiqVoLQwoU
5cbffkc9WLLrONn6Uqe73/2P5B15IaWQJhaPVclK/s3Mm5KpksfmFd8gVhITr5FEWFEZm2/+st4Y
tmma1pNt+Quv8ENkXqdJHGNJkaIXTxQ3CuWMXnEI4IjN2r9fV7/82vmlopGYJoJQSMlrNdivCOWq
LEoq9+2J/pANVkJ+KDk5tC5zEK22c8PZifIt5Fud21lXyqiqjuOi4ViVgt9KoYTaVnRZVWyrBY1u
s7nhDrzczkPL73jPx76nnEoEInf1zg1vQCAvCMO8Q1weIuIYETKxVlSqktYdR0tKFSzs277w6/Q9
Ezlin/J/KFajdQC8PWaaG/6uGqcI8uIYK45LXqqJ/KCPWTi4INQ5HlNAUL1O9OZDqsPNvk57nXNj
MdBcm0RWbt7TPBGSap/zT6t72Frx/QzV9ATyWEi6powBPtzhnTywgud947imqvue3X++jONbVNd3
tLhV8rdd0C7k97kRTchuVJwiP6/8NYlsq08UUjuyF6cSdc323xIM/de2TSP1idrzkqiCo3cvJCOw
+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
IAKXRVGHOQeKomxONDlE8yTPNp2pUv29UjFeWgrmpGZSTr3OC9mPxPOEBjF8WodHjHQndx1+Jwnb
6e4+EMCKZ6xhyGSOtw0EVO0ZMduOaOdEzQjF8EfIdi2N+78B+vQg8aK0LXTdOs3iwPl3aeS1zSyl
a+G2f/FuB+wy5xwUfkbtupV836XjTrOGeaQqVl0Mi9n1HrSpZtcfLufcI+bEB4sZ67Uz/fD3Q/jn
4x1ORgG7i0l9RTTWr7HetOsXgs0hwUmiIZAi2V7g6gsEX9ZRIunTOhYvePwGY3NPhU2Y8b8VBmNr
D0rH9EfQMvU4+svgG1BLAwQKAAAAAAAoVE5HAAAAAAAAAAAAAAAAFQAcAGNvbXBvc2l0aW5nL2Ns
aXBwaW5nL1VUCQAD25EeVu+RHlZ1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAKFRORyo1olSPAAAA
+gAAAFEAHABjb21wb3NpdGluZy9jbGlwcGluZy9ib3JkZXItcmFkaXVzLW92ZXJmbG93LWhpZGRl
bi1zdGFja2luZy1jb250ZXh0LWNyYXNoLWxvZy50eHRVVAkAA9uRHlbbkR5WdXgLAAEE9QEAAARQ
AAAAtY6xDoIwEEB3v+I2JmwpcZBZmIgmjU7GkNKe0AQ5cldi+Hv5CZc3vOW92tqbraBxccIAiYDR
BcjUQ5BF9WucQk9JtbFnx5tqaRB1iW6YSVL0FhfitJv1s1icA/KdETuji1Ouz3mpd5qyNB1+pdD6
6NnJmFXwrJlnAvOCK4GsfoT33gdiCJHRJ+Kt+vPE4QdQSwMEFAACAAgAKFROR75SG7sVBAAABgwA
AE4AHABjb21wb3NpdGluZy9jbGlwcGluZy9ib3JkZXItcmFkaXVzLW92ZXJmbG93LWhpZGRlbi1z
dGFja2luZy1jb250ZXh0LXN0ZGVyci50eHRVVAkAA9uRHlbbkR5WdXgLAAEE9QEAAARQAAAAlZbf
b9s2EMff/VfoqbWDDZBlW5aEIUDjJF3SpDEsY37YhoEiTzFXmRQoqon31/co6ofj2Wr7Ytj03ed7
R94deaOUVA6Vu5xnXDw7SckzzUXk3ImvJOPMoVuiCNWgIuf9X+77wdhxHPd17JKJC7OAOPfxIoqo
AqLh5hVoqUmSwZ1AB0GyYfXvH4/vfrF2sSwVhYVkgJKi0M36HQOhecpBvV1fmB+qpFqqT1yw49UP
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
0Z/jGaGDMZRgiMdueVk/f030zxJevK2J63ewKRfiBQxveqToDswE7usVHmnOzishuIJ78Jq6DHyX
0Kk3qOuKqIarTWanmnayqSt1LoQIMZwJdxlK01nw7tvn5d+3n6A3Cl6/MO1bj9JNple9/azoii6W
Rb49A+sT1GlKckkf0qx4kg985M13ojCfod+OMPLCHVI6pT8jtdDD1MAX9XzEdRzhIyOf1pMetf8C
JOAnVScHu2gnmC39NMlhSGc0jlPWkKcvjv9JwqdrPLFE6VpmRif8SJyBhMinMK1+U4JJu83xrNwW
dGy+evb/BY1udaTJYocFNvYsljeplDL0d9f4uaF4mYLbp4AFjFz68xRM2S5NF1Tmd7rkMD5SmP/g
8/iq5v3Adnv0H1BLAwQUAAIACAAYVE5HcMshm5AAAAD6AAAAOwAcAGNvbXBvc2l0aW5nL2dlb21l
dHJ5L2FuY2VzdG9yLW92ZXJmbG93LWNoYW5nZS1jcmFzaC1sb2cudHh0VVQJAAO/kR5Wv5EeVnV4
CwABBPUBAAAEUAAAALXOvQrCMBRA4d2nuFunmB+sYGfrVBSCTiIlTa5toPaWmxTp29uXcD3Ld2pr
b7aCi4sjBsgEjC5AIR8JOcluiWPoKMsmdux4lQ31SZ6j6ydKOXqLM3HeyvKZLU4B+c6IrVG6FOok
jBbaHEx5bPGbtFJ7zy4NRQXPmnkiMC+4EqTFD/DefCCGEBl9Jl6rP0/sflBLAwQUAAIACAAYVE5H
hoNdhRoEAAAGDAAAOAAcAGNvbXBvc2l0aW5nL2dlb21ldHJ5L2FuY2VzdG9yLW92ZXJmbG93LWNo
YW5nZS1zdGRlcnIudHh0VVQJAAO/kR5Wv5EeVnV4CwABBPUBAAAEUAAAAJWWbW/bNhDH3/tT6FVr
BxsgybYsCUOBxkm6pMliRMb8YhsGijzFXGVSoKgm3qffUdSD49lqiwCGzdz9/nfk3ZHXSknlULkr
eM7Fs5NWPNdcxM6t+Epyzhy6JYpQDSp23v/pvh95juO4r54LGQ3nIXHukmUcUwVEw/Ur0EqTNIdb
gQ6C5OP6v78/vPvJ2iWyUhSWkgFKilK367cMhOYZB/V2fWl+qIpqqT5zwY5XP6YYtN5PRn4fVETm
rjW7tKn0UZVxnFWCai7FSkkt9b6Aj0WR701Avdl4Mpo2vGwazUJ3bnnnfT+BAEUwyC7fyWjWIvw0
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
uCVnte3xUKZ1tmxCFIaKDZbfQHU4bmQsyFlXxgz9QDXWbsFR7yC4qY2sYDWyflxM0AfADPwa//Bh
4oGVBPOVa1yO2DdQSwMEFAACAAgAGFROR9LBiwIWBAAABgwAADcAHABjb21wb3NpdGluZy9pZnJh
bWVzL2JlY29tZS1vdmVybGFwcGVkLWlmcmFtZS1zdGRlcnIudHh0VVQJAAO/kR5Wv5EeVnV4CwAB
BPUBAAAEUAAAAJWWbW/bNhDH3/tT6FVrBxsgS7aeMARonKRLmjSGZcwvtmGgyFPMVSYFimriffoe
9eh4ttq+MWz67ve/I++OvFFKKovKXc4zLp6tpOSZ5iKy7sRXknFm0S1RhGpQkfX+L/v9aGpZlv06
td1k5s4DYt3HiyiiCoiGm1egpSZJBncCHQTJxtW/fzy++6W2i2WpKCwkA5QUhW7X7xgIzVMO6u36
wvxQJdVSfeKCHa9+SDBovZ+MnD6oGZnbtdlVnUofVRFFaSmo5lIsldRS73P4kOfZ3gTUm40nI7fl
pXYa2POad973IwhQBIPs8p2MZi0CXBIESY24PUZEEWHsYDUHpTkUNceEFGvc2Ism8fv4YyYTkj0l
/wLV/WoLuDi1NBnNu2wc10vSU6wo4oLrg/C9xmfu0RkD57RPik7FdmEOH6WOD/s+buKcjPyW5k+d
0E6sDSQLqcDYXD89bvBo5csVKWAAecol3kKWIT7o8I7t2d552ygqQNe/x5v1bRQtSVGsIF1q9Vvn
1LlcTkbhAdkN0yHy+ch/RGhqN0KUeeHUHxKqm+3nBNr+q9qmVKai3lgpkmPpbaTKGB7+dNoFM/Oc
sDeNqeK5xv7TSmYZzoQmmIP4xkNcp+PO7dQd4ppyrFcHgW4faEDpEBBwnJUY6p2onMdHpicm05Du
rNdNgvBHdL8riNR5RyVByI6pNxnscEwishpVcLw957lexw09mJ/l5gpyojquqao1vOqlLLgp6f9v
zJH/AzwTul/jWIvLPJdKo7TfSM9dSG2nd/19/fhQu69KIcxGqVIcZ9SQL5oSPxEMKgS9ApvZQwrN
vp3v/EbvclAvbPRm4HvgvdW7lrQ0hCVRxZuciluplqQsgK0VgLmZGCi8aBy7p/kkGKZRItbkC3zG
sNbyC4jxoHW8F3SrpJBl8YjVcHBsy3KXx1AUmBYm5Ez7EFxIhkPI0bXS5v9h/D+jj0JOL8R8Oixk
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
d3B0X2NlcnRzL3NlcmlhbC5vbGRVVAUAA22RHlZ1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAADp
U05HAAAAAAAAAAAAAAAADgAYAAAAAAAAAAAApIGWNAAAYWNjZXNzX2xvZy50eHRVVAUAA2WRHlZ1
eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAnVE5HAAAAAAAAAAAAAAAADgAYAAAAAAAAABAA7UHe
NAAAYWNjZXNzaWJpbGl0eS9VVAUAA9mRHlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAwVE5H
2RmqdeI7AABRxwAAQAAYAAAAAAABAAAApIEmNQAAYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5
LW5vZGUtbWVtb3J5LW1hbmFnZW1lbnQtY3Jhc2gtbG9nLnR4dFVUBQAD65EeVnV4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIAP1TTkdQxR+v6QMAAEQLAAA9ABgAAAAAAAEAAACkgYJxAABhY2Nlc3Np
YmlsaXR5L2FjY2Vzc2liaWxpdHktbm9kZS1tZW1vcnktbWFuYWdlbWVudC1zdGRlcnIudHh0VVQF
AAONkR5WdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAMFROR+pD8OzlOwAASMcAADcAGAAAAAAA
AQAAAKSB4nUAAGFjY2Vzc2liaWxpdHkvYWNjZXNzaWJpbGl0eS1ub2RlLXJlcGFyZW50LWNyYXNo
LWxvZy50eHRVVAUAA+uRHlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAMVE5HNMXHtOoDAABE
CwAANAAYAAAAAAABAAAApIE4sgAAYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5LW5vZGUtcmVw
YXJlbnQtc3RkZXJyLnR4dFVUBQADqJEeVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIADBUTkdl
4UY73DsAAGTHAAA5ABgAAAAAAAEAAACkgZC2AABhY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHkt
b2JqZWN0LWRldGFjaGVkLWNyYXNoLWxvZy50eHRVVAUAA+uRHlZ1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACAAYVE5HW2mLyOsDAABECwAANgAYAAAAAAABAAAApIHf8gAAYWNjZXNzaWJpbGl0eS9h
Y2Nlc3NpYmlsaXR5LW9iamVjdC1kZXRhY2hlZC1zdGRlcnIudHh0VVQFAAO/kR5WdXgLAAEE9QEA
AARQAAAAUEsBAh4DFAACAAgAMFROR3YQktv5OwAAWscAAEoAGAAAAAAAAQAAAKSBOvcAAGFjY2Vz
c2liaWxpdHkvYWRqYWNlbnQtY29udGludWF0aW9ucy1jYXVzZS1hc3NlcnRpb24tZmFpbHVyZS1j
cmFzaC1sb2cudHh0VVQFAAPrkR5WdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAJ1ROR9hq3y/t
AwAARAsAAEcAGAAAAAAAAQAAAKSBtzMBAGFjY2Vzc2liaWxpdHkvYWRqYWNlbnQtY29udGludWF0
aW9ucy1jYXVzZS1hc3NlcnRpb24tZmFpbHVyZS1zdGRlcnIudHh0VVQFAAPZkR5WdXgLAAEE9QEA
AARQAAAAUEsBAh4DCgAAAAAAKFRORwAAAAAAAAAAAAAAABIAGAAAAAAAAAAQAO1BJTgBAGFjY2Vz
c2liaWxpdHkvbWFjL1VUBQAD25EeVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIADBUTke4lBc4
4TsAAFvHAAAxABgAAAAAAAEAAACkgXE4AQBhY2Nlc3NpYmlsaXR5L21hYy9hYmJyLWFjcm9ueW0t
dGFncy1jcmFzaC1sb2cudHh0VVQFAAPrkR5WdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA/VNO
RyxVdenrAwAARAsAAC4AGAAAAAAAAQAAAKSBvXQBAGFjY2Vzc2liaWxpdHkvbWFjL2FiYnItYWNy
b255bS10YWdzLXN0ZGVyci50eHRVVAUAA42RHlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAw
VE5HR/RHE+89AACl0AAAKQAYAAAAAAABAAAApIEQeQEAYWNjZXNzaWJpbGl0eS9tYWMvYWNjZXNz
a2V5LWNyYXNoLWxvZy50eHRVVAUAA+uRHlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAMVE5H
VhYDjRgEAAAGDAAAJgAYAAAAAAABAAAApIFitwEAYWNjZXNzaWJpbGl0eS9tYWMvYWNjZXNza2V5
LXN0ZGVyci50eHRVVAUAA6iRHlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAwVE5HdxIasOg7
AABExwAAMwAYAAAAAAABAAAApIHauwEAYWNjZXNzaWJpbGl0eS9tYWMvYWx0LWZvci1jc3MtY29u
dGVudC1jcmFzaC1sb2cudHh0VVQFAAPrkR5WdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAGVRO
RzaNVWnsAwAARAsAADAAGAAAAAAAAQAAAKSBL/gBAGFjY2Vzc2liaWxpdHkvbWFjL2FsdC1mb3It
Y3NzLWNvbnRlbnQtc3RkZXJyLnR4dFVUBQADwZEeVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAI
ADBUTkd1335j6zsAAEXHAAA0ABgAAAAAAAEAAACkgYX8AQBhY2Nlc3NpYmlsaXR5L21hYy9hcmVh
LXdpdGgtYXJpYS1sYWJlbC1jcmFzaC1sb2cudHh0VVQFAAPrkR5WdXgLAAEE9QEAAARQAAAAUEsB
Ah4DFAACAAgAKFROR10FrsHoAwAARAsAADEAGAAAAAAAAQAAAKSB3jgCAGFjY2Vzc2liaWxpdHkv
bWFjL2FyZWEtd2l0aC1hcmlhLWxhYmVsLXN0ZGVyci50eHRVVAUAA9uRHlZ1eAsAAQT1AQAABFAA
AABQSwECHgMKAAAAAAAmVE5HAAAAAAAAAAAAAAAAHgAYAAAAAAAAABAA7UExPQIAYWNjZXNzaWJp
bGl0eS9tYWMvc2VsZWN0LXRleHQvVVQFAAPYkR5WdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA
MFROR7N2fdbnOwAAOsgAADkAGAAAAAAAAQAAAKSBiT0CAGFjY2Vzc2liaWxpdHkvbWFjL3NlbGVj
dC10ZXh0L3NlbGVjdC10ZXh0LTEtY3Jhc2gtbG9nLnR4dFVUBQAD65EeVnV4CwABBPUBAAAEUAAA
AFBLAQIeAxQAAgAIAPxTTkeBDIGY6AMAAEQLAAA2ABgAAAAAAAEAAACkgeN5AgBhY2Nlc3NpYmls
aXR5L21hYy9zZWxlY3QtdGV4dC9zZWxlY3QtdGV4dC0xLXN0ZGVyci50eHRVVAUAA4uRHlZ1eAsA
AQT1AQAABFAAAABQSwECHgMUAAIACAAwVE5HnRpiQOs7AABJxwAAOQAYAAAAAAABAAAApIE7fgIA
YWNjZXNzaWJpbGl0eS9tYWMvc2VsZWN0LXRleHQvc2VsZWN0LXRleHQtMi1jcmFzaC1sb2cudHh0
VVQFAAPrkR5WdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAC1ROR4DtdsjrAwAARAsAADYAGAAA
AAAAAQAAAKSBmboCAGFjY2Vzc2liaWxpdHkvbWFjL3NlbGVjdC10ZXh0L3NlbGVjdC10ZXh0LTIt
c3RkZXJyLnR4dFVUBQADpZEeVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIADBUTkexevXO6DsA
AErHAAA5ABgAAAAAAAEAAACkgfS+AgBhY2Nlc3NpYmlsaXR5L21hYy9zZWxlY3QtdGV4dC9zZWxl
Y3QtdGV4dC0zLWNyYXNoLWxvZy50eHRVVAUAA+uRHlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIA
CAAYVE5HE8uOIusDAABECwAANgAYAAAAAAABAAAApIFP+wIAYWNjZXNzaWJpbGl0eS9tYWMvc2Vs
ZWN0LXRleHQvc2VsZWN0LXRleHQtMy1zdGRlcnIudHh0VVQFAAO/kR5WdXgLAAEE9QEAAARQAAAA
UEsBAh4DFAACAAgAMFROR5neU/ToOwAASccAADkAGAAAAAAAAQAAAKSBqv8CAGFjY2Vzc2liaWxp
dHkvbWFjL3NlbGVjdC10ZXh0L3NlbGVjdC10ZXh0LTQtY3Jhc2gtbG9nLnR4dFVUBQAD65EeVnV4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIACZUTkehk4x57AMAAEQLAAA2ABgAAAAAAAEAAACkgQU8
AwBhY2Nlc3NpYmlsaXR5L21hYy9zZWxlY3QtdGV4dC9zZWxlY3QtdGV4dC00LXN0ZGVyci50eHRV
VAUAA9iRHlZ1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAKVE5HAAAAAAAAAAAAAAAACwAYAAAA
AAAAABAA7UFhQAMAYW5pbWF0aW9ucy9VVAUAA6SRHlZ1eAsAAQT1AQAABFAAAABQSwECHgMKAAAA
AAAYVE5HAAAAAAAAAAAAAAAADgAYAAAAAAAAABAA7UGmQAMAYW5pbWF0aW9ucy8zZC9VVAUAA7+R
HlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAwVE5HyR4AXw0+AACn0QAAOQAYAAAAAAABAAAA
pIHuQAMAYW5pbWF0aW9ucy8zZC9jaGFuZ2UtdHJhbnNmb3JtLWluLWVuZC1ldmVudC1jcmFzaC1s
b2cudHh0VVQFAAPrkR5WdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA+1NOR5d5uJUbBAAABgwA
ADYAGAAAAAAAAQAAAKSBbn8DAGFuaW1hdGlvbnMvM2QvY2hhbmdlLXRyYW5zZm9ybS1pbi1lbmQt
ZXZlbnQtc3RkZXJyLnR4dFVUBQADiZEeVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIADBUTkc/
rhAl5jsAAEzHAAA7ABgAAAAAAAEAAACkgfmDAwBhbmltYXRpb25zLzNkL21hdHJpeC10cmFuc2Zv
cm0tdHlwZS1hbmltYXRpb24tY3Jhc2gtbG9nLnR4dFVUBQAD65EeVnV4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIAApUTken1qSL6wMAAEQLAAA4ABgAAAAAAAEAAACkgVTAAwBhbmltYXRpb25zLzNk
L21hdHJpeC10cmFuc2Zvcm0tdHlwZS1hbmltYXRpb24tc3RkZXJyLnR4dFVUBQADpJEeVnV4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIADBUTkfkVWxU9z0AALHQAAA1ABgAAAAAAAEAAACkgbHEAwBh
bmltYXRpb25zLzNkL3JlcGxhY2UtZmlsbGluZy10cmFuc2Zvcm0tY3Jhc2gtbG9nLnR4dFVUBQAD
65EeVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIABdUTkeIzQnOFwQAAAYMAAAyABgAAAAAAAEA
AACkgRcDBABhbmltYXRpb25zLzNkL3JlcGxhY2UtZmlsbGluZy10cmFuc2Zvcm0tc3RkZXJyLnR4
dFVUBQADvpEeVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIADBUTkeoIzYU+z0AAKXRAAA4ABgA
AAAAAAEAAACkgZoHBABhbmltYXRpb25zLzNkL3N0YXRlLWF0LWVuZC1ldmVudC10cmFuc2Zvcm0t
Y3Jhc2gtbG9nLnR4dFVUBQAD65EeVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIABhUTkdLADjB
FwQAAAYMAAA1ABgAAAAAAAEAAACkgQdGBABhbmltYXRpb25zLzNkL3N0YXRlLWF0LWVuZC1ldmVu
dC10cmFuc2Zvcm0tc3RkZXJyLnR4dFVUBQADv5EeVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAI
ADBUTkdaC6Iy/D0AAKrQAAAuABgAAAAAAAEAAACkgY1KBABhbmltYXRpb25zL2FkZGVkLXdoaWxl
LXN1c3BlbmRlZC1jcmFzaC1sb2cudHh0VVQFAAPrkR5WdXgLAAEE9QEAAARQAAAAUEsBAh4DFAAC
AAgA+1NOR7zI05wZBAAABgwAACsAGAAAAAAAAQAAAKSB8YgEAGFuaW1hdGlvbnMvYWRkZWQtd2hp
bGUtc3VzcGVuZGVkLXN0ZGVyci50eHRVVAUAA4mRHlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIA
CAAwVE5HcKsDsd07AABGxwAANgAYAAAAAAABAAAApIFvjQQAYW5pbWF0aW9ucy9hZGRpdGl2ZS10
cmFuc2Zvcm0tYW5pbWF0aW9ucy1jcmFzaC1sb2cudHh0VVQFAAPrkR5WdXgLAAEE9QEAAARQAAAA
UEsBAh4DFAACAAgAClROR0elPY7rAwAARAsAADMAGAAAAAAAAQAAAKSBvMkEAGFuaW1hdGlvbnMv
YWRkaXRpdmUtdHJhbnNmb3JtLWFuaW1hdGlvbnMtc3RkZXJyLnR4dFVUBQADpJEeVnV4CwABBPUB
AAAEUAAAAFBLAQIeAwoAAAAAAC5UTkcAAAAAAAAAAAAAAAAHABgAAAAAAAAAEADtQRTOBABjYW52
YXMvVVQFAAPnkR5WdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAALlRORwAAAAAAAAAAAAAAAA4A
GAAAAAAAAAAQAO1BVc4EAGNhbnZhcy9waGlsaXAvVVQFAAPnkR5WdXgLAAEE9QEAAARQAAAAUEsB
Ah4DCgAAAAAALlRORwAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1Bnc4EAGNhbnZhcy9waGlsaXAv
dGVzdHMvVVQFAAPnkR5WdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgALlRORy1D0gsWBAAAhAsA
ADQAGAAAAAAAAQAAAKSB684EAGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuY2FudmFzLnJlYWRvbmx5
LWNyYXNoLWxvZy50eHRVVAUAA+eRHlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAuVE5H1C5C
RukDAABECwAAMQAYAAAAAAABAAAApIFv0wQAY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jYW52YXMu
cmVhZG9ubHktc3RkZXJyLnR4dFVUBQAD55EeVnV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAC5U
TkcAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQcPXBABjb21wb3NpdGluZy9VVAUAA+iRHlZ1eAsA
AQT1AQAABFAAAABQSwECHgMUAAIACAAuVE5Hp1SNCkMEAABGDAAAOwAYAAAAAAABAAAApIEJ2AQA
Y29tcG9zaXRpbmcvYWJzb2x1dGUtaW5zaWRlLW91dC1vZi12aWV3LWZpeGVkLWNyYXNoLWxvZy50
eHRVVAUAA+eRHlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAuVE5HsnUdMRYEAAAGDAAAOAAY
AAAAAAABAAAApIHB3AQAY29tcG9zaXRpbmcvYWJzb2x1dGUtaW5zaWRlLW91dC1vZi12aWV3LWZp
eGVkLXN0ZGVyci50eHRVVAUAA+eRHlZ1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAuVE5HAAAA
AAAAAAAAAAAAFgAYAAAAAAAAABAA7UFJ4QQAY29tcG9zaXRpbmcvYW5pbWF0aW9uL1VUBQAD55Ee
VnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAC5UTkdPVVkjFwQAAIQLAABFABgAAAAAAAEAAACk
gZnhBABjb21wb3NpdGluZy9hbmltYXRpb24vYW5pbWF0ZWQtY29tcG9zaXRlZC1pbnNpZGUtaGlk
ZGVuLWNyYXNoLWxvZy50eHRVVAUAA+eRHlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAuVE5H
tmGD0eoDAABECwAAQgAYAAAAAAABAAAApIEv5gQAY29tcG9zaXRpbmcvYW5pbWF0aW9uL2FuaW1h
dGVkLWNvbXBvc2l0ZWQtaW5zaWRlLWhpZGRlbi1zdGRlcnIudHh0VVQFAAPnkR5WdXgLAAEE9QEA
AARQAAAAUEsBAh4DCgAAAAAALlRORwAAAAAAAAAAAAAAACAAGAAAAAAAAAAQAO1BleoEAGNvbXBv
c2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvVVQFAAPnkR5WdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgALlRORxHAqk9EBAAARgwAAEQAGAAAAAAAAQAAAKSB7+oEAGNvbXBvc2l0aW5nL2JhY2tm
YWNlLXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS0zZC1jcmFzaC1sb2cudHh0VVQFAAPn
kR5WdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgALlROR6pSaj8YBAAABgwAAEEAGAAAAAAAAQAA
AKSBse8EAGNvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0
eS0zZC1zdGRlcnIudHh0VVQFAAPnkR5WdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAALlRORwAA
AAAAAAAAAAAAABQAGAAAAAAAAAAQAO1BRPQEAGNvbXBvc2l0aW5nL2JhY2tpbmcvVVQFAAPnkR5W
dXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgALlROR42odrtGBAAARgwAADoAGAAAAAAAAQAAAKSB
kvQEAGNvbXBvc2l0aW5nL2JhY2tpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS1mbGlwLWNyYXNoLWxv
Zy50eHRVVAUAA+eRHlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAuVE5HhxTyiBkEAAAGDAAA
NwAYAAAAAAABAAAApIFM+QQAY29tcG9zaXRpbmcvYmFja2luZy9iYWNrZmFjZS12aXNpYmlsaXR5
LWZsaXAtc3RkZXJyLnR4dFVUBQAD55EeVnV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAC5UTkcA
AAAAAAAAAAAAAAATABgAAAAAAAAAEADtQdb9BABjb21wb3NpdGluZy9jYW52YXMvVVQFAAPokR5W
dXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgALlROR2DmgQYOBAAAnAsAAD8AGAAAAAAAAQAAAKSB
I/4EAGNvbXBvc2l0aW5nL2NhbnZhcy9hY2NlbGVyYXRlZC1jYW52YXMtY29tcG9zaXRpbmctY3Jh
c2gtbG9nLnR4dFVUBQAD6JEeVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAC5UTkf0Uanp4QMA
AFwLAAA8ABgAAAAAAAEAAACkgaoCBQBjb21wb3NpdGluZy9jYW52YXMvYWNjZWxlcmF0ZWQtY2Fu
dmFzLWNvbXBvc2l0aW5nLXN0ZGVyci50eHRVVAUAA+iRHlZ1eAsAAQT1AQAABFAAAABQSwECHgMK
AAAAAAAoVE5HAAAAAAAAAAAAAAAAFQAYAAAAAAAAABAA7UEBBwUAY29tcG9zaXRpbmcvY2xpcHBp
bmcvVVQFAAPbkR5WdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAKFRORyo1olSPAAAA+gAAAFEA
GAAAAAAAAQAAAKSBUAcFAGNvbXBvc2l0aW5nL2NsaXBwaW5nL2JvcmRlci1yYWRpdXMtb3ZlcmZs
b3ctaGlkZGVuLXN0YWNraW5nLWNvbnRleHQtY3Jhc2gtbG9nLnR4dFVUBQAD25EeVnV4CwABBPUB
AAAEUAAAAFBLAQIeAxQAAgAIAChUTke+Uhu7FQQAAAYMAABOABgAAAAAAAEAAACkgWoIBQBjb21w
b3NpdGluZy9jbGlwcGluZy9ib3JkZXItcmFkaXVzLW92ZXJmbG93LWhpZGRlbi1zdGFja2luZy1j
b250ZXh0LXN0ZGVyci50eHRVVAUAA9uRHlZ1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAuVE5H
AAAAAAAAAAAAAAAAGwAYAAAAAAAAABAA7UEHDQUAY29tcG9zaXRpbmcvY29sb3ItbWF0Y2hpbmcv
VVQFAAPokR5WdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgALlROR6z9fQgkBAAAKAsAAD0AGAAA
AAAAAQAAAKSBXA0FAGNvbXBvc2l0aW5nL2NvbG9yLW1hdGNoaW5nL2ltYWdlLWNvbG9yLW1hdGNo
aW5nLWNyYXNoLWxvZy50eHRVVAUAA+iRHlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAuVE5H
J5D2fvgDAADoCgAAOgAYAAAAAAABAAAApIH3EQUAY29tcG9zaXRpbmcvY29sb3ItbWF0Y2hpbmcv
aW1hZ2UtY29sb3ItbWF0Y2hpbmctc3RkZXJyLnR4dFVUBQAD6JEeVnV4CwABBPUBAAAEUAAAAFBL
AQIeAwoAAAAAAChUTkcAAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQWMWBQBjb21wb3NpdGluZy9j
b2x1bW5zL1VUBQAD25EeVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIABlUTkcMmrTqkAAAAPoA
AAA/ABgAAAAAAAEAAACkgbEWBQBjb21wb3NpdGluZy9jb2x1bW5zL2FuY2VzdG9yLWNsaXBwZWQt
aW4tcGFnaW5hdGVkLWNyYXNoLWxvZy50eHRVVAUAA8KRHlZ1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACAAZVE5Hg72cXBYEAAAGDAAAPAAYAAAAAAABAAAApIG6FwUAY29tcG9zaXRpbmcvY29sdW1u
cy9hbmNlc3Rvci1jbGlwcGVkLWluLXBhZ2luYXRlZC1zdGRlcnIudHh0VVQFAAPCkR5WdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgAKFRORy/Vk8GQAAAA+gAAADYAGAAAAAAAAQAAAKSBRhwFAGNv
bXBvc2l0aW5nL2NvbHVtbnMvY2xpcHBlZC1pbi1wYWdpbmF0ZWQtY3Jhc2gtbG9nLnR4dFVUBQAD
25EeVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAChUTkcdBYwuGQQAAAYMAAAzABgAAAAAAAEA
AACkgUYdBQBjb21wb3NpdGluZy9jb2x1bW5zL2NsaXBwZWQtaW4tcGFnaW5hdGVkLXN0ZGVyci50
eHRVVAUAA9uRHlZ1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAuVE5HAAAAAAAAAAAAAAAAHAAY
AAAAAAAAABAA7UHMIQUAY29tcG9zaXRpbmcvY29udGVudHMtb3BhcXVlL1VUBQAD6JEeVnV4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIAC5UTkdwiFFmQwQAAEYMAAA5ABgAAAAAAAEAAACkgSIiBQBj
b21wb3NpdGluZy9jb250ZW50cy1vcGFxdWUvYmFja2dyb3VuZC1jbGlwLWNyYXNoLWxvZy50eHRV
VAUAA+iRHlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAuVE5H+pGgeBcEAAAGDAAANgAYAAAA
AAABAAAApIHYJgUAY29tcG9zaXRpbmcvY29udGVudHMtb3BhcXVlL2JhY2tncm91bmQtY2xpcC1z
dGRlcnIudHh0VVQFAAPokR5WdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAKFRORwAAAAAAAAAA
AAAAABQAGAAAAAAAAAAQAO1BXysFAGNvbXBvc2l0aW5nL2N1bGxpbmcvVVQFAAPbkR5WdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgA/VNOR6PzdA+QAAAA+gAAADQAGAAAAAAAAQAAAKSBrSsFAGNv
bXBvc2l0aW5nL2N1bGxpbmcvY2xlYXItZml4ZWQtaWZyYW1lLWNyYXNoLWxvZy50eHRVVAUAA42R
HlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAD9U05HTF9WV+MDAABcCwAAMQAYAAAAAAABAAAA
pIGrLAUAY29tcG9zaXRpbmcvY3VsbGluZy9jbGVhci1maXhlZC1pZnJhbWUtc3RkZXJyLnR4dFVU
BQADjZEeVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIADBUTkegR0+a4zwAAJ3MAAA4ABgAAAAA
AAEAAACkgfkwBQBjb21wb3NpdGluZy9jdWxsaW5nL2ZpbHRlci1vY2NsdXNpb24tYWxwaGEtY3Jh
c2gtbG9nLnR4dFVUBQAD65EeVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIABlUTkdKothCkAAA
APoAAAA+ABgAAAAAAAEAAACkgU5uBQBjb21wb3NpdGluZy9jdWxsaW5nL2ZpbHRlci1vY2NsdXNp
b24tYWxwaGEtbGFyZ2UtY3Jhc2gtbG9nLnR4dFVUBQADwZEeVnV4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIABlUTkfmrpPFFwQAAAYMAAA7ABgAAAAAAAEAAACkgVZvBQBjb21wb3NpdGluZy9jdWxs
aW5nL2ZpbHRlci1vY2NsdXNpb24tYWxwaGEtbGFyZ2Utc3RkZXJyLnR4dFVUBQADwZEeVnV4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIAChUTkcOevPj5AMAAFwLAAA1ABgAAAAAAAEAAACkgeJzBQBj
b21wb3NpdGluZy9jdWxsaW5nL2ZpbHRlci1vY2NsdXNpb24tYWxwaGEtc3RkZXJyLnR4dFVUBQAD
25EeVnV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAAxUTkcAAAAAAAAAAAAAAAAWABgAAAAAAAAA
EADtQTV4BQBjb21wb3NpdGluZy9mcmFtZXNldHMvVVQFAAOokR5WdXgLAAEE9QEAAARQAAAAUEsB
Ah4DFAACAAgADFROR8eNdm6RAAAA+gAAAD4AGAAAAAAAAQAAAKSBhXgFAGNvbXBvc2l0aW5nL2Zy
YW1lc2V0cy9jb21wb3NpdGVkLWZyYW1lLWFsaWdubWVudC1jcmFzaC1sb2cudHh0VVQFAAOokR5W
dXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgADFROR0qj9h0KBAAA6goAADsAGAAAAAAAAQAAAKSB
jnkFAGNvbXBvc2l0aW5nL2ZyYW1lc2V0cy9jb21wb3NpdGVkLWZyYW1lLWFsaWdubWVudC1zdGRl
cnIudHh0VVQFAAOokR5WdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAGFRORwAAAAAAAAAAAAAA
ABUAGAAAAAAAAAAQAO1BDX4FAGNvbXBvc2l0aW5nL2dlb21ldHJ5L1VUBQADv5EeVnV4CwABBPUB
AAAEUAAAAFBLAQIeAxQAAgAIAP1TTkej83QPkAAAAPoAAAA+ABgAAAAAAAEAAACkgVx+BQBjb21w
b3NpdGluZy9nZW9tZXRyeS9hYnMtcG9zaXRpb24taW5zaWRlLW9wYWNpdHktY3Jhc2gtbG9nLnR4
dFVUBQADjZEeVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAP1TTkdn6cmPDgQAAOoKAAA7ABgA
AAAAAAEAAACkgWR/BQBjb21wb3NpdGluZy9nZW9tZXRyeS9hYnMtcG9zaXRpb24taW5zaWRlLW9w
YWNpdHktc3RkZXJyLnR4dFVUBQADjZEeVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIABhUTkdw
yyGbkAAAAPoAAAA7ABgAAAAAAAEAAACkgeeDBQBjb21wb3NpdGluZy9nZW9tZXRyeS9hbmNlc3Rv
ci1vdmVyZmxvdy1jaGFuZ2UtY3Jhc2gtbG9nLnR4dFVUBQADv5EeVnV4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIABhUTkeGg12FGgQAAAYMAAA4ABgAAAAAAAEAAACkgeyEBQBjb21wb3NpdGluZy9n
ZW9tZXRyeS9hbmNlc3Rvci1vdmVyZmxvdy1jaGFuZ2Utc3RkZXJyLnR4dFVUBQADv5EeVnV4CwAB
BPUBAAAEUAAAAFBLAQIeAwoAAAAAABhUTkcAAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQXiJBQBj
b21wb3NpdGluZy9pZnJhbWVzL1VUBQADv5EeVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAApU
TkfDOmA3kAAAAPoAAABCABgAAAAAAAEAAACkgcaJBQBjb21wb3NpdGluZy9pZnJhbWVzL2JlY29t
ZS1jb21wb3NpdGVkLW5lc3RlZC1pZnJhbWVzLWNyYXNoLWxvZy50eHRVVAUAA6SRHlZ1eAsAAQT1
AQAABFAAAABQSwECHgMUAAIACAAKVE5Hh+yUhhYEAAAGDAAAPwAYAAAAAAABAAAApIHSigUAY29t
cG9zaXRpbmcvaWZyYW1lcy9iZWNvbWUtY29tcG9zaXRlZC1uZXN0ZWQtaWZyYW1lcy1zdGRlcnIu
dHh0VVQFAAOkkR5WdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAMFRORxUGKuD/PQAAqNEAADoA
GAAAAAAAAQAAAKSBYY8FAGNvbXBvc2l0aW5nL2lmcmFtZXMvYmVjb21lLW92ZXJsYXBwZWQtaWZy
YW1lLWNyYXNoLWxvZy50eHRVVAUAA+uRHlZ1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAYVE5H
0sGLAhYEAAAGDAAANwAYAAAAAAABAAAApIHUzQUAY29tcG9zaXRpbmcvaWZyYW1lcy9iZWNvbWUt
b3ZlcmxhcHBlZC1pZnJhbWUtc3RkZXJyLnR4dFVUBQADv5EeVnV4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIAC5UTkc1x3XaygAAAC4BAAANABgAAAAAAAEAAACkgVvSBQBlcnJvcl9sb2cudHh0VVQF
AAPokR5WdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAMFROR5kO45DoAgAAtA4AABEAGAAAAAAA
AQAAAKSBbNMFAGZ1bGxfcmVzdWx0cy5qc29uVVQFAAPskR5WdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgA6VNOR+qKfEJhBQAABQ8AAAoAGAAAAAAAAQAAAKSBn9YFAGh0dHBkLmNvbmZVVAUAA2WR
HlZ1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAADpU05HAAAAAAAAAAAAAAAAKwAYAAAAAAAAAAAA
pIFE3AUAcHl3ZWJzb2NrZXQud3MubG9nLTE0T2N0MjAxNS0xMDMxMTgtZXJyLnR4dFVUBQADZpEe
VnV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAOlTTkcAAAAAAAAAAAAAAAArABgAAAAAAAAAAACk
gancBQBweXdlYnNvY2tldC53cy5sb2ctMTRPY3QyMDE1LTEwMzExOC1vdXQudHh0VVQFAANmkR5W
dXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAMVROR+R8RaOeJgAA26QAAAwAGAAAAAAAAQAAAKSB
Dt0FAHJlc3VsdHMuaHRtbFVUBQAD7ZEeVnV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIADBUTkef
oOj6fgMAAKwJAAAKABgAAAAAAAEAAACkgfIDBgBzdGF0cy5qc29uVVQFAAPskR5WdXgLAAEE9QEA
AARQAAAAUEsBAh4DFAACAAgA8lNOR8oh/MXJBAAATRkAABkAGAAAAAAAAAAAAKSBtAcGAHdwdHdr
X3Byb2Nlc3NfbG9nLm91dC50eHRVVAUAA3eRHlZ1eAsAAQT1AQAABFAAAABQSwUGAAAAAHUAdQDQ
MwAA0AwGAAAA
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>263087</attachid>
            <date>2015-10-14 10:39:47 -0700</date>
            <delta_ts>2015-10-14 10:39:47 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews107 for mac-mavericks-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>352766</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">UEsDBAoAAAAAAD1TTkcAAAAAAAAAAAAAAAALABwAX3dwdF9jZXJ0cy9VVAkAAyaQHlaikB5WdXgL
AAEE9QEAAAQUAAAAUEsDBBQAAgAIAD1TTke3OpMrBwkAACcRAAARABwAX3dwdF9jZXJ0cy8wMS5w
ZW1VVAkAAyaQHlYmkB5WdXgLAAEE9QEAAAQUAAAArVdbb+JIE33nV/C4q2iV9t0uaR9sbMAJJjHX
gbf23dwM2GDg12+Vs5NJFDIrffosDfK4uy59qvqcSic+VnmSh7yKodXGx+YVf3ujZxYfy7zYQVtq
/8Eu4p/vC+P4mPNNe3jaBvER2gItCx+W83THq9MxbpubtDjmVbaFdplxUVHn+J/R2HR24fG6r9D5
u5Fblidy1hn+XcfBX/sNr5LiuP2risuq/JUS3+RRXl3fP9AzLKq2FePuGNovYdUW5LaggaiAordF
Jijtnjf5YmAmVXxsA76f24L0G4PxKVjFYfVfmf27rf16CjZ52H6Or213lxTwKfCHxQ/QHEt+BxB6
EKoPNtD+Q2Sy3g7y6s9P2+jxiui0OZUftsCXPfQwBmECcgw8AUkDPQFdBkUDHkEogqqDZEBiQMBB
YPc94BLXgYugcAgaW0Eg8KIIJBFEGSIRNA1iA1T1vgdJAVmDQGzMOcQRKAYYEUQhRAm9MwnCADQF
RP2bHGRaMlSQBXIliqAziAIIOSWDoQMJNAHUCITkvoeEg4Z7QlDxvBEYEsQqGAloHHS1wQfPElIm
qnDfgyqBrkEi0ykCBYwQggSYTr8EI4ZuliiZb3AQELEQkoTOosegxmTCQgjRlgNr8glDEERIvvEg
GyDLDWiIXkyGIgMxoSLyAJhB+SiMnHznIWKAUOgibdYRTBFkFRKdSoy/2B5xQCFUBhjrrodQIagR
QLkppa6ArhMCoQQMe+PtC2KigRx8g4MKgQAR9oBCpWS4OWy6yABJp+NzbLAYIgG0+L4HEVsxgEgi
J5gtEwlYHlIXYWNgEWXsKEQDgVXue9AxeRFCFRSRXrAHsL6STB6khM6FmURYXINqdB9JTrXGquFO
ak6sptZ0oEKNjWWNBQjxCyc07nrQ8OysuQgiGI2rRKJw2OfoPIzJP94yrAue6H4/MOAxdbIQUg5B
DBrmLzVWiIBAEOH9jfHLNzgoAcScaoc7EW3sB/Xt7DEYDCROrrBRWUBQ379ZBvbhlxXnsi928Q55
VFUUSWskgzH2QTZ+KMw4S+34UsU70p3ys/t/ly1eIht2cLk68nxXldD+EqtjwmQ0de6Z/6Tphp8j
zAf1j2Tni4+uCsyiDjQ0esEidmTodkG3wNbBUcGyoaNBp9vU2gFHgA7+Yu/djWueqoz4/vrfkdfx
NY/g/xW/kfX8OOTbGB5/L2E/n7KRd2BC695JKP9pydP4HvC/BopmCrhn71B9ozj6raPJYNyexwFN
GmeUaUKPEEPHPyXyfxoykKaRSvAmoOZhB6sBCHhJUKuQx1ELA2IrjdFtx3uuS0RD+P5uLsUkb6gx
EiMPckQyg3dbQfFAzpIBN0RvShDQDYxD8vZujtc+kik6cXREPIVEibdFUcgKSRC1UAkpMSRBzERs
Nv8yx17QiZ6Qi5HN8ZYin4oaRceLiuQiqnTh0RspmdBc2g9UlSjNzdfJiSiBgSEC8vDGJnhenAYi
xCEARQURaTQhxnw3x3EBiR6/I0qY2JskGI3eGw3jx4gtoqFSiJBRCOWDcEpIQyqNBQgdCgzyFAot
ciJqA1aBNzMHCjnKFR4TmVf+rJqKTuAkIgHCFHKOMwTnhIMhE+ColEjWmA+qKWaC5sYH6PCKIG1h
3DeVwjEFndPEo5LOYW7I/qi4KPk4PWgy+VQ+TB6IMMoP9gM2j9ZoACmrQMhjsfCLIlNETA8Rw8bA
4ibKp7rj0VChaT5QCARUaFUhfEizQyo3qiyXqWqYBiITCZ8KhylhPyD7yw3OKKt0BOyWgPqBqzT6
IOwoLXTwhIT8V/JNjbBDMAoOJaj3qItJTLCj3kgCzVt6M23goVSRBhrpQ9315nRCDAmjIQ9hJxES
qUY0r2AJBBInoxlWqBb4++FvCJRSPLuGA0rY+osey+m5w3bHGU3crtsxJ07zteW5rj25dTrmKk7N
2rXMFP9NzKGVrg/ZOu8ZNbNMv+yathl5o7Lu+Qt75vu2bT1Jy7lbtcLeJYt6y3O4ZVXUm92ivlf3
s3DoTaYXz3aYNwmvw8lUnv/8NnFu799WZtS65/We0zR1cs9kvc740Bu7gWT7DmY2NVum7Fp2bdKG
Z7PA9H37dXLQpZU8+nEMn4qXZKs6g0NRbA5sdnE20sRds12yX65m/fI44i1tto2kobE09Up4HvjF
Zt3tu4UdXLP+vpS6Vf9xf0t6O2P9wJO4WL4UeW0v5i99YzAWdgPdbZ3F1OgOJvsqY/rjNX8JMt+7
jYreTq/HxnrjSIIU38bm+YWXT52u7RmVrabp1vLXgXx4zV9bKhul43B2WbNjlS2yoq7DKFsYu/GF
X8TlNLfF2ziepONirI2S/KAxY+OYq2t5lU3b19fDVndxzC+bQZ5tPXa9PVYvw1zpDo97a5UWuyyq
ulHtyWF0WEmuuYuel9bZm26q44saSbLJOqeWktXFeVfepOTVYtpxJczOh9oYPvhbJkt7U5Xm8kBM
dkMz9SzT7K3S5bpOl4vaNrFyIzZpWeYUa+BYjzczstLhrO/LTjf1p0ZaKZu6nF1eHwbiCzcuul7s
Tv0XxZTrkd8YryxbrluvrvmbzWrmcj/xLHbp3cwlBbBMz3N20WaRC3XQ67LWcmtcg7HAlj+GLJSb
Nh68ZaJjp3gdM/Vrp24ibiyzrjvpwn2uF5blT/uYed2y/cXTc7F0s3M4NH1nYPmmjU1lmYN5psv+
gF9ySXmMB/0fdnVaDEttIq+vq44zCV7D6YOxbr1W8/B0uZWh+zjVr2Y1clfKLJrO55t64GZsrcvb
xXRri+q63E0lLXs6KjNl78jC61xVn9JVa51VgwfzRRkaiTbLN69X/th9XpTrEXb909PcVTju9MzV
dFKK0c3q+f3Cy+an/cM0dPP58KlVbTKun72ue5sfjP043N3G48eH2RPmGY32w2fvyKvLIdXy7JA7
P8bTedc7pWpXPvlra1pXcmvm7K7XhV8ZC6P/I9C70dXYTCPNc0+n9Xq0V1kyY/144yp+eD1tqvG+
Ohd8vU3SmbtOctdosefbA5fcy3xR9DrzAXtZZNP+2dwM4914Icpcjw7znTJOtqenfiLUf7+xkzO0
v3LTP1BLAwQUAAIACAA9U05HSf9KVOAJAAAuEgAAEQAcAF93cHRfY2VydHMvMDIucGVtVVQJAAMm
kB5WJpAeVnV4CwABBPUBAAAEFAAAAJ1W2XLiyBJ95yt4nAlPT2tfMmIetCEwCBux81aSSkLsIIGA
r59MecZtt+m5EVdhRwhVVeapXM5Jh5/KPM1jVnJoNPFxWcne3uiZ8FOR73fQlJu/CVfp9/eFIT/l
bNPsn7cRP0FT+nk5z3asPJ9409pk+1NeLrfQLJZMUrUp/giHlreLT7dDicbfD3WK4kzGnP5fFY++
HTasTPen7beSF2XxAxLb5Ele3t4/0NPfl02b424OzZe4bIpKU9RBUkE1mpIgqk0/GH05YKUlPzUB
3y9NUf6PA8NztOJxWSPb7GO2We6L8ufV5us52uRxs8tvzc4u3cMnfx8WP0TkVLAHcaAHI/ThDDR/
kwTFaEZ5+funbfQE++S8ORcftsCXPfQIAsQSSClE+KeAqkOqg2EA10BUQBEgVYFxiBIQ+WMLqgxo
JI0pTgoaicFIQVBBFCCRQUrAFEDSQVchYY8tGDGYMsgGyAKoKugy6CnIOoHhCI8D5yAzMERgxmML
EWZJAa6DooGGUDVI8C8B/C6jXx0SNJ6CFoEqPLagMAIsiwRYEUEwIGXAGCicbmHgO1pDACIo6mML
XCJfGCX0JSAeESIBWFxjiMCsY4sRjlWKz0MLeBbt44ZUA5OBLAFXQZDooFpj09+CgC7iX1hQKHoa
GhGAKyDgpVJQNYpbogDWcmyScTkGRXlsQcZtiNkEvE6sQSqAURsURdAYcBlSBBCBpFGoH1rA+EeM
CkA1IcFTKpg6RVKICTkGBCuBXGggyY8tmGic1YWEcVNBEkATKGgYWE0CU6TIYLI0/stcvCUR7SOA
BJMuUQRYSuFFO4pEf0JEe2LxF7cwqS8w74pJ2cT0KVhXCZUitoYakWvEgwGRf4EBkXOT7FMNGHQQ
a4lh/E0qZkxoGlGRMI1a7HE2GegapQy9Y9Y4loRJ7aDhO7abRDDMOlDSL/oC+1fmdDbWqbNovwES
VhEWWEKFIZh1yWFkhF/WJBW2DDEjp1RdJogG/VRjsoPNi2axT81fVLWKla9+WfGuh/2O75A+NVWV
dVIKURAE8QeTzVTBvMhNfi35juSm+Gz+n2WbFciGDi6XJ5bvygKaX3w5FrSs3tB7dP5fnq4JOkFA
qHskN1+MWBaINmgtNAWKC5ILhg2WCGQc2wO7ukUB9SRwPLB1cGUquxb+bD3ya53LJRH+7X97XvNb
nkALk2WDblI34Qs6dBRotQiFa4Cnge2Co6M3KgbTA08kIB6SgNd4BIDcjguW8Qce3TzLSxTyd8H+
A+Vw1wz54ZzkjGTpj/o8ylR+WPLTFtE/8uFR7hKe/KezUW/YnPKIhocLKi8FhoIRsy/y91PKrA0q
NeLLL7zZZ9uHF+kP4V2b/6h/VlX150+frrtv33bGSksKVd5U1fp0XF4kgz3atrnwb9qGJX9+tSo9
+Cb++Xky+L8moCgiulI56RuqAVI7siA2IooAchiSHGmCRHSI3UyKoRHFvh/XsTWRAmUwTdJhZGI5
IXFDO0jkQs0i2MRkHOkhJn5CwXw/ntQtnqJxhZgMCdWoJQ63KTIVI8o7shSOAGhfMUA3wPjAJUyF
GA+qNF8goSKDSjFRDnIYYkZtRB1ACiSViGgMQdHAW7wfR9YUZRJVZFkkPEOvZwos6oT0DccN1ArE
g97RIOpkjMz0QRuRXxNOd0fpwwlF02mQQQFBXkRBw2uKyMcKURrSIXIkcvZHSUFIZi0aKKSpTAyK
sob3NUwSKEwBjjxpSuyo4eAj08XZBz3BvBgqZUdIif4xKZFKeGhcwqGgjqdkgh4RGMwFbkau/ZE4
RsrDFFJ+pG0MAqmuTHSOnIqSqNYSjRyM8vIGXv+QOIwbqnckkcqhcbWeXzAgqMMIHqctjBtqOBI/
KjbeRail9f046jwGDWHj4EC1p1DSkXXM+izWGNYkTm1SraJiLZXCh+MoffgRM05TgEyqi6KNNjGe
SkyCJvF63FNIn9E1ThnqBxFDbTRr1aWZqC54TSYpY/WEhTuluhdo7ktJvvR6svhRdQkFTa634RK6
pqlQoQrHIkFgKOZvF8HaIBlPP7UM3kuoNTbSGt/osT2/0286XjjqtDqONfLqr42g03F3I8ex9tPM
qjq2leH/yurb2fq4XOe+WQm2NShalmslQVhU/mDuTgYD17Wf5cW0UzZi/7pM/MUl3gpl4k/uSTuo
2su4H4zG18D1hGAU3/qjsTL999vIu79/W1njRhB2Ks/6x6q1KSKpv4z85SWWB1WWeXlgCb4zPPrD
TiS7Aw/RjC1L6dhuZdF6t2HtEfLAdXr6kzD5zjvqMrRMppntTWB9dyavl47R8vpBuXYSUdrfRi+u
PYllQ548uS/66mg3jr14rQqLslVGSXmfzSTXPI29/SAYirbzejyOypfuCSGFvCO2y6zdiZyivJ/H
E33UWl21ZeOaMhacx85EtK58759lO7zPY3ftLM3psT+Y3dK5EbqD+Mx7vtHpL73paWWwYhtuJc2e
7MLGYsGPblcrkvAmddRF99I5Tzq+8yr53TBY2ucQkXTMdjQ+5pf93HQGWWlX052Tr9ftjSckDf28
iMJkteovZoeK3RR9rR2eRofB083fmuFBui1GkrbavSzOVT5Vj0bXs57MIplM1ey4PIjThsPar3tb
zwPjVMTSen7b3PxV65LtxHBiZYFtWf4qSzHiXKgcqoFQGNlWp6K6sLP+pNEeKF4rG4yPy/LytBbK
XGt3jXD6Ojn3XkqzPzQKo2pX9cGVbWdVa2+NzaxUN1Uxub4+9RrSCzOvhrHfndsvqqVUztvmV8qt
lc0QQ+Bb4jh5HgyCwNr7jlP4WAstu8KVtuI3aNEbhHLQnjrO9HqZS62C+eY96XT6iZzIve2nb0vu
K2VvqihstVjH9/G9EbUTmcnPV9ae31587xz55mo+ve4juS9ky4US5UIZtReb3mhRzKeDz+uZKjcS
Ob795OWFPAdD9VNZu4P5c3e/6OCvvjXwevbAcrGU7YbVK53ZOXYq//kuW8UqY89nh4/9ZOZEY3W9
O65kreoWzlS57xz1roomC75nw0KY6/On8cussW7Pre14qWTdmXeIvjvt4W25OHbl8rjYbG/mwuHK
qL0a50szWLs8fN3sFWuxSTt3p83H19RoLHQpHNjtmZ+Gh13MJ+HinO4Hp/tkMB3k48P9OTXukf5i
7ec+Zvv7OYlm3HqNhZOz0T12bjWU3b59cP15O1+45ibMcGbyzwGfJNfXqlj7p1nkLV1vr6zWLItm
gbNOvZlehlztZ5PtKvMbg0NwGoTdrsXXw2qzG63uvetOuI17K3ssVV13+nqebWwtm2+Dp0Oozp+r
rtwzzKdTV7i+OMlTI9gKY0eMh6PFXhmbq0uyCHy9N//rjQe9vvuVBf8GUEsDBBQAAgAIAD1TTke3
OpMrBwkAACcRAAAVABwAX3dwdF9jZXJ0cy9jYWNlcnQucGVtVVQJAAMmkB5WJpAeVnV4CwABBPUB
AAAEFAAAAK1XW2/iSBN951fwuKtolfbdLmkfbGzACSYx14G39t3cDNhg4NdvlbOTSRQyK336LA3y
uLsufar6nEonPlZ5koe8iqHVxsfmFX97o2cWH8u82EFbav/BLuKf7wvj+JjzTXt42gbxEdoCLQsf
lvN0x6vTMW6bm7Q45lW2hXaZcVFR5/if0dh0duHxuq/Q+buRW5YnctYZ/l3HwV/7Da+S4rj9q4rL
qvyVEt/kUV5d3z/QMyyqthXj7hjaL2HVFuS2oIGogKK3RSYo7Z43+WJgJlV8bAO+n9uC9BuD8SlY
xWH1X5n9u639ego2edh+jq9td5cU8Cnwh8UP0BxLfgcQehCqDzbQ/kNkst4O8urPT9vo8YrotDmV
H7bAlz30MAZhAnIMPAFJAz0BXQZFAx5BKIKqg2RAYkDAQWD3PeAS14GLoHAIGltBIPCiCCQRRBki
ETQNYgNU9b4HSQFZg0BszDnEESgGGBFEIUQJvTMJwgA0BUT9mxxkWjJUkAVyJYqgM4gCCDklg6ED
CTQB1AiE5L6HhIOGe0JQ8bwRGBLEKhgJaBx0tcEHzxJSJqpw34Mqga5BItMpAgWMEIIEmE6/BCOG
bpYomW9wEBCxEJKEzqLHoMZkwkII0ZYDa/IJQxBESL7xIBsgyw1oiF5MhiIDMaEi8gCYQfkojJx8
5yFigFDoIm3WEUwRZBUSnUqMv9gecUAhVAYY666HUCGoEUC5KaWugK4TAqEEDHvj7QtiooEcfIOD
CoEAEfaAQqVkuDlsusgASafjc2ywGCIBtPi+BxFbMYBIIieYLRMJWB5SF2FjYBFl7ChEA4FV7nvQ
MXkRQhUUkV6wB7C+kkwepITOhZlEWFyDanQfSU61xqrhTmpOrKbWdKBCjY1ljQUI8QsnNO560PDs
rLkIIhiNq0SicNjn6DyMyT/eMqwLnuh+PzDgMXWyEFIOQQwa5i81VoiAQBDh/Y3xyzc4KAHEnGqH
OxFt7Af17ewxGAwkTq6wUVlAUN+/WQb24ZcV57IvdvEOeVRVFElrJIMx9kE2fijMOEvt+FLFO9Kd
8rP7f5ctXiIbdnC5OvJ8V5XQ/hKrY8JkNHXumf+k6YafI8wH9Y9k54uPrgrMog40NHrBInZk6HZB
t8DWwVHBsqGjQafb1NoBR4AO/mLv3Y1rnqqM+P7635HX8TWP4P8Vv5H1/Djk2xgefy9hP5+ykXdg
QuveSSj/acnT+B7wvwaKZgq4Z+9QfaM4+q2jyWDcnscBTRpnlGlCjxBDxz8l8n8aMpCmkUrwJqDm
YQerAQh4SVCrkMdRCwNiK43Rbcd7rktEQ/j+bi7FJG+oMRIjD3JEMoN3W0HxQM6SATdEb0oQ0A2M
Q/L2bo7XPpIpOnF0RDyFRIm3RVHICkkQtVAJKTEkQcxEbDb/Msde0ImekIuRzfGWIp+KGkXHi4rk
Iqp04dEbKZnQXNoPVJUozc3XyYkogYEhAvLwxiZ4XpwGIsQhAEUFEWk0IcZ8N8dxAYkevyNKmNib
JBiN3hsN48eILaKhUoiQUQjlg3BKSEMqjQUIHQoM8hQKLXIiagNWgTczBwo5yhUeE5lX/qyaik7g
JCIBwhRyjjME54SDIRPgqJRI1pgPqilmgubGB+jwiiBtYdw3lcIxBZ3TxKOSzmFuyP6ouCj5OD1o
MvlUPkweiDDKD/YDNo/WaAApq0DIY7HwiyJTREwPEcPGwOImyqe649FQoWk+UAgEVGhVIXxIs0Mq
N6osl6lqmAYiEwmfCocpYT8g+8sNziirdATsloD6gas0+iDsKC108ISE/FfyTY2wQzAKDiWo96iL
SUywo95IAs1bejNt4KFUkQYa6UPd9eZ0QgwJoyEPYScREqlGNK9gCQQSJ6MZVqgW+PvhbwiUUjy7
hgNK2PqLHsvpucN2xxlN3K7bMSdO87Xlua49uXU65ipOzdq1zBT/Tcyhla4P2TrvGTWzTL/smrYZ
eaOy7vkLe+b7tm09Scu5W7XC3iWLestzuGVV1Jvdor5X97Nw6E2mF892mDcJr8PJVJ7//DZxbu/f
VmbUuuf1ntM0dXLPZL3O+NAbu4Fk+w5mNjVbpuxadm3ShmezwPR9+3Vy0KWVPPpxDJ+Kl2SrOoND
UWwObHZxNtLEXbNdsl+uZv3yOOItbbaNpKGxNPVKeB74xWbd7buFHVyz/r6UulX/cX9Lejtj/cCT
uFi+FHltL+YvfWMwFnYD3W2dxdToDib7KmP64zV/CTLfu42K3k6vx8Z640iCFN/G5vmFl0+dru0Z
la2m6dby14F8eM1fWyobpeNwdlmzY5UtsqKuwyhbGLvxhV/E5TS3xds4nqTjYqyNkvygMWPjmKtr
eZVN29fXw1Z3ccwvm0GebT12vT1WL8Nc6Q6Pe2uVFrssqrpR7clhdFhJrrmLnpfW2ZtuquOLGkmy
yTqnlpLVxXlX3qTk1WLacSXMzofaGD74WyZLe1OV5vJATHZDM/Us0+yt0uW6TpeL2jaxciM2aVnm
FGvgWI83M7LS4azvy0439adGWimbupxdXh8G4gs3Lrpe7E79F8WU65HfGK8sW65br675m81q5nI/
8Sx26d3MJQWwTM9zdtFmkQt10Ouy1nJrXIOxwJY/hiyUmzYevGWiY6d4HTP1a6duIm4ss6476cJ9
rheW5U/7mHndsv3F03OxdLNzODR9Z2D5po1NZZmDeabL/oBfckl5jAf9H3Z1WgxLbSKvr6uOMwle
w+mDsW69VvPwdLmVofs41a9mNXJXyiyazuebeuBmbK3L28V0a4vqutxNJS17OiozZe/IwutcVZ/S
VWudVYMH80UZGok2yzevV/7YfV6U6xF2/dPT3FU47vTM1XRSitHN6vn9wsvmp/3DNHTz+fCpVW0y
rp+9rnubH4z9ONzdxuPHh9kT5hmN9sNn78iryyHV8uyQOz/G03nXO6VqVz75a2taV3Jr5uyu14Vf
GQuj/yPQu9HV2EwjzXNPp/V6tFdZMmP9eOMqfng9barxvjoXfL1N0pm7TnLXaLHn2wOX3Mt8UfQ6
8wF7WWTT/tncDOPdeCHKXI8O850yTranp34i1H+/sZMztL9y0z9QSwMEFAACAAgAPVNOR+KoiktC
BQAAzwYAABQAHABfd3B0X2NlcnRzL2Nha2V5LnBlbVVUCQADJpAeViaQHlZ1eAsAAQT1AQAABBQA
AABtlbeyrAYCRHO+4uXoFnYwqlKAd4P3ZNiBwXvz9braeDvt6qxPnZ+f37CCpBh/HJf5YzlKwHjC
H02I/yt+AGsZ8x/vnsq//+B/CQbnxJYn8AAvaD/KUI1//+EF90fgBeyHY7m/UFQkEAxDGJ4jRQYX
ASDQyVnDGWt3XAfZ49mkKYptx2vmBZGtumJOXgYvFHhq9dIFnpNxVU8R1iG0jusiUAwwuRM6UbMG
SWRNO1Vu4yPo9Xtxdrjff8kJvQU8aiKSnwa6fYIoTS5/T5q2k602UhYLCP29s16ii1Gf+WjpT2DW
8by91xRVKGHrLPD4sBmYbAq5h5bCxSKlrM6DG7Q55buKwcDvNhhokETe91Zv6ju7a5bwfTES9rgz
GGcuGZN5EcpXkkB6ib9kMLcV/vWIZ3eWChcAB7Qzu6IsDKeGuiG4rcWVzxDSe31JvZpN3kF6K/Hm
cKg9M6bwWRd63DXo7FgYE1nnAaI3lUq5uca/MCuf4MpDEs7jovELySnjj2kpRyjXvokBDZzjwdTT
piDNa/KY0pB0qwHmBm//fGUdFlieiMxeSu5foqCVm72bQ92YPG0D2VZK85FqAx2dvM9dQ4yHlJ5b
GeSBgj8Vk/rk1MZFWMqVWM2UCLMjWeqfGfGuewYsCXrZ5jtTtO+MVpznb/hWBj5Vs+ypARi32p9I
h1ZQzAmmoS48hmsjVbxd5jiQPwIPriQnjlmVIaXjc80rR0tcXyVnQKbH9ACWZ/VyPu1t/TBcMcG5
AH/cWkrjb4qirDWbvSy181WXk5t9NDCnhMN6yWdwW7JzKWEKvO48msjuhqSXl4TSfQwyr1u7xLZe
jlGP2RYgVyr1TFnBkTP2a5DevAvJ+wCKzrM8EGBjWZE4mICSjwsNc6HzmQcXyxCGOFkVQutFPtyg
h3e+HlODT3/PzBIhzkx4rVeiOwQwauJDcb6TK5GbaJgHLfEullg4yobXi9/1i+p5qo+IZTb+8vur
a8TrD+Gbgzw7Vv9lgJ4VZc2sg+HlSxljtDDRF0c7CAcBYnHhflhrBctD4ZsoOFh6KbYbC46aLhji
Lc6lhAGjr0qrXNU9y05hLwalrCIsSyATX8XEOlCDqrX1NaJag4LascLrFszJ116cWVn3F3oC5Zye
FAvd9RbF08cFFwEqsZSNU7LQUz0HvwI4wYZ+ky8BIqH+g/LmZTehD0uFarwrCyghM5K9WYY8iZ7v
t51YGC15Xq+QKjJBptQ5qYjoRLfMA/dawdkJe/2sG7XjMFTfsQRALJ1AlvYiOasLF4pAlGKybHxq
j+KSYKsY0WDykmClIPE235fjw7Ao8MgrlmXjm3EScFsBNIP7p784dS4EzDD7XI8TOf2lQ7NlGSze
B+qC/Uzcd9P1F5LYnuPGQcNeI/ylQOB9hT1dRu3CR3TJu01acCW/RjAeqtU1t56qVKMWhojDSUI7
957VYb3dGw+IWmNmVgigVfT7y+yU3l5BwrwZKI8elhp52L35MDlkboIbfJ1Y95PXp7gmyVm9KGHp
OQsDp7MQgfqD3UhzbNQGipIkDvLDNhV+MWLqgbIZ6+9fGhtGr8/9Y4hLnLAX/QbTjHUleIqD+ADO
U3pD30fhP97SqwKLmr3BUnA28eCdjDRsQ7IsbmKOWWDUc149gWjGO0ky4JSRWiECgHLaX9HSsDre
LTa2MY2aOlDoCMktyDmvKiF08vkbXBcDdeab7r5MK3oPfnTdvjwBBcALeFKh/HwC1hYyN3BIXfAL
WvzyW5zasDXimjU64JCqbdWHTsTnTPSc//wD/E9LgsH/f139C1BLAwQUAAIACAA9U05HyOCakUUA
AABdAAAAFAAcAF93cHRfY2VydHMvaW5kZXgudHh0VVQJAAMmkB5WJpAeVnV4CwABBPUBAAAEFAAA
AAvjNDQ1NDQ0NjQ3MjW1iOLkNDDkLM3Lzssvz+PUd/azLU9N0i3ISSxJyy/K1S1JLS4p5grD0GKE
oiUnPzkxJyO/uIQLAFBLAwQKAAIAAAA9U05HmFx5fxUAAAAVAAAAGQAcAF93cHRfY2VydHMvaW5k
ZXgudHh0LmF0dHJVVAkAAyaQHlYmkB5WdXgLAAEE9QEAAAQUAAAAdW5pcXVlX3N1YmplY3QgPSB5
ZXMKUEsDBAoAAgAAAD1TTkeYXHl/FQAAABUAAAAdABwAX3dwdF9jZXJ0cy9pbmRleC50eHQuYXR0
ci5vbGRVVAkAAyaQHlYmkB5WdXgLAAEE9QEAAAQUAAAAdW5pcXVlX3N1YmplY3QgPSB5ZXMKUEsD
BAoAAgAAAD1TTkeSWiwsMwAAADMAAAAYABwAX3dwdF9jZXJ0cy9pbmRleC50eHQub2xkVVQJAAMm
kB5WJpAeVnV4CwABBPUBAAAEFAAAAFYJMTUxMTEzMTcyNTU4WgkJMDEJdW5rbm93bgkvQ049d2Vi
LXBsYXRmb3JtLXRlc3RzClBLAwQUAAIACAA9U05H+6d3GgIFAACPBgAAGAAcAF93cHRfY2VydHMv
bG9jYWxob3N0LmtleVVUCQADJpAeViaQHlZ1eAsAAQT1AQAABBQAAABt1TeSpFgABFCfU4xPTDRQ
SPOjVaG1hy60hoLT727bm246L9LJv3//DStIivHHccEfy1EC4Al/NCH+r/gLvRVFmGuFBUDjgC2A
q4F/drF6NWbs21Z4nA7hAevqPeq2WIf39ASMRbG8u6e+gsj4gQy0qp8DJ+u0ealmIWVOFr6yHEWZ
+idFWU3ghd22W3LpKK9ZsO/kR43hUDF7S9eq5xTUiyXyjelyyiNsaPUe9IX9jhZ23S8/x2RAgKkK
ltYX6RGzBBuR9bH5nhwfO+KC/0grpHbJftRBgoRhtNT3scp+vjdm6K633rts3TKfpvMUO+v83XYt
B0O1aSUly+4U3c7FGbqmWWUJx5BLagiRKMafMCBzaTtMwlyqjvSt7TOfflpsg88cE/EM2ab0R3py
H2CdmQwFwRFrU1oE9fB5SFDiraVRsjFL7zn/TN8MVxk/sBUe2IAF079j25xctiRpasKYrRECHbyp
SIAi8RImJa3hC5+z3U7ce9Og+7VWmVrcah4IzzHlS2b5mKiMGp2b5ay30t2uEHaIrKnjAq6OSf95
k9mkwLpFrMT9Q3a5uXkC7pDZ2ogtVdz6oj18AASYe4tqwdeLjEJwQfjlVlw5tjFNkiHJ6dddbM5y
HWVgg6lQBeS6TrkCr6WZ9Fz7ydJUq67wfSpGwgAo6zqPFSrHTl7IamTFhqxxM/jheat3bA+uJIbI
87LK3AicIMo2704+rlo7ociPmz5YkERncEblqlUsvvASQqzCYGzSRURnaA0bkJ4qiSLR+e9hGTAs
uRRZdt3bf8Tou2/YpkDpj43ZYBHBJLHAFKbnh9C5GMVkM+r28aNkteerOjkoxBVIWlc7dMykXonH
+1JyGrFBt/WydQWdqDPvWHPKrd4X5RHtTSoY5HlC47S/GRilFof+vh9C7lFrrxziFXD9gm+1DqXZ
qodCWu1qzmAI3lO2yllaKWyn+K2HY7nnq3ilY+zubyml+9q08pKolehXbDwKhLMSDNiNIgLtQFJW
zretZ78eAMzYciFDwG+t/vjORloab+7AdL3jp3idsq/V4a2hCFRlvX+I+1isrb7c8DUmOHU4+Tsl
cA6oYW+i2ToehXF4m5cfQXPw/vXKFbpPsFdCFCQ0HfPkdiXaDlJLVUCSFc/lPaDciuOwWdOsyZBz
3vf5Jas3m8MyHU/ogzbE4ZTMB8LcAhZHB5ue6KIA6qkGL3JXdSu6Q5jmEejtx5z9jqHdxw9nfDJI
g3FCAkjZyocH/oWu90LgAXyOt+dELN3Z3OjH3OulgNxlN3cx27GkB8O/cZaxVCQrCaT2wydae3VO
PqwPPZ67soX+OA+Trd73nuHYFBrK+CVrTZjNCzOnwiAKdNCrMYEp29vh9K/Ew0SsXA5EAS+56L7l
JSmVPLgdbCVpjnqIL3QUpIJcEHny2/FTC4axVPpcXTJfHysxVsVdVpEGPe9zzQM7Bn1FYwfwGm1n
JPjTdRqBPKqajWSHJK9zsulSBPI1VJP68ea01PvsptHkgtzKrzeYl3/J77d9XLo6GapNn+wWTQ2l
Ru0KwNd2Zz4adX9vwlov0RKOSjnubMqHPsHnps5UUWfbTd1kr7TmsyYS15LZgyYY5WTlWbxADZKA
g+kTRrZi53l2Y07JnDWchbyCJQqkIHaPcMgfw4ZtXuAr6SEHCj3M8/1IV4ifrpmHN+bOm2tmsfeI
YQ/93opg8P9/N/8AUEsDBBQAAgAIAD1TTkdJ/0pU4AkAAC4SAAAYABwAX3dwdF9jZXJ0cy9sb2Nh
bGhvc3QucGVtVVQJAAMmkB5WJpAeVnV4CwABBPUBAAAEFAAAAJ1W2XLiyBJ95yt4nAlPT2tfMmIe
tCEwCBux81aSSkLsIIGAr59MecZtt+m5EVdhRwhVVeapXM5Jh5/KPM1jVnJoNPFxWcne3uiZ8FOR
73fQlJu/CVfp9/eFIT/lbNPsn7cRP0FT+nk5z3asPJ9409pk+1NeLrfQLJZMUrUp/giHlreLT7dD
icbfD3WK4kzGnP5fFY++HTasTPen7beSF2XxAxLb5Ele3t4/0NPfl02b424OzZe4bIpKU9RBUkE1
mpIgqk0/GH05YKUlPzUB3y9NUf6PA8NztOJxWSPb7GO2We6L8ufV5us52uRxs8tvzc4u3cMnfx8W
P0TkVLAHcaAHI/ThDDR/kwTFaEZ5+funbfQE++S8ORcftsCXPfQIAsQSSClE+KeAqkOqg2EA10BU
QBEgVYFxiBIQ+WMLqgxoJI0pTgoaicFIQVBBFCCRQUrAFEDSQVchYY8tGDGYMsgGyAKoKugy6CnI
OoHhCI8D5yAzMERgxmMLEWZJAa6DooGGUDVI8C8B/C6jXx0SNJ6CFoEqPLagMAIsiwRYEUEwIGXA
GCicbmHgO1pDACIo6mMLXCJfGCX0JSAeESIBWFxjiMCsY4sRjlWKz0MLeBbt44ZUA5OBLAFXQZDo
oFpj09+CgC7iX1hQKHoaGhGAKyDgpVJQNYpbogDWcmyScTkGRXlsQcZtiNkEvE6sQSqAURsURdAY
cBlSBBCBpFGoH1rA+EeMCkA1IcFTKpg6RVKICTkGBCuBXGggyY8tmGic1YWEcVNBEkATKGgYWE0C
U6TIYLI0/stcvCUR7SOABJMuUQRYSuFFO4pEf0JEe2LxF7cwqS8w74pJ2cT0KVhXCZUitoYakWvE
gwGRf4EBkXOT7FMNGHQQa4lh/E0qZkxoGlGRMI1a7HE2GegapQy9Y9Y4loRJ7aDhO7abRDDMOlDS
L/oC+1fmdDbWqbNovwESVhEWWEKFIZh1yWFkhF/WJBW2DDEjp1RdJogG/VRjsoPNi2axT81fVLWK
la9+WfGuh/2O75A+NVWVdVIKURAE8QeTzVTBvMhNfi35juSm+Gz+n2WbFciGDi6XJ5bvygKaX3w5
FrSs3tB7dP5fnq4JOkFAqHskN1+MWBaINmgtNAWKC5ILhg2WCGQc2wO7ukUB9SRwPLB1cGUquxb+
bD3ya53LJRH+7X97XvNbnkALk2WDblI34Qs6dBRotQiFa4Cnge2Co6M3KgbTA08kIB6SgNd4BIDc
jguW8Qce3TzLSxTyd8H+A+Vw1wz54ZzkjGTpj/o8ylR+WPLTFtE/8uFR7hKe/KezUW/YnPKIhocL
Ki8FhoIRsy/y91PKrA0qNeLLL7zZZ9uHF+kP4V2b/6h/VlX150+frrtv33bGSksKVd5U1fp0XF4k
gz3atrnwb9qGJX9+tSo9+Cb++Xky+L8moCgiulI56RuqAVI7siA2IooAchiSHGmCRHSI3UyKoRHF
vh/XsTWRAmUwTdJhZGI5IXFDO0jkQs0i2MRkHOkhJn5CwXw/ntQtnqJxhZgMCdWoJQ63KTIVI8o7
shSOAGhfMUA3wPjAJUyFGA+qNF8goSKDSjFRDnIYYkZtRB1ACiSViGgMQdHAW7wfR9YUZRJVZFkk
PEOvZwos6oT0DccN1ArEg97RIOpkjMz0QRuRXxNOd0fpwwlF02mQQQFBXkRBw2uKyMcKURrSIXIk
cvZHSUFIZi0aKKSpTAyKsob3NUwSKEwBjjxpSuyo4eAj08XZBz3BvBgqZUdIif4xKZFKeGhcwqGg
jqdkgh4RGMwFbkau/ZE4RsrDFFJ+pG0MAqmuTHSOnIqSqNYSjRyM8vIGXv+QOIwbqnckkcqhcbWe
XzAgqMMIHqctjBtqOBI/KjbeRail9f046jwGDWHj4EC1p1DSkXXM+izWGNYkTm1SraJiLZXCh+Mo
ffgRM05TgEyqi6KNNjGeSkyCJvF63FNIn9E1ThnqBxFDbTRr1aWZqC54TSYpY/WEhTuluhdo7ktJ
vvR6svhRdQkFTa634RK6pqlQoQrHIkFgKOZvF8HaIBlPP7UM3kuoNTbSGt/osT2/0286XjjqtDqO
NfLqr42g03F3I8ex9tPMqjq2leH/yurb2fq4XOe+WQm2NShalmslQVhU/mDuTgYD17Wf5cW0UzZi
/7pM/MUl3gpl4k/uSTuo2su4H4zG18D1hGAU3/qjsTL999vIu79/W1njRhB2Ks/6x6q1KSKpv4z8
5SWWB1WWeXlgCb4zPPrDTiS7Aw/RjC1L6dhuZdF6t2HtEfLAdXr6kzD5zjvqMrRMppntTWB9dyav
l47R8vpBuXYSUdrfRi+uPYllQ548uS/66mg3jr14rQqLslVGSXmfzSTXPI29/SAYirbzejyOypfu
CSGFvCO2y6zdiZyivJ/HE33UWl21ZeOaMhacx85EtK58759lO7zPY3ftLM3psT+Y3dK5EbqD+Mx7
vtHpL73paWWwYhtuJc2e7MLGYsGPblcrkvAmddRF99I5Tzq+8yr53TBY2ucQkXTMdjQ+5pf93HQG
WWlX052Tr9ftjSckDf28iMJkteovZoeK3RR9rR2eRofB083fmuFBui1GkrbavSzOVT5Vj0bXs57M
IplM1ey4PIjThsPar3tbzwPjVMTSen7b3PxV65LtxHBiZYFtWf4qSzHiXKgcqoFQGNlWp6K6sLP+
pNEeKF4rG4yPy/LytBbKXGt3jXD6Ojn3XkqzPzQKo2pX9cGVbWdVa2+NzaxUN1Uxub4+9RrSCzOv
hrHfndsvqqVUztvmV8qtlc0QQ+Bb4jh5HgyCwNr7jlP4WAstu8KVtuI3aNEbhHLQnjrO9HqZS62C
+eY96XT6iZzIve2nb0vuK2VvqihstVjH9/G9EbUTmcnPV9ae31587xz55mo+ve4juS9ky4US5UIZ
tReb3mhRzKeDz+uZKjcSOb795OWFPAdD9VNZu4P5c3e/6OCvvjXwevbAcrGU7YbVK53ZOXYq//ku
W8UqY89nh4/9ZOZEY3W9O65kreoWzlS57xz1roomC75nw0KY6/On8cussW7Pre14qWTdmXeIvjvt
4W25OHbl8rjYbG/mwuHKqL0a50szWLs8fN3sFWuxSTt3p83H19RoLHQpHNjtmZ+Gh13MJ+HinO4H
p/tkMB3k48P9OTXukf5i7ec+Zvv7OYlm3HqNhZOz0T12bjWU3b59cP15O1+45ibMcGbyzwGfJNfX
qlj7p1nkLV1vr6zWLItmgbNOvZlehlztZ5PtKvMbg0NwGoTdrsXXw2qzG63uvetOuI17K3ssVV13
+nqebWwtm2+Dp0Oozp+rrtwzzKdTV7i+OMlTI9gKY0eMh6PFXhmbq0uyCHy9N//rjQe9vvuVBf8G
UEsDBAoAAgAAAD1TTkessJTPAwAAAAMAAAARABwAX3dwdF9jZXJ0cy9zZXJpYWxVVAkAAyaQHlYm
kB5WdXgLAAEE9QEAAAQUAAAAMDMKUEsDBAoAAgAAAD1TTkftgY/WAwAAAAMAAAAVABwAX3dwdF9j
ZXJ0cy9zZXJpYWwub2xkVVQJAAMmkB5WJpAeVnV4CwABBPUBAAAEFAAAADAyClBLAwQKAAAAAAA5
U05HAAAAAAAAAAAAAAAADgAcAGFjY2Vzc19sb2cudHh0VVQJAAMekB5WHpAeVnV4CwABBPUBAAAE
FAAAAFBLAwQKAAAAAABvU05HAAAAAAAAAAAAAAAADgAcAGFjY2Vzc2liaWxpdHkvVVQJAAOBkB5W
opAeVnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAB9U05Hb47D4ow4AACzwgAAQAAcAGFjY2Vzc2li
aWxpdHkvYWNjZXNzaWJpbGl0eS1ub2RlLW1lbW9yeS1tYW5hZ2VtZW50LWNyYXNoLWxvZy50eHRV
VAkAA56QHlZIkB5WdXgLAAEE9QEAAAQUAAAA7Fvrc5tItv98+Sv4NCUng9xPoFW52QIEWc/4VZaT
TN2pKRWgxmYjCS2gxN6//p4GPUBCjpmbu7VVu/og2d3NOb9z+rz6wW2exbIoRvr2E2eLYbhazeXw
s4x+TUv142XLUi7L4Vh+lfNstYC/9d9tYQn8h3Yblo/7p+Fz/imbrxeyOP90c/nxyj9/c74hlOTh
Qn7L8i/nn2RepNmyOHfOf7v1JjL/mgKI81eyHj6t4vNNe3F+FcY3k9c+ql3M4DtNUpmPeomrbSDv
JTUReasP4HuIh9bbM83LZlK/f17J7ZDfbNMwmT64Dsv0qzwDReVKb7c7hf/lL3/RfwcN3sliBcpI
o/nm2eIR2gX/Q/tYyFy/GO+ZcoQ17Xa+frhY6k3Fn9L5vSzKu/VyKfOL5d9kXMqZu17OQNio+jnU
4ssPbRk3dfi6J5rKU1IP0JmmjcNSnt+ni53CCMLcwMjATMdoRPiIi6GNmG4gCyHtZqK35wAg69D4
GwweiiHXB5gGGFN2BgpdZXnZGI6x5iyz5fMiWxf6x4+VRunYCejYxIZnjpHBuGcbwne44dq+6Xie
g6hPNE3z8rB4lDP9/jGX4QyeQ7o+TotVWMaP+t/Xcg3w9za0CNOlUVZDNc1/iuWqBARbs/B/86au
M54CeX8y0QeTiw8T/8Ons8ZIZUVgG7/6d9fTi+tPzuUFDB+P79T4sNTRE9p8oiicRVImmvbpSr+T
D8qd9GsZ5jBm2zfSDOO9rillTaf3/m/3+uFnQwyjiFAGfxjNBhP+0H9Xw+xf/9Bz4+k8//akT67+
27v5/C/u5lo9XTBZm/kbjV45a6gVE34Jv4aTOE9XpZflstbZf+0mAWMiODVjqX++DypG+lvdJPrA
KcBx1XwWw3i1GlGCzzTcjzClFhZYL0qAPp3i0Wi9TAH4dFXm736ZeKMRxJEH0PQ1GMzPjWEzmYTr
eTmdybks5dHQ9/p7vWpbhXnR0T2oWj5dvfm5HjbJ1nksq9gWgzjlT5v2fQxot/8yuVWEc3edzst0
eVWha/VMyjyNy0ZHzaLqbLTWg/08z/I97Xv5VN5mRapUu0XoKfb5Oi6z/Nd0Odu03j+mxf34fxTB
M5gUJiyN9J0AxO2wphaDaZTSf5LxugwhTF+AxeXLcL7V1k9/Ulvd2HetTpTO0/JZCUBME+JFObtM
I/+pBFMbPo4ot8802lcqHHJU89nM0V6sYjRK1stYaRdsosxKCFsO0H1WEu2HDRQgAXiOCVTmblpn
GusHy0xiG/Ea1mkIHyRkmBCUtdN7pRqsDxZykeXPI9CSeabxnryJZdtRzTs45D0ahbNZo3Wl/FoW
NQAl+KQEy3izs9AP8ywK5zeRyoL71i2BN11NSgbMIX8dMa+1Sc80s59EFkZmlHRBGo3SZVq21Idt
xbs9rGJMbH6mWYcl0p6lfsyZMmzNJOnmnADr4tFTrgRCHrrOL5ON0ipMUAIcQgJ7t8Cw7J6ATC5Q
pG/GKTbjm6vP4GvZNzcs5Auouh6ZPMr5vELIqD7YjPhlsvGDbVRQvskBqugJ1YKMa57mOxoVsqz/
H0C+USGyKO5kcgsZYffQ7pH3CiUHVx806AAwBqUXRn2BUZG8BOy0El+Hk+Lu4IZxL6AhEQJbLwGt
A3k/gNvYXoXkda6cvTUqB3Qy/5zl81ntUIiekIb0lMYyidjz2rr8ssyz+RyK7400DQEHLwMzBQA7
oFK5OqYQZDDtCc9GCX0Jngo1devLuDg+AYtwArDY8SJNPwkLyZklo/glWN9eqy8bdeB6HAnlQbwX
qERIEePNYmk0gt9AFcmj0d+Kqnp9KqucSlVQydNSumGepzUzpQEI/y+vs5rMcDRLrJiDZd9B4dEa
dhs+AM9cQhxxEohVilzN2NIHx0OrOWBEWa7VE0HMIEB2IID6NJ3dyVjCivgKVsHA5T5TvAY3qxDK
28+/7tnXpRJ427ZLVY7Lh13z1yydbf5RMlj4SIjatgWsCLHdz4gsKdBsN19tqt48hWrutCTdT9VR
Yzv9auCbTfRpigURybm9GI2audASh3LVCCrpLOW4op8xzixBkkM0sCLIirLNZyPXoAvm9nG1RQEr
+XDTUc0E745/BPXDmdAQaolqmi9uIQI/hg1Q7za/RUOC21MSHOl+Yz2DIyW8Oesl7ftBhWzDZixj
qFLzn7qm+sfwqypvUG+5BhWOCIEqg+CeWsXUIsezv7fmTdN28isBIUotZVWcArgukRUwk4KbDdqP
b2jW8dxSBRwh/VxRYNtOWjy3NK/ClcJdr+r7w8UEFHlMsg4aCOIuoX2QQtqPZIJamt1s9R2Hih4w
yUanNa16SYBhlUN65kUm4wTrB3yP9de54dCB7YU9h47R7/X3tcqt5loN1hekXyKVHHManpbiZrnT
cM0PNfjZkAiI2W97x+LCtOs4DWnvMsvA5KBISLJ8AYXCl5qL2icbbJet4XyEGVWiWX1ZRZy8wEpF
kCojUFgcbUZ4Qb3BJIBdK8UpJkEGMbCqyFvsrCRJbBlFhEdYn0694O7j9eXNze30YjL1nMvLi+sP
05uP99P7m6kzndx8vPN8NL3174Kbu6tp8PHau7+4uZ5Oq9SkEdGPa0hjk9RcawnGWb1pUiBl64xo
FPWlSGXSpAg/qnijWKO4JykiIXc1CU1WMk6TNFZaR0Kjrdj114v7LJtH2dOxtVYEuWQ0hDIC6Hjr
XG3++1/hS5G+qHbGlMTE1CjtS9WKLH0TUK6heKzIetlikSnJmQVAWV+SHIrmqTvP4i8fl2U635G9
Um4FqekyVblVof6clo8BLHhlrmI+12jLhZ3V6pQLV7xCZkeESX06vp3smChbYpRp1OxJKrRFpBu/
X0/UHlEa1zO7PMR+FRZfIJyBWOrMYVRvS0LUqjeC/6gCBRie1Y851IgiPmKer5d/VCtvqlG7H0FT
WDbVW+SuwlRNqWBIoy1P2++nd1ITFFE7RuAXT6t4uqipUJtrDLxrnkbQOpw9wx9HJwItTIkMZQR2
2iQihMbwq8/NGiFOHSlwUyB9QwmWNYO9GErS1u7/YjES+ExjpAIMYGcnELcAx5LxZAa5Kcwrq9qd
BOBRtbUPBIrnopSL6ReZL+W8TbNJypzZVJohRBZ1lvH3anwuy3VeYUfVfv6e2qo+PmiRawGbCZEg
W98OnH77e/1HtexD1eZ0L2pxEolazCYpTHcCkxePPJRKN53GIlxCwsz764eZEMu/SOVqJmtpZUu7
Y8qaNARjCYMCdrodP1085NN0+TX7UgVHKraK6UEQQxRpE9yph5Odeui/mz2wfzeBeX+BrSTEIcQn
ZTfFwxQWr6suWV9BSM5gLbQlpPIkOzh/ek1hk2DeLGx2kTJ+vM3q8GbjgwOg15DlkEqO6iWMTXxw
avMDCqb2Ucx3U6BJIsShNrieVPn7fjerjFVnIL0MxLaF2JtblM2eK/uwqzONfpQsEu4p7XILtarT
iJ5WGwv9iNDOZs1RM0hfTz7eXe6XOZdZOPsTYfo/Rv3/atSHxI6KaxvDt6W//f1gOgf1fJ7p01wW
1RpINVTrvj+qVZ59cO73Gk4zOwI1XE9qe5pWVVu9VqP4z1j+KR+yf5wPiR/sQ9afSXQhVYmukItv
YVpOi/QB1vFdXhJ/pwCJBCWzGOnLcJkVcymVqxG0S2/x27dD3F3HNqnYIWIRLB/2WyzlY1ps6pjR
qCI8TbK8sVsTP+bZMhuNZuu8MpF382z5oKuv5k5N1fcOz3+uNi3qz1zdCWnu3va9UyDsBFkzPVqE
c1g/jkZKhdUiMgjnRceOklpkvtuNVgfoaXy1LuXT+5+aWP+MREqWn/UIVrv1Fh+rDhZ3DIaPI7Xp
xPrKJ2ci2cv3V6k2Hos4hBz18M+Xrzp+tvTBJ6nujaizZtL7zgOIFMXsUCQwgrjeqJhshav2dW19
AJFESTCN1KE5BIDedxKEQCZuGIlTPC/je1iYv2uB2G6UHyB7czY4ez8aAbL8+TZLl/WxlaDqqtWG
DigCYtzhjYXX4OJQSP7fcG2Clr+Ht9usEwcQ1VUw+4eFYfHjwjBGPzYM26PR7hRWhynI5vN0+fCf
6uVfq3r5LsGY2zbG+gE0YR34//evCzA7YbJ1Ll9bxOZibXVbIA3n6T/khlPl4oSz6hC+ORa0rXaH
OO3v7LCi5bTeYz/tstWJa3M7n6qTA7svK0Z4UrP6Vib3p7lxfVD3goC3Nar6mAebm0tEPyZW9Hbw
F2IF/rGxAunx5pr1t7R8VDfnN/et9ep6nT4wmRGl5dlI0/U8fBp13IOGjqjZAVMQknAmQOg8bj2x
/UDHbNehgFom46EFoUX1pCceKXYdhNaN6ldxXzVpcSZim9dPHHfQRDHRc/uYidqg1XNx9AiuaGF0
AhbGRx2EmUoSTFpa4QzNwqh6hHbQwqqDnergR7ASYSsm6aqt+s21aD1P5ge0MCJI7fLnpGsWgZZ2
mT2kMVTf3u3H+qY/5lp1D7i6HL+5/L971NTuVUq4Xi+i7TsdmGma5qbLMH/WLxbVHQFte9/9aXfV
XTf0diMHC3j96y+D6v0PQ9+9AKK/Cywb1mCCG74dcIOOXWq43AoMz7ECIWxiMYre/2vfm29rJOpS
U5QkTH8Lnr4J5epG0OQxXWzcf4BAE3TMGKKUGoEvmEGtwDEEcrjBkRgjgbHw3aBLE6eotnEx2oGL
UTBJ/e3+pPwQE8Zj4REfGUgwz6DM9Q3XUa9/oLHNLNMKfJP2nZ3GuTxot+NtmiMsLUmojI8loRIE
Cav46n34Tb05MnS2cnAhhpQPMQZ5bNNxHGG5hm1iy6DUsQyburZh2w4SAbGE7dogz6SK0eeXaZSD
P5wHWzGKc6XmD+A7j2lcdIt3t9mXKM6PwTQEwUhWobAlCHy42vjoON7vcB1sCksEPjV8bimD4Z5h
g3gGJiYmLECW67NXTU7d0ASH7ZgcgwsR2HHHvalL+RDGz10QCfcC6oypwV1GDOr4puFagWs4voVc
N/CIab4AsaZ70op2I1rIozg6Rh4l8dbSX7iPV9s8GpPA9kxheMwFtfKxshbuG4J4Y0yJLYLAef9P
enmsKUNsimPB4hhVgh0EgfVKvczV9GTLE9wObNcAR3YNGihjIeADyCQcWQQ5hJBXRJcm4SY6yOfJ
EToiEjAY8kIJ2GEyJgtMgGcawlJAqQD1E0gIAeI28SyOXd/tAtqm3G007TEt/BId5TdMpdlh8CeB
OxiZDrij7RLToB5xDAdit4G4sCCuj4UbuCfs5jTiTWcTKqjgWNUWJ1Be0E0E9K4m3fGPCIeBP44N
ZAlsUN8lhuOQsSFsboKLCrAF88fGvwaUthCUdgjBDuuJbzKKa49JqtsTe54g2BDD8/CtlI8dmwUY
EpVLqEGxD4Hdx8xwTFv4Yzb2bRQcC3abp1+hVG7It0/xDqxinou0aMfJg06thq4qOxNZMd+LtGtM
YCkIIqmzeH1AqBgy5Y3OmFEXTJt7vgO2YkF4salpOAicXATCc7iah3WRKy2eq4cbrGxucXnIChrt
8EB7O+jDWnBntlAvHZT13pk+wENFA74Bks8ACuNgtGQMqZGbgeH6njB8cEObMRsMxn6NBrs4dVtK
18i2lHbUIWVEKin3S6mlLCsZN/ZOGK50jMYmRWNODc+yIPf4HodAwi3DD1ykXialmNOGjmti5yfI
tnFF4hhXGIkD7Te2CAbmUChNI24OsaW0jVwUOIEJBuDYAM6HKOcGxMCIecjx/QBc8UVH3BPvUq7X
6NfaKMNj6FHEVBJRKg3Avuu3CLfqhCQDEc5URmsRWKFQYrgUgIP6sOG4DjI87AeM26ZpOy8XT407
Otv6vNsyms/cT14RZw5ha23x+LHMMbErmffTVch4naflc9KaNvUc55iQIVU2FYw9WKfQap4MKqht
ODYnUN5Q6lHkOs745WmbbJi8PH1OxzitjT7sEik8EMmJYzlXb//J4VcZX6rppJUhbv6Df9QSzB4j
D5wEQpADQrncNqCsNA3kEc4IhuzrvpwUGmy+N5014+5hdV9LzllXBJCYHcjpZfMsnzwvY33AhqKa
s+oXhHMtbroCgUjOGKu6ZwwVfyAMywEPNG1qW2Pyw412h6d75K5ba4t1bKamqrgT3n0vcaBKD5UC
TWGr3G4GAfKJZ2BPBXCMA8PxAmRAXqRjKA8g738nt4d5dMoeG8N2ALpH7rq1lhwx6hBOrdpa5dUH
9YY/qyaQVNMHlZ/nEKjDEaw2DSgZiGFbHCK5SVwsXFheiJenDyh244SONsKkAyFG+CDZhMV8l2iw
NaxTjcl54FIGyxziBRDNCeROzMaQQN2AOw5EczZ+KdXsiLYQYU46EHGwiKiV/rIyTZ534ZrgIUFV
TSQAkssC3wAMYzB9qEUdDgbBTCcIKLdgMfNyAmwQbgOzZQcwKSpgjejjQwA1+ZArE4Vfs8KELd9y
LWPMBNRpAEVV975hjgPMLOYzYVnfLUBfnzz87iGO35ZHhl3yyKMooy4L34ZLOS9U7USGJjwjlFim
yyhzgrHBUQDp3PIgmP4vcVeyXcetXef8igw9ARf6ZojWT4n83GjF06zbWkwkUiEpx35fn33qdoWq
uhRXHpczsHTFCwMHwGn2PjgAAeGYsDJjwuDmSb2F7Y1FuOZbLi26SUqxoE1SbE+R//v3JxUKt/ZW
EkYBSnKNYxZqIO8G+kOI0ApdwRNSMfFl2/vxy+4e3S7KeWh+dwjfp7EnAi9omZTrk0H+sXo8lwV8
JzlJbIyTMTrBavCk8VWA7sJlpKRBDyqvTtSRxved9IPLzcLgSk4D7I8f/k5Wcipkhla4wXs5ywfP
4BvXMgIpVR4DFANhNVouGC/FRuMjkOirUPVkoCtq3TfqJzTmW5cfrk/bf7T57f3T0/bMHIF6wgH4
CC18aRagAPwbuuDBrwxwEA81xqBNg595yZeM+u3EGrLKU7GUE5N1/mG3vVsNaTBB3sRxwi1SVYX/
PwBDK6xtg0MJ1SkmE6+hVu+9qq9Z21Pny4t6+rYXe+UWxF67s2uGR5dwECen7CiWZV/BP8BRrU/A
z4DLLDVVmfY1O8Rn4VzqtbPrphPA+AUBjA+n7cy//vCB3hG6u5/kgk7GXcAxvU6CCQf+jw0FUEgi
M1ML2Eep0lf1NsZ9RZRuOl4vmFtQ6jSdPz6Pl1PaIb7BmHxK0SF4eDhdOGAWi2sArwCsWQYOAjmx
9s9XljOMTzdOP9wKs9/vhvHfx59i/rfzdvKgb80ggYshwdUICyaggtAsxYoNtioBlFmD//4K5DyR
sJva1i640e0xVXClFgAcGqYvhLkVgxMTwnLyqCB+lDUynEWsGDPOwo0pG6TSLxn/uO9etgV4b7eB
n2T7ek/3zk9CKTO4IudLzgokRbYMabiskCsYeCZjknY5Ge0WpRn31osRxJIYZrJET8+r56ezHYE7
8UGebLyv3EtWgk5MGRh4aCGCYRSvAMG4LC+6xlG3Y6mc9X4mlcNaT7IM4CcfVvfbgRCoQz6HcFaT
roC/sWzgtBUgKAuyKFZyq85jy4Qtr4o7596vhJzz973sQS3IvlpP3PoDfMjTkI+le7wInnrgM8K4
wcBlttnq4BnsG0GnhMQSnAJ4qlM+8Ka8rG+BqsiVfTiJsdy6a9JNdb+Z67Dbb/1+fygdWP+DaBo/
WxZFLp6IaisDlkB+Q4fMPLcUuTC16EyROveeq+ulH387T0Z5rsRETT78+Xn98GmEUzQttARJHsKB
87H6JAUikjDAKaox77NlTqXmNE+tDcnrV2T/RsNcS/uNmtz0UsuFqQQ70Zrt6nm13T0PlXxPmyEb
bwbFV+bglnNoMWlOdL8CuEqaluWZVd2E1yKDBYnXTIYukZfTQNdz9LNm/aSCW5jUStOJ8GhSx5C5
GvZGHq24iSidBpH0RsGKJWiFl8KzEBxsAyZW4qsQzrnzF8P1arIbK7Mg+FpMWR792T6Ad3x53D09
DdplLOFGec4tC2u0bAGkqGAvAHQwo4goojOCdiwK8FG80htNxrrqlSbt+pmtl/SMkqAHf//fX1eP
q3tY+u5ktW7AGxHbkXJimSuCTPCuqUVNAdGGJIvMyi86+ml/E2EWl3k/sd814PO5cI6unh0KKuQ4
V1KkS+QuU4JDUQSKEjcIRDZwH32UtqlvJCcn/V/LTU6adfMRC1DOC+dnZPrC409vQEH1vT4kyulv
TEmXGo1ugXlRYAC1JBajyky0kHVwSSkXXqM4S6Nd48/zlv38Nnphfls+2S8KGOXucXAKfxJkPMzL
DbBhsG3uQQSrZ83hDzgpCfTKDbPYJ86VcyG3bwLw8wjXo9a5STcLLee8Cz9cT2bx991z/Pr88eRg
ze2BxwhRrZVgW1kxlZxG9AKZocBlpW5K2lfFimPny6Ifv+yF3tgFoTdnDkt1qg8nk/WaQoEoEuCu
NLJZwkGAaVG1wrRuDbHNtBbSos2O+prIsKDeZnUmXpvHP788P9zS66r+wqPxWQ+nPqokOpvUGbFV
KQT/ZOEMG/xHlS1J3yZxf95dJ41bCv5enHMkq6/P5wUR3gzRsWnwZVtpaA4hvLcsmUQh0mlTnXE5
TmjTpZebfpyFpQANPg2++frl6ULalJNDBjCnIhvPjbUIpAxBBIuiGCZS0DZpk1RSkzUY9dMLsNou
CLCbupr1w2fM/pBVFsDtZH21SR0NdNgWuBN4kQr6C3zZQN+qjrw2l1+jwwmjLOovvuhl3S/IGmb1
c7/sPj8873692/3PyQmdfHwgBVJNaTrWhHeHK1RaYNuy9AxTARE1pqYSXyP2fJhrh2zTdje9/AsG
iW08GcP66fMF+So1QPqYOY+SCWUkkbcInNki0RRXMLUgBoc+Rr6XPvqx/dLYs7j5cyFaZIYoORyT
ZNEkd1azUhvWUUMTk4qIK+CNnher4dre/EDo57Lc5OfSz2nhlMSvhDw7l9FNqO+EJGesm/WlZcMw
KcdUiFAGrQPDOptWanWpTFKeo05u+nHmWXC/huIezTm9jx9mGZBSAyWGOTMtgjdI7GwUNjNTXHHK
CmCP9hdlQC7yddNa7+dU1G+En+gJxf1f77a7B8LfnjyFcAMz0nCLSsE/SHryGlA1An4bz7SUXsmk
QhLymycWQ8/XAcfw9U0v4IJj37jNBHwfRs0P9/u7375eqjqEOvDo4QO5DeiFjNilQqBVqUjsrkJn
WlIeYdu3+jKRXhjnpZqOrmE/L7fgBrczN1junja/7MDttkNiwA8ekNIht/oQREoEb+CaQgc2JVsH
+81geC2H6ovW1b08oW6AK7Ru3OSml3dhc7Zme7KUf/2pfn+xFE1eR+UQQgFc8nQYoHIMLMTkmWuh
JJA87MDLXmeoyX734ytqIS6j90IvlAwhVu4mK7/dPf3X88OXp3P0gTXcqkGZ/JDuktKkmiVnzVcs
fQNuDcZy5gMHPzIpcMNfRa4PA51cKDW4sg/zhuOJBcnnBDtIESYoYFjAvPpCr5FSGnyIqYcSgcqT
NSUiHCnsjaGKw5QiS8EDr+lYUtNvkWYaS7DceNyin+OCb8YPN6fA8MtqC/q+2U20DnjcxmoLwBWn
WkpYSBCIegVOuzoOR+3SG2ldL8FE+O2C8AZRbdNlQEr8qV2q+yRMXQ6O+BhqTDUcPFIxTuAVJphZ
BBwC7WixaC6b+oYJ0QBXEiD4phc5zI0laL3ey4OFP6z/czOqsDRicLN0+lCC10w6UaFNDcIhBjKb
JDQLbAmMo4/F435u+rE2CwLYM7KaPO0CcBUo5UJSZA0AK+j8MytseqbkoqOzfy0dLyH4Upfz432f
vTh2wcZAwKc2trlgIuwgHdVJcyh4087QI9uVtQSwDyZvmKdUOYe3rlpYW9urUlnjIa4Y0ahFP4nV
PM0P1zXlvO9XX+83Hy/TMCAuinJZhw+0z9rCmdfCMAE6gbCeBd0884UnR6dqeSkr8X8tYujluaLA
XZubfoILmmTcWZM2Q8FAPvDMozYBWWtKv/isQdUi3LynjFItmSVhDKtWliKFd1Us17XMO+1lcgvq
ZMK0sPNwbficOQeWOaROog0mQWsgVg1wa7LCCTjJZChKVNWE8ualE5dxv71cu3lgD3a7GqqU0PgO
qvX7hdJqEiYlrZMQhsWswGg8UDjoY6FSCSoYiNrYCZ/ternph1ovjL9TEw19+rLbwUwfAU5+u7/r
wRiVT8khuT/8TUdBCGZJYbUgDlarNsECT5J5XSMvKvlixVuEtw+DVL8sCdUhxGmzfgV2emEF9lMb
ze2b+TWXMkfoqIh9mnBKjtihAiVRJlcERlNa/Gfza+NFaq9oP2nUz3w/DzkrLm1waspTTgX4BM5g
qofU3KjKP6RWuEuBeeUQBqxtAJt0FtikrkLLmuo/W+U/bnHTS+yWpjGtjT4V2368O2ExYzinMI8A
ZTjshvFa4VwdQcsiFYulqGBN1EX4N1HXowR/e/dyBe7f3nXzk37uTlcyqOHWFuz50+CJL0lIeQrL
UfPIgbdAkoUFfEkaXAAIOhnYYGyiRB8Xnda4x16UoBdEWU/rA+/u92fHrnU4liwKmUuoGm4g16Gg
p7DEuQWqj7YC+Xr+csnipddepvXS8uzFuczo6dOV3KjCyHSwD8epGvZdAN5poITWgOWLoqoDN6mO
6fvq5FBhQQ61mkaYL59Wz/RW7KXu4eQ+AJ6KKlSbL2FISmo6dq6ZFR9SiAJ4KL1YPNn33Mu2Ukuy
Acxv5+WGh/T7uCQ2FQc46QJzhrSJGyyUS5VVzqv1vNEJ4evORE79v1RJOE3Cr9TCDQL88JxyLner
3+4fnuj5luNj48eX18/UZEhb5ZJ4c3SWFrHbWmqWqIpLA68E2zilyfvdfrnfiYhLm7858/N/XJJo
higtPCLPdNqdIx3H56jpfmhgBe6ymFJ0kBNh/rGUQcMQu6Vx9yeDfNx9fvh9t7/7tOtyospo1YJw
LMihzIEuZUlwBxcTCANQNq9tUdWm/XXCLEH21X67nZePHK6XHuKntOZWDjGkZKGSdIAJAjHEY28C
/k0gsForzDGv+GKa9EpNXT5+d9NLNl87gKHtfis7SHheOa7drbBDhT+VvVdiXZQBRaSHPXjHitUK
xJ7uAL1YnbRgohh4SRpxdh8fd3eft6tPbPV0f1YlBYBKp960eC7EGoGbTUgKSxaweFRrF+hk1mZN
1fi9Qs077OXx2wV5/G5Svfl0LNU5eTPnAQgGiXgOdNtPMacscDN0A4FHCCaFjC4aCUbzImTuep6I
tl8QLcxu1xww69Of988fd921OvJubshXDn+TQXjVkqGrWkPdD8FWL5NnwrTQvDfJ8be/s3HApR/m
8s3B67lRvxBhTh7Wgk+rVz7sVo+bj4da1tvjoRT9TZpMtYREiiMRZWUTh82B4QgntEW0Dlybt+OV
Z0Gu4Z/j190khdALkxTnQ4Lv37VpDkpFxbOUTAtOVQmNKtEU3S7KxhZZrY7mjXJQ58E7keV+QWRF
r3FMHSFd7lzd3e8ex5V0qSA6cQpNimNTQqt05FaYb8GRkhrt6ytrV879X61aObfoZuDFPHGx9mFz
WvRh20Eo6NfPnJyR57fuUNqVSoDnzp4hlsH04ddZkh7IIdmYnau+msmh86y/XpqFghX88JxQ+LS6
/+1ue7k+SNmfYLTFTgvWHB1eRmh2UrkAs1TZSgFtK5Njv3Evk+HncW0NJDxBdue0QQjuVKlpW1GA
4ZzpRJEsBcMSpRFBh2oovDjf4ktOcCFlsB6MfirOaqeHy9gX7Vp93d493D4fL05F+tf5Gpe4FQcv
IMgJUCmRU9UzE8n5texY8tyxLGyyxlkr2zcC76jzK4o2anHTy72wtes1P23t7+XDT2cqgXA3ZMOo
QhAgubJS6EDA01XWDE2ruqpsdXMuur/oCPAiXzet7UKx/Ho7uy1Nb+jc//u7w/3+gwNQh/K1mlMZ
js9sLVS2ocCsMc2QvVSytFheVyxwHOCqy503vV50OGrQz3W9EI6326m3O/5WyOGtrqOpnwoNhD1a
i3Y6JO4ZB0iAzdLv+gUaBYIoUMLEAyDYa2a9MNSVG3nzhv3UtvOC6A2XfOEkd/j1P4hAjlCFF8N8
KkAhlRuyqujMUOXEIheUFuMp5ZhkDd/OilDH1zMi9O1NL51YElnMiuE2DyvC4HTeMRzrI9YDNRZH
WXs6seUCwuITUADPRYgg/DdKn6nLa5Liq4mYc6XZaCsnp82/3w0ll21Fv671aCQnMxkMpWmZGh04
8EQ5DkNV5xG+KwiA9AI607J5jcqcRrhiJsdvb3pp1dIUzAx9behBrOOvrRvH+VJdjsEDEicKjjpm
UB9TGLfFZN+AZl5Xo9qPcDW3NGozmYddmAch/QOH/OPp0/OoBmS4gAC6oQMglVVUy9QQ0UJ1dDAh
Agem1CKLyT2YUSfd6FbPeQ9+uJ8E1zW91nq+CmFJiJa8sdBMJiO9aBE4PcAREhPV6GTpBRcvX4qt
4y57kRbOLzbDQdj+DH5+/aHPMRh/KPJKWdnhJR8f6EUWRYXUnnLggUtVXTW2vdEdp5kQ3RycXnAD
brWdKOfluY53Pw4EAQ55IEZYTYADfriNI+B5pRCK7jkBIHjQzCiMJ2cWojEmx/xyme/Q+ZWzsx8n
gB9SLmiEI0igOrjVlYacX56xt4JyujoEnwE3WRggaOD41MDvTBExG5WF6iDoHHjNe++FXCjoxg/P
lYiHtbhNF1Aa6Or2cExAD8aYBhCYKbZbl+iFs8ysyzKEFKubItO+s7EcW8vnFHBrDT8ZLz1TQb92
/un5cXRh290eK4KldQ0AjNmqYUKpKnoDSTBOr3pZDc8v6//j+xq94P28g1mYdzi7jc3TfrtETQAq
kncU5byA58oagNxqqHKBvxApFK8nnmvUUyfBxs0j2Hbjz6zgYTuSYIiwVIaoa4pM60RjG8Xo2IR5
AdCjWiuIf5PD+u2VsbdqYexZpm34Xfe/7OgG5O7xeBXyfHBlFJ23JmkiDzVTrIf/lvjkbQMCM0l7
5cCWyqu45tJQV7DAQsvJ5Ob2v93KzWRydJNr84k8lro1YchV04fhJppWTSMcZUXV4oaosw+gfpmu
FGfRTPr2LfL8/nqBe35/08s2T5Vtd0pPBJ5lFQgLHNHAIXHRAOxboWBmDJ0yc4AZ4zzTvOkGFmbE
N+70v5i4OH5500u5oMQ7PT6q/3IHpvQfl+u8yhyS6QHsUDKR6FVDKyNLmis2FDmLErPozKg7pu87
7MVZLXiz3WpKm7483o1vitz+RP8+nepJO6DZynmLVbASOeVDs0QghkoYK43wmcop3qTC6qdelHGr
4avJ9NYL01tPzfaHr5+e754fvm4+zgyJzovMqdjy9HHIX0oQpCBZtnSUBZumG1uF3FpNTTav1KtO
aF4YuruhPm3WT3M9N+CdCHK/6ab5+6CQ//Ld8fmCAc4XqUVJjQ7O/7e3K2uO40bS7/0r+mUi5Jgt
Bu5DEXpA4dDSFCWtSM54nxh9FCWGeGhItsfeX7+ZqL5QB5u2GdMPslwFAYmj8kBmfgl2H6cRts2C
EhUdqBjUWOIteTXLPo8/AgyU302KCQz40Bo677Klk+Zh3jzcP+4r+qDKG5fAfKfWoJh1CWS/k6Cb
JB8l2CyHIGU2nQ4Tu3lbkMtInynhw64dmI85ghyINg02Zyp46qgnla8JBnhL+LgJN5VPjoGWH3hU
9k9/O+27DqkD50XopgNDtHHgb06MlMDjQUE94hmLyGFEawBmiYAznGHMiYEPPjETtdJMBPIynKzn
ffMF4cL0lcBGIcBJWeQzfWyB3cBw0TxDuOT/okrgHLUKL3gTrDI3Aji+luhZTQZUVGtADj+/1Ju+
x8I/1q8nJYkDC67QtUM7IdHfW2DmvSBJ1B7yFLhGIywQpaUGaZU4xrwYODWOCF2BBeuVEoIDu31R
bO52rNHQ6PX7YiZa9e9C4SHbqL+rp+stwgBHUwZEkwBlO4EBU9cYOyUwlthWzlLLqQqcxE4q0q6L
YuTZAB5aMzNbA+D8OHX9EpZxYpVTFWHeI1xWgLHBTIQTQAUnHlOAXskvsRu9JHrWN/WbOZl3bl3+
u3UNlkEAnpkAXCtWhCJmm+IIFi3AyK0Dx5hsKZl6yU6vOx+B8mpfTkr6FkNEb2GEVne7gD1cZsXA
+BdSVtQoBoTC1wUWKzq3VW0pk0qMJM1uOyqHH4CxwRoVA9mlffhFI9fBqJrZOqjgKpoU6iMas1bA
7mAqMYqYXayuD14FHoLwK9tMSoL7mlUDTzcfyvVihXntexHGlB7xjJ8FohcZUcVAc4bdNgqWk6oq
1BL2XUbtjehGGxZ9Tcoh+3Zbc6W62AHXd9/3lZ61ycIILiXmcdegFWDyKiwlaD4IDCQrTNuNLhGT
hH6V4Pm7EaYKL/bndEWu+mrdFeWLzgn53BaJxpD1DZhrdsjmG2OcGHxemgvMCxQ5fjCHakUBBqoz
MXFCdXxR6vHAQCMaar/hpJzDcmhiyxw2BDtbQFRc7LHaDZxG4LWKEmMkPCYPUgzpqK0AjiesAmNH
c9rhtiNddshqBshSW4/wJnKADkQl8Gi09KauEsU7V6rh8BgN5i+zBjQEy1xgXUSkoreSEmUHKEEs
qUXrm06/nH2bPTTLLhYS6HxBIfoqASUF74AUaIRgTvlaa07qGhQW+kpAZyUJJfmaDZG/7KVGraNH
11c8R6n3Ze5FwTLmiAdJB+oipiRgjQVnQSOQzgcXwS4LB7A9e8ONKARlq87EBk4Ip7OOi/R/VrOH
p/9rHQttCh7nbQSzT7XVLID66Djsj8ELbgeTYE7lcHstxPMa+67rkTTM7ftJSeMAK+FytoPMu+jB
ailpeACuTBPeKmGGt+G1hvMkTSI61FaG18LMuxg4RHxACYaHW5Jzde89/0FGo2GUWUyBFQTDhYl1
ldFwUEBVNywJUCl5J/yt6KUz/tCSmd1N4GzxbXsPp9rwBE+jknWlmaMVDw5EiQQeUDNOpfWY5jec
ob/XVUGCGGIDQi066UbHn85WD1ezBSaD0ZzhZtd+QsuFAYW5oqxGsBKDNS8ixwRhzmqmhOUHAlY2
PY/dsa9fl1QPiOIr0Wxd799/29by7qBzUeCbcLQSgp8hJrHGBFUuQZkRlAf4A4Tw4ALuuiwokbTv
Lb9SRG4o+fkz66jS1NZc+1pV3mBwmQF2AwcIlg1WLBmEfqnJqyU3DuRNAHVqgGQpdhdnwJ6KDBeq
2uv/BOvFMYOeCsTkwwjoumZ1RUgIsKrWgRYwcnVWdlnSI+UQPV0t9Vtz8wN5Hc/HT6B+58A85goU
+UBgHzniiAGnFlWSvg6gj8TIXwfEF4YeU/pvfpSTmdOBySy3AHKLv/99Nr/ehoXYVu5QZ4Cb8Aps
a1D70QAAYZoqLXi0CdHHEumlpW+7KcafDQT84MNnAGXQ9ZRzIjJqj8JArQg6hrawwwGMerCQKlNL
wn1EsMO/GlS336JDuhkgfaEGYNC+3qyFSE5LbYUJgS83StCta4qHEzPsLcUgKmupERFUJ+n/tDBp
35XkLgZWeo5o2+zghW8rt9fY29nyM8EwkBwcUR5SG9ZsgeBKauZBnotoDtyf/xl31paWZ26Be3J+
0Qyc8EWzxYPC8gu7LLS2goOgRGvgEbAZxKIhBkJT8YhSLHIiYoh0OD9g11lJw0D6z9WSdW8IQzNf
fW0R1NBeISr7K5BzRFqHGIipJOMODW0wVVjILlevKUvEef2yvOzdCGMJ2bsWxRyWA1Bn8LDpJl0U
pe/eSL5OSXEIXiUlwtEAu+CURLzTgOOudPQW0xvYs17iot+SsPmAfGhs15OBPH11jU4s/ApB/8is
jBodEuY/GpdDp1UA6WYYbjxoKKCS+qBfikF1cTzOQS6KRCMgb0CTaubbuIfffix2sfAE9X3WriHx
QcKxFOhpTyA6akFlpXjNPYGjoNhwMPy2u5KIAUCSq6bpwjX4b6u772Airie/jSSTbXGWGgNpPMiz
QNGdhn4Eq0BXCRSsaqDIEP6iy6rOMCNLWTYqp9MMnIMryTtXrUOMx52fwUKrHO2k2utiw4xnmtJK
ZKM6aZBxguc7uMSZCamm9D/nr4cXxVzzNUhvrj2x+bF5SmebQhdtGLqJTHlibeWjxdQPakHsOFYp
EZ1l1ivKn7/SyX2OwnqlLp09GQn6+2yLefP4r5vrp4bvLjNQthBMjKwTBmUjHDUwBwzGBJ1XSCNr
axn3nauMoptJMdZy0SeAsm3K2mL1cHMktkiA5siKfKqNSUwnC7qiZEADh+233ATQuwkGGAXT1gIp
gKx2PU3K0dQACRhSXboim6fZch3ZuMYZh7U74tnFCvLIg3JYgd2JbnbQFRDxHISSAAagTfIHDM8/
lDuwoWQMMrt9W8yR98tb2GxUjKtxa3/Y+koA5O0R1Vne5b/l+BEWLUuhChGBPoOALcDELYpjGUKd
ov71Jr2j5jlnWke7sNk06U0cC0OtL3sX9z9+388Jo4RvoRwSsyElBUcMw9YQZ8lwgZXbIkgnpSiL
ZsQ62e+zJEexAXKW9rl9+HS206wx4Vjkymctwr10QiRSy0o4hsYffAYuRIEV/3RQXsdBn9Of3YMd
JSNa7dmAIo7zmw1NunspHNNxjqve4mpmNVZJaizIUZ2raDCOt6a8EprF6HhgcABfIrw2fQ/TvXnb
oXrZp1qbbR7jr6fXj4tePD4R1hPN0eNCECelxuQzDqaX8rUhjGrYr/9UPP6OwEk5h6Y/MQzWGjiD
JW4xX0dEghkEf8vpf9KKmHFgqOPoCaNoJMVKpUBhbyy1hr8YIvQwenGvWTExrDjcnxiKElNCjNx9
3fc66HUaWBt2YRLYDmjxUdhBhN4AdQkvbr31ttaweiyIV9cr9kkawxjZtSgnzYYmzUi3VkafKji1
JkfoZ18AT8Cx4cRi5RwOEgt4HZbd9F4kg2PwV9KmBhp25kOH5kM7+dltSs/q7vrpsU3oubhrk/qK
bB4E1abwMUrpMCJe8Qp4BkLZKsucDrHW6XA2D/b8TCoPvi5mMJcDPH5Bu/rEfLb4vvpRuPaO2nI9
+b85IkJrJ5KvdK3xegzr2mAR4JREbagggcgX4U3WnZEKpMz8rqB/IfkA/ZhTqspSWGd7MGWsvUQz
GWsh2og5blaiMqTAFDJg+lRROYrxxs6n14+k3VEzVhhr8LQt+mmj8HDWSxv9NntoQfL5Glmbt7nG
Cfgbt8JVjIFlypkQbWZvcpKmUCsXXgYJuh5gJOCmfVkS3q+BAg+vusCK7WeCbDOf1Rafhq7xaVDJ
ITqxGpSeykWGUWYUAay9qKwDCUt5TSg/7IzPfY9z7Px6n3oq+1cC+LBrHp0/rB6f4q+zm1U+DO7r
Puq2zNCKwqGXBNQfBCTSFItswfIbFUgNrJpH9iIw5KGBhucz1LKY2qzvAIGHZnud5b+ksxUYQ0Uo
TkouapmRWAVaVAaRtq0GJYIqjC/VxoZOlmjRTUHBnM37FMxZt6DWuffbGqS4lMwRLQMYdRpUeo4p
LFbWvqpTTYI0PAn6ojQ76HZk5bwvyFz082rhIe9WUQzXi5yUtvVuPm4w+hnJ3EZy60BDr2onsXJq
jLB0oHrhAYggwyjTr2h69akZc8l225Vz5wNbtJBqc0g+AysovTyeghzWAjYlYSk+vFs0VrkKHnJN
ZM2jfy0Iy+3gJcmyz3DoFdbxFF2tcR3MateJ9VgsQUUfKpIoxnNrzJBKqSJCMqFBUwxJ/iUHcmcz
n4ll3b7enxqj/Xop+eFmN743v99+fSgCq7hzJhgZKp8IyXFfwHgcqbByE2jCzKkw4vbb66sggg0Y
qvBw60X7Mbvdq8HUAhZwH1E1DQ4VN+JoVdOEIEKIAmol5b4DeLjXR2dsOTR2/1N8/O4e5tfbCsZt
Db4WWdwJqiQWJdMaM/UD01WdS5zT5GkyktVGHwKF3e99PPZxr1E5C2MHZtEre7PGwvgww1LSZ80t
1oZYnMI7ELEFAial6+nRtgKvZ8poz3zFgONg+W7Ua9BX7ihIUZBEMj6PjTU45Ji6P9C0nO1sMTDb
Rfdy+GJ+/a9VjhRu3eywSDgVTPDRYLbBAaJYvAurZQJzAX2ZBCsdbYH5DzL7Te/Dk9i8LeheLPpm
NVv27JWzxexmNr9pLh6bh1wJog0W2MkrnzTwD2sq4H8Y+hawMnJNKw38XjqpbBTmtbjKIDEjutpQ
0/0F4IT3GSk87EYa/fLZr0XH9kI/89KoOJYITxGlHUbvWhpgH6UOJLFI6pcBee56H57G7n2H9v7V
AQcx3gPPemjOm9+e8M5et6ZB+5d89KxlisYK1EtQOIOylUH8MwJKjw7BBE4Py2vsfJzD49tJSSEd
IpuOFmzGg4Y+7L0nNJdEAb5a10w7UJdzQC26o4DVV1jOOAC780n+tZpzu/edGbCBGdAtBNEDCPCb
X4/s1q2XY1MocCuMCU0UC15Y+KMW0VQqEi/g1CRnO3fkZTclBfRqgIId7Pb7D63c7YRkCelgi2tE
/cDovkhAgwm1qUCdtEZHY8SBkIo/EJK1R8BkEn9bl7U5vV/uSoSerW5vYYC3MDU/u7l5nN7Ols10
/vv0/ulb8zD98XAPStAj6JhPs4evTS6M9vTt+nHz4m1ekqfZ4/fLq/uHyx/Xy7dT1j7L3s/LBfz5
1Lydkv2Hj81TrjO3fl4OfKh78te6h//ZmxWsQB4P66tc3zVD46ET+I8NOfnH6RTTU/eX9wu0+nR3
8/sUM6Lwzf3VdLtbb6fn90+zm3egYx2Z0ykcuuslSLt3lKgjevpGmL/9NH38N2bnLy/vV0+XQNrq
LqPGwojLd5Ry+GdvJPvbT5N/Plw/IbuFTpCAbdcg7N5P/w0vQYy+05SqkzcUet0OpZVcP9ob6B05
eUPgUTHYEXv/xloYajr5Et8ff/o4Pf/fz3E68vvH8ZfzC/dh8m73G2u6fj3x76ePOSp1ep2TOoZb
U0FOJmGNEQ08CwtatSZo9x8Ic0ROJz+fTX8+Pp9+bVE9oPPFPRyITp/smaZvYK1AAjTLn7Ap2BrQ
dPMPN6+msPOz5RKrfE2BMhRVe2v30+Qkl56cOnwy/XS3aEaWwpxMTt2HD5/89Nkf1eqIn26avpkt
b6/vfhptzRn02twiQO357OuUCTbeMTQ9O3f+ZPr+wn0J4xRIXIXJ2dNs8X164IdK4yl8GpeZWnce
n2mqjsTp5J/NHGEHTvP6jTUVTKuTyeVlcOfuAAGM4WJdXh6fuvfxQFvJDPb64fjjSQxwFsZ/1hxZ
7PU8/nJ+YAEYaZtefDz2n8LzJEghTia3+UucouvsmZYWF2v9xdy2+zv+g17/wKd4/uncfZge3Nkj
9b5t+l9TOIGrx+J7aL+D/NOC4xZMJ5P/B1BLAwQUAAIACABQU05H18nCA5oEAABXDAAAPQAcAGFj
Y2Vzc2liaWxpdHkvYWNjZXNzaWJpbGl0eS1ub2RlLW1lbW9yeS1tYW5hZ2VtZW50LXN0ZGVyci50
eHRVVAkAA0iQHlZIkB5WdXgLAAEE9QEAAAQUAAAArVbbbqNIEH3nK/ppxo4mWRqMgdYokuM4kZM4
WL5sHnZXqIFiwgwBtmlnkr/f4mo7wVYi7YuRu6vOOV1VfUBTqXFK1VM6IFRlmsEM+0yzLPIA3m0k
V5DLxSZJQPxl2aZlMTpQ9X/IZLFwFoy47vhqvbgbc/8R2FgAl7DiXgz5KAmmSQAvkJNnEHmUJsQv
t8kpCaL8F5n+4RAQIhVnZCLEOA2AIf2ZonWqsY+r2ZOxgIpp8pTJ13lBnktI5FKmApzkEslRnJNB
whpJspRMeBKQqBBNQh7FEJwpk0Ig8dOnLIqj5AfxNlEsI0ycJs88jgLiP3LBfQmCka9/q18VSghR
XyjVdF01LE5ulmPGajkv4G9KpmmCCQmPe+Xun7Mv36q4ZboRPhSlQMokl836NED5URiB2F8fF3/E
xseD3aLut6sjD0XL176ibUVRbqhV2EV1lK2qnLFwk/gSWzUXqUzlawajLItfC0HbsF5f0Ru8Yehb
qlHhHc69BmwXR5HtefvKoIXQsIteBXH1FoIxHgQ7qxkIGUFe4RSSlhILe1If/GZ5Hacejx3vJ/hy
u9oAnHQt9RWjkWJSdeiFXViMRUkkd+QP6xx9QM0AtO6cEJPyx/JSINXbZt8sa519xWzRhoatesWo
j3FWi5hLZ/aArU1/X/AcjkB2pSwfIY4R3mrhTX2oDg/HMpaDrP73HlZXjM15ni8gnEvxvU1qU877
ir2DrNvhMeTDyj9CRNWaiGu2Tc1jRNVl+xxBc//Ka7MRxUTtRQme4eg9pCIOsPmUtmLMoWZvQ5e+
iDKJ90+KNI7RE2oxO/p6x3C1FtdSQ/0YbjGO1epRQL0CVCEwwfOPAf7+oMRBjRjaYPu0NmXG8Hkl
+BPm/MwLWHiR6BPUqKKpF4Smb2AnFmhmSTH1EFxskiCGOf+BSQJw8EYhumLh70XmsM30BwO9K5Ox
IArQ6iF6hhnkOQKt0gKu52T83w083G4ZKtvErjZb2OnCzpvl57Sw8vIPcptN1Uyw1aA94z79OI7Q
lA+L6M6qBqspWRF4Ug/oriIc2tF8ylhrENRqyh6Ytha+xWAsS3O5z1Sr6XWBN+nrHMQll7zeQB67
4Ql1jrZW1mU6x6vxyHdAv9fPfEfB/JCCdyeuy917d4iT/qfUnvdKZTXNJfj4qhFfugr8//Dhe1Rt
y0N1U3vfhu0w1EtNF0qleDESKF87yNKlHRloM3s2taxwL6pGFjOeFUx5xqX/+GmC2mOoqnsQqntH
EKmP4R0j/XH01nAG4IeUvMl7LzuXAWOuSxnbJBHeTDdDg+7A/ka2kQGEfBNLN4AYJHRFnxN8ZWiN
VYFBDZ0f1uIk7Tkxq7YszTYNe2hVdxM/OO/SFKuOThim4gnd8FcRO9zGeoZ2JLYYQLzGWuksZhiG
FnieZni0/HBdrO/vHGfuTpfueHR3N72/dp31yl057shdOuvFeKK688niylnM3Kv1/Xg1de5dV9Gs
HTSu+0OtQqsEXKbV12SuKpq9F6hDuBuID0VXdyM0MA2yu7/MwMfPT1/RaRtnwEDn6I64Pd4IgV44
ecafImOazLALyn9QSwMEFAACAAgAfVNOR2TNfejPOAAAysMAADcAHABhY2Nlc3NpYmlsaXR5L2Fj
Y2Vzc2liaWxpdHktbm9kZS1yZXBhcmVudC1jcmFzaC1sb2cudHh0VVQJAAOekB5WY5AeVnV4CwAB
BPUBAAAEFAAAAOxc63ObSLb/fPkr+DQlJ4PcT6BVudkCBFnP+FWWk0zdqZSKR2OzkYUWUGLvX39P
gx4gYY+Zm7u1Vbv+YDl0c87vnD7P7lauizyWZTnRtz9x/jAOV6uFHH+W0a9ZpT68fFnJZTWeym9y
ka8e4G/9d1vYpvlFuw6r+/3b8HP6KV+sH2R5+unq/OOFf/rmdEMoLcIH+T0vvp5+kkWZ5cvy1Dn9
7dqbyeJbBiBOX8l6/LiKTzfPy9OLML6avfZV7SyB31mayWIySFxtA3kvqYnIW30Ev8d4bL090bw8
kfrt00pup/xmm4bJ9NFlWGXf5AkoqlB6u94p/C9/+Yv+O/6i3chyBcrIosXm3fIengv+RftYykI/
m+6ZcoQ17Xqxvjtb6m3FP6fzW1lWN+vlUhZny7/JuJKJu14mIGxUfxxq8eWXtozbOnzdG23lKalH
6ETTpmElT2+zh53CCMLcwMjATMdoQswJJWOLIN1AFkLa1UzvrgFA1uHhbzB5LMZcH2EaYEzZCSh0
lRdVazrGmrPMl08P+brUP36sNUqnTkCnJjY8c4oMxj3bEL7DDdf2TcfzHER9ommaV4TlvUz02/tC
hgm8h3R9mpWrsIrv9b+v5Rrg723oIcyWRlVP1TT/MZarChBszcL/zZu7znQO5P3ZTB/Nzj7M/A+f
TlozlRWBbfzq31zOzy4/OednMH06vVHzw0pHj2jzE0VhEkmZatqnC/1G3il30i9lWMCc7dhEM4z3
uqaUNZ/f+r/d6oc/G2IYYYsx+MNoPzDhD/13Nc3+9YteGI+nxfdHfXbx397V539xN9ea5YLF2qzf
ZPLKVUOdmPBL+C2cxUW2qry8kI3O/mu3CBjZFuZmLPXPt0HNSH+rm0QfOSU4rlrPchyvVmDH+ETD
wwijVGCB9bIC6PM5nkzWywyAz1dV8e6XmTeZQBy5A01fgsH83JqWyDRcL6p5IheykkdT3+vv9frZ
KizKnuFR/eTTxZufm2mzfF3Eso5tMYhT/bR5vo8B3ee/zK4V4cJdZ4sqW17U6Dojs6rI4qo10LCo
B1tPm8l+UeTFnvatfKyu8zJTqt0i9BT7Yh1XefFrtkw2T2/vs/J2+j+K4AksChOWRoYuAOF22FCL
wTQq6T/KeF2FEKbPwOKKZbjYauunP6mtfuy7p06ULbLqSQlATBPiRZWcZ5H/WIGpje8nlNsnGh0q
FQ05avhs1mgvVjmZpOtlrLQLNlHlFYQtB+g+KYn200YKkAA8xwRqczetE40Ng8UiaSPewHoewgcJ
GSYEZe30XqsG66MH+ZAXT5AzTPNE48N4UylsO2p4B4e8J5MwSVpPV8qvZdkAUILPKrCMNzsL/bDI
o3BxFaksuH+6JfCm75GSAXPIX0fMG23SE80cqM2EmFHaB2kyyZZZ1VEfthXv7rSaMbH5iWYdlkh7
lvoxZ4ETkUjSzzkF1uW9p1wJhDx0nV9mG6XVmKAEOIQE9m6BYdnDABFiCRTpm3mKzfTq4jP4Wv7d
DUv5Aqq+V2b3crGoETKqjzYzfplt/GAbFZRvcoAqBkKl3ETm83wnk1JWzb9HkG9UiCzLG5leQ0bY
vbR75b1CycHVRy06AIxB6YXRUGBUpC8Be16Jr8NJcX9ww3gQUEtGAlsvAW0C+TCA29heh+R1oZy9
M6sAdLL4nBeLpHEoRJ+RhgyURphE7HltXX5ZFfliAcX3RpqWgKOXgZkCgB1QqV0dUwgymA6EF0Iy
eQmeCjXN05dxcfwMLMIJwGLHTZr+LCyLJomM4pdgfX+tvmzUg+t+IpQH8UGgWMhEjDfN0mQCn4Eq
kieTv5V19fpY1TmVqqBSZJV0w6LIGmZKAxD+X+6z2swizKkVc7DsGyg8OtOuwzvgWUiII04KsUqR
axhb+uh4ar0GjCjLtQYiQAwCZA8CqE+z5EbGEjriC+iCgcttrniNrlYhlLeff92zb0ol8LbtkKoc
l3e7x9/yLNn8Q8lg4SMhGtsW0BFie5gR2UygZLdeXareIoNq7nlJ+t9qosZ2+dXEN5vo0xYLIpJz
fTaZtHOhJQ7lahDU0lnKccUwY0wSQdJDNNAR5GXV5bORa9QHc/u62qKATj7cDNQrwfvjH0HDcKYi
hFqiXuaza4jA92EL1LvNZ9mS4Po5CY50v7Ge0ZES3pwMkvb9qEa2YTOVMVSpxU99S/1j+NWVN6i3
WoMKJ1DcgFbxQK1a1CLHq7+35s2j7eLXAkKUWsq6OAVwfSIrYCYFNxt1X9/QbOK5pQo4Qoa5orBs
O+3w3NK8CFcKd9PVD4eLCSjymGQTNBDEXUIHIeUMyxR1NLvZ6jsOFQNgko1OG1pNS4ChyyED8yJn
cYr1A77H+uvdcOjB9sKeQ8/s9/r7RuVWu1eD/oLwgVJYnIbPS3G13Gm44Yda/GxIBMQctr1DLWHa
TZyGtHee52ByUCSkefEAhcLXhovaJxtt29ZwMcGMKtGsoawiTl5gpSJInREoNEebGV7QbDAJYNdJ
cYpJkEMMrCvyDjsrTVNbRhHhEdbncy+4+Xh5fnV1PT+bzT3n/Pzs8sP86uPt/PZq7sxnVx9vPB/N
r/2b4OrmYh58vPRuz64u5/M6NWlEDOMa0tgkDddGgmnebJqUSNk6IxpFQylSmbYpwocq3ijWKB5I
ikjIXW1Cs5WMszSLldaR0Ggndv317DbPF1H+eGytNUEuGQ2hjAA63rpQm//+N/ilSJ/VO2NKYmJq
lA6lakWWvgkol1A81mS9/OEhV5IzC4CyoSQ5FM1zd5HHXz8uq2yxI3uh3ApS03mmcqtC/Tmr7gNo
eGWhYj7XaMeFndXqOReueYXMjgiT+nx6PdsxUbbEKNOoOZBUaItIN36/nKk9oixuVnZ5iP0iLL9C
OAOx1JnDpNmWhKjVbAR/qQMFGJ41jDn0ZyI+Yl6sl1/qzptq1B5G0IRUR/UOuYswU0sqGNJox9P2
++m91ARF1I4R+MXjKp4/NFSozTUG3rXIIng6Tp7gj6MTgQ6mVIYyAjttExFCY/jV52btEIctxk2B
9A0laGtGezGUpJ3d/4eHicAnGiM1YACbPIO4AziWjKcJ5KawqK1qdxKAJ/XWPhAon8pKPsy/ymIp
F12abVJmYlNphhBZ1FnG3+v5hazWRY0d1fv5e2qr5vigQ64DLBEiRba+nTj//vfmj7rtQ/Xm9CBq
cRqJRsw2KUx3ApMXjzyUSjeDxkO4hIRZDNcPMyGWf5XK1UzW0cqWds+StWkIxlIGBex8O3/+cFfM
s+W3/GsdHKnYKmYAQQxRpEtwpx5Oduqh/272wP7dBObDBbbSEIcQn5TdlHdzaF5XfbK+gpBMoBfa
ElJ5kh2cP72msEkxbxc2u0gZ31/nTXiz8cEB0GvIckglR/USxiY+OLX5AQVT9yjmD1OgSSLEoTa4
nNX5+3a3qozVZyCDDMS2hdibW5QnT7V92PWZxjBKFgn3lHa5hVr1acRAq42FfkRoZ7PmpB2kL2cf
b873bc55HiZ/Ikz/x6j/X436kNhRcW1j+G3pb38/WM5Rs54n+ryQZd0DqQd13/el7vLsg3O/13BK
7AjUcDlr7GleV21Nr0bxn7H853zI/nE+JH6wD1l/JtGFVCW6Uj58D7NqXmZ30Mf3eUn8BwVIJChJ
YqQvw2VeLqRUrkbQLr3Fb9+OcX8d26Zih4hF0D7st1iq+6zc1DGTSU14nuZFa7cmvi/yZT6ZJOui
NpF3i3x5p6tf7Z2aeuwdXvxcb1o0Pwt1J6S9ezv0ToHFMbISPXoIF9A/TiZKhXUTGYSLsmdHSTWZ
73az1QF6Fl+sK/n4/qc21j8jkZLlZz2CbrfZ4mP1weKOwfh+ojad2FD5UCLSvXx/lWrjsYxDyFF3
/3z56uNnSx99kureiDprJoPvPIBIUcwORQIjiJuNitlWuHpf19ZHEEmUBPNIHZpDABh8J8HixMQt
I3HKp2V8C435uw6I7Ub5AbI3J6OT95MJICuervNs2RxbCaquWm3ogCIgxh3eWHgNLg6F5P8N1yZo
+Xt4u806cQBRXQWzf1gYFj8uDGP0Y8OwPZnsTmF1WIJ8sciWd/+pXv61qpc/JBhz28ZYP4AmrAP/
/8PrAjYKUyY75/KNRWwu1ta3BbJwkf1DbjjVLk44qw/h23NB22p3iNPhzs645LTZY3/eZesT1/Z2
PlUnB/ZQVibhacPqe5XePs+N66NmFAS8blA1xzzY3Fwi+jGxYrCDvxAr8I+NFUiPN9esv2fVvbo5
v7lvrdfX6/SRyYwoq04mmq4X4eOk5x40DETtAbUEMk4ECF3EnTe2PzCQ7AYUUMtkPLQgtKiR7JlX
yt0Aoc1D9am4r9q0uGSRzZs3jgdoqpjohX3MRG3Q6oU4egXXtDB6BhbGRwOEmUoSTDpaiRhKwqh+
hfbQwmqAPTfAj2ClwlZMstWB6ptr0XqRLg5oYUSQ2uUvSN8qAi3tPL/LYqi+veuPzU1/aFzqe8D1
5fjN5f/dq6Z2q1LC5foh2n6nAzNN09xsGRZP+tlDfUdA2953f9xdddcNvfuQgwW8/usvo/r7H4a+
+wKI/i6wbOjBBDd8O+AGnbrUcLkVGJ5jBULYxGIUvf/Xvjff1UjUp6YoTZn+Fjx9E8rVjaDZffaw
cf8RAk3QKaiYUmoEvmAGtQLHEMjhBkdiigTGwneDPk08R7WLi/MeXByWL9Xf7k/KDzFhPBUe8ZGB
BPMMylzfcB319Q80tZllWoFv0qGr0zqXB+32fJvmCEtbEotS80gSy+TgXH3XlXosDpvCEoFPDZ9b
Ss/cM2zHcQwMtTZhAbJcn71KpuZBB1wS28fgUozTtOe60bm8C+OnPoiEewF1ptTgLiMGdXzTcK3A
NRzfQq4beMQ0X4DY0H1W+bsZbeQ2SvARctuKkjQlL6TwHuwmC0wacNMQlucalArXAC8OjABxm3jQ
9rq+24e9S7kffXdOB38UH5uFiElyrPlngTsYmQ7Yhe0S06AecQwHfM9AXFjgl1PhBu4zSn8e8Waw
DTXCkMkOoUbYQltffOHGYOOVaEoC2zOF4TEXLJhPQcUm9w1BvCmmxBZB4Lz/J329rSNDkhwLRiir
BTsIU+uV+rpZO9ZYnuB2YLsGhBownED5JcGWgaAmRBZBDiHkFfGvTbiDjoSsB10IgSOsCzPvw2/q
K2djZwuKCzGmfIwxgLNNCBHCUooGSJQ6lmFT1zZs20EiIJawXRvAzeri7vQ8iwpIpKfB1iTKU4Xv
AyTd+ywu+03lZrOhWZ4eg2kLkoR1EdUVBB5CjqEbQbyLWb8YRDgMAsvUQJbABvVdYjgOmRrC5ibE
GgGaNn+sGC0oXSFo1CMESw7qie8yiht7TOvbE3ueINgYw/vwWzkvdmwWYEhULqEGxT6sj4+Z4Zi2
8Kds6tsoOBbsusi+Qanckm+f4h3oYp7KrOwG/IPBtkiSEXkkkmTcTNOoXpebs+v+VfFtiDZTSgwf
4jpkJDo1HAoR1MPMDSw2nTLP/5Gr0gKiNUBVaWqyJGqtye6hlLa6yqwuE+gjQsWYKWd1poy6ENu5
5zsQLC2IPjY1DQeZAhxCeA5XhrQuC8XwVL3cYmVzi8tDVvDQDg+WfyfLuBHeSR7UtyaqZvNPH+Gx
ogG/lRZBSw7jELXJFFyUm4Hh+p4wfMhDNmM2WLz9GhPo49Sv1L6ZXSntqEfKiNRS7nvBpaxqGTem
QRiudYymJkVTTg3PsqAK8D0OAZFbhh+4SH0blmJOWzpuiJ0+Q7aLKxLHuMJIHGi/tccxMsdCaRpx
c4wtpW3kosAJTDAAxwZwPoRGNyAGRsxDju8HEEtetNk98T7leq1xrYsyPIYeRXWOUSoNwEGbr0Fu
1YkxhhRvKqO1CKcm+JlLATioDxuO6yDwMz9g3DZN23k5iLcuGW0bjH7LaL9zO3uFSx7C1rri8WOZ
Y2LXMu+Xq5Txusiqp7SzbOo9zjEhY6psKph60GjRep0MKqhtODYnUGhS6lHkOs705WWbbZi8vHxO
zzytiz7sEyk8EMmJY7lQX1+U428yPlfLSWtD3PwL/qF6SHuKPHASCEEOCOVy24AC3zSQRzgjGMpP
9+Ws1mLzR8vZMO6f1ox15Ez6IoDE7EBOL1/kxexpGesjNhb1mtWfIJxrcdMVCERypliVRVOoPAJh
WA54oGlT25qSH260Ozz9M3fDWlesYzM1UaR2PfovVo5U7a1yuClsVZyYQYB84hnYUwEc48BwvAAZ
kNjplBMLCpc/KE7CInrOHlvTdgD6Z+6GtY4cMeoRTqYH/cUH9V8UsHoBSb180Pp4DoEyHZpUEAoh
YtjQd0MdSVwsXGj0xMvLBxT7ccJAF2HagxC6/INkE5aLXaLB1rhJNSbngUsZNJzECyCaE8idmE0h
gboBdxyI5mz6UqrZEe0gwpz0IOLRtiDa5qm8ytKnXbgmeExQXdQJgOSywDcAwxRMH5oxh4NBMNMJ
Asot6HVeToAtwl1gtuwBJkUNrBV9fAigJh9zZaLwadaYsOVbrmVMmYBCE6Co9tY3zGmAmcV89r/E
XVlzHDeSfucvmRcwcB+POD3alceyFOPXjT4t7kqkVqS8tn/9fll9FaqqKcYOw/tgq8WGgEwgjy8P
gMG572K1lzuPujwk1p6f3WqJn93MylC387vV/e7TI2EneWvxbwKxZZNWOrbCDG9w5y7DmALCMWFl
BsPKwUG8hu6NSbhmWy4jOialWJAmKbYnz//D25MIhVt7KwmjACW5xsGFGtIoBvJDiNAKXRHopGLi
87r305fdPaZdpPMw/O7gvk9rTwhekDJJcdpBIX9ffT33NfxNcqLYGCdjdILV4Eniq0A0DJORkkZ8
U3l1oo4kvp+kX1xuFhZXcupgf/rwD9KSUyc2pMIN1stZPlgG37iWEUip8hggGHCr0XLBeCk2GkS/
Mb8IVU8WuiLW/aCeIaWWGFqfjv+o89v7x8ftOcgC6gkH4CO08KVZgAKRKmTBI0A0wEE8VAT22jTY
medsyWjejiylF6yucmKyzz/utnerISEpyJo4TrhFqqrw7wMwtMLeNhiUUJ1iMvEaavXeq/qSvT1N
vrypp297sldugey1O5tmWHQJA3Eyyo58WfYV8QeCbOsT8DPgMktNVaZ9zQ7+WTiXeunspukIMH6B
AOPD6TjzLz9+oIeQ7u4nqaKTchfEmF4nwYSThQ4UQCGJzEwtiD5Klb6q11HuK6R07Hi9oG5BqRM7
v38eb6e0g3+DMvmUooPz8DC6MMAsFtcAXgFYswwcAeRE2z9f2c6g9Hz9rTD7/W5Y/218F/O/n4+T
B31rBgpcDAmmRlhEAioIzVKsOGCrEkCZNfjvr0DOEwo71rZ2wYxuj6mCK80MiKGh+kKYWzEYMSEs
J4uKwI/SXoaziB1jxlmYMWWDVPo55R/P3dO2AO/tNvATbd/u6eL8iShlBlPkfMlZIUiRLYMaLivo
CgaWyZikXU5Gu0VqxrP1ZASxRIaZbNHj0+rp8axHiJ34QE823lfuJStBJ6YMFDy0EBFhFK8Awbgs
z5rG0bRjqpz1fkaVw15PsgyITz6s7rdDQKAO+RzCWU26gviNZQOjrQBBWZBFsZJbdR5HJmx5kd85
z37F5Zy/72kPaoH21Xpi1h9gQx6HggRdRIbz1EM8I4wbFFxmm60OnkG/4XRKSCzBKCBOdcoH3pSX
9TVQFZmyDycylkd3QzpW95u5DLv91u/3h96H9Z8UpvGzZpHn4olCbWUQJZDd0CEzzy15LrAWnSlS
595ydbP062/nySjPlZiIyYc/Pq8fPo1wiqaNlgiSB3fgfKw+SQGPJAzlUBvzPlvmFKVQeWptqN68
IPs3WuZa2m805KanWi6wEuxEararp9V29zS0Ij5uhnKUGQRfmYNZzqHFpDmF+xXAVRJblmdWdRNe
i4woSLyEGboFX04LXS9SzYb1TAW3wNRKU0l7xNTRZa6Gs5FHLW4iSqcRSHqjoMUSYYWXwrMQHHQD
KlbiixDOefJn3fVqchors0D4WkyjPPp/+4C448vX3ePjIF3GEm6U59yysEbLFhAUFZwFgA44ivAi
OsNpx6IAH8ULrdFkratWaTKu52y9JGeUBD3Y+//+tvq6uoem705a6wa8EXEcKSeWuSLIBOuaWtTk
EG1Issis/KKhn843IWZxm/cT/V0DPp87/+ju3KEjRI5zJUW6ROYyJRgURaAocQNHZAP30Udpm/pO
cnIy/7Xc5GRYx49YgHJeOD8Lpi9x/OkRK4i+14dEOf0JlnSp0egWmBcFClBLYjGqzEQLWQeXlHLh
JYKztNq1+Hk+sudvoxf42/LJeZHDKHdfB6PwB0HGA19ugA2DbnOPQLB61hz+ByMlgV65YRbnxLly
LuT2XQB+XuG61zoP6bjQch534YfrCRf/2D3Fb08fTwbW3B7iGCGqtRLRVlZMJafhvRDMkOOyUjcl
7Yt8xXHyZdKPX/ZEj5sULj88x7DUaPtwUlmvyRWIIgHuSiOdJRwEmBZVK0zr1uDbTGshLersaK4J
DQvibVbnwGvz9Y8vTw+39Dysv8TR+KyHqo8qiYqrOsO3KgXnnyyMYYP9qLIl6dvE78+n66hxS87f
i3OOZPXt6bwhwpvBOzaNeNlWWpqDCO8tSyaRi3TaVGdcjpOw6TLLTb/OwlYgDD4tvvn25fEStCkn
hwxgTkU2nhtrEUgZhAgWRTFMpKBt0iappCZ7MJqnJ2C1XSBgNzU164fP4P6QVRbA7UPNuEkdDWTY
FpgTWJGK8Bf4siF8qzry2lx+iQwnrLIov/iip3W/QGtQ0wbA97vPD0+7X+52/3MyQicbH0iAVFOa
ypqw7jCFSgscW5aegRUEosbUVOJLyJ4vc63INh1309O/oJA4xpMyrB8/X5CvUgOkj5nzKJlQRlLw
FoEzW6QwxRWwFsRg0MfI9zJHv7ZfWnvmN38uFBaZwUsOZZIsmuTOalZqwz5qSGJSEX4FcaPnxWqY
tlcvCP1clof8XHqeFqokfiXk2biMrnL9TUgyxrpZX1o2DEw5pkKEMGgdGPbZtFKrS2WS8hxNctOv
M8+C+zUE96jO6W38MMuAlBooMcyZaRFxg8TJRmEzM8UVp6wA9mh/UQbkQl/H1no/D0X9RviJnJDf
/+Vuu3sg/O3JUgg3REYaZlEp2AdJb3YDqkbAb+OZltIrmVRIQn63YjHMfB1wDF/f9AQuGPaN20zA
92HV/HC/v/v126WrQ6hDHD18ILMBuZARp1QItCoVKbqrkJmWlIfb9q0+H0gvrPNcT0c3sOfLLZjB
7cwMlrvHzfsdYrvtkBjwgwWkdMitPjiREhE3cE2uA4eSrYP+ZkR4LYfqi9bVPc9Qt8CVsG485Kan
d+FwtmZ70pR/e1d/uGiKJqujcgihAC55KgaoHAMLMXnmWigJQR5O4HmrMzSVv/npBb0Ql9V7ohda
huArd5Od3+4e/+vp4cvj2ftAG27VIEx+SHdJaVLNkrPmK7a+AbcGYznzgSM+Milww18UXB8WOplQ
GnDlHOYDx4wFyecBdpAiTFDAsIF59YWeU6U0+OBTDy0ClSdrSoQ7UjgbQy23KUWWggde07Gkpl8j
zTSmYHnweETP44Jtxg83J8fwfrVF+L7ZTaQOeNzGagvAFadmYmhIEPB6BUa7Og5D7dIrSV1PwYT4
7QLxBl5t02VASnzXLu2JEqouB0N8dDWmGo44UjFO4BUqmFkEHELY0WLRXDb1HRWiBa4kQPBNT3KY
K0vQer2XBw1/WP/nZtSMaMRgZqn6UILXTDpRIU0NxMEHMpskJAvREiKO3heP57np19osEGDPyGry
Ng3AVaCUC1GRNQCsoPpnVjj0TMlFR7V/LR0vIfhSl/Pj/Zw9OXZBxxCAT3Vsc8FEOEEq1UlzaHjT
zghBlf6WAPYRyRvmKVXOYa2rFtbW9qJU1niJK0o0GtEzsZqn+WG6pjHv29W3+83HCxsGgYuiXNbh
A52ztjDmtTAwQBUI61nQzTNfeHJUVctLWYn/axNDT88VAe7G3PQMLkiScWdJ2gwNA/kQZx6lCcha
U/rFZ41QLcLMe8oo1ZJZEsawamUpUnhXxXJfy3zSnia3IE4mTBs7D/eez5lzYJlD6iTaYBKkBmTV
ALMmK4yAk0yGokRVTShvnqu4jOft6drNHXuw29XQpYTBdxCt3y4hrSZiUtI6CWFYzAoRjQcKR/hY
qFWCGgaiNnYSz3az3PRLrRfW36mJhD5+2e2gpl8BTn69v+vBGLVPySG5P/xJpSA4s6SwWyAHu1Wb
YIEnybyukReVfLHiNdzbh4Gq90tEdQhxOqzfgZ1e2IH9VEdz+25+zaXM4ToqfJ8mnJIjTqhASJTJ
FY7RlBb/1fzaeJPaC8ZPBvWc7+cuZ8WlDU5N45RTrzqBM6jqITU3aogPqRXuUmBeObgBaxvAJtUC
m9RVaFlT/VevKYxH3PQUuyU2pr3Rp2bbj3cnLEY37MjNw0EZDr1hvFYYV0fQskjFYikqWBN1Ef5V
xPVIwd/fPN+B+/c3HX/Sz83pSgY13J+DPn8aLPElCSlPbjlqHjnwFoJkYQFfkkYsAASdDHQwNlGi
j4tGazxjT0rQC6Ssp/2Bd/f7s2HXOhxbFoXMJVQNM5Dr0NBTWOLcAtVHW4F8PX++ZfEya0/Teml7
9uLcZvT46UpuVGFlKuzDcKqGcxeAdxoooTVg+aKo68BNumP6uTo6VFigQ62mHubLp9UTPXZ76Xs4
mQ+Ap6IK9eZLKJKSmsrONbPiQwpRAA+lZ5sn+5l72lZqiTaA+e283fCQfh+3xKbiACddYM6QNHGD
jXKpssp5tZ43qhC+rCZymv+5TsJpEn6lFm4Q4IfnlHO5W/16//BI788cX0s/Ph1/Dk2GtFUuiTdH
tbSI09ZSs0RdXBp4JdjGKU3en/bz805IXDr8zTk+//OSRDMU0sIi8kzV7hypHJ+jpntqgRWYy2JK
0UFOiPlzKYOGJXZL6+5PCvl19/nht93+7tOuy4kqo1ULwrEghzYHulUmETu4mBAwAGXz2hZFbTpf
R8wSZF/tt9t5+8jhou/Bf0prbuXgQ0oWKkkHmCDgQzzOJuDvBAKrtcIc84rPpkmv9NTl43c3PWXz
vQMY2u63soOE553j2t0KO3T4U9t7paiLMqDw9NAH71ixWiGwpztAz3YnLagoFl6iRpzNx8fd3eft
6hNbPd6fRUkBoFLVmzbPhVgjcLMJSWHLAjaPeu0CVWZt1tSN3wvUfMKeHr9doMfvJt2bj8dWnZM1
cx6AYKCI50DXFRVziu7IQTbgeIRgUsjoopGIaJ6FzN3ME9L2C6SF2e2aA2Z9/OP+6eOuuxdI1s0N
+crhT1IIr1oydFVr6Psh2Opl8kyYFpr3Jjn++nc2Drj0w5y+OXg9D+o3IsyDh7Xg0+6VD7vV183H
Qy/r7bEoRX+SJFMvIQXFkQJlZROHziHCEU5oC28duDavF1eeCbmGf45fd0wKoReYFOciwQ9v2jQH
paLiWUqmBaeuhEadaIpuF2Vji6xWR/NKOajz4h3Jcr9AsqLnRKaGkG6nru7ud1/HnXSpwDtxck2K
41BCq1RyK8y34EhIjfb1hb0r5/mvdq2cR3QceDFPXKx92Jw2fTh2BBT0+3NOxsjzW3do7UolwHJn
z+DLoPqw6yxJD+SQbMzOVV/NpOg8m6+nZqFhBT88JxQ+re5/vdterg9S9icYbXHSgjVHxcsIyU4q
F2CWKlspCNvKpOw3nmWy/NyvrYGEJ8junDYIwZ06NW0rCjCcM53Ik6VgWKI0IsKhGgovzrf4nBFc
SBmsB6WfkrPa6eE2+UW6Vt+2dw+3T8eLU5H+dr7GJW7FwQoIMgLUSuRU9cxEMn4tO5Y8dywLm6xx
1sr2Hcc7mvyKoI1G3PR0Lxztes1PR/tb+fDuHErA3Q3ZMOoQBEiurBQqCHi6ypohaVVXla1uzkX3
F5UAL/R1bG0XmuXX29ltaXoE6P6fbw4PXBwMgDq0r9WcylA+s7VQ24ZCZA02Q/ZSydJieVmzwHGB
qyZ3PvR60+FoQM/resEdb7dTa3f8tZbDY2NHVT81Ggh71BbtdEjcMw6QAJ2lX1YMNAoEUSCEiQdA
sJdwvbDUlRt584E9a9t5Q/SGS75QyR1+fxE8kCNU4cXATwUopHZDVhXVDFVOLHJBaTGeUo5J1vD9
rAhNfD0jQt/e9NSJJZLFrBlu87AiDE71jqGsD18P1FgcZe2pYssFiMUnoACeixBB+O+9aYApr1GK
ryZkzoVmo62cVJt/uxtaLtuKft/sUUlOajIoStMyNSo48EQ5DkNd5xG2KwiA9IJwpmXzEpE5rXBF
TY7f3vTUqiUWzAx9behFr+Pv3Rv7+VJdjsEDEidyjjpmhD6mMG6Lyb4BzbysR7Vf4WpuaTRmwodd
4IOQ/iGG/P3x09OoB2S4gIBwQwdAKquol6nBo4XqqDAhAgem1CKLyT2Y0STd6lbP4x78cD9xrmt6
bvZ8FcISES15YyGZTEZ60SJwekEkJCaq0cnSE0ZePudbx1P2JC3ULzZDIWx/Bj+//NjnGIw/NHml
rOzw0I8P9CSRokZqTznwwKWqrhrbXumO04yIjgenF8yAW20nwnl5ruPNT0OAAIM8BEbYTYADfriN
I2B5pRCK7jkBIHiEmVEYT8YsRGNMjvn5Nt9h8iu1s58mgB9ULkiEI0igOrjVtYacH2mxt4JyujoE
nwE3WRggaOD41BDfmSJiNioL1UHQOfCaz94TudDQjR+eOxEPe3GbLqA00NXtoUxAL96YBhCYybdb
l+iJtsysyzKEFKubItN+sjEdW8vnIeDWGn5SXnqm4v3uV3rtZHRh290eO4KldQ0AjNmqoUKpKnoE
TDBO76tZDcsv6//j+xo94T3fwSzwHc5mY/O43y6FJgAVyTvycl7AcmUNQG41RLnAXogUitcTyzWa
qaNg4+YejF6TO1HwsB1RMHhYakPUNUWmdaK1jWJUNmFeAPSo1gr836RYv72y9lYtrD3LtGV6bvT9
jm5A7r4er0KeC1dGUb01SRN5qJl8Pey3xCdvGxCYSdorh2ipvCjWXFrqChZYGDlhbq7/263cTJij
m1ybT2Sx1K0JQ66aPgw30bRqGu4oK+oWNxQ6+4DQL9OV4iyaSd+/RZ7fXm9wz29vetrmqbLtTukJ
wbOsAmGBIxo4JC4agH0r5MyMoSozB5gxzjPNm26Iwoz4zp3+ZxMXxy9veioXhHinx6X6L3eIlP7j
cp1XmUMyPSA6lEwkel3NysiS5ooNTc6ixCw6NerK9P2EPTmrBWu2W03Dpi9f78Y3RW7f0d9PVT1p
BzRbOW+xClYip3xolnDEEAljpRE+UzvFq3RYvetJGY8avpqwt15gbz1V2x+/fXq6e3r4tvk4UySq
F5lTs+Xp45C/lAiQgmTZUikLOk03tsr/9nZlzXHcSPq9f0W/TIQcs8XAfShCDygcWlmipBXJGe8T
o4+ixBAPDQ+Pvb9+M1Hd1Y062LTNmH6Q5QIEJFCoPJCZXyJbi3ViyXD+LA/NE1MXGer9buUyl8MP
uKGWXayKZf6aD+T81Qa+IKvzgQka6oSOc7D7OI3w2iwoUdGBikGNJd6SF7Ps8/wTwEC5bVYsYMSH
1tBlny29b+6Wzd3t/b6iD6q8cQnMd2oNilmXQPY7CbpJ8lGCzXIIUmY76Dix29aCXEaGTAkf9u3A
fMwR5EC0abA5U8FTRz2pfE0wwFvCx024qXxyDLT8wKOyf/rbadt6pI6cF6GbHgzR1oG/PTFSAo8H
BfWIZywihxGtAZglAs5whjEnBj74xEzUSjMRyPNwsp72zReECzNUAhuFACdlldL0sQV2A8NF8wzh
kv+LKoFz1Cq84E2wy9wI4Phaomc1GVBRrQE5/PRWb8eeCv/YNM9KEkc2XKFrh/ZCor+3yNJ7QZKo
PeQlcI1GWCBKSw3SKnGMeTFwahwRugIL1islBAd2+6zY3G6uydDoTXuxEq2Gd6HwkG3V38eHyw5h
gKMpA6JJgLKdwICpa4ydEhhLbCtnqeVUBU5iLxVpN0Qx82IED61ZmM4AOH2X+n4JyzixyqmKMO8R
LivA3GAmwgmgghOPKUAv5JfYzV4SvRia+s2SLHu3Lv/dugbLIADPTACuFStCEbNNcUS7FmDk1oFj
TLaUTD3nTW8Gn4DyahtnJX2rMaI7GKHHm13AHm6zYmD8CykrahQDQuHrAosVnduqtpRJJSaSZruB
yulHYGywyMZIdukQftHITTCqZrYOKriKJoX6iMasFbA7mEqMImYXq+uDV4GHIPzKPrOS4KFm1cDT
7YdyuXrEvPa9CGNKj3jGzwLRi4yoYqA5w9s2CraTqirUEt67jNob0Y82LMaalVMO7bbmQvWxAy5v
vu8rPRuThRHcSszjrkErwORV2ErQfBAYSFaYthtdIiYJ/SLB8zcTTBUa9td0QS6Gat0F5aveCfnc
VrnGkPUtGm12yOYbY1wYfF6aC8wLFDl+MIdqRQEGqjMxcUJ1fFbq8chEExrqsOOsXMN6bGHrHDYE
b7aAqDjbY7VbOI3AaxUlxkh4TB6kGNJRWwEcT1gFxo7mtMdtJ4bskdWMkKU6j/A2coCORCXwaLT0
pq4SxTtXquHwGA3mL7MGNATLXGB9RKRitJISZUcoQSypVeubTr+cfFvcNes+FhLofEEh+ioBJQXv
gBRohGBO+VprTuoaFBb6QkBnJQkl+ZqNkb8epEZtokc3VzxHafBl7kXBMuaIB0kH6iKmJGCRCGdB
I5DOBxfBLgsHsD0H000oBGWv3sJGTgini56L9H8eF3cP/9c6FtoUPM7bCGafaqtZAPXRcXg/Bi+4
HSyCOZXD7bUQT2vsu6En0jC79llJ4wgr4XKxg8w7G8BqKWl4AK5ME94qYYa34bWG8yRNIjrUVoaX
wsw7GzlEfEQJhocdybk8+Z7/IKPRMMospsAKguHCxLrKaDgooKoblgSolLwX/laM0pt/bMvM7iZw
sfrW3cOpNjzB06hkXWnmaMWDA1EigQfUjFNpPab5jWfo7w1VkCDG2IBQq1660btPJ493F4sVJoPR
nOFmN35Cy4UBhbmirEawEoNFOyLHBGHOaqaE5QcCVrYjT92xb5pLqkdE8YVoOtf799+6YuQ9dC4K
fBOOVkLwM8Qk1pigyiUoM4LyAH+AEB7dwN2QBSWSDr3lF4rILSU/f2Y9VZrammtfq8obDC4zwG7g
AMG2wY4lg9AvNXmx5MaRvAmgTo2QLMXu4gzYU5HhQlV7/Z9gvzhm0FOBmHwYAV3XrK4ICQF21TrQ
AiauzsohS3qkHKOnr6V+a65+IK/j+fgJ1O8cmMdcgSIfCLxHjjhiwKlFlaSvA+gjMfKXAfGFqaeU
/qsf5WKWdGQx6w5AbvX3vy+Wl11YiG3lDnUGuAmvwLYGtR8NABCmqdKCR5sQfSyRQVp6N0wx/2Ik
4AcfPgEog66nnBORUXsUBmpF0DG0hTccwKgHC6kytSTcRwQ7/KtBdfs9eqSbEdJXagQG7evVRojk
tNRWmBD4cqME3bqmeDgxw95SDKKylhoRQXWS/k8Lk7atJHc1stNLRNtmBy98W7m9wd7Olp8JhoHk
4IjykNqwZgsEV1IzD/JcRHPg/vzPuLM6Wp64BR7I+VUzcsJXTYcHheUXdllobQUHQYnWwCPgZRCL
hhgITcUjSrHIiYgh0vH8gN1gJQ0j6T8Xa9a/IQzN8vFri6CG9gpR2V+BnCPSOsRATCUZd2hog6nC
Qna5ek1ZIs7r5+Vl72aYSsje9SjWsB6BOoOHTT/poqjd90ryTUqKQ/AqKRGOBtgFpyTinQYcd6Wj
t5jewJ70EhfjloQtR+RDY/ueDOTpj5foxMKvEPSPzMqo0SFh/qNxOXRaBZBuhuGLBw0FVFIf9HMx
qM7eTXOQsyLRCMgb0aSaZRf38NuP1S4WnqC+z9o9JD5IOJYCPe0JREctqKwUr7kncBQUGw+G74Yr
iRgBJLlomj5cg//2ePMdTMTN4rtIMtlWl6kxkMaDPAsU3WnoR7AKdJVAwaoGigzhz7qs6k0zsZVl
p3I5zcg5uJC8d9U6xnjc6QlstMrRTqq9LjbMeKYprUQ2qpMGGSd4voNLnJmQakr/c/56aCjWmq9B
BmsdiM2PzUM62Ra6aMPQTWTKE2srHy2mflALYsexSonoLLNeUf70lU4ecxLWK/XpHMhI0N8XHebN
/b+uLh8avrvMQNlCMDGyThiUjXDUwBwwGBN0XiGNrK1l3PeuMophZsVc69WQAMq6lLXV493VkeiQ
AM2RFflUG5OYThZ0RcmABg6v33ITQO8mGGAUTFsLpACy2o00K2dTIyRgSHXpimweFutNZOMGZxz2
7ohnFyvIIw/KYQV2J7rZQVdAxHMQSgIYgDbJHzA8/1DuwJaSKcjstrVYIx+Wt7DZqJhW4zb+sM2V
AMjbI6qzvMt/y/EjLFqWQhUiAn0GAa8AE7cozmUIdYr6l1v0jpqnnGk97cJm02SwcEU6rPDV7Y/f
93PCKOEdlENiNqSk4Ihh2BriLBkusLBbBOmkFGXRTFgn+2OW5Cg2Qs7aPvUePp3sNGtMOBa59F+L
cC+dEInUshKOofEHn4ELUWDtRR2U13HU5/Rn38GOkgmt9mREEcf1LcYW3b8UjuldjqvucDWzGqsk
NRbkqM5VNBjHW1NeCc1idDwwOIDPEV7bscfp3rb2qF4Pqdamy2P89fjyfjWIxyfCeqI5elwI4qTU
mHzGwfRSvjaEYSna/xQk1x6Bs3INzXBhGKw1cgZL3GK+iYgEMwj+ltP/pBUx48BQx9ETRtFIipVK
gcK7sdQa/myI0MPoxYNuxcKwZPJwYShKTAkxcvN13+ugN2lgbdiFSWA7oMVH4Q0i9AaoS3hx6623
tYbdY0G8uF6xT9IUxsiuR7loNrZoRvq1MoZUwak1OUI/+wJ4Ao4NJxYr53CQWMDrsCqn9yIZnIO/
kDY10rG3Hjq2HtrLz25Teh5vLh/u24Ses5s2qa/I5kFQbQofo5QOI+IVr4BnIJStsszpEGudDmfz
4MhPpPJgc7GCpRzh8Sva1yeWi9X3xx+Fa++oLdeT/5sjIrR2IvlK1xqvx7CuDVYxTknUhgoSiHwW
3mTdm6lAysxtBf0ryUfox5xSVZbCOtmDKWPtJZrJWAvRRsxxsxKVIQWmkAHTp4rKUYw3dj69fCTt
jpqpwlijp201TBuFh4tB2ui3xV0Lks83yNq8zTVOwN+4Fa5iDCxTzoRoM3uTkzSFWrnwPEjQzQQT
ATdtY0n4sAYKPLzoAyu2nwmyzXxWW3wausGnQSWH6MRqUHoqFxlGmVEEsPaisg4kLOU1ofywMz6P
Pc2xc/M+9VQOrwTwYd88Or17vH+Ivy6uHvNhcF/3UbdlhlYUDr0koP4gIJGmWGQLtt+oQGpg1Tyy
Z4Ehj000vp6xnsXSFkMHCDw03XWW/5JOHsEYKkJxUnJRy4zEKtCiMoi0bTUoEVRhfKk2NvSyRIth
CgqWbDmkYMn6BbVOve9qkOJWMke0DGDUaVDpOaawWFn7qk41CdLwJOiz0uxg2Imd874gczXMq4WH
vF9FMVyuclJa592832L0M5K5jeTWgYZe1U5i5dQYYetA9cIDEEGGUaZf0PQaUjPlku33K9fOR17R
SqrtIfkMrKD08ngKclgLeCkJS/Hh3aKxylXwkGsiax79S0FYdpOXJMshw6EXWMdT9LXGTTCr3STW
Y7EEFX2oSKIYz60xQyqligjJhAZNMST5lxzIvZf5RCxr17y/NEaH9VLyw+3b+N78fv31rgis4s6Z
YGSofCIkx30B43GkwspNoAkzp8KE229vrIIINmKowsPOi/Zjcb1Xg6kFLOA+omoaHCpuxNGqpglB
hBAF1ErKfQ/wcG+M3txybO7hp3j/3d0tL7sKxm0NvhZZ3AmqJBYl0xoz9QPTVZ0roNPkaTKS1UYf
AoXdH3069nGvU7kKY0dWMSh7s8HC+LDAWtgnzTXWhlgdQxuI2AIBk9LN8mhbgdczZbRnvmLAcbD+
OOo16Ct3FKQoSCIZn8bGGp1ySt0f6VqudrEaWe2qfzl8trz812OOFG7d7LBJuBRM8NFgtsEBoli8
C6tlAnMBfZkEKx1tgfkPMvvt6OOL2LYWdK9WQ7OarQf2yslqcbVYXjVn981drgTRBgvs5JVPGviH
NRXwPwx9C1gZuaaVBn4vnVQ2CvNSXGWUmAldbazr/gZwwoeMFB72I41++ew3oqO70M+8NCqOJcJT
RGmH0buWBniPUgeSWCT184A8d6OPL2PX3qN9eHXAQYwPwLPumtPmtwe8s9etadD+JR89a5misQL1
EhTOoGxlEP+MgNKjQzCB08PyGgef5vDYOisppGNk08mCzXjQ0Ie994TmkijAV+uaaQfqcg6oRXcU
sPoKyxkHYHc+yb9Wc27X3lsBG1kB7SCI7kCAX/16ZDu3Xo5NocCtMCY0USx4YeGPWkRTqUi8gFOT
nO3dkZfDlBTQixEKdrDbbz+0crcXkiWkg1dcI+oHRvdFAhpMqE0F6qQ1OhojDoRU/IGQrD0CZrP4
26aszfHtelci9OTx+homeA1L84urq/v59WLdzJe/z28fvjV38x93t6AE3YOO+bC4+9rkwmgP3y7v
tw2v85Y8LO6/n1/c3p3/uFy/nrP2WfZ+nq/gz4fm9ZzsP7xvHnKduc3zcuJDw5O/Njz8z96qYAfy
fFhf5fKmGZvPGmv+2JSzfxzPMT11f3u/QK9PN1e/zzEjCltuL+bd23o9P719WFy9YVgq+XgOh+5y
DdLuDSXqiB+/EuZvP83v/43Z+evz28eHcyDt8SajxsKM6zeU8iNz/Eqyv/00++fd5QOyWxgECeiG
Bgvh7fzf0Ahi9A2on+T9KwqjdlOBdqTaR3sTvYFeBB4Vk8FAr6yFqeazL/Htu08f56f/+znOJ37/
ePfl9Mx9mL3Z/aa6bppn/u38MivMT/4YLAG73ucA1vZf3I93pQK7ot19A93y7k/8qDHm/SxskKeB
E2KZrNaw7Y8tzBE5nv18Mv/53en8a4sVAnSsbtd9wil7ousreAMgV5r1T9gVLBjouv2H26Y5nKfF
eo21w+ZAGQrAvTfy0+x9Lmg5d/hk/ulmNbVzsLRj9+HDJ//0zmJqvzredn21WF9f3vw02ZszGLW5
Rtjb08XXORNsemDoenLq/Pv52zP3JUxTIHEXZicPi9X3+YEfqqLH8MGdZ2rdaXyiqzoSx7N/NksE
MzjO+zfVVTCt3s/Oz4M7dQcIYAw+Uej67ti9jQf6SmZw1A/vPr6PAc7C9M9a3IHz89P4y+mBDWAU
eAZ0Pfv4zn8KT5MghXg/u87f9xwdctM9lcFlbT6u6/b9Tv9g1D/wgZ9+OnUf5gff7JF823b9rzmc
wMf74ntov4OWVG2A/QE7mv0/UEsDBBQAAgAIAGBTTkfWuEWIBwQAADwLAAA0ABwAYWNjZXNzaWJp
bGl0eS9hY2Nlc3NpYmlsaXR5LW5vZGUtcmVwYXJlbnQtc3RkZXJyLnR4dFVUCQADY5AeVmOQHlZ1
eAsAAQT1AQAABBQAAACtVk1vo0gQvfMrOM3Y0Rz4NNAaRXJIHDmJg2U7m8tKqKGLMbME2KbJJP9+
C/Nh7GArkfZiRPerV6+7qh6+4Tzjcpi95HESp7/koIwTEadEnqevNImZHG4pp6EATuTvfyvfJVWW
ZeVNVWwl0kybyndrl5CQAxVw8wZhKWiQwDzFgJQmo93uX4tvP2rcOit5CG7GAFOmhWjX5wxSEUcx
8MN1t3rhZSgyfh+n7Hh1GqBo8T6WtL0onZpKDbuqj7JXVRASlWko4ixd8kxk4j2HaZ4n75WgPWw0
lvSWzwjAVsya73TsLaTAKYrszjuWjJZCB8e2g5pidkxBCGWst5oDFzEUNU8laS3wYi+ag9+tb5Ms
oIkX/IZQ7FdbgouhpbFkdqdh2iSIhrgIidNY9ORPmhhHZQ4DbTgmwqBi61bFx1THxb5bNzrHktWy
aZrlKIH8DIGbcagw197iGUub/bmiBZyhHApZbyFJkN7u6HVzokxOYwkpQNTvo+fNjJAlLYoVREvB
f3ZBXcjlWHJ6zLoTnWM+rfwziVSlSWRB4KjWuUT1sH0tQTt/u7EpedVRByhOc2y954wnDIuvqp0Y
Z6I5e+g65HEucP4Ez5IEPaER09M3OserdbwUJ/Ucb9WO9epZQr0mtHTGIAjPEf75pESjYTSo4YRq
xXgfY6vjc8bpC8b8LipaeBPoE6pZowPV1K3QxEqs0MzSquuBXZUpS2BJf2EQB2y8aYSuuIFiFznp
IhXD0IciCWExW0EI8SssoCiQaJNVdCMvp/+W8Hy/z1DbJla13cJKV3beLr9mlZXvXjC31d6abTgK
6854mN5NYjTl0yKGo+rGaq+sAl40DdpXhE07Xc4J6QxCtdtrZ8zRomMOQvKsEIeZGjWjIfI2/KkA
fk0FbTYwj9PmiRyKtra7l/kSR2NLe6Q/m2fRU7A8peDDiZvrHn04xMX4S2ovRztlTZprCPFTw78N
XfD/kw+/o0p3PZZuaR/LsG+GZqmtwk4pDkYKu88OZhnSjhnUtvccy7ajA1TDzBc0rzIVORXh9ssJ
Go+xTEOFSDk4As9ChA+09OfZO8MxjTBS5aO4j7ILwQjxfZWQMo1xMv0cDXqA+4e8RzKIaJkIn0EC
AobQlzJ+MjSj02KZOj2txUu7c2JUY1k2FtiZ2PVsrsr0Icvw1tEJo4y/oBv+U2Ene2xgamewVQPi
GGs7Z7GiKLIhCDQzUGXfd2erp8cHz1v687XvTh8e5o+3vve08TeeP/XX3tPKvVH85c1q5q0W/uzp
0d3MvUfflzS7x0b1cKLVbLWA66z+N1kokuYcAHWI+kB8SLrSR2hgmXJ/f51DiH8/Q0lXO5wJhk7R
HXHbLTlHL7x5xZ8qYp4usArSf1BLAwQUAAIACAB9U05HJFdxfII4AACywgAAOQAcAGFjY2Vzc2li
aWxpdHkvYWNjZXNzaWJpbGl0eS1vYmplY3QtZGV0YWNoZWQtY3Jhc2gtbG9nLnR4dFVUCQADnpAe
VoGQHlZ1eAsAAQT1AQAABBQAAADsW+tzm0i2/3z5K/g0JSeD3E+gVbmZAgRZz/hVlvOoO5VSAWps
NrLQAErs/ev3NOgBEnLMbO7WVO0qVZLT3ZzzO6fPqx9c51ksi2Kkbz5x9jAMl8u5HH6U0W9pqX68
bFHKRTkcy69yni0f4G/9d1vAv8/adVje756Gz+mHbL56kMXph6vz9xf+6avTNaEkDx/ktyz/cvpB
5kWaLYpT5/TTtTeR+dcUQJy+kPXwcRmfrtuL04swvpq89FHtbAbfaZLKfNRLXG0NeSepichrfQDf
Qzy0Xp9oXjaT+u3TUm6GfLJNw2T64DIs06/yBBSVK71dbxX+yy+/6L/jz9qNLJagjDSar58t7qFd
8M/a+0Lm+tl4x5QjrGnX89Xd2UJvKv6Yzm9lUd6sFguZny3+LuNSztzVYgbCRtXPvhaff2jDuKnD
lz3RVJ6SeoBONG0clvL0Nn3YKowgzA2MDMx0jEbEGiE0pLalG8hCSLua6O05AMg6NH6CwUMx5PoA
0wBjyk5AocssLxvDMdacRbZ4eshWhf7+faVROnYCOjax4ZljZDDu2YbwHW64tm86nucg6hNN07w8
LO7lTL+9z2U4g+eQro/TYhmW8b3+x0quAP7Ohh7CdGGU1VBN8x9juSwBwcYs/E/e1HXGUyDvTyb6
YHL2buK/+3DSGKmsCGzjN//mcnp2+cE5P4Ph4/GNGh+WOnpE608UhbNIykTTPlzoN/JOuZN+KcMc
xmz6RpphvNU1pazp9Nb/dKvvf9bEMJpFzIQ/jGaDDX/ov6th9m+f9dx4PM2/PeqTi//1rj7+xd1c
q6cLJms9f6PRC2cNtWLCr+HXcBLn6bL0slzWOvuf7SRgzCLMzVjqH2+DipH+WjeJPnAKcFw1n8Uw
Xi5HlOATDfcjzBKBBdaLEqBPp3g0Wi1SAD5dlvmbXyfeaARx5A40fQkG83Nj2Ewm4WpeTmdyLkt5
MPSt/lav2pZhXnR0D6qWDxevfq6HTbJVHssqtsUgTvnTun0XA9rtv06uFeHcXaXzMl1cVOhaPZMy
T+Oy0VGzqDobrfVgP8+zfEf7Vj6W11mRKtVuEHqKfb6Kyyz/LV3M1q2392lxO/4/RfAEJoUJSyN9
J4BwO6ypxWAapfQfZbwqQwjTZ2Bx+SKcb7T105/UVjf2basTpfO0fFICENOEeFHOztPIfyzB1Ib3
I8rtE432lYqGHNV81nO0E6sYjZLVIlbaBZsosxLClgN0n5REu2EDBUgAnkMClbmb1onG+sGyI2kj
XsM6DuGdhAwTgrK2eq9Ug/XBg3zI8qcRaMk80Xg/3pYUth3VvIN93qNROJs1WpfKr2VRA1CCT0qw
jFdbC303z6JwfhWpLLhr3RB41dWkZMAc8tcB81qb9EQze2pzRswo6YI0GqWLtGypD9uKd3tYxZjY
/ESz9kukHUv9kDPnMzGTpJtzAqyLe0+5Egi57zq/TtZKqzBBCbAPCezdAsOy+wEyiSVQpK/HKTbj
q4uP4GvZNzcs5DOouh6Z3Mv5vELIqD5Yj/h1svaDTVRQvskBqugJlXITmcf5jkaFLOv/DyDfqBBZ
FDcyuYaMsH1o+8hbhZKDqw8adAAYg9ILo77AqEieA3ZciS/DSXF3cMO4F9BIRgJbzwGtA3k/gJvY
XoXkVa6cvTUqB3Qy/5jl81ntUIgekYb0lEaYROx4bVx+UebZfA7F91qahoCD54GZAoDtUalcHVMI
Mpj2hBeihD4HT4WauvV5XBwfgUU4AVjscJGmH4VFrdlMRvFzsL69VF826sB1PxLKg3gvUHbIRIzX
i6XRCH4DVSSPRn8vqur1saxyKlVBJU9L6YZ5ntbMlAYg/D+/zmoyszinVszBsm+g8GgNuw7vgGcu
IY44CcQqRa5mbOmDw6HVHDCiLNfqiQAxCJAdCKA+TWc3MpawIr6AVTBwuc0Ur8HVMoTy9uNvO/Z1
qQTetulSlePibtv8NUtn6/8oGSx8IERt2wJWhNjuZ0Q2E2i2na82VW+eQjV3XJLup+qosZl+NfDV
Ovo0xYKI5FyfjUbNXGiJfblqBJV0lnJc0c8YZzNBkn00sCLIirLNZy3XoAvm5nG1RQEr+XDdUc0E
745/BPXDmYgQaolqms+uIQLfhw1Qb9a/RUOC62MSHOh+bT2DAyW8Oukl7dtBhWzNZixjqFLzn7qm
+sfwqypvUG+5AhWOCIEqg+CeWrWoRQ5nf2fN66bN5FcCQpRayKo4BXBdIitgJgU3G7QfX9Os47ml
CjhC+rmisGw7afHc0LwIlwp3varvDxcTUOQhyTpoIIi7hPZCKhiWCWppdr3VdxgqesAka53WtOol
AYZVDumZFzmLE6zv8T3UX+eGQwe2Z/YcOka/1d/WKreaazVYXxDeUwqL0/C4FFeLrYZrfqjBz4ZE
QMx+2ztgf6Zdx2lIe+dZBiYHRUKS5Q9QKHypuah9ssFm2RrOR5hRJZrVl1XEyTOsVASpMgKFxdF6
hBfUG0wC2LVSnGISZBADq4q8xc5KksSWUUR4hPXp1Atu3l+eX11dT88mU885Pz+7fDe9en87vb2a
OtPJ1fsbz0fTa/8muLq5mAbvL73bs6vL6bRKTRoR/biGNDZJzbWWYJzVmyYFUrbOiEZRX4pUJk2K
8KOKN4o1inuSIhJyV5PQZCnjNEljpXUkNNqKXX87u82yeZQ9HlprRZBLRkMoI4COt8rV5r//Fb4U
6bNqZ0xJTEyN0r5UrcjS1wHlEorHiqyXPTxkSnJmAVDWlySHonnqzrP4y/tFmc63ZC+UW0FqOk9V
blWoP6blfQALXpmrmM812nJhZ7k85sIVr5DZEWFSn46vJ1smypYYZRo1e5IKbRHpxu+XE7VHlMb1
zC72sV+ExRcIZyCWOnMY1duSELXqjeDPVaAAw7P6MbekEPEB83y1+FytvKlG7X4ETUh1VG+RuwhT
NaWCIY22PG23n95JTVBE7RiBXzwu4+lDTYXaXGPgXfM0gtbh7An+ODgRaGFKZCgjsNMmESE0hl98
btYIcepIwTIF0teUYFkz2ImhJG3t/j88jAQ+0RipAAPY2RHELcCxZDyZQW4K88qqticBeFRt7QOB
4qko5cP0i8wXct6m2SRlzmwqzRAiizrL+KMan8tylVfYUbWfv6O2rI8PWuRawGZCJMjWNwOn3/6o
/6iWfajanO5FLU4iUYvZJIXpVmDy7JGHUum603gIF5Aw8/76YSbE8i9SuZrJWlrZ0O6YsiYNwVjC
oICdbsZPH+7yabr4mn2pgiMVG8X0IIghirQJbtXDyVY99D/NHth/msC8v8BWEuIQ4pOym+JuCovX
ZZesLyAkZ7AW2hBSeZLtnT+9pLBJMG8WNttIGd9fZ3V4s/HeAdBLyHJIJQf1EsYm3ju1+QEFU/so
5rsp0CQR4lAbXE6q/H27nVXGqjOQXgZi20LszC3KZk+VfdjVmUY/ShYJd5S2uYVa1WlET6uNhX5A
aGuz5qgZpC8n72/Od8uc8yyc/Ykw/V+j/n816n1iB8W1jeHb0l//vjedg3o+T/RpLotqDaQaqnXf
52qVZ++d+72E08yOQA2Xk9qeplXVVq/VKP4zln/Mh+wf50PiB/uQ9WcSXUhVoivkw7cwLadFegfr
+C4vib9TgESCklmM9EW4yIq5lMrVCNqmt/j16yHurmObVOwQsQiWD7stlvI+LdZ1zGhUEZ4mWd7Y
rYnv82yRjUazVV6ZyJt5trjT1Vdzp6bqe4PnP1ebFvVnru6ENHdv+94piDhG1kyPHsI5rB9HI6XC
ahEZhPOiY0dJLTLfbEerA/Q0vliV8vHtT02sf0YiJcvPegSr3XqLj1UHi1sGw/uR2nRifeVDM5Hs
5PubVBuPRRxCjrr798tXHT9b+uCDVPdG1Fkz6X3nAUSKYrYvEhhBXG9UTDbCVfu6tj6ASKIkmEbq
0BwCQO87CREnJm4YiVM8LeJbWJi/aYHYbJTvIXt1Mjh5OxoBsvzpOksX9bGVoOqq1ZoOKAJi3P6N
hZfg4lBI/mu41kHL38HbbtaJPYjqKpj9w8Kw+HFhGKMfG4bt0Wh7CqvDFGTzebq4+2/18teqXr5L
MOa2jbG+B01Ye/7/3esCMQoTJlvn8rVFrC/WVrcF0nCe/kOuOVUuTjirDuGbY0HbaneI0/7Ozrjk
tN5jP+6y1YlrczufqpMDuy8rk/CkZvWtTG6Pc+P6oO4FAa9rVPUxDzbXl4h+TKzo7eDPxAr8Y2MF
0uP1NetvaXmvbs6v71vr1fU6fWAyI0rLk5Gm63n4OOq4Bw0dUbNDTYGMZwKEzuPWE5sPdMy2HQqo
ZTIeWhBaVE965JFi20Fo3ah+FfdlkxYnKDJ5/cRhB00UEz23D5moDVo9FweP4IoWRkdgYXzQQZip
JMGkpRXLRrMwqh6hHbSw6mDHOvgBrETYikm63FN9fS1az5P5Hi2MCFK7/DnpmkWgpZ1nd2kM1bd3
/b6+6c+06hpwdTd+ffd/+6Sp3aqMcLl6iDavdGCmaZqbLsL8ST97qK4IaJvr7o/bm+66obcbQSTr
5W+/DKrXPwx9+/6H/iawbFiCCW74dsANOnap4XIrMDzHCoSwicUoevvXvjbf1ojsUpNMEqa/Bkdf
R3J1IWhynz6svX+AQBN0zBiilBqBL5hBrcAxBHK4wZEYI4Gx8N2gSxPHqLZx8a7p4yZYpP56d1C+
jwnjsfCIjwwkmGdQ5vqG66i3P9DYZpZpBb5J+85O41getNvxMs0BloYkEEfpgSSYhhwMseu2UofF
YVNYIvCp4XNL6Zl7hu04joGh1CYsQJbrsxfJVDc0wTEc2wfgGMU4STpuG53LuzB+6oJIuBdQZ0wN
7jJiUMc3DdcKXMPxLeS6gUdM8xmINd2jyt+OaCFnM3yIPIpmSUKeyeAd2E0WmDTgpiEszzUoFa4B
XhwYAeI28SyOXd/twt6m3I2+PaaFP4kPzQJQzQ41fxS4g5HpgF3YLjEN6hHHcMD3DMSFBX45Fm7g
HlH6ccTrziZUi0Mi24dqcQttfPGZC4O1V6IxCWzPFIbHXLBgPgYVm9w3BPHGmBJbBIHz9t/0dltL
htnsUDCTskqwvTC1Wqq3zZqxxvIEtwPbNSDUgOEEyi8JtgwEJSGyCHIIIS+If03CLXRmyDrQhRA4
wqou8959Um+cDZ0NKC7EkPIhxgDONiFECEspGiBR6liGTV3bsG0HiYBYwnZtADeparvT8zTKIZGe
BhuTKE4VvneQdO/TuOg2lZv1fmZxegimKYiQJD4QREilZroWxLuYdItBhMMgsIwNZAlsUN8lhuOQ
sSFsbkKsEaBp88eK0YDSFoLxDiH4fj3xTUZxbY9JdXlixxMEG2J4Hr6V82LHZgGGROUSalDsw/z4
mBmOaQt/zMa+jYJDwa7z9CtUyg35dinegUXMU5EW7YC/16nV0FVhZ1qzuDEv20bIS+oisDqK1weE
iiFTtu6MGXUhNHLPdyDWWOC8NjUNB5kC7El4DlfzsCpypcVT9XCDlc0tLvdZQaMd7mlvC31YC+7M
HtQ7B2W9daYP8FDRgG+A5DOAwjgEPTIGC+dmYLi+JwwfwrjNmA0GY79Eg12cui2la2RbSjvqkDIi
lZS7ldRClpWMa3snDFc6RmOTojGnhmdZkER9j0M84ZbhBy5S75JSzGlDxzWx0yNk27gicYgrjMSe
9hs7BANzKJSmETeH2FLaRi4KnMAEA3BsAOdDZHEDYmDEPOT4fgCu+Kwj7oh3Kddr9GttlOEh9Ciq
QrRSaQD2Xb9EuFEnxhgypKmM1iKcmpQYLgXgoD5sOK6DDA/7AeO2adrO8zGwcUVnU593W0bzmdvJ
C+LMPmytLR4/lDkmdiXzbroKGa/ytHxKWtOmnuMcEzKkyqaCsQfrFFrNk0EFtQ3H5gTqNEo9ilzH
GT8/bZM1k+enz+kYp7XRh10ihXsiOXEs5+rlPzn8KuNzNZ20MsT1/+A/aglmj5EHTgIhyAGhXG4b
UB+bBvIIZwRD9eY+nxQabL43nTXj7mF1X0vOWVcEkJjtyell8yyfPC1ifcCGopqz6heEcy1uugKB
SM4Yq6piDIk7EIblgAeaNrWtMfnhRrvF0z1y2621xTo0UxNFas+g+1riQJWuKgWawla53QwC5BPP
wJ4K4BgHhuMFyIC8SMecWJD3v5Pbwzw6Zo+NYVsA3SO33VpLjhh1CCeTvfL8nXrBn1UTSKrpg5WD
5xCochGsNg2KEDFsi0MkN4mLhQvrJPH89AHFbpzQ0UaYdCDECO8lm7CYbxMNtoZ1qjE5D1zKYL1G
vACiOYHcidkYEqgbcMeBaM7Gz6WaLdEWIsxJByIOFhG10l9WpsnTNlwTPCSoqokEQHJZ4BuAYQym
D2sZh4NBMNMJAsotWCo8nwAbhNvAbNkBTIoKWCP6+BBATT7kykTh16wwYcu3XMsYMwF1GkBRq0Pf
MMcBZhbzmbCs7xagL08efvcQx2/LI8MueeRBlFF3ha/DhZwXqnYiQxOeEUos02WUOf8k7kq647i1
856/IktvwIN5WGL0UyI/DzrxNqdHi4lEKiTl2O/X57vVU6GqmuLJ43EWllpsGLgXuMN3B4CtMMMb
3LnLMKaAcExYmcGwcnAQb6F7YxKu2ZbLiI5JKRakSYrtyfN///4kQuHW3krCKEBJrnFwoYYshIH8
ECK0QlfECamY+LLu/fhld49pF+k8DL87uO/T2hOCF6RMyvVJIf9YPZ67Ar6TnCg2xskYnWA1eJL4
KhBMwmSkpBEeVF6dqCOJ7yfpF5ebhcWVnDrYHz/8nbTk1McMqXCD9XKWD5bBN65lBFKqPAYIBtxq
tFwwXoqNBsFjzK9C1ZOFroh1P6hnSKklhtan4z/q/Pb+6Wl7jhyBesIB+AgtfGkWoECkClnwiK8M
cBAPFXGxNg125iVbMpq3I0vpBaurnJjs8w+77d1qyOcJsiaOE26Rqir8/wEYWmFvGwxKqE4xmXgN
tXrvVX3N3p4mX97U07c92Su3QPbanU0zLLqEgTgZZUe+LPuK+AMxqvUJ+BlwmaWmKtO+Zgf/LJxL
vXR203QEGL9AgPHhdJz51x8+0DNCd/eTTMtJuQtiTK+TYMIh/seBAigkkZmpBdFHqdJX9TbKfYWU
jh2vF9QtKHVi54/P4+2UdvBvUCafUnRwHh5GFwaYxeIawCsAa5aBI4CcaPvnK9sZlJ6vvxVmv98N
67+PP8X8b+fj5EHfmoECF0OCqREWkYAKQrMUKw7YqgRQZg3++yuQ84TCjrWtXTCj22Oq4EorAGJo
qL4Q5lYMRoxSqWRREfhR1shwFrFjzDgLM6ZskEq/pPzjuXvaFuC93QZ+ou3rPV07PxGlzGCKnC85
KwQpsmVQw2UFXcHAMhmTtMvJaLdIzXi2nowglsgwky16el49P531CLETH+jJxvvKvWQl6MSUgYKH
FiIijOIVIBiX5UXTOJp2TJWz3s+octjrSZYB8cmH1f12CAjUIZ9DOKtJVxC/sWxgtBUgKAuyKFZy
q87jyIQtr/I759mvuJzz9z3tQS3QvlpPzPoDbMjTkM+na7xwnnqIZ4Rxg4LLbLPVwTPoN5xOCYkl
GAXEqU75wJvysr4FqiJT9uFExvLobkjH6n4zl2G33/r9/tA5sP4HhWn8rFnkuXiiUFsZRAlkN3TI
zHNLngusRWeK1Lm3XN0s/frbeTLKcyUmYvLhz8/rh08jnKJpoyWC5MEdOB+rT1LAIwkDnKIa8z5b
5lRqTvPU2lD8eEX2b7TMtbTfaMhNT7VcYCXYidRsV8+r7e55aOR72gzVHDMIvjIHs5xDi0lzCvcr
gKsktizPrOomvBYZUZB4DTN0h7ycFrpe45kN65kKboGplaaK8Iipo8tcDWcjj1rcRJROI5D0RkGL
JcIKL4VnITjoBlSsxFchnPPkL7rr1eQ0VmaB8LWYRnn0Z/uAuOPL4+7paZAuYwk3ynNuWVijZQsI
igrOAkAHHEV4EZ3htGNRgI/ildZostZVqzQZ13O2XpIzSoIe7P1/f109ru6h6buT1roBb0QcR8qJ
Za4IMsG6phY1OUQbkiwyK79o6KfzTYhZ3Ob9RH/XgM/nvjm6eXZoqJDjXEmRLpG5TAkGRREoStzA
EdnAffRR2qa+kZyczH8tNzkZ1vEjFqCcF87PgulLHH96Agqi7/UhUU5/gyVdajS6BeZFgQLUkliM
KjPRQtbBJaVceI3gLK12LX6ej+z52+gF/rZ8cl7kMMrd42AU/iTIeODLDbBh0G3uEQhWz5rDHzBS
EuiVG2ZxTpwr50Ju3wTg5xWue63zkI4LLedxF364nnDx991z/Pr88WRgze0hjhGiWisRbWXFVHIa
3gvBDDkuK3VT0r7KVxwnXyb9+GVP9LjGf/nhOYalNtWHk8p6Ta5AFAlwVxrpLOEgwLSoWmFatwbf
ZloLaVFnR3NNaFgQb7M6B16bxz+/PD/c0uOq/hJH47Meqj6qJKpN6gzfqhScf7Iwhg32o8qWpG8T
vz+frqPGLTl/L845ktXX5/OGCG8G79g04mVbaWkOIry3LJlELtJpU51xOU7CpsssN/06C1uBMPi0
+Obrl6dL0KacHDKAORXZeG6sRSBlECJYFMUwkYK2SZukkprswWienoDVdoGA3dTUrB8+g/tDVlkA
t5P21SZ1NJBhW2BOYEUqwl/gy4bwrerIa3P5NTKcsMqi/OKLntb9Aq1BmYnC/bL7/PC8+/Vu9z8n
I3Sy8YEESDWlqawJ6w5TqLTAsWXpGVhBIGpMTSW+huz5MteKbNNxNz39CwqJYzwpw/rp8wX5KjVA
+pg5j5IJZSQFbxE4s0UKU1wBa0EMBn2MfC9z9Gv7pbVnfvPnQmGRGbzkUCbJoknurGalNuyjhiQm
FeFXEDd6XqyGaXvzgtDPZXnIz6XnaaFK4ldCno3L6CLUd0KSMdbN+tKyYWDKMRUihEHrwLDPppVa
XSqTlOdokpt+nXkW3K8huEd1Tu/jh1kGpNRAiWHOTIuIGyRONgqbmSmuOGUFsEf7izIgF/o6ttb7
eSjqN8JP5IT8/q93290D4W9PlkK4ITLSMItKwT5IevEaUDUCfhvPtJReyaRCEvKbFYth5uuAY/j6
pidwwbBv3GYCvg+r5of7/d1vXy9dHUId4ujhA5kNyIWMOKVCoFWpSNFdhcy0pDzctm/15UB6YZ2X
ejq6gT1fbsEMbmdmsNw9bX7ZIbbbDokBP1hASofc6oMTKRFxA9fkOnAo2Trob0aE13Kovmhd3csM
dQtcCevGQ256ehcOZ2u2J03515/q9xdN0WR1VA4hFMAlT8UAlWNgISbPXAslIcjDCbxsdYae7Hc/
vqIX4rJ6T/RCyxB85W6y89vd0389P3x5OnsfaMOtGoTJD+kuKU2qWXLWfMXWN+DWYCxnPnDERyYF
bvirguvDQicTSgOunMN84JixIPk8wA5ShAkKGDYwr77QY6SUBh986qFFoPJkTYlwRwpnY6hjNaXI
UvDAazqW1PRbpJnGFCwPHo/oeVywzfjh5uQYflltEb5vdhOpAx63sdoCcMWpFxcaEgS8XoHRro7D
ULv0RlLXUzAhfrtAvIFX23QZkBJ/apfuPglVl4MhProaUw1HHKkYJ/AKFcwsAg4h7GixaC6b+oYK
0QJXEiD4pic5zJUlaL3ey4OGP6z/czPqsDRiMLNUfSjBayadqJCmBuLgA5lNEpKFaAkRR++Lx/Pc
9GttFgiwZ2Q1edkF4CpQyoWoyBoAVlD9MysceqbkoqPav5aOlxB8qcv58X7Onhy7oGMIwKc6trlg
IpwgleqkOTS8aWeEoEp/SwD7iOQN85Qq57DWVQtra3tVKmu8xBUlGo3omVjN0/wwXdOY9/3q6/3m
44UNg8BFUS7r8IHOWVsY81oYGKAKhPUs6OaZLzw5qqrlpazE/7WJoafnigB3Y256BhckybizJG2G
hoF8iDOP0gRkrSn94rNGqBZh5j1llGrJLAljWLWyFCm8q2K5r2U+aU+TWxAnE6aNnYdbw+fMObDM
IXUSbTAJUgOyaoBZkxVGwEkmQ1GiqiaUNy9VXMbz9nTt5o492O1q6FLC4DuI1u+XkFYTMSlpnYQw
LGaFiMYDhSN8LNQqQQ0DURs7iWe7WW76pdYL6+/UREKfvux2UNNHgJPf7u96MEbtU3JI7g9/UykI
ziwp7BbIwW7VJljgSTKva+RFJV+seAv39mGg6pclojqEOB3W78BOL+zAfqqjuX0zv+ZS5nAdFb5P
E07JESdUICTK5ArHaEqL/2x+bbxJ7RXjJ4N6zvdzl7Pi0ganpnHKqQGfwBlU9ZCaG3X5h9QKdykw
rxzcgLUNYJNqgU3qKrSsqf6zXf7jETc9xW6JjWlv9KnZ9uPdCYsZwzm5eTgow6E3jNcK4+oIWhap
WCxFBWuiLsK/ibgeKfjbu5c7cP/2ruNP+rk5Xcmghutn0OdPgyW+JCHlyS1HzSMH3kKQLCzgS9KI
BYCgk4EOxiZK9HHRaI1n7EkJeoGU9bQ/8O5+fzbsWodjy6KQuYSqYQZyHRp6CkucW6D6aCuQr+cv
tyxeZu1pWi9tz16c24yePl3JjSqsTIV9GE7VcO4C8E4DJbQGLF8UdR24SXdMP1dHhwoLdKjV1MN8
+bR6pqdiL30PJ/MB8FRUod58CUVSUlPZuWZWfEghCuCh9GLzZD9zT9tKLdEGML+dtxse0u/jlthU
HOCkC8wZkiZusFEuVVY5r9bzRhXC19VETvO/1Ek4TcKv1MINAvzwnHIud6vf7h+e6PWW41vjx4fX
z6HJkLbKJfHmqJYWcdpaapaoi0sDrwTbOKXJ+9N+ed4JiUuHvznH5/+4JNEMhbSwiDxTtTtHKsfn
qOmaV2AF5rKYUnSQE2L+sZRBwxK7pXX3J4V83H1++H23v/u063KiymjVgnAsyKHNgS5lScQOLiYE
DEDZvLZFUZvO1xGzBNlX++123j5yuCd78J/Smls5+JCShUrSASYI+BCPswn4N4HAaq0wx7zii2nS
Kz11+fjdTU/ZfO8Ahrb7rewg4XnnuHa3wg4d/tT2XinqogwoPD30wTtWrFYI7OkO0IvdSQsqioWX
qBFn8/Fxd/d5u/rEVk/3Z1FSAKhU9abNcyHWCNxsQlLYsoDNo167QJVZmzV14/cCNZ+wp8dvF+jx
u0n35tOxVedkzZwHIBgo4jnQbT/FnLLAzZANOB4hmBQyumgkIpoXIXM384S0/QJpYXa75oBZn/68
f/64667VkXVzQ75y+JsUwquWDF3VGvp+CLZ6mTwTpoXmvUmOv/2djQMu/TCnbw5ez4P6jQjz4GEt
+LR75cNu9bj5eOhlvT0WpehvkmTqJaSgOFKgrGzi0DlEOMIJbeGtA9fm7eLKMyHX8M/x645JIfQC
k+JcJPj+XZvmoFRUPEvJtODUldCoE03R7aJsbJHV6mjeKAd1XrwjWe4XSFbczQ0hXe5c3d3vHsed
dKnAO3FyTYrjUEKrVHIrzLfgSEiN9vWVvSvn+a92rZxHdBx4MU9crH3YnDZ9OHYEFPTbZ07GyPNb
d2jtSiXAcmfP4Mug+rDrLEkP5JBszM5VX82k6Dybr6dmoWEFPzwnFD6t7n+7216uD1L2JxhtcdKC
NUfFywjJTioXYJYqWykI28qk7DeeZbL83K+tgYQnyO6cNgjBnTo1bSsKMJwznciTpWBYojQiwqEa
Ci/Ot/iSEVxIGawHpZ+Ss9odLmNfpGv1dXv3cPt8vDgV6V/na1ziVhysgCAjQK1ETlXPTCTj17Jj
yXPHsrDJGmetbN9wvKPJrwjaaMRNT/fC0a7X/HS0v5cPP51DCbi7IRtGHYIAyZWVQgUBT1dZMySt
6qqy1c256P6iEuCFvo6t7UKz/Ho7uy1NT+jc//u7w/sQBwOgDu1rNacylM9sLdS2oRBZg82QvVSy
tFhe1yxwXOCqyZ0Pvd50OBrQ87pecMfb7dTaHX8p5PBU11HVT40Gwh61RTsdEveMAyRAZ+lX/QKN
AkEUCGHiARDsNVwvLHXlRt58YM/adt4QveGSL1Ryh9/+Aw/kCFV4MfBTAQqp3ZBVRTVDlROLXFBa
jKeUY5I1fDsrQhNfz4jQtzc9dWKJZDFrhts8rAiDU71jKOvD1wM1FkdZe6rYcgFi8QkogOciRBD+
G63PNOU1SvHVhMy50Gy0lZNq8+93Q8tlW9Fvaz0qyUlNBkVpWqZGBQeeKMdhqOs8wnYFAZBeEM60
bF4jMqcVrqjJ8dubnlq1xIKZoa8NPYh1/K11Yz9fqssxeEDiRM5Rx4zQxxTGbTHZN6CZ1/Wo9itc
zS2Nxkz4sAt8ENI/xJB/PH16HvWADBcQEG7oAEhlFfUyNXi0UB0VJkTgwJRaZDG5BzOapFvd6nnc
gx/uJ851TY+1nq9CWCKiJW8sJJPJSC9aBE4PcITERDU6WXoByMuXfOt4yp6khfrFZiiE7c/g59cf
+hyD8Ycmr5SVHd7J8YFe9FHUSO0pBx64VNVVY9sb3XGaEdHx4PSCGXCr7UQ4L891vPtxCBBgkIfA
CLsJcMAPt3EELK8UQtE9JwAEjzAzCuPJmIVojMkxv9zmO0x+pXb24wTwg8oFiXAECVQHt7rWkPPL
M/ZWUE5Xh+Az4CYLAwQNHJ8a4jtTRMxGZaE6CDoHXvPZeyIXGrrxw3Mn4mEvbtMFlAa6uj2UCejB
GNMAAjP5dusSvXCWmXVZhpBidVNk2k82pmNr+TwE3FrDT8pLz1TQb51/en4cXdh2t8eOYGldAwBj
tmqoUKqK3tASjNPzZFbD8sv6//i+Rk94z3cwC3yHs9nYPO23S6EJQEXyjrycF7BcWQOQWw1RLrAX
IoXi9cRyjWbqKNi4uQfbbvw5KnjYjigYPCy1IeqaItM60dpGMSqbMC8AelRrBf5vUqzfXll7qxbW
nmXahl91/8uObkDuHo9XIc+FK6Oo3pqkiTzUTL4e9lvik7cNCMwk7ZVDtFReFWsuLXUFCyyMnDA3
1//tVm4mzNFNrs0nsljq1oQhV00fhptoWjUNd5QVdYsbCp19QOiX6UpxFs2kb98iz++vN7jn9zc9
bfNU2XZ4HcvN2oHGWQXCAkc0cEhcNAD7VsiZGUNVZg4wY5xnmjfdEIUZ8Y07/S8mLo5f3vRULgjx
To9L9V/uECn9x+U6rzKHZHpAdCiZSPQ4mZWRJc0VG5qcRYlZdGrUlen7CXtyVgvWbLeahk1fHu/G
N0Vuf6J/n6p60g5otnLeYhWsRE750CzhiCESxkojfKZ2ijfpsPqpJ2U8avhqwt56gb31VG1/+Prp
+e754evm40yRqF5kTs2Wp49D/lIiQAqSZUulLOg03dgqZNZqarJ5pV5VoXlh6e6G+nRYz+Z6rsA7
EeR+07H5+yCQ//Ld8fmC/+3typrjuJH0e/+KfpkIOWaLgftQhB5QOLSyREkrkjPeJ0YfRYkhHhoe
Hnt//WaiuqsbdbBpmzH9IMtVEJA4Kg9k5pdZnQ9M0FAndJyD3cdphG2zoERFByoGNZZ4S17Mss/j
TwAD5XezYgIjPrSGLvts6X1zt2zubu/3FX1Q5Y1LYL5Ta1DMugSy30nQTZKPEmyWQ5Ay207Hid2+
LchlZMiU8GHfDszHHEEORJsGmzMVPHXUk8rXBAO8JXzchJvKJ8dAyw88Kvunv532XY/UkfMidNOD
Ido68LcnRkrg8aCgHvGMReQwojUAs0TAGc4w5sTAB5+YiVppJgJ5Hk7W0775gnBhhkpgoxDgpKzx
mT62wG5guGieIVzyf1ElcI5ahRe8CVaZGwEcX0v0rCYDKqo1IIefXupt31PhH5vXs5LEkQVX6Nqh
vZDo7y0w816QJGoPeQpcoxEWiMJar7ZKHGNeDJwaR4SuwIL1SgnBgd0+Kza3G2syNHrzvpiJVsO7
UHjIturv48NlhzDA0ZQB0SRA2U5gwNQ1xk4JjCW2lbPUcqoCJ7GXirTrohh5MYKH1ixMZwCcvkt9
v4RlnFjlVEWY9wiXFWBsMBPhBFDBiccUoBfyS+xGL4leDE39ZkmWvVuX/25dg2UQgGcmANeKFaGI
2aY4gkULMHLrwDEmW0qmnrPTm84noLzal7OSvtUY0R2M0OPNLmAPl1kxMP6FlBU1igGh8HWBxYrO
bVVbyqQSE0mzXUfl8CMwNliiYiS7dAi/aOQmGFUzWwcVXEWTQn1EY9YK2B1MJUYRs4vV9cGrwEMQ
fmWbWUnwULNq4On2Q7lcPWJe+16EMaVHPONngehFRlQx0Jxht42C5aSqCrWEfZdReyP60YZFX7Ny
yKHd1lyoPnbA5c33faVnY7IwgkuJedw1aAWYvApLCZoPAgPJCtN2o0vEJKFfJHj+ZoKpwov9OV2Q
i6Fad0H5qndCPrc1ojFkfQvmmh2y+cYYJwafl+YC8wJFjh/MoVpRgIHqTEycUB2flXo8MtCEhjps
OCvnsB6b2DqHDcHOFhAVZ3usdgunEXitosQYCY/JgxRDOmorgOMJq8DY0Zz2uO1Elz2ymhGyVOcR
3kYO0JGoBB6Nlt7UVaJ450o1HB6jwfxl1oCGYJkLrI+IVPRWUqLsCCWIJbVqfdPpl5Nvi7tm3cdC
Ap0vKERfJaCk4B2QAo0QzClfa81JXYPCQl8I6KwkoSRfszHy14PUqE306OaK5ygNvsy9KFjGHPEg
6UBdxJQErLHgLGgE0vngIthl4QC252C4CYWgbNWb2MgJ4XTRc5H+z+Pi7uH/WsdCm4LHeRvB7FNt
NQugPjoO+2PwgtvBJJhTOdxeC/G0xr7reiINs3s/K2kcYSVcLnaQeWcDWC0lDQ/AlWnCWyXM8Da8
1nCepElEh9rK8FKYeWcjh4iPKMHwsCM5F/fe8x9kNBpGmcUUWEEwXJhYVxkNBwVUdcOSAJWS98Lf
il56448tmdndBC5W37p7ONWGJ3galawrzRyteHAgSiTwgJpxKq3HNL/xDP29rgoSxBgbEGrVSzd6
9+nk8e5iscJkMJoz3OzGT2i5MKAwV5TVCFZisOZF5JggzFnNlLD8QMDKtuepO/bN65LqEVF8IZrO
9f79t66Udw+diwLfhKOVEPwMMYk1JqhyCcqMoDzAHyCERxdw12VBiaRDb/mFInJLyc+fWU+Vprbm
2teq8gaDywywGzhAsGywYskg9EtNXiy5cSRvAqhTIyRLsbs4A/ZUZLhQ1V7/J1gvjhn0VCAmH0ZA
1zWrK0JCgFW1DrSAiauzssuSHinH6Olrqd+aqx/I63g+fgL1OwfmMVegyAcC+8gRRww4taiS9HUA
fSRG/jIgvjD0lNJ/9aOczJKOTGbdAcit/v73xfKyCwuxrdyhzgA34RXY1qD2owEAwjRVWvBoE6KP
JTJIS++6KcZfjAT84MMnAGXQ9ZRzIjJqj8JArQg6hrawwwGMerCQKlNLwn1EsMO/GlS336JHuhkh
faVGYNC+Xm2ESE5LbYUJgS83StCta4qHEzPsLcUgKmupERFUJ+n/tDBp35XkrkZWeolo2+zghW8r
tzfY29nyM8EwkBwcUR5SG9ZsgeBKauZBnotoDtyf/xl3VkfLE7fAAzm/akZO+Krp8KCw/MIuC62t
4CAo0Rp4BGwGsWiIgdBUPKIUi5yIGCIdzw/YdVbSMJL+c7Fm/RvC0Cwfv7YIamivEJX9Fcg5Iq1D
DMRUknGHhjaYKixkl6vXlCXivH5eXvZuhKmE7F2LYg7rEagzeNj0ky6KynevJN+kpDgEr5IS4WiA
XXBKIt5pwHFXOnqL6Q3sSS9x0W9J2HJEPjS278lAnv54iU4s/ApB/8isjBodEuY/GpdDp1UA6WYY
bjxoKKCS+qCfi0F19m6ag5wViUZA3ogm1Sy7uIfffqx2sfAE9X3WriHxQcKxFOhpTyA6akFlpXjN
PYGjoNh4MHzXXUnECCDJRdP04Rr8t8eb72AibibfRZLJtjhLjYE0HuRZoOhOQz+CVaCrBApWNVBk
CH/WZVVvmImlLBuV02lGzsGF5L2r1jHG405PYKFVjnZS7XWxYcYzTWklslGdNMg4wfMdXOLMhFRT
+p/z18OLYq75GmQw14HY/Ng8pJNtoYs2DN1EpjyxtvLRYuoHtSB2HKuUiM4y6xXlT1/p5D4nYb1S
n86BjAT9fdFh3tz/6+ryoeG7ywyULQQTI+uEQdkIRw3MAYMxQecV0sjaWsZ97yqj6GZWjLVeDQmg
rEtZWz3eXR2JDgnQHFmRT7UxielkQVeUDGjgsP2WmwB6N8EAo2DaWiAFkNWup1k5mhohAUOqS1dk
87BYbyIbNzjjsHZHPLtYQR55UA4rsDvRzQ66AiKeg1ASwAC0Sf6A4fmHcge2lExBZrdviznyYXkL
m42KaTVu4w/bXAmAvD2iOsu7/LccP8KiZSlUISLQZxCwBZi4RXEsQ6hT1L/cpHfUPOVM62kXNpsm
g4kr0mGFr25//L6fE0YJ76AcErMhJQVHDMPWEGfJcIF10SJIJ6Uoi2bCOtnvsyRHsRFy1vapffh0
stOsMeFY5Mp5LcK9dEIkUstKOIbGH3wGLkSBpQt1UF7HUZ/Tn92DHSUTWu3JiCKO81uMTbp/KRzT
uxxX3eFqZjVWSWosyFGdq2gwjremvBKaxeh4YHAAnyO8tn2P071926N6PaRamy6P8dfjy/vVIB6f
COuJ5uhxIYiTUmPyGQfTS/naEEY17Nd/Kh5/R+CsnEMznBgGa42cwRK3mG8iIsEMgr/l9D9pRcw4
MNRx9IRRNJJipVKgsDeWWsOfDRF6GL140KyYmKEj37pBUWJKiJGbr/teB71JA2vDLkwC2wEtPgo7
iNAboC7hxa233tYaVo8F8eJ6xT5JUxgjuxblpNnYpBnp18oYUgWn1uQI/ewL4Ak4NpxYrJzDQWIB
r8Oilt6LZHAM/kLa1EjD3nzo2HxoLz+7Tel5vLl8uG8Tes5u2qS+IpsHQbUpfIxSOoyIV7wCnoFQ
tsoyp0OsdTqczYM9P5HKg6+LGSzlCI9f0b4+sVysvj/+KFx7R225nvzfHBGhtRPJV7rWeD2GdW2w
CHBKojZUkEDks/Am695IBVJmflfQv5J8hH7MKVVlKayTPZgy1l6imYy1EG3EHDcrURlSYAoZMH2q
qBzFeGPn08tH0u6omSqMNXraVsO0UXi4GKSNflvctSD5fIOszdtc4wT8jVvhKsbAMuVMiDazNzlJ
U6iVC8+DBN0MMBFw074sCR/WQIGHF31gxfYzQbaZz2qLT0M3+DSo5BCdWA1KT+UiwygzigDWXlTW
gYSlvCaUH3bG576nOXZ+vU89lcMrAXzYN49O7x7vH+Kvi6vHfBjc133UbZmhFYVDLwmoPwhIpCkW
2YLlNyqQGlg1j+xZYMhjA43PZ6xlMbXF0AECD013neW/pJNHMIaKUJyUXNQyI7EKtKgMIm1bDUoE
VRhfqo0NvSzRopuCgiVbDilYsn5BrVPvuxqkuJTMES0DGHUaVHqOKSxW1r6qU02CNDwJ+qw0O+h2
YuW8L8hcDfNq4SHvV1EMl6uclNZ5N++3GP2MZG4juXWgoVe1k1g5NUZYOlC98ABEkGGU6Rc0vYbU
TLlk++3KufORLVpJtT0kn4EVlF4eT0EOawGbkrAUH94tGqtcBQ+5JrLm0b8UhGU3eEmyHDIceoF1
PEVfa9wEs9pNYj0WS1DRh4okivHcGjOkUqqIkExo0BRDkn/JgdzbzCdiWbvX+1NjdFgvJT/c7sb3
5vfrr3dFYBV3zgQjQ+UTITnuCxiPIxVWbgJNmDkVJtx+e30VRLARQxUedl60H4vrvRpMLWAB9xFV
0+BQcSOOVjVNCCKEKKBWUu57gId7ffTGlmNjDz/F++/ubnnZVTBua/C1yOJOUCWxKJnWmKkfmK7q
XECcJk+Tkaw2+hAo7H7v07GPe43KWRg7MotB2ZsNFsaHBZaSPmmusTbE6hjegYgtEDAp3UyPthV4
PVNGe+YrBhwHy3ejXoO+ckdBioIkkvFpbKzRIafU/ZGm5WwXq5HZrvqXw2fLy3895kjh1s0Oi4RT
wQQfDWYbHCCKxbuwWiYwF9CXSbDS0RaY/yCz3/Y+Pont24Lu1WpoVrP1wF45WS2uFsur5uwei94/
NJtggZ288kkD/7CmAv6HoW8BKyPXtNLA76WTykZhXoqrjBIzoauNNd1fAE74kJHCw36k0S+f/UZ0
dBf6mZdGxbFEeIoo7TB619IA+yh1IIlFUj8PyHPX+/g0du97tA+vDjiI8QF41l1z2vz2gHf2ujUN
2r/ko2ctUzRWoF6CwhmUrQzinxFQenQIJnB6WF5j59McHt/OSgrpGNl0smAzHjT0Ye89obkkCvDV
umbagbqcA2rRHQWsvsJyxgHYnU/yr9Wc273vzYCNzIB2EER3IMCvfj2ynVsvx6ZQ4FYYE5ooFryw
8EctoqlUJF7AqUnO9u7Iy25KCujFCAU72O23H1q52wvJEtLBFteI+oHRfZGABhNqU4E6aY2OxogD
IRV/ICRrj4DZLP62KWtzfLvelQg9eby+hgFew9T84urqfn69WDfz5e/z24dvzd38x90tKEH3oGM+
LO6+Nrkw2sO3y/vti9d5SR4W99/PL27vzn9crl/PWfssez/PV/DnQ/N6TvYf3jcPuc7c5nk58KHu
yV/rHv5nb1awAnk8rK9yedOMjWdhV//YkLN/HM8xPXV/eb9Aq083V7/PMSMK39xezLvdej0/vX1Y
XL0BHevIHM/h0F2uQdq9oUQd0eNXwvztp/n9vzE7f31++/hwDqQ93mTUWBhx/YZSDv/slWR/+2n2
z7vLB2S30AkS0HUNFsLb+b/hJYjRN5oq8v4VhV67obTkrH20N9AbaEXgUTEYdPTKWhhqPvsS3777
9HF++r+f43zi9493X07P3IfZm91vqunm9cy/nd/nqNT5ZU7qGG9NBXk/CxuMaOBZWNCqNUH7/0CY
I3I8+/lk/vO70/nXFtUDOl/dwoHo9cmeaPoK1gokQLP+CZuCrQFNt/9w+2oOO79Yr7HK1xwoQ1G1
t3Y/zd7n0pNzh0/mn25WzcRSmPezY/fhwyc/f/KXsVGOt01fLdbXlzc/TbaGDZ4dN9cIUHu6+Dpn
gk13DE1PTp1/P3975r6EaQokrsLs5GGx+j4/8EOl8Rg+jfNMrTuNT83rSBzP/tksEXbgOK/fVFPB
tHo/Oz8P7tQdIIAxXKzz83fH7m080FYyg71+ePfxfQxwFqZ/1hxZ7PU0/nJ6YAEYaZuefXznP4Wn
SZBCvJ9d5y9xjq6zJ1paXKzNF3Pd7u/0D3r9A5/i6adT92F+cGeP1Nu26X/N4QQ+3hffQ/sd5B+o
orgF89ns/wFQSwMEFAACAAgAb1NOR1hk8XMIBAAAPAsAADYAHABhY2Nlc3NpYmlsaXR5L2FjY2Vz
c2liaWxpdHktb2JqZWN0LWRldGFjaGVkLXN0ZGVyci50eHRVVAkAA4GQHlaBkB5WdXgLAAEE9QEA
AAQUAAAArVZNb6NIEL3zKzjN2NEc+DTQGkVySBw5iYNlO5vLSqihizGzBNimyST/fgvzYexgK5H2
YkT1q1evu6ofvuE843KYveRxEqe/5KCMExGnRJ6nrzSJmRxuKaehAE7k738r3yVVlmXlTVUNI9JM
m8p3a5eQkAMVcPMGYSlokMA8xYSUJqPd6l+Lbz9q3DoreQhuxgBLpoVo43MGqYijGPhh3K1eeBmK
jN/HKTuOTgMULd7HkrYXpVNTqWFX9Vb2qgpCojINRZylS56JTLznMM3z5L0StIeNxpLe8tkB2IpZ
853OvYUUOEWR3X7HktFSWODYdlBTzI4pCKGM9aI5cBFDUfNUktYCD/ai2fjd+jbJApp4wW8IxT7a
ElwMhcaS2e2GaZMgGuIiJE5j0ZM/aXJMkzkMtOGcCJOKrVs1H0sdN/tu3egcS1bLNtEsRwnkZwjc
jEOFufYWz9ja7M8VLeAM5VDKegtJgvR2R6+bE2VyGktIAaJ+Hz1vZoQsaVGsIFoK/rNL6lIux5LT
Y9ad6BzzaeWfKaQqTaEAAke1zhWqL9vXCrT3b3dtSl5N1AGK0xxH7znjCcPmq2onxplozh66Dnmc
C7x/gmdJgp7QiOnpG53j1TpeqkT6Od5qHOvoWUK9JtQtxiAIzxH++aREo2G0qeGEasV4H+Oo43PG
6Qvm/C4qWngT6BOqWaMt09St0MROrNDM0mrqgV2VKUtgSX9hEgccvGmErriBYpc56TIVw9CHMglh
MVtBCPErLKAokGiTVXQjL6f/lvB8v69Q2yZ2tV3CTld23oZfs8rKdy9Y22pPzTYchXV7PCzvJjGa
8mkRw1n1YLVHVgEvmgHtK8KhnS7nhHQGodrtsTPmaNExByF5VojDSo2a0RB5m/5UAL+mgjYLWMdp
60QORVvbnct8iVdjS3ukP5tn0VOwPKXgw46b4x592MTF+EtqL0c7ZU2ZawjxU8O/DR3w/1MPv6NK
dzyWbmkf27AfhibUdmGnFC9GCrvPDlYZ0o4V1Hb2HMu2owNUw8wXNK8qFTkV4fbLBRqP0R1DhUg5
2ALPQoQPjPTn2TvDMY0wUuWjvI+yC8EI8X2VkDKN8Wb6ORr0APcPeY9kENEyET6DBAQMoS9l/GRo
RqfFMnV6WouXdvvErMayjABbMLHru7kq04csw1NHJ4wy/oJu+E+FneyxgamdwVYDiNdY2zmLFUWR
DUGgmYEq+747Wz09Pnje0p+vfXf68DB/vPW9p42/8fypv/aeVu6N4i9vVjNvtfBnT4/uZu49+r6k
2T02qocTrWarBVxn9b/JQpE05wCoQ9QH4kPSlT5CA8uU++vrHEL8+xlKutrhTDB0iu6Iy27JOXrh
zSv+VBnzdIFdkP4DUEsDBAoAAAAAAG5TTkcAAAAAAAAAAAAAAAASABwAYWNjZXNzaWJpbGl0eS9t
YWMvVVQJAAOAkB5WopAeVnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAB9U05Hl4DaV9E4AADJwwAA
MQAcAGFjY2Vzc2liaWxpdHkvbWFjL2FiYnItYWNyb255bS10YWdzLWNyYXNoLWxvZy50eHRVVAkA
A56QHlZIkB5WdXgLAAEE9QEAAAQUAAAA7Fxbc9s4sn4+/BV8mpKToYwLQRKqnGzxmvWMb2U5ydSZ
SqlICrS5kUQNSSX2/vrTIHUhJUox5/hsTdWuHiQHALu/bjQ+NC7MbZ7FoihG6uYTZ/NhuFzOxPCz
iH5NS/njZotSLMqhJ76JWbacw9/q7xa3EPmi3Ibl4+5p+Jx/ymaruSjOP91cfrzyz9+crwUleTgX
37P86/knkRdptijO7fPfbt2xyL+lAOL8haqHT8v4fF1enF+F8c34pY8qF1P4TpNU5KNe5ipryDtL
DUTeqgP4HuKh+fZMcbOpUO+fl2LT5DfL0AxdHVyHZfpNnIGjcum3263D//a3v6m/4y/KnSiW4Iw0
mq2fLR6hnLMvysdC5OqFt1PKEFaU29nq4WKhNh1/zOf3oijvVouFyC8W/xBxKabOajEFY6PqZ9+L
px/aKG768GVPNJ0nrR6gM0XxwlKc36fzrcMIwkzDSMO6itGIsBHjQwtzVUMmQsrNWG33AUBWofA3
aDzkQ6YOMA0wpvoZOHSZ5WWjOcaKvcgWz/NsVagfP1YepZ4dUM/Ammt4SNOZa2nct5nmWL5hu66N
qE8URXHzsHgUU/X+MRfhFJ5DquqlxTIs40f1j5VYAfxdDM3DdKGVVVNF8Z9isSwBwSYs/N/ciWN7
ExDvj8fqYHzxYex/+HTWaCmjCGLjV//uenJx/cm+vIDmnncn24elip7Q+hNF4TQSIlGUT1fqnXiQ
w0m9FmEObTZ1I0XT3quKdNZkcu//dq/uf9bCMEKCcPhDaxZE8If6u2xm/fpFzbWn8/z7kzq++m/3
5vNffJgrdXdBZ637bzR6Ya+hFif8En4Lx3GeLks3y0Xts//adgJGpkCJEQv1831QKVLfqgZRB3YB
A1f2ZzGMl8sRJfhMwf0EmwnFHKtFCdAnEzwarRYpAJ8sy/zdL2N3NAIeeQBPX0PA/NxoNhVJuJqV
k6mYiVIcNH2vvlersmWYFx3Vg6rk09Wbn+tm42yVx6LithjMKX9al+84oF3+y/hWCs6dVTor08VV
ha5VMy7zNC4bFbWKqrJRWjf28zzLd7LvxVN5mxWpdO0GoSvV56u4zPJf08V0XXr/mBb33v9IgWfQ
KTo3FdKzA0TMrLCWFkNolMJ/EvGqDIGmLyDi8kU423jrpz/prW7s21I7Smdp+SwNIIYBfFFOL9PI
fyoh1IaPI8qsM4X2tWoaMlTrWffRzqxiNEpWi1h6F2KizEqgLRvkPkuLds0GEhAHPIcCqnA3zDNF
7wcriiwLsRrWcQgfBMwwIThr6/fKNVgdzMU8y59H4CXjTGH9dIeCWlZU6w72dY9G4XTaKF3KcS2K
GoA0fFxCZLzZRuiHWRaFs5tIzoK70o2AN11F0gbMYP46UF57k54pRk9vxrERJV2QRqN0kZYt92FL
6m43qxQTi50p5n6KtFOpHmq2rCmdCtKtOQHVxaMrhxIYuT90fhmvnVZhghRgHxLEuwmBZfUDxAnm
KFLX7aQa7+bqM4y17LsTFuIEqq5Hxo9iNqsQ6lQdrFv8Ml6Pgw0ryLHJACrvCzUxkHFc72hUiLL+
9wDmG0mRRXEnkluYEbYPbR95L1EyGOqDhhwApkPqhVFfYJQnp4Add+LLcFLcTW4Y9wIqBOPYPAW0
JvJ+ADfcXlHyKpeDvdUqB3Qi/5zls2k9oBA9Yg3paQ01CN/p2gz5RZlnsxkk32trGgYOTgMzOADb
k1INdUyBZDDtCU9HCT0FT1JNXXoaF8NHYBFGAJZ+uEhTj8IywqkpovgUrO8v9ZeFOnA9jrgcQawX
qIgLHuP1Ymk0gt9AJsmj0T+KKnt9Kqs5lUpSydNSOGGep7Uy6QGg/9PrrKay0NKnZswgsu8g8Wg1
uw0fQGcugEfsBLhKiqsVm+rgsGnVBzqRkWv2RBDqQJAdCCA/Tad3IhawIr6CVTBouc+krsHNMoT0
9vOvO/V1qgSjbVMlM8fFw7b4W5ZO1/+QNpj4wIg6tjmsCLHVL4hMwdF0219tqe4shWzuuCXdT9Ws
sel+2fDNmn2aZgEj2bcXo1FzLjT5vl01gso6Uw5c3i8YpyYw+j4aWBFkRdnWs7Zr0AVz87jcooCV
fLiuqHqCdfMfQf1wJjSEXKLq5otbYODHsAHq3fq3aFhwe8yCA9+vo2dw4IQ3Z72sfT+okK3VeCKG
LDX/qaurX0dflXmDe8sVuHBECGQZBPf0KqYmOez9XTSvizadXxkILLUQVXIK4LpMlsAMCsNs0H58
LbPmc1MmcIT0G4ocW1bS0rmReRUuJe56Vd8fLibgyEORNWkg4F1CeyGNaSQS1PLseqvvkCp6wCRr
n9ay6iUBhlUO6Tkv6iJOsLqn99B/nRsOHdhO7Dl0tH6vvq9dbjbXarC+IP0m0pBhRsPjVtwsth6u
9aGGPgsmAmL0296hmBtWzdMw7V1mGYQcJAlJls8hUfhaa5H7ZIPNsjWcjbBOpWlmX1URIydUSQap
ZgQKi6N1CzeoN5g4qGtNcVJJkAEHVhl5S52ZJIklooiwCKuTiRvcfby+vLm5nVyMJ659eXlx/WFy
8/F+cn8zsSfjm493ro8mt/5dcHN3NQk+Xrv3FzfXk0k1NSmE99Ma0tggtdbaAi+rN00KJGNdJwpF
fSVSkTQlwo9M3ihWKO4pigiYu5qCxksRp0kaS68jrtAWd/394j7LZlH2dBitlUAmdBpCGgFy3FUu
N//9b/AlRV9UO2PSYmIolPaVakamuiaUa0geK7FuNp9n0nLdBKB6X5EMkuaJM8virx8XZTrbir2S
wwqmpstUzq0S9ee0fAxgwStyyflMoa0hbC+Xx4ZwpSvUrYjoQp14t+OtEhlLOtUVavQUFVo8UrXf
r8dyjyiN655d7GO/CouvQGdgljxzGNXbksBa9Ubwl4ooIPDMfsohR+TxgfJ8tfhSrbypQq1+Ag1u
WlRtibsKU9mlXEcKbY203X56pzROEbViBOPiaRlP5rUUajFFh9E1SyMoHU6f4Y+DE4EWpkSEIoI4
bQrhXNHxi8/NmhSHBAkNjtS1JFjWDHZmSEtbu//z+YjjM0UnFWAAOz2CuAU4FjpLpjA3hXkVVduT
ADyqtvZBQPFclGI++SryhZi1ZTZFGVOLCiMEZpFnGX9U7XNRrvIKO6r283fSlvXxQUtcC9iU8wRZ
6qbh5Psf9R/Vsg9Vm9O9pMVJxGszm6Iw3RpMTh55SJeuK7V5uIAJM+/vH90ALv8q5FAz9JZXNrI7
uqwpg+t6okMCO9m0n8wf8km6+JZ9rciR8o1jegjEwCJtgVv3MLJ1D/13iwf9381g1t9gMwlxCPwk
46Z4mMDiddll6wsEiSmshTaC5Dyp750/vSSxSTBrJjZbpowfb7Oa3iy8dwD0ErEMppKDfAljA++d
2rxCwtQ+ivnhFGiQCDHIDa7H1fx9v+1VXa/OQHoFiGVxvgu3KJs+V/FhVWca/SSZJNxJ2s4t1KxO
I3pGbczVA0HbmDVGTZK+Hn+8u9wtcy6zcPonaPo/Qf3/GtT7wg6SawvDt6m+/X2vOwd1f56pk1wU
1RpIFlTrvi/VKs/aO/d7iaapFYEbrsd1PE2qrK1eq1H8ZyL/2BiyXm8M8VceQ+afmehCKie6Qsy/
h2k5KdIHWMd3jZL4BwlIxCmZxkhdhIusmAkhhxpB2+ktfvt2iLvz2KYUK0R6BMuH3RZL+ZgW6zxm
NKoET5Isb+zWxI95tshGo+kqr0Lk3SxbPKjyq7lTU9W9w7Ofq02L+jOTd0Kau7d97xQIPULmVI3m
4QzWj6ORdGG1iAzCWdGxoyQXme+2reUBehpfrUrx9P6nJtY/Y5G05Wc1gtVuvcWnVweLWwXDx5Hc
dNL72hdOebKz7+9CbjwWcQhz1MO/3r7q+NlUB5+EvDciz5pJ7zsPYFIU6/smQRDE9UbFeGNcta9r
qQNgEmnBJJKH5kAAve8kCD02cCNI7OJ5Ed/DwvxdC8Rmo3wP2Zuzwdn70QiQ5c+3Wbqoj604lVet
1nLAEcBx+zcWXoKLQSL5f8O1Ji1/B2+7Wcf3IMqrYNar0TB/PRrG6HVp2BqNtqewKnRBNpuli4f/
ZC9/rezlhwJjZlkYq3vQuLk3/n94XSBBsNQXrXP5OiLWF2ur2wJpOEv/KdaaqiFOmF4dwjfbgrfl
7hCj/Qc7TQSj9R778SFbnbg2t/OpPDmw+vIKIiypVX0vk/vj2pg6qGvBwNsaVX3Mg431JaLX4Yre
A/wEV+DX5Qqkxutr1t/T8lHenF/ft1ar63XqwNC1KC3PRoqq5uHTqOMeNFREzQrZBcKYcjA6j1tP
bD5QMd1WSKCmobPQBGqRNemRR4ptBaF1ofyV2pdNWUxMp5TVTxxW0EQqUXPrUIncoFVzfvAIrmRh
dAQWxgcVRDekJZi0vBLGaBpG1SO0QxaWFfqxCnYAK+GWVJIu91xfX4tW82S2JwsjguQuf066ehFk
KZfZQxpD9u3efqxv+utKdQ24uhu/vvu/fdJQ7uWMcL2aR5tXOrCuKIqTLsL8Wb2YV1cElM1196ft
TXdVU9uFIQTAy99+GVSvf2jq9v0P9V1gWrAE40zzrYBp1HOo5jAz0FzbDDi3iKlT9P6vfW2+5RFK
OtxESZLo6lsY6GsmlxeCxo/pfD36Bwg8QT1dR5RSLfC5rlEzsDWObKYxxD3EMea+E3R54pjUPVxx
F64YIlJ9uzso38eEscdd4iMNcd3VqO74mmPLtz+QZ+mmYQa+Qfv2TuNYHrzb8TLNAZamJcwy8YEl
UKgnSVjRq/vhN/niyNDe2ME4H1I2xBjssQzbtrnpaJaBTY1S29Qs6liaZdmIB8TklmOBPeOKos8v
0yiH8XAebMwozqWbP8DYeUzjotu8u/W2RHF+CKZpiBFWTNg2xJgyue/RcbrfMXSwwU0e+FTzmSkD
hrmaBeZpmBiY6AEyHV9/UefUBU1wph4fxrFpoChJOq5NXYqHMH7ugkiYG1DboxpzdKJR2zc0xwwc
zfZN5DiBSwzjBMRa7tEo2rZoITfj6BC5iIB7yYlUpAO7oQcGDZihcdN1IFY4RA0BZgog3IhrMuz4
Thf2tuRu9O02TfwWiQ/DglNiHnr+KHAbAsmGuLAcYmjUJbZmA4loiHETCMbjTuAccfpxxOvKJtTQ
oodzQmgZ4YZUTtx8rOkFeSSwXINrru5ABDNPDkzma5y4HqbE4kFgv/8XvabXsmFqHhrGiagM2+Pb
1VK+NtckTdPlzAosRwPOhMAJ5LgkQDfIIAyZBNmEkBcQeVNwE90UQ7qzjw4KgcvpmgHdq3E3/xFu
6zAePQ2ZHGvUd4hm28TTuMUMGKIcABqvy38NKG0jCOowQk6UrXziu4jiuhuT6vLETicYNsTwPHzL
mMe2pQcYJiqHUI1iH4jdx7pmGxb3Pd3zLRQcGnabp98gU27Yt5vibVjEPBdp0ebJvcqWSRGmhyZF
FDgzqvrl7uK2u1d8CwapR4nmAx0CkVNPsykQj4t1JzB1z9Nd/zV7pQFEqYHKzNSITSZ2BmwLOSzO
oU/kXQJ1QCgf6jLGbU+nDlAic30bOMaEQWtRQ7ORwWEm5a7NZCCtilwqPJcPN1RZrEMVFFr76eTW
lmFtvD2dy5cmynrvTx3goZQB39KL4CVbZ0B2xIO5nRmB5vgu13ygb0vXLWnIS0KgS1O3U7tatq20
og4rozrId0vBhSgrG9ehQXRc+Rh5BkUeo5prmjB5+i4DHmGm5gcOki/DUsxow8e1sPMjYtu4In6I
K4z4nvcbWxwDY8ilpxEzhtiU3kYOCuzAgACwLQDnA3U7AdGAnFxk+34AXHIyZnfCu5zrNuqVNsrw
EHoU6ZKapUsDGKD1W5Abd2KMYWY0ZNCahFEDxplDATi4D2u2YyMYZ36gM8swLPt09te4Y7RZYHRH
RvOZ+/ELhuQ+bKVtHju0OSZWZfOuuwoRr/K0fE5a3SafYwwTMqQypgLPhYUWrfpJo5xamm0xAvkZ
pS5Fjm17p7ttvFZyuvvsjnZKG33YZVK4Z5Idx2Im314Uw28ivpTdSatAXP8L/iHXkJaHXBgkQEE2
GOUwS4O82NCQS5hOMGRtzulZraHmR91ZK+5uVte17Jx2MYDA+p6dbjbL8vHzIlYH+pBXfVb9gnGO
yQyHIzDJ9rDMJjxYsgRcM20YgYZFLdMjrx60WzzdLbfVStuswzCtlgwJ675XOZApq5zDDW7J5MQI
AuQTV8OuJHCMA812A6TBxE49RkxIXH6QnIR5dCweG822ALpbbquVlh3NtHxbKDPCVlr+Qf4PBXrV
gaTqPlgxuDaB7BaWT2AUQkSzTAZMbhAHcwfWR/x094HEbpxQ0UaYdCDECO9NNmEx20402BzWU43B
WOBQHdZpxA2AzQnMnVj3YAJ1AmbbwOa6d2qq2QptIcKMdCBi24RoM09lZZo8b+ma4CFBVVLHAZKj
B74GGDwIfVjD2AwCQjfsIKDMhHTx9ATYENwGZokOYIJXwBrs4wOBGmzIZIjCr1FhwqZvOqbm6RwS
TYAiV4W+ZngB1k3d17lp/jBX+1/irqQ5rhtJ3/lL+gIG9uWI1e0Zu622on2dqI0WZyRSI1Ieu3/9
fPlqxXsoijHN8BxslVgQkAnk8uUC8PXOo46HxNrzs1uN+NktrAw1O79bPew+PhF2krcW/yYQWzZp
pWMrzPAGd+4yjCkgHBNWZjCsHBzEW+jeJQnXbMt5RMekFANpkmJ79Pzf/XAUoXBrbyVhFKAk1zi4
UFP2wUB+CBFaoSsCnVRMfFn3fvq8e8C0Qzr3w+/37vu49ozggZRJuT4q5O+rL6e2hr9IThQb42SM
TrAaPEl8FQgiYTJS0ohvKq9O1AuJ7yfpF5ebweIUX/UO9qf3fyMtOTZiQyrcZL2c5ZNl8I1rGYGU
Ko8BggG3Gi0XjJdio/ERSPRVqHq20BWx7gf1DCk1Ymh9PP6Dzm8fnp62pyALqCfsgY/QwpdmAQpE
qpAFjwDRAAfxUGMM2jTYmZdsycW8HVlKD6yucmK2zz/utverKY8nyJo4TrhFqqrw7wMwtMLeNhiU
UJ1iMvEaavXeq/qavT1OPt7U47c92Ss3IJuyZAfTDIsuYSCORtmRL8u+Iv5AkG19An4GXGapqcq0
r9nBPwvnUi+d3TQdAcYPCDA+HI8z//Lje3oH6f5hlmE5KndBjOl1Ekw4WehAARSSyMzUguijVOmr
ehvlvkJKx47XA3ULSh3Z+f3T5XZKO/k3KJNPKTo4Dw+jCwPMYnEN4BWANcvAEUDOtP3Tle0MSi/X
3wpzd7eb1v8hvov530/HyYO+NRMFLoYEUyMsIgEVhGYpVhywVQmgzBr892cg5xmFHWtbOzCj20Oq
4EovA2JoqL4Q5lZMRkwIy8miIvCjtJfhLGLHmHEWZkzZIJV+Sfkv5+5pG8B7Kp8eafv6QPfmj0Qp
M5ki50vOCkGKbBnUcFlBVzCwTMYk7XIy2g2puZytJyOIERlmtkVPz6vnp5MeIXbiEz3ZeF+5l6wE
nZgyUPDQQkSEUbwCBOOyvGgaL6a9pMpZ7xdUOez1LMuA+OT96mE7BQRqn88hnNWkK4jfWDYw2goQ
lAVZFCu5VedxZMKWV/md0+xXXM7p+572oAa0r9Yzs/4IG/I05fHpHjKcp57iGWHcpOAy22x18Az6
DadTQmIJRgFxqlM+8Ka8rG+BqsiUvT+SMR7dDelYvdssZdjdbf3d3b71Yf1PCtP4SbPIc/FEobYy
iBLIbuiQmeeWPBdYi84UqXNvubpZ+vW3y2SU50rMxOT9H5/Wjx8vcIqmjZYIkid34HysPkkBjyQM
5VAb8z5b5hSlUHlqbSp6vCL7d7HMtbTfxZCbnmo5YCXYmdRsV8+r7e556kR82kxVHDMJvjJ7s5xD
i0lzCvcrgKsktizPrOomvBYZUZB4DTN0Cb4cF7pe21kM65kKbsDUSlNJ+4Kpg8tcTWcjD1rcRJRO
I5D0RkGLJcIKL4VnITjoBlSsxFchnNPkL7rr1ew0VmZA+FrMozz6f3uPuOPzl93T0yRdxhJulKfc
srBGyxYQFBWcBYAOOIrwIjrDaceiAB/FK63RbK2rVmk2rudsPZIzSoLu7f1/f119WT1A03dHrXUT
3og4jpQTy1wRZIJ1TS1qcog2JFlkVn5o6OfzzYgZbvPdTH/XgM+nxj+6OrfvCJGXuZIiXSJzmRIM
iiJQlLiBI7KB++ijtE19Izk5m/9abnI2rONHDKCcF84vgulzHH98wwqi7/U+UU5/giVdajS6BeZF
gQLUkliMKjPRQtbBJaVceI3gjFa7Fj8vR/b8bfSAvy2fnRc5jHL/ZTIKfxBk3PPlJtgw6Tb3CASr
Z83hfzBSEuiVG2ZxTpwr50Ju3wTgpxWue63TkI4LLZdxF364nnHxt91z/Pr84Whgze0+jhGiWisR
bWXFVHIa3gvBDDkuK3VT0r7KVxwmH5N++LInemMHRG9OMSz12T4eVdZrcgWiSIC70khnCQcBpkXV
CtO6Nfg201pIQ529mGtGw0C8zeoUeG2+/PH5+fGWXof15zgan/VU9VElUXFVZ/hWpeD8k4UxbLAf
VbYkfZv5/eV0HTVu5Py9OOVIVl+fTxsivJm8Y9OIl22lpTmI8N6yZBK5SKdNdcblOAubzrPc9OsM
tgJh8HHxzdfPT+egTTk5ZQBzKrLx3FiLQMogRLAoimEiBW2TNkklNduDi3l6AlbbAQG7ualZP34C
9/ussgBun2rGTepoIMO2wJzAilSEv8CXDeFb1ZHX5vJrZDhhlaH84oue1rsBrUGZmcL9vPv0+Lz7
5X73P0cjdLTxgQRINaWprAnrDlOotMCxZekZWEEgakxNJb6G7OUy14ps83E3Pf0DhcQxHpVh/fTp
jHyVmiB9zJxHyYQykoK3CJzZIoUproC1ICaDfol8z3P0a/vR2gu/+fdCYZGZvORUJsmiSe6sZqU2
7KOGJCYV4VcQN3perIZpe/OC0N/LeMjfS8/ToEriV0KejMvFTa6/CEnGWDfrS8uGgSnHVIgQBq0D
wz6bVmp1qcxSnheT3PTrLLPgfg3BPahz+iG+X2RASg2UGObMtIi4QeJko7CZmeKKU1YAe7Q/KQNy
pq9ja323DEX9RviZnJDf/+V+u3sk/O3JUgg3RUYaZlEp2AdJT3YDqkbAb+OZltIrmVRIQn6zYjHN
fB1wTF/f9AQODPvGbWbge79qfny4u//167mrQ6h9HD19ILMBuZARp1QItCoVKbqrkJmWlIfb9q2+
HEgP1nmpp6Mb2PPlBmZwuzCD5f5p8/MOsd12Sgz4yQJSOuRW751IiYgbuCbXgUPJ1kF/MyK8lkP1
RevqXmaoW+BKWHc55Kand3A4W7M9asq/vavfnTVFk9VROYRQAJc8FQNUjoGFmDxzLZSEIA8n8LLV
mZrKv//pFb0Q59V7ogctQ/CVu9nOb3dP//X8+Pnp5H2gDbdqEiY/pbukNKlmyVnzFVvfgFuDsZz5
wBEfmRS44a8KrvcLHU0oDbhyDsuBl4wFyZcBNr3AO0MB0wbm1Wd6TZXS4JNP3bcIVJ6sKRHuSOFs
DHWqphRZCh54TceSmn6LNNMlBePBlyN6Hge2GT/cHB3Dz6stwvfNbiZ1wOM2VlsArjj14EJDgoDX
KzDa1XEYapfeSOp6CmbEbwfEG3i1TZcBKfFdO7cnSqi6nAzxwdWYajjiSMU4gVeoYGYRcAhhR4tF
c9nUN1SIFriSAME3PclhqSxB6/Wd3Gv44/o/NxfNiEZMZpaqDyV4zaQTFdLUQBx8ILNJQrIQLSHi
6H3x5Tw3/VqbAQH2hKxmT9MAXAVKuRAVWQPACqp/ZoVDz5RcdFT719LxEoIvdZwf7+fsybEDHUMA
PtexzRkT4QSpVCfNvuFNOyMEVfpbAthHJG+Yp1Q5h7WuWlhb26tSWZdLXFGiixE9E6tlmh+max7z
/rD6+rD5cGbDIHBRlMvaf6Bz1hbGvBYGBqgCYT0LunnmC0+Oqmp5lJX4vzYx9PRcEeBuzE3P4ECS
jDtJ0mZqGMj7OPMgTUDWmtIvPmuEahFm3lNGqZbMkjCGVStLkcK7KsZ9LctJe5rcQJxMmDd27q89
nzLnwDL71Em0wSRIDciqAWZNVhgBJ5kMRYmqmlDevFRxuZy3p2u3dOzBbldTlxIG30O0fjuHtJqI
SUnrJIRhMStENB4oHOFjoVYJahiI2thZPNvNctMvtR6sv1MzCX36vNtBTb8AnPz6cN+DMWqfklNy
f/qTSkFwZklht0AOdqs2wQJPknldIy8q+WLFW7i39xNVP4+I6hDifFi/Azs92IG7uY7m9s38mkuZ
w3VU+D5NOCVHnFCBkCiTKxyjKS3+q/m1y01qrxg/G9Rzfrd0OSsubXBqHqcce9UJnEFV96m5i4b4
kFrhLgXmlYMbsLYBbFItsEldhZY11X/1msLliJueYjdiY94bfWy2/XB/xGLGcE5uHg7KcOgN47XC
uDqClkUqFktRwZqoi/BvIq4HCv76/csduH/9vuNP+qU5Xcmgpmtn0OePkyU+JyHl0S1HzSMH3kKQ
LCzgS9KIBYCgk4EOxiZK9HFotC5n7EkJekDKet4feP9wdzLsWodDy6KQuYSqYQZynRp6CkucW6D6
aCuQr+cvtyyeZ+1pWo+2506c2oyePl7JjSqsTIV9GE7VcO4C8E4DJbQGLF8UdR24WXdMP1dHhwoD
OtRq7mE+f1w901u3576Ho/kAeCqqUG++hCIpqansXDMrPqQQBfBQerF5sp+5p22lRrQBzG+X7Yb7
9PtlS2wqDnDSBeYMSRM32CiXKqucV+t5owrh62oix/lf6iScJ+FXanCDAD88pZzL/erXh8cnen7m
8Fj64eX4U2gypa1ySbw5qqVFnLaWmiXq4tLAK8E2Tmny/rRfnndG4ujwN6f4/J/nJJqhkBYWkWeq
dudI5fgcNV1wDazAXBZTig5yRsw/Rxk0LLEbrXt3VMgvu0+Pv+3u7j/uupyoMlq1IBwLcmpzoFtl
ErGDiwkBA1A2r20oavP5OmJGkH11t90u20f292P3/lNacysnH1KyUEk6wAQBH+JxNgF/JxBYrRXm
kFd8MU16pacuH7676Slb7h3A0PZuKztIeNo5rt2tsFOHP7W9V4q6KAMKTw998I4VqxUCe7oD9GJ3
0kBFsfCIGnEyHx9295+2q49s9fRwEiUFgEpVb9o8F2KNwM0mJIUtC9g86rULVJm1WVM3fi9Qywl7
evx2QI/fzbo3nw6tOkdr5jwAwUQRz4GuKyrmFN2Rg2zA8QjBpJDRRSMR0bwImbuZZ6TdDUgLi9s1
e8z69MfD84dddy+QrJub8pXTn6QQXrVk6KrW1PdDsNXL5JkwLTTvTXL87e9s7HHp+yV9S/B6GtRv
RFgGD2vB590r73erL5sP+17W20NRiv4kSaZeQgqKIwXKyiYOnUOEI5zQFt46cG3eLq48EXIN/xy+
7pgUQg+YFKciwXfft3kOSkXFs5RMC05dCY060RTdLsrGFlmtjuaNclCnxTuS5d2AZEWvicwNId1O
Xd0/7L5cdtKlAu/EyTUpjkMJrVLJrTDfgiMhNdrXV/aunOa/2rVyGtFx4MUycbH2YXPc9OnYEVDQ
r885GiPPb92+tSuVAMudPYMvg+rDrrMkPZBDsjE7V301s6LzYr6emkHDCn54Sih8XD38er89Xx+k
7E8w2uKkBWuOipcRkp1ULsAsVbZSELaVWdnvcpbZ8ku/tgYSniG7U9ogBHfs1LStKMBwznQiT5aC
YYnSiAiHaii8ON/iS0ZwkDJYT0o/J2e109Nt8rN0rb5u7x9vnw8XpyL97XSNS9yKvRUQZASolcip
6pmJZPxadix57lgWNlnjrJXtG473YvIrgnYx4qane3C06zU/Hu1v5f27UygBdzdlw6hDECC5slKo
IODpKmuGpFVdVba6ORfdn1QCPNPXsbUdNMuvt4vb0vQG0MM/vt+/C7E3AGrfvlZzKlP5zNZCbRsK
kTXYDNlLJUuL5XXNAocFrprc5dDrTYcXA3pe1wN3vN3Ord3ht1pOb40dVP3YaCDsQVu00yFxzzhA
AnSWflcx0CgQRIEQJh4AwV7D9WCpKzfylgN71rbLhugNl3xQyZ1+fRE8kCNU4cXETwUopHZDVhXV
DFVOLHJBaTGeUo5J1vDtrAhNfD0jQt/e9NSJEcli0Qy3eVwRBqd6x1TWh68HaiyOsvZUseUCxOIT
UADPRYgg/LfeNMCU1yjFVzMyl0Kz0VbOqs2/3U8tl21Fv272oCRHNZkUpWmZGhUceKIch6Gu8wjb
FQRAekE407J5jcgcV7iiJodvb3pq1YgFs0BfG3rR6/Br9y79fKkux+ABiRM5Rx0zQh9TGLfFZN+A
Zl7Xo9qvcDW3dDFmxocd8EFIfx9D/v708fmiB2S6gIBwQwdAKquol6nBo4XqqDAhAgem1CKL2T2Y
i0m61a1exj344d3Mua7ptdnTVQhLRLTkjYVkMhnpRYvA6QWRkJioRidLL/94+ZJvvZyyJ2lQv9hM
hbC7E/j55cc+x2D8vskrZWWn93F8oJd8FDVSe8qBBy5VddXY9kZ3nBZEdDw4PTADbrWdCef5uY7v
f5oCBBjkKTDCbgIc8P1tnOk9IyEU3XMCQPAIM6MwnoxZiMaYHPPLbb7T5FdqZz/NAD+oHEiEI0ig
OrjVtYacHmmxt4JyujoEnwE3WZggaOD41BDfmSJiNioL1UHQJfBazt4TOWjoxg9PnYj7vbhNZ1Aa
6Or2VCagF29MAwjM5NutS/REW2bWZRlCitXNkWk/2SUdW8uXIeDWGn5UXnqm4ufdr/TaycWFbXd7
6AiW1jUAMGarhgqlqujtLME4PUtmNSy/rP+P72v0hPd8BzPgO5zMxubpbjsKTQAqknfk5byA5coa
gNxqiHKBvRApFK9nlutipo6CjVt6sO3Gn6KCx+0FBZOHpTZEXVNkWida2yhGZRPmBUCPaq3A/82K
9dsra2/VYO1Fpi3Ta6M/7+gG5O7L4SrkqXBlFNVbkzSRh5rJ18N+S3zytgGBmaS9coiWyqtizdFS
V7DAYOSMuaX+b7dyM2OObnJtPpLFUrcmTLlq+jDdRNOqabijrKhb3FDo7ANCv0xXirNoJn37Fnn+
4XqDe/7hpqdtmSrb7pSeEbzIKhAWOKCBfeKiAdi3Qs7MGKoyc4AZ4zzTvOmGKMyIb9zpfzFxcfjy
pqdyIMQ7fVmq/3yPSOk/ztd5ldkn0wOiQ8lEomcZrYwsaa7Y1OQsSsyiU6OuTN9P2JOzGliz3Woe
Nn3+cn95U+T2Hf39WNWTdkKzlfMWq2AlcsqHZglHDJEwVhrhM7VTvEmH1buelMtR01cz9tYD9tZz
tf3x68fn++fHr5sPC0WiepE5NlseP075S4kAKUiWLZWyoNN0Y6uQWavpf3u7suY4biT93r+iXyZC
jtli4D4UoQcUDq0sUdKK5Iz3idFHUWKIh4aHx95fv5mo7upGHWzaZkw/yHIVBCSOygOZ+WViyXD+
LA/NE0MXGer9ZuU0l8MPuKGWXayKaf6aD+T81Qa+IKvzgQka6oSOc7D7OI2wbRaUqOhAxaDGEm/J
i1n2efwJYKD8blZMYMSH1tBlny29b+6Wzd3t/b6iD6q8cQnMd2oNilmXQPY7CbpJ8lGCzXIIUmbb
6Tix27cFuYwMmRI+7NuB+ZgjyIFo02BzpoKnjnpS+ZpggLeEj5twU/nkGGj5gUdl//S3077rkTpy
XoRuejBEWwf+9sRICTweFNQjnrGIHEa0BmCWCDjDGcacGPjgEzNRK81EIM/DyXraN18QLsxQCWwU
ApyURUrTxxbYDQwXzTOES/4vqgTOUavwgjfBKnMjgONriZ7VZEBFtQbk8NNLve17Kvxj83pWkjiy
4ApdO7QXEv29RZbeC5JE7SFPgWs0wgJRWmqQVoljzIuBU+OI0BVYsF4pITiw22fF5nZjTYZGb94X
M9FqeBcKD9lW/X18uOwQBjiaMiCaBCjbCQyYusbYKYGxxLZyllpOVeAk9lKRdl0UIy9G8NCahekM
gNN3qe+XsIwTq5yqCPMe4bICjA1mIpwAKjjxmAL0Qn6J3egl0Yuhqd8sybJ36/LfrWuwDALwzATg
WrEiFDHbFEe0awFGbh04xmRLydRzdnrT+QSUV/tyVtK3GiO6gxF6vNkF7OEyKwbGv5CyokYxIBS+
LrBY0bmtakuZVGIiabbrqBx+BMYGa2yMZJcO4ReN3ASjambroIKraFKoj2jMWgG7g6nEKGJ2sbo+
eBV4CMKvbDMrCR5qVg083X4ol6tHzGvfizCm9Ihn/CwQvciIKgaaM+y2UbCcVFWhlrDvMmpvRD/a
sOhrVg45tNuaC9XHDri8+b6v9GxMFkZwKTGPuwatAJNXYSlB80FgIFlh2m50iZgk9IsEz99MMFV4
sT+nC3IxVOsuaAvVvjenz22RawxZ36LRZodsvjHGicHnpbnAvECR4wdzqFYUYKA6ExMnVMdnpR6P
DDShoQ4bzso5rMcmts5hQ7CzBUTF2R6r3cJpBF6rKDFGwmPyIMWQjtoK4HjCKjB2NKc9bjvRZY+s
ZoQs1XmEt5EDdCQqgUejpTd1lSjeuVINh8doMH+ZNaAhWOYC6yMiFb2VlCg7QgliSa1a33T65eTb
4q5Z97GQQOcLCtFXCSgpeAekQCMEc8rXWnNS16Cw0BcCOitJKMnXbIz89SA1ahM9urniOUqDL3Mv
CpYxRzxIOlAXMSUBi0Q4CxqBdD64CHZZOIDtORhuQiEoW/UmNnJCOF30XKT/87i4e/i/1rHQpuBx
3kYw+1RbzQKoj47D/hi84HYwCeZUDrfXQjytse+6nkjD7N7PShpHWAmXix1k3tkAVktJwwNwZZrw
VgkzvA2vNZwnaRLRobYyvBRm3tnIIeIjSjA87EjO1cn3/AcZjYZRZjEFVhAMFybWVUbDQQFV3bAk
QKXkvfC3opfe+GNLZnY3gYvVt+4eTrXhCZ5GJetKM0crHhyIEgk8oGacSusxzW88Q3+vq4IEMcYG
hFr10o3efTp5vLtYrDAZjOYMN7vxE1ouDCjMFWU1gpUYLNoROSYIc1YzJSw/ELCy7Xnqjn3zuqR6
RBRfiKZzvX//ratF3kPnosA34WglBD9DTGKNCapcgjIjKA/wBwjh0QXcdVlQIunQW36hiNxS8vNn
1lOlqa259rWqvMHgMgPsBg4QLBusWDII/VKTF0tuHMmbAOrUCMlS7C7OgD0VGS5Utdf/CdaLYwY9
FYjJhxHQdc3qipAQYFWtAy1g4uqs7LKkR8oxevpa6rfm6gfyOp6Pn0D9zoF5zBUo8oHAPnLEEQNO
LaokfR1AH4mRvwyILww9pfRf/Sgns6Qjk1l3AHKrv/99sbzswkJsK3eoM8BNeAW2Naj9aACAME2V
FjzahOhjiQzS0rtuivEXIwE/+PAJQBl0PeWciIzaozBQK4KOoS3scACjHiykytSScB8R7PCvBtXt
t+iRbkZIX6kRGLSvVxshktNSW2FC4MuNEnTrmuLhxAx7SzGIylpqRATVSfo/LUzadyW5q5GVXiLa
Njt44dvK7Q32drb8TDAMJAdHlIfUhjVbILiSmnmQ5yKaA/fnf8ad1dHyxC3wQM6vmpETvmo6PCgs
v7DLQmsrOAislQM8AjaDWDTEQGgqHlGKRU5EDJGO5wfsOitpGEn/uViz/g1haJaPX1sENbRXiMr+
CuQckdYhBmIqybhDQxtMFRayy9VryhJxXj8vL3s3wlRC9q5FMYf1CNQZPGz6SRdF6b5Xkm9SUhyC
V0mJcDTALjglEe804LgrHb3F9Ab2pJe46LckbDkiHxrb92QgT3+8RCcWfoWgf2RWRo0OCfMfjcuh
0yqAdDMMNx40FFBJfdDPxaA6ezfNQc6KRCMgb0STapZd3MNvP1a7WHiC+j5r15D4IOFYCvS0JxAd
taCyUrzmnsBRUGw8GL7rriRiBJDkomn6cA3+2+PNdzARN5PvIslkW12mxkAaD/IsUHSnoR/BKtBV
AgWrGigyhD/rsqo3zMRSlo3K6TQj5+BC8t5V6xjjcacnsNAqRzup9rrYMOOZprQS2ahOGmSc4PkO
LnFmQqop/c/56+FFMdd8DTKY60Bsfmwe0sm20EUbhm4iU55YW/loMfWDWhA7jlVKRGeZ9Yryp690
cp+TsF6pT+dARoL+vugwb+7/dXX50PDdZQbKFoKJkXXCoGyEowbmgMGYoPMKaWRtLeO+d5VRdDMr
xlqvhgRQ1qWsrR7vro5EhwRojqzIp9qYxHSyoCtKBjRw2H7LTQC9m2CAUTBtLZACyGrX06wcTY2Q
gCHVpSuyeVisN5GNG5xxWLsjnl2sII88KIcV2J3oZgddARHPQSgJYADaJH/A8PxDuQNbSqYgs9u3
xRz5sLyFzUbFtBq38YdtrgRA3h5RneVd/luOH2HRshSqEBHoMwjYAkzcojiWIdQp6l9u0jtqnnKm
9bQLm02TwcQV6bDCV7c/ft/PCaOEd1AOidmQkoIjhmFriLNkuMB6aBGkk1KURTNhnez3WZKj2Ag5
a/vUPnw62WnWmHAscsW8FuFeOiESqWUlHEPjDz4DF6LAkoU6KK/jqM/pz+7BjpIJrfZkRBHH+S3G
Jt2/FI7pXY6r7nA1sxqrJDUW5KjOVTQYx1tTXgnNYnQ8MDiAzxFe277H6d6+7VG9HlKtTZfH+Ovx
5f1qEI9PhPVEc/S4EMRJqTH5jIPppXxtCKMa9us/FY+/I3BWzqEZTgyDtUbOYIlbzDcRkWAGwd9y
+p+0ImYcGOo4esIoGkmxUilQ2BtLreHPhgg9jF48aFZMzNCRb92gKDElxMjN132vg96kgbVhFyaB
7YAWH4UdROgNUJfw4tZbb2sNq8eCeHG9Yp+kKYyRXYty0mxs0oz0a2UMqYJTa3KEfvYF8AQcG04s
Vs7hILGA12ExS+9FMjgGfyFtaqRhbz50bD60l5/dpvQ83lw+3LcJPWc3bVJfkc2DoNoUPkYpHUbE
K14Bz0AoW2WZ0yHWOh3O5sGen0jlwdfFDJZyhMevaF+fWC5W3x9/FK69o7ZcT/5vjojQ2onkK11r
vB7DujZYxTglURsqSCDyWXiTdW+kAikzvyvoX0k+Qj/mlKqyFNbJHkwZay/RTMZaiDZijpuVqAwp
MIUMmD5VVI5ivLHz6eUjaXfUTBXGGj1tq2HaKDxcDNJGvy3uWpB8vkHW5m2ucQL+xq1wFWNgmXIm
RJvZm5ykKdTKhedBgm4GmAi4aV+WhA9roMDDiz6wYvuZINvMZ7XFp6EbfBpUcohOrAalp3KRYZQZ
RQBrLyrrQMJSXhPKDzvjc9/THDu/3qeeyuGVAD7sm0end4/3D/HXxdVjPgzu6z7qtszQisKhlwTU
HwQk0hSLbMHyGxVIDayaR/YsMOSxgcbnM9aymNpi6ACBh6a7zvJf0skjGENFKE5KLmqZkVgFWlQG
kbatBiWCKowv1caGXpZo0U1BwZIthxQsWb+g1qn3XQ1SXErmiJYBjDoNKj3HFBYra1/VqSZBGp4E
fVaaHXQ7sXLeF2Suhnm18JD3qyiGy1VOSuu8m/dbjH5GMreR3DrQ0KvaSaycGiMsHaheeAAiyDDK
9AuaXkNqplyy/Xbl3PnIFq2k2h6Sz8AKSi+PpyCHtYBNSViKD+8WjVWugodcE1nz6F8KwrIbvCRZ
DhkOvcA6nqKvNW6CWe0msR6LJajoQ0USxXhujRlSKVVESCY0aIohyb/kQO5t5hOxrN3r/akxOqyX
kh9ud+N78/v117sisIo7Z4KRofKJkBz3BYzHkQorN4EmzJwKE26/vb4KItiIoQoPOy/aj8X1Xg2m
FrCA+4iqaXCouBFHq5omBBFCFFArKfc9wMO9Pnpjy7Gxh5/i/Xd3t7zsKhi3NfhaZHEnqJJYlExr
zNQPTFd1LhxOk6fJSFYbfQgUdr/36djHvUblLIwdmcWg7M0GC+PDAmthnzTXWBtidQzvQMQWCJiU
bqZH2wq8nimjPfMVA46D9cdRr0FfuaMgRUESyfg0NtbokFPq/kjTcraL1chsV/3L4bPl5b8ec6Rw
62aHRcKpYIKPBrMNDhDF4l1YLROYC+jLJFjpaAvMf5DZb3sfn8T2bUH3ajU0q9l6YK+crBZXi+VV
c3aPxe4fmk2wwE5e+aSBf1hTAf/D0LeAlZFrWmng99JJZaMwL8VVRomZ0NXGmu4vACd8yEjhYT/S
6JfPfiM6ugv9zEuj4lgiPEWUdhi9a2mAfZQ6kMQiqZ8H5LnrfXwau/c92odXBxzE+AA86645bX57
wDt73ZoG7V/y0bOWKRorUC9B4QzKVgbxzwgoPToEEzg9LK+x82kOj29nJYV0jGw6WbAZDxr6sPee
0FwSBfhqXTPtQF3OAbXojgJWX2E54wDszif512rO7d73ZsBGZkA7CKI7EOBXvx7Zzq2XY1MocCuM
CU0UC15Y+KMW0VQqEi/g1CRne3fkZTclBfRihIId7PbbD63c7YVkCelgi2tE/cDovkhAgwm1qUCd
tEZHY8SBkIo/EJK1R8BsFn/blLU5vl3vSoSePF5fwwCvYWp+cXV1P79erJv58vf57cO35m7+4+4W
lKB70DEfFndfm1wY7eHb5f32xeu8JA+L++/nF7d35z8u16/nrH2WvZ/nK/jzoXk9J/sP75uHXGdu
87wc+FD35K91D/+zNytYgTwe1le5vGnGxsPCiX9syNk/jueYnrq/vF+g1aebq9/nmBGFb24v5t1u
vZ6f3j4srt4wLJV8PIdDd7kGafeGEnXEj18J87ef5vf/xuz89fnt48M5kPZ4k1FjYcT1G0r5kTl+
Jdnffpr98+7yAdktdIIEdF2DhfB2/m94CWL0jVKKvH9FodduKDT720d7A72BRwQeFYNBR6+shaHm
sy/x7btPH+en//s5zid+/3j35fTMfZi92f2mmm5ez/zb+WVWmJ/8MZgCNr3PAaztv7gfb0oFNkW7
+waa5dWf+FFjzPtZ2CBPAyfEMlmtYdvvW5gjcjz7+WT+87vT+dcWKwToWN2u+4RT9kTTV7ADIFea
9U/YFCwYaLr9h9tXczhPi/Uaa4fNgTIUgHs78tPsfS5oOXf4ZP7pZjW1cjC1Y/fhwyf/9Moi4oo6
3jZ9tVhfX978NNmaM+i1uUbY29PF1zkTbLpjaHpy6vz7+dsz9yVMUyBxFWYnD4vV9/mBH6qix/DB
nWdq3Wl8al5H4nj2z2aJYAbHef2mmgqm1fvZ+Xlwp+4AAYzBJwpN3x27t/FAW8kM9vrh3cf3McBZ
mP5Ziytwfn4afzk9sACMAs+Apmcf3/lP4WkSpBDvZ9f5+56jQ266pTI4rc3Hdd3u7/QPev0DH/jp
p1P3YX5wZ4/U27bpf83hBD7eF99D+x3kn+YG2B+wo9n/A1BLAwQUAAIACABQU05H4xfW65oEAABX
DAAALgAcAGFjY2Vzc2liaWxpdHkvbWFjL2FiYnItYWNyb255bS10YWdzLXN0ZGVyci50eHRVVAkA
A0iQHlZIkB5WdXgLAAEE9QEAAAQUAAAArVbbbts4EH3XV/CptYMmq4tlSUQRwHWcwrnJsJ3Nw+5C
oMhRo1aRtBSdJn+/o6vtRDESYF8smJw555AzcyRTN+xjQz82RsTQqWlT2zuxPJfcQXgZqzUUarlJ
U5B/uZ7j2dQY6dY/ZLZc+ktKgmB6fru8mjJ+D3QqgSlYszCBYpKKeSrgCQryCLKIs5TwapscExEX
v8j8D5+AlJk8ITMpp5kAivQnmtmrxjusZk/GEmqm2UOunhcleaEgVSuVSfDTMyRHcX4OKW0lqUoy
YakgcSmaRCxOQJxos1Ig4dlDHidx+oOEmzhRMSbO00eWxILweyYZVyAp+fy3/lkzCCH6k6E7DnDb
ZeRiNaW0kfMEfFMxzVNMSFkyqHb/vP70pY5bZRvJobwKpEwL1a7PBcqPoxjk/vq0/CM3HA92ibpf
rk5CFK2eh5q5FSWYrddh3+qjbFUVlEablCss1UJmKlPPOUzyPHkuBW3DBkPNavHC0HV1u8Z7O/c7
YLkYiuzOO9RGLQQDy3XDGuL8JQSlTIid1RykiqGocUpJK4UXe9Qc/GL1PclClvjhT+Bqu9oCHPUt
DTW7Ow3n4zDqw6I0TmO1I3/c5LiusASY/TkRJhX31VAg1ctiX6wanUPNadE80/D0sGz1KfZqGXPm
X99habPf31gBByD7Ulb3kCQI727ho7E+fjuW0gJU/X9wtz6ndMGKYgnRQsmvXVKXcjrUvB1ky4sO
Ib+t/D1Eht4QAdie4RwiqoftYwTt/FVjs5FlR+1FSZZj691lMhFYfMPoxFhj09uGrriMc4Xzp2SW
JOgJjZgdfYNDuGaHO9Ij6xBu2Y716kFAqwYcM+FAyA8B/n6nxFGDGHrgcaMxZUrxeS7ZA+b8LEpY
eFLoE4ZdRzN3JBxuYyWWaGZp2fUgvm1SkcCC/cAkCdh4kwhdsfT3MnPcZbLRyOrLpFTEAq0e4ke4
hqJAoHVWwg38nP27gbvLLUNtm1jVdgsrXdp5u/yYlVZe/UFup701BzxddGfcp58mMZry2yL6s+rG
aq+sDDxqGnRXETbtZDGntDMIw22vXTg4ai8xKM2zQu0zNWoGfeBt+m0B8owp1mwgj9fyRBZDW6vu
Zb7A0bhnO6Bfm2exo2DxloJXJ26ue/DqEEfDD6k9HVTKGpoz4PiqkZ/6Lvj/4cP3qN5dj2E55usy
bJuhWWqrUCnFwUiheu0gS592ZDDa3vMM1432ohpkec3ykqnImeL3HyZoPGbMrRAife8IMuMY3tPS
70fvDGcEPDLIi7zXsgslKA0Cg9JNGuNkBjkadA/2F7KNFBCxTaICAQko6Is+JfjKMFurYrZhW+xt
LX7anROzGstywDK8sVvPJn5wXmUZ3jo6YZTJB3TDX2XseBsb2uaB2LIBcYzNylmcKIpcCEPTDo3q
w3V5e3Pl+4tgvgqmk6ur+c33wL9dB2s/mAQr/3Y5nenBYrY895fXwfntzXQ992+CQDPdHTRm8bFZ
o9UCzrL6a7LQNdPbC7Qg2g3Eh2bpuxEmODbZ3V/lwPHzk2uW0cXZMLIYuiNuTzdSohfOHvGnzJin
11gF7T9QSwMEFAACAAgAfVNOR8zQ+9CPOAAAssIAACkAHABhY2Nlc3NpYmlsaXR5L21hYy9hY2Nl
c3NrZXktY3Jhc2gtbG9nLnR4dFVUCQADnpAeVmOQHlZ1eAsAAQT1AQAABBQAAADsW+tzm0i2/3z5
K/g0JSeDTD+hVbnZAgRZz/hVlvOoO5VSAWpsNrLQAErs/evvadADJOSY3NytqdrVB8nubs75ndPn
1Q+u8yyWRTHSN584exiGy+VcDj/K6Pe0VD9etijlohyO5Vc5z5YP8Lf+hy1sC3/WrsPyfvc0fE4/
ZPPVgyxOP1ydv7/wT1+drgklefggv2X5l9MPMi/SbFGcOqefrr2JzL+mAOL0hayHj8v4dN1enF6E
8dXkpY9qZzP4TpNU5qNe4mpryDtJuYlf6wP4HqKh9fpE87KZ1G+flnIz5JPNDU71wWVYpl/lCSgq
V3q73ir8b3/7m/4H+qzdyGIJykij+frZ4h7aBfusvS9krp+Nd0yZiTTter66O1voTcUf0/mtLMqb
1WIh87PFP2Rcypm7WsxA2Kj62dfi8w9tGDd1+LInmspTUg/ME00bh6U8vU0ftgrDJmIGMg1EdWSO
MB8RMsSI6IZpmaZ2NdHbcwCQdWj8BIOHYsj0ASIBQoSegEKXWV42hiOkOYts8fSQrQr9/ftKo2Ts
BGTMkeHxsWlQ5tmG8B1muLbPHc9zTOJjTdO8PCzu5Uy/vc9lOIPnTF0fp8UyLON7/c+VXAH8nQ09
hOnCKKuhmuY/xnJZAoKNWfifvKnrjKdA3p9M9MHk7N3Ef/fhpDFSWRHYxu/+zeX07PKDc34Gw8fj
GzU+LHXz0Vx/oiicRVImmvbhQr+Rd8qd9EsZ5jBm0zfSDOOtrillTae3/qdbff+zJoZMk9oc/jCa
DTb8of+hhtm/f9Zz4/E0//aoTy7+27v6+Bd3c62eLpis9fyNRi+cNbMVE34Lv4aTOE+XpZflstbZ
f20nAZkWFZjHUv94G1SM9Nc6x/rAKcBx1XwWw3i5HBGMTjTUizCXFkcC6UUJ0KdTNBqtFikAny7L
/M1vE280gjhyB5q+BIP5tTFsJpNwNS+nMzmXpTwY+lZ/q1dtyzAvOroHVcuHi1e/1sMm2SqPZRXb
YhCn/GXdvosB7fbfJteKcO6u0nmZLi4qdK2eSZmncdnoqFlUnY3WerCf51m+o30rH8vrrEiVajcI
PcU+X8Vllv+eLmbr1tv7tLgd/48ieAKTQoWl4Z4TwBNmhzW1GEyjlP6jjFdlCGH6DCwuX4TzjbZ+
+UFtdWPftjpROk/LJyUA5hziRTk7TyP/sQRTG96PCLNPNNLXrMyQmTWf9RztxCpGo2S1iJV2wSbK
rISw5QDdJyXRbthAARKA55BAZe7cOtFoPzfCJLJNVsM6DuGdhAwTgrK2eq9Ug/TBg3zI8ifIGZyf
aKwfb8S5bUc172Cf92gUzmaN1qXya1nUAJTgkxIs49XWQt/NsyicX0UqC+5aNwRedTUpGRCD/HXA
vNYmOdF4T23ShEdJF6TRKF2kZUt9yFa828MqxthmJ5q1XyLtWOodnBPGZxJ3c06AdXHvKVcCIfdd
57fJWmkVJigB9iGBvVtgWHZPQCEVZqSvxyk246uLj+Br2Tc3LOQzqLoemdzL+bxCSIk+WI/4bbL2
g01UUL7JAKroCTXC3OTH+Y5GhSzr/weQb1SILIobmVxDRtg+tH3krULJwNUHDToAjELphcy+wIhI
ngN2XIkvw0lQd3BDqA9Qm3FbIOs5oHUg7wdwE9urkLzKlbO3RuWATuYfs3w+qx3KJEekwT2l4RyL
Ha+Nyy/KPJvPofheS9MQcPA8MC4A2B6VytURgSADlXY/eJaZkOfgqVBTtz6Pi6EjsDDDAIseLtL0
o7A4YqGM4udgfXupvmyzA9f9SCgPYr1AYYxEjNaLpdEIfgNVJI9G/yiq6vWxrHIqUUElT0vphnme
1syUBiD8P7/OajITcmZaMQPLvoHCozXsOrwDnrmEOOIkEKsUuZqxpQ8Oh1ZzQLGyXKsfgnhGIUB2
IID6NJ3dyFjCivgCVsHA5TZTvAZXyxDK24+/79jXpRJ426ZLVY6Lu23z1yydrf9RMljoQIjatgWs
CJHdz4hMJMzZdr7aVL15CtXccUm6n6qjxmb61cBX6+jTFAsiknN9Nho1c6El9uWqEVTSWcpxRT9j
ZKHAyT4aWBFkRdnms5Zr0AVz87jaooCVfLjuqGaCdcc/bPbDafEQaolqms+uIQLfhw1Qb9a/RUOC
62MSHOh+bT2DAyW8Oukl7dtBhWzNZixjqFLzX7qm+ufwqypvUG+5AhWOMIYqA6OeWqXEwoezv7Pm
ddNm8isBIUotZFWcArgukRUwTsDNBu3H1zTreG6pAg7jfq6IqG0nLZ4bmhfhUuGuV/X94SIMijwk
WQcNE+IuJv00q7ZczJZm11t9h6GiB0y81mlNq14SIFjl4H550ZyhOEH6Ht9D/XVuOHRge2bPoWP0
W/1trXKruVaD9QVmPaWgjITHpbhabDVc8zMb/GxIBJj3296JqOB2Hach7Z1nGZgcFAlJlj9AofCl
5qL2yQabZWs4HyFKlGhWX1YRw8+wUhGkyggEFkfrEV5QbzAJYNdKcYpJkEEMrCryFjsrSRJbRhFm
EdKnUy+4eX95fnV1PT2bTD3n/Pzs8t306v3t9PZq6kwnV+9vPN+cXvs3wdXNxTR4f+ndnl1dTqdV
atKw6Mc1JDHHNddagnFWb5oUprJ1ijVi9qVIZNKkCD+qeCNII6gnKSwhdzUJTZYyTpM0Vlo3hUZa
sevvZ7dZNo+yx0NrrQgySUkIZQTQ8Va52vz3v8KXIn1W7YwpiTHXCOlL1YosfR1QLqF4rMh62cND
piSnFgClfUkyKJqn7jyLv7xflOl8S/ZCuRWkpvNU5VaF+mNa3gew4JW5ivlMIy0XdpbLYy5c8Qqp
HWEq9en4erJlomyJEqoR3pNUaItIN/64nKg9ojSuZ3axj/0iLL5AOAOx1JnDqN6WhKhVbwR/rgIF
GJ7Vj7klhYgPmOerxedq5U00YvcjyIVlE71F7iJM1ZQKamqk5Wm7/fROaoKYxI5N8IvHZTx9qKkQ
m2kUvGueRtA6nD3BHwcnAi1MiYTFFNhpk4gQGkUvPjdrhjiT2hYXpr6mBMuawU4MJWlr9//hYSTQ
iUZxBRjAzo4gbgGOJWXJDHJTmFdWtT0JQKNqax8IFE9FKR+mX2S+kPM2zSYpPrOJ5CFEFnWW8Wc1
PpflKq+wm9V+/o7asj4+aJFrAZsJkZi2vhk4/fZn/Ue17DOrzele1OIkErWYTVKIbAXGzx55KJWu
O42HcAEJM++vH8ohln+RytU4bWllQ7tjypo0BKUJhQJ2uhk/fbjLp+nia/alCo5EbBTTgyCCKNIm
uFUPw1v1kH83e6D/bgKz/gJbSYhCiE/Kboq7KSxel12yvoCQnMFaaENI5Um6d/70ksImQaxZ2Gwj
ZXx/ndXhzUZ7B0AvIcsglRzUSwhxtHdq8xMKpvZRzHdTIKyhTAa1weWkyt+321mltDoD6WUgti3E
ztyibPZU2YddnWn0o2ThcEdpm1uIVZ1G9LTaWOgHhLY2y0fNIH05eX9zvlvmnGfh7AfC9H+M+v/V
qPeJHRTXNoJvS3/9x950Dur5PNGnuSyqNZBqqNZ9n6tVnr137vcSTjM7AjVcTmp7mlZVW71WI+hH
LP+YD9k/z4fET/Yh60cSXUhUoivkw7cwLadFegfr+C4vib9TgESC4Fls6otwkRVzKZWrYXOb3uLX
r4eou45tUrFDk0awfNhtsZT3abGuY0ajivA0yfLGbk18n2eLbDSarfLKRN7Ms8Wdrr6aOzVV3xs0
/7XatKg/c3UnpLl72/NOgUVjaVozPXoI57B+HI2UCqtFZBDOi44dJbXIfLMdrQ7Q0/hiVcrHt780
sf6IREqWX/UIVrv1Fh+tDha3DIb3I7XpRPvKN5uJZCff36XaeCziEHLU3b9evur42dIHH6S6N6LO
mnHvOw8gUhTTfZHACOJ6o2KyEa7a17X1AUQSJcE0UofmEAB630mgccJRw0ic4mkR38LC/E0LxGaj
fA/Zq5PBydvRCJDlT9dZuqiPrQRRV63WdEAREOP2byy8BBeDQvL/hmsdtPwdvO1mndiDqK6C2T8t
DIufF4aR+XPDsD0abU9hdZiCbD5PF3f/qV7+WtXLdwnGzLYR0vegCWvP/79/XcC2Eipb5/K1Rawv
1la3BdJwnv5TrjlVLo4ZrQ7hm2NB22p3iJEfcHYsGan32I+7bHXi2tzOJ+rkwO7LimCW1Ky+lcnt
cW5MH9S9IOB1jao+5kF8fYno58SK3g7+TKxAPzdWmHq8vmb9LS3v1c359X1rvbpepw84NaK0PBlp
up6Hj6OOe9DQETU7YAoYFzMBQudx64nNBzpm2w4F1OKUhRaEFtWTHnmk2HZgUjeqX8V92aTFEsvi
rH7isIMkiome24dM1AatnouDR1BFC5lHYCF00IEpV5Ig3NJKaJqzMKoeIR20kOqgxzrYAaxE2IpJ
umyrfn0tWs+T+R4tZGJT7fLnuGsWgZZ2nt2lMVTf3vX7+qY/16prwNXd+PXd/+2TXLtVGeFy9RBt
XulAVNM0N12E+ZN+9lBdEdA2190ftzfddUNvN4JI1svffhlUr38Y+vb9D/1NYNkQ5QQzfDtgBhm7
xHCZFRieYwVC2Org3Xz7174239KIwB1qEjhJqP4aHH0dydWFoMl9+rD2/oEJmiBjSk1CiBH4ghrE
ChxDmA4zmCnGpkBI+G7QpYljVPdwhV24QrBI/fXuoHwfE0Jj4WHfNExBPYNQ1zdcR739YY5tanEr
8DnpOzuNY3nQbsfLNAdYmpJQOSMHkkAjT5KwCq/eu0/qxZGhs5GDCTEkbIgQyGNzx3GE5Ro2R5ZB
iGMZNnFtw7YdUwTYErZrgzyTKkSfnqdRDv5wGmzEKE6Vmt+B79yncdEt3s16W6I4PQTTFISb0aEg
nMwoxP6O0/0O10FcWCLwieEzSxkM8wwbxDMQ5gjTwLRcn75ocuqGFriIskNwsS2TpOPa1Lm8C+On
LoiYeQFxxsRgLsUGcXxuuFbgGo5vma4beJjzZyDWdI9a0XZEC7mk8gC5xQhYOn6mFOnAzmnAScC4
ISzPBVsRYDUYIlNgMht7FkOu73Zhb1PuRt8e08RvCXpoFrYIw0PNHwXugBocsAvbxdwgHnYMB4KI
YTJhQYAZCzdwjyj9OOJ1ZxOqkFF8AFVIOdsElWduPtbhxRzjwPa4MDzqggWzsXJM5hsCe2NEsC2C
wHn7L3pNryFDSOsCoSVYSJlVCbYXb1dL9dpcM2hanmB2YLsGxEwwnED5JYZwoy4RmhY2HYzxCwJ5
k3ATXQyV0AE6aIyShKwjoHcx6Y5/WDgU/HFsgJ0hg/guNhwHjw1hMw4uKgAg/7nxrwGlLYQ16xDC
TvbqiW9gY/U0JtXliR1PEGyI4Hn4VjaPHJsGCBKVi4lBkA+B3UfUcLgt/DEd+7YZHAp2nadfoVJu
yLdL8Q4sYp6KtGjHyb1OrYauDINbMRI7kbaNNLbVRWB1FK8PMBFDqkzEGVPiQkRhnu+Ai1pg8zbh
hmNyAYlIeA5T87AqcqXFU/Vwg5XNLCb3WUGjHe5pbwt9WAvuzB7UOwdlvXWmD9BQ0YBvgORTgEIZ
xAo8htTIeGC4vicMH6KfTaHSE8h+iQa7OHVbStfItpR21CFlhCspdyuphSwrGdf2jimqdGyOwU/G
jBieZUHu8T0Gbsgsww9cU71LShAjDR3XxE6PkG3jisQhrjASe9pv7BAM+FAoTZuMD5GltG26ZuAE
HAzAsQGcD5HPDbABtYxnOr4fgCs+64g74l3K9Rr9WhtleAg9iqiKbEqlAdh3/RLhRp0IIUgsXBmt
hRnhBBsuAeCgPmQ4rmMaHvIDymzObef54qlxRWdTn3dbRvOZ28kL4sw+bK0tHjuUOcZ2JfNuugoZ
r/K0fEpa06aeYwxhPCTKpoKxB+sUUs2TQQSxDcdmGMobQjxiuo4zfn7aJmsmz0+f0zFOa6MPu0QK
90Ry4ljO1ct/cvhVxudqOklliOv/4B+1BLPHpgdOAiHIAaFcZhtQVnLD9DCjGEHR4z6fFBpsvjed
NePuYXVfS85ZVwSQiO7J6WXzLJ88LWJ9QIeimrPqF4RzLcZdYYJIzhipZDyGij8QhuWAB3Kb2NYY
/3Sj3eLpHrnt1tpiHZopLBLUnkH3tcSBqvhUCuTCVrmdB4HpY89AngrgCAWG4wWmAXmRjBm2IO9/
J7eHeXTMHhvDtgC6R267tZYcsdkhnEz2qtp36gV/Wk0grqYPCm7PwVAcmrDaNKDuwYZtMYjkHLtI
uLC8EM9PH1DsxgkdbYRJB0Jkor1kExbzbaJB1rBONZyxwCUUljnYCyCaY8idiI4hgboBcxyI5nT8
XKrZEm0hQgx3IGJgEVEr/WVlmjxtwzVGQ2xWNZEASC4NfAMwjMH0YQngMDAIyp0gIMyCCvv5BNgg
3AZmyw5gUlTAGtHHhwDK2ZApE4VfXmFClm+5ljGmAuo0gKIWVb7BxwGiFvWpsKzvFqAvTx5+9xDH
b8sjwy555EGUUXeFr8OFnBeqdsJDDs8IJRZ3KaFOMDbY/xJ3JdtxHMt1j6/w8m0SJ+dhmaOebOlp
4LG2Pt1dDRE2CdAEKEv6et+oniqrqkEcPxx5IbKJTmVGVsZwb0RkgTeEc5fhTAHhmLAyY8Pg5km9
he1NRbjmWy4juk1KsaJNUgynyP/NdycVCrf2VhJGAUpyjWMXaiTvBvpDiNAKXcETUjHxZdv74dP+
AdOuynkYfn8I36e1ZwKvaJmU25NB/r75fO4K+JvkJLExTsboBKvBk8ZXAQ4Gl5GSBj2ovDpRJxrf
T9IvLncriys5D7A/vPsHWcmpjxla4Ubv5SwfPYNvXMsIpFR5DFAMhNVouWC8FBuNj0Cir0LVs4Wu
qHU/qN+QUmsb2p6O/2jzw8PT03BmjkA94QB8hBa+NAtQIFKFLnjwKwMcxEONMWjT4Gde8iWTeTux
lF7xusqJ2XP+fj/cb8Y0mCBv4jjhFqmqwv8fgKEVnm2DQwnVKSYTr6FW772qr3m2p8nXH+rp217s
jVsRe+vOrhkeXcJBnJyyo1iWfQX/AEe1PgE/Ay6z1FRl2tfsEJ+Fc6nXzm6aTgDjVwQwPpyOM//y
/Tt6jdD9wyxBcTLuAo7pdRJMOPB/HCiAQhKZmVrAPkqVvqq3Me4ronTb8XrF3IJSp+38/nH6OKUd
4xuMyacUHYKHh9OFA2axuAbwCsCaZeAgkDNr/3jlcYZRD2frD8Lc3e3H9b+LP8b8b+fj5EHfmlEC
F0OCqxEWTEAFoVmKFQdsVQIoswb//RXIeSZht7XBrrjR4ZgquNIKAA4N0xfC3IrRiQlhOXlUED/K
GhnOIp4YM87CjSkbpNIvGf907l62FXhvh8BPsn15oGvnJ6GUGV2R8yVnBZIiW4Y0XFbIFQw8kzFJ
u5yMdqvSTGfrxQhiTQwze0RPz5vnp7MdgTvxUZ5svK/cS1aCTkwZGHhoIYJhFK8AwbgsL7rGybRT
qZw9vEqqk8rZIGdZBvCTd5uHYSQE6pDPIZzVpCvgbywbOG0FCMqCLIqV3KrzODJhy6viznn2KyHn
/H0ve1Arsm+2M7f+CB/yNKbB6Rovgqce+YwwbjRwmW22OngG+0bQKSGxBKcAnuqUD7wpL+tboCpy
Ze9OYqyP7oZ0W73bLXXY3Q3+7u7QObD9k2gaP1sWRS6eiGorA5ZAfkOHzDy3FLmwtehMkTr3nqub
pV9/WCajPFdipibv/vi4ffwwwSmaHrQESR7DgfOx+iQFIpIwwCmqMe+zZU6l5jRPrY01g1dk/ybL
XEv7TYbc9FLLla0EO9OaYfO8GfbPYyPf024sgphR8ZU5uOUcWkyaE92vAK6StmV5ZlU34bXIYEHi
NZuhO+TltND10shiWL+p4FY2tdFUEZ5s6hgyN+PZyKMVNxGl0yCS3ihYsQSt8FJ4FoKDbcDESnwV
wjlP/mK43sxOY2NWBN+KOcujP9s78I5Pn/dPT6N2GUu4UZ5zy8IaLVsAKSo4CwAd7CgiiuiMoB2L
AnwUr/RGs7WueqXZuH5n2zU9oyTowd//95fN580DLH1/slo34o2I40g5scwVQSZ419SipoBoQ5JF
ZuVXHf18vpkwq495XgjZAj6f++bo5tmhoUJOcyVFukTuMiU4FEWgKHGDQGQD99FHaZv6SnJyNv+1
3ORsWLcfsQLlvHB+QaYvPP70CiiovteHRDn9jS3pUqPRLTAvCgyglsRiVJmJFrIOLinlwmsUZ221
a/x5ObLf306v7G/gs/OigFHuP49O4Q+CjId9uRE2jLbNPYhg9aw5/AEnJYFeuWEW58S5ci7k9lUA
fl7hetQ6D+l2oeWSd+GH29ku/rF/jl+e358crLk98BghqrUSbCsrppLTiF4gMxS4rNRNSfuqWHGc
fF3045e90Du7IvTuzGGpTfXxZLJeUygQRQLclUY2SzgIMC2qVpjWrSG2mdZCWrXZyVwzGVbU22zO
xGv3+Y9Pz4+39HJVf+HR+KzHqo8qiWqTOiO2KoXgnyycYYP/qLIl6dss7i+n66Rxa8Hfi3OOZPPl
+fxAhDdjdGwafNlWWppDCO8tSyZRiHTaVGdcjjPadJnlpl9n5VGABp8W33359HQhbcrJMQOYU5GN
58ZaBFKGIIJFUQwTKWibtEkqqdkzmMzTC7AZVgTYz13N9vEjdn/IKgvgdrK+2qSOBjpsC9wJvEgF
/QW+bKBvVUdem8uv0eGEVVb1F1/0st6tyBqUmRncz/uPj8/7X+73/3NyQicfH0iBVFOayprw7nCF
SgscW5aeYSsgosbUVOJrxF4uc63INh9308u/YpA4xpMxbJ8+XpCvUiOkj5nzKJlQRhJ5i8CZLRJN
cQVbC2J06FPke5mjX9uvrb2Imz8VokVmjJJjmSSLJrmzmpXa8Bw1NDGpiLgC3uh5sRqu7c0LQj+V
9SE/lX5PK1USvxHy7FwmF6H+JiQ5Y92sLy0bhk05pkKEMmgdGJ6zaaVWl8os5TmZ5KZfZ5kF91so
7tGc03fx3SIDUmqgxDBnpkXwBomTjcJmZoorTlkB7NH+ogzIRb5uW9u7JRX1O+FnekJx/5f7Yf9I
+NuTpxBuZEYablEp+AdJb7wGVI2A38YzLaVXMqmQhPxqxWKc+TrgGL++6QVccew7t5uB78Oq+fHh
7v7XL5euDqEOPHr8QG4DeiEjTqkQaFUqErur0JmWlEfY9q2+TKRX1nmpp6Mb2O/LrbjBYeEGy/3T
7uc9uN0wJgb86AEpHXKrD0GkRPAGril04FCydbDfDIbXcqi+aF3dyxvqFrhC66ZDbnp5Vw5nMMPJ
Uv71x/rNxVI0eR2VQwgFcMlTMUDlGFiIyTPXQkkgeTiBl73O2JP97Q+v6IW4rN4LvdIyhFi5nz35
Yf/0X8+Pn57O0QfWcKtGZfJjuktKk2qWnDVf8egbcGswljMfOPiRSYEb/ipyfVjo5EJpwJVzWA6c
bixIviTYQYowQwHjA8ybT/QyUkqDjzH10CJQebKmRIQjhbMx1OiZUmQpeOA1HUtq+i3STFMJ1gdP
R/R7XPHN+OHuFBh+3gyg77v9TOuAx22stgBccWphhYUEgahX4LSr43DULr2R1vUSzIQfVoQ3iGq7
LgNS4o/t0t0nYepydMTHUGOq4eCRinECrzDBzCLgEGhHi0Vz2dRXTIgWuJIAwTe9yGFpLEHr7Z08
WPjj9j93kw5LI0Y3S9WHErxm0okKbWoQDjGQ2SShWWBLYBx9LJ7Oc9OvtVsRwJ6R1ezNLgBXgVIu
JEXWALCC6p9Z4dAzJRcd1f61dLyE4Etdz4/3c/bi2BUbAwGf29jugolwglSqk+bQ8KadEYIq/S0B
7IPJG+YpVc7hrasW1tb2qlTWdIkrRjQZ0W9is0zzw3XNOe93my8Pu/eXbRgQF0W5rMMHOmdt4cxr
YdgAVSCsZ0E3z3zhyVFVLa9lJf6vTQy9PFcUuBtz029wRZOMO2vSbmwYyAeeedQmS3dDqPCTNaha
hJv3lFGqJbMkjGHVylKk8K6K9b6W5aS9TG5FnUyYN3Yebg2fM+fAMofUSbTBJGgNxKoBbk1WOAEn
mQxFiaqaUN68VHGZztvLtV8G9mCHQ+89Bt9DtX67UFpNwqSkdRLCsJgVGI0HCgd9LNQqQQ0DURs7
47PdLDf9UtuV9fdqpqFPn/Z7mOlngJNfH+57MEbtU3JM7o9/UykIwSwpPC2Ig6dVm2CBJ8m8rpEX
lXyx4i3C27tRqp/XhOoQ4nxY/wT2euUJ3M1tNLev5tdcyhyhoyL2acIpOeKECpREmVwRGE1p8Z/N
r00fUnvF+Nmgfud3y5Cz4dIGp+Y85dSAT+AMpnpIzU26/ENqhbsUmFcOYcDaBrBJtcAmdRVa1lT/
2S7/6YibXmK3to15b/Sp2fb9/QmLGcM5hXkEKMNhN4zXCufqCFoWqVgsRQVroi7Cv4m6HiX4+7cv
d+D+/dtuf9Iv3elGBjXe2oI9fxg98SUJKU9hOWoeOfAWSLKwgC9JgwsAQScDG4xNlOjjqtOaztiL
EvSKKNt5f+D9w93ZsWsdji2LQuYSqoYbyHVs6CkscW6B6qOtQL6ev9yyeJm1l2m79njuxLnN6OnD
ldyowspU2IfjVA3nLgDvNFBCa8DyRVHXgZt1x/RzdXKosCKH2swjzKcPm2d6Veyl7+HkPgCeiirU
my9hSEpqKjvXzIoPKUQBPJRebJ7sZ+5l26g12QDmh2W74SH9Pm2JTcUBTrrAnCFt4gYPyqXKKufV
et6oQvi6mshp/pc6CedJ+I1auUGAH55TzuV+8+vD4xO9veX4rvHji9fP1GRMW+WSeHNUS4s4bS01
S9TFpYFXgm2c0uT9ab8870zEtcPfnfn5n5ckmiFKC4/IM1W7c6RyfI6a7ocGVuAuiylFBzkT5s+1
DBqW2K+te3cyyM/7j4+/7e/uP+y7nKgyWrUgHAtybHOgS1kS3MHFBMIAlM1rW1W1+XydMGuQfXM3
DMv2kcP10kP8lNbcyjGGlCxUkg4wQSCGeJxNwL8JBFZrhTnmFV9Mk17pqcvH7256yZbPDmBouBtk
BwnPT45rdyvs2OFPbe+VWBdlQBHpYQ/esWK1ArGnO0AvdietmCgWXpNGnN3H+/39x2HzgW2eHs6q
pABQqepND8+FWCNwswlJ4ZEFPDzqtQtUmbVZUzd+r1DLCXt5/LAij9/Pujefjq06J2/mPADBKBHP
gW77KeaUBW6GbiDwCMGkkNFFI8FoXoTM3cwz0e5WRAuL2zUHzPr0x8Pz+313rY68mxvzlePfZBBe
tWToqtbY90Ow1cvkmTAtNO9Ncvzt72wccOm7pXxL8Hoe1D+IsCQPW8Hn3Svv9pvPu/eHXtbbY1GK
/iZNpl5CIsWRiLKyicPmwHCEE9oiWgeuzdvxyrMg1/DP8etuk0LolU2Kc5Hgm2/bPAelouJZSqYF
p66ERp1oim4XZWOLrFZH80Y5qPPincjybkVkxd3SEdLlzs39w/7ztJMuFUQnTqFJcRxKaJVKboX5
FhwpqdG+vrJ35Tz/1a6V84huB14sExdbH3anhz4eOwgF/faZkzPy/NYdWrtSCfDc2TPEMpg+/DpL
0gM5JBuzc9VXMys6L+brpVlpWMEPzwmFD5uHX++Hy/VByv4Eoy1OWrDmqHgZodlJ5QLMUmUrBbSt
zMp+01lmyy/j2hZIeIbszmmDENypU9O2ogDDOdOJIlkKhiVKI4IO1VB4cb7Fl5zgSspgOxr9XJzN
Xo+XsS/atfky3D/ePh8vTkX61/kal7gVBy8gyAlQK5FT1TMTyfm17Fjy3LEsbLLGWSvbVwLvZPIr
ijYZcdPLvXK02y0/He1v5d2PZyqBcDdmw6hDECC5slKoIODpKmuGplVdVba6ORfdX1QCvMjXbWtY
aZbfDovb0vQKnYd///bwWoWDA1CH9rWaUxnLZ7YWattQYNbYZsheKllaLK9rFjgucNXlLodebzqc
DOj3ul0Jx8Mw93bHXwo5vqrraOqnRgNhj9ainQ6Je8YBEmCz9Kt+gUaBIAqUMPEACPaaXa8sdeVG
3nJgv7Vh2RC945KvVHLH3/6DCOQIVXgx7qcCFFK7IauKaoYqJxa5oLQYTynHJGv4elaEJr6eEaFv
b3rpxJrIYtEMt3vcEAanesdY1kesB2osjrL2VLHlAsLiE1AAz0WIIPxXWp9pymuS4quZmEul2Wkr
Z9Xm3+7Hlsu2od/WejSSk5mMhtK0TI0KDjxRjsNQ13mE7woCIL2AzrRsXqMypxWumMnx25teWrW2
BbNAXzt6Idbxt9ZN43ypLsfgAYkTBUcdM6iPKYzbYrJvQDOv61HtV7iaW5qMme3DruyDkP6BQ/7+
9OF50gMyXkAA3dABkMoq6mVqiGihOipMiMCBKbXIYnYPZjJJt7rVS96DH97NguuWXtZ6vgphSYiW
vLHQTCYjvdEicHoBR0hMVKOTpRfnePlSbJ1O2Yu0Ur/YjYWwuzP4+eX7Psdg/KHJK2Vlx9fL+EAv
wlHUSO0pBx64VNVVY9sb3XFaCNHtwekVN+A2w0w5L6/r+PaHkSDAIY/ECE8T4IAfbuMIeF4phKJ7
TgAIHjQzCuPJmYVojMkxv9zmO05+pXb2wwzwQ8oVjXAECVQHt7rWkPObZ+ytoJyuDsFnwE0WRgga
OD418DtTRMxGZaE6CLoEXsvZeyFXGrrxw3Mn4uFZ3KYLKA10dXssE9ALY0wDCMwU261L9IazzKzL
MoQUq5sj036yqRyD5UsKOFjDT8ZLr6mg3zr/9Px5cmHb3R47gqV1DQCM2aphQqkqevWUYJze6mU1
PL+s/4/v1+gF7/cdzMq+w9lt7J7uhjVqAlCRvKMo5wU8V9YA5FZDlQv8hUiheD3zXJOZOgl2bhnB
hp0/s4LHYSLBGGGpDVHXFJnWidY2ilHZhHkB0KNaK4h/s2L9cGXtQa2svci0jb/q/uc93YDcfz5e
hTwXroyiemuSJvJQM8V6+G+JT942IDCTtFcObKm8imuuLXUFC6yMnG1uaf/DIHezzdFNrt0H8ljq
1oQxV00fxptoWjWNcJQVdYsbos4+gPplulKcRTPp67fI83fXG9zzdze9bMtU2bBXeibwIqtAWOCI
Bg6JiwZg3woFM2OoyswBZozzTPOmG1iYEV+50/9i4uL45U0v5YoS7/W0VP/pHkzpPy7XeZU5JNMD
2KFkItFbDa2MLGmu2NjkLErMojOjrkzfT9iLs1nxZvvNnDZ9+nw/vSly+yP9+1TVk3ZEs5XzFqtg
JXLKh2aJQAyVMFYa4TO1U7xJh9WPvSjTUeNXs+1tV7a3nZvt918+PN8/P37ZvV8YEtWLzKnZ8vRx
zF9KEKQgWbZUyoJN042tQm6tpiabV+pVFZoXlu5uqM+H9dvcLg14L4K823Xb/G1UyH/5396urDmO
G0m/96/ol4mQY7YYuA9F6AGFQytLlLQiOeN9YvRRlBjioeHhsffXbyaqu7pRB5u2GdMPslwFAYmj
8kBmfvlqA1+Q1fnABA11Qsc52H2cRtg2C0pUdKBiUGOJt+TFLPs8/gQwUH43KyYw4kNr6LLPlt43
d8vm7vZ+X9EHVd64BOY7tQbFrEsg+50E3ST5KMFmOQQps+10nNjt24JcRoZMCR/27cB8zBHkQLRp
sDlTwVNHPal8TTDAW8LHTbipfHIMtPzAo7J/+ttp3/VIHTkvQjc9GKKtA397YqQEHg8K6hHPWEQO
I1oDMEsEnOEMY04MfPCJmaiVZiKQ5+FkPe2bLwgXZqgENgoBTsoan+ljC+wGhovmGcIl/xdVAueo
VXjBm2CVuRHA8bVEz2oyoKJaA3L46aXe9j0V/rF5PStJHFlwha4d2guJ/t4CM+8FSaL2kKfANRph
gSgtNUirxDHmxcCpcUToCixYr5QQHNjts2Jzu7EmQ6M374uZaDW8C4WHbKv+Pj5cdggDHE0ZEE0C
lO0EBkxdY+yUwFhiWzlLLacqcBJ7qUi7LoqRFyN4aM3CdAbA6bvU90tYxolVTlWEeY9wWQHGBjMR
TgAVnHhMAXohv8Ru9JLoxdDUb5Zk2bt1+e/WNVgGAXhmAnCtWBGKmG2KI1i0ACO3DhxjsqVk6jk7
vel8AsqrfTkr6VuNEd3BCD3e7AL2cJkVA+NfSFlRoxgQCl8XWKzo3Fa1pUwqMZE023VUDj8CY4Ml
KkayS4fwi0ZuglE1s3VQwVU0KdRHNGatgN3BVGIUMbtYXR+8CjwE4Ve2mZUEDzWrBp5uP5TL1SPm
te9FGFN6xDN+FoheZEQVA80ZdtsoWE6qqlBL2HcZtTeiH21Y9DUrhxzabc2F6mMHXN5831d6NiYL
I7iUmMddg1aAyauwlKD5IDCQrDBtN7pETBL6RYLnbyaYKrzYn9MFuRiqdReUr3on5HNbIxpD1rdg
rtkhm2+McWLweWkuMC9Q5PjBHKoVBRiozsTECdXxWanHIwNNaKjDhrNyDuuxia1z2BDsbAFRcbbH
ardwGoHXKkqMkfCYPEgxpKO2AjiesAqMHc1pj9tOdNkjqxkhS3Ue4W3kAB2JSuDRaOlNXSWKd65U
w+ExGsxfZg1oCJa5wPqISEVvJSXKjlCCWFKr1jedfjn5trhr1n0sJND5gkL0VQJKCt4BKdAIwZzy
tdac1DUoLPSFgM5KEkryNRsjfz1IjdpEj26ueI7S4Mvci4JlzBEPkg7URUxJwBoLzoJGIJ0PLoJd
Fg5gew6Gm1AIyla9iY2cEE4XPRfp/zwu7h7+r3UstCl4nLcRzD7VVrMA6qPjsD8GL7gdTII5lcPt
tRBPa+y7rifSMLv3s5LGEVbC5WIHmXc2gNVS0vAAXJkmvFXCDG/Daw3nSZpEdKitDC+FmXc2coj4
iBIMDzuSc3HvPf9BRqNhlFlMgRUEw4WJdZXRcFBAVTcsCVApeS/8reilN/7YkpndTeBi9a27h1Nt
eIKnUcm60szRigcHokQCD6gZp9J6TPMbz9Df66ogQYyxAaFWvXSjd59OHu8uFitMBqM5w81u/ISW
CwMKc0VZjWAlBmteRI4JwpzVTAnLDwSsbHueumPfvC6pHhHFF6LpXO/ff+tKeffQuSjwTThaCcHP
EJNYY4Iql6DMCMoD/AFCeHQBd10WlEg69JZfKCK3lPz8mfVUaWprrn2tKm8wuMwAu4EDBMsGK5YM
Qr/U5MWSG0fyJoA6NUKyFLuLM2BPRYYLVe31f4L14phBTwVi8mEEdF2zuiIkBFhV60ALmLg6K7ss
6ZFyjJ6+lvqtufqBvI7n4ydQv3NgHnMFinwgsI8cccSAU4sqSV8H0Edi5C8D4gtDTyn9Vz/KySzp
yGTWHYDc6u9/Xywvu7AQ28od6gxwE16BbQ1qPxoAIExTpQWPNiH6WCKDtPSum2L8xUjADz58AlAG
XU85JyKj9igM1IqgY2gLOxzAqAcLqTK1JNxHBDv8q0F1+y16pJsR0ldqBAbt69VGiOS01FaYEPhy
owTduqZ4ODHD3lIMorKWGhFBdZL+TwuT9l1J7mpkpZeIts0OXvi2cnuDvZ0tPxMMA8nBEeUhtWHN
FgiupGYe5LmI5sD9+Z9xZ3W0PHELPJDzq2bkhK+aDg8Kyy/sstDaCg6CEq2BR8BmEIuGGAhNxSNK
sciJiCHS8fyAXWclDSPpPxdr1r8hDM3y8WuLoIb2ClHZX4GcI9I6xEBMJRl3aGiDqcJCdrl6TVki
zuvn5WXvRphKyN61KOawHoE6g4dNP+miqHz3SvJNSopD8CopEY4G2AWnJOKdBhx3paO3mN7AnvQS
F/2WhC1H5ENj+54M5OmPl+jEwq8Q9I/MyqjRIWH+o3E5dFoFkG6G4caDhgIqqQ/6uRhUZ++mOchZ
kWgE5I1oUs2yi3v47cdqFwtPUN9n7RoSHyQcS4Ge9gSioxZUVorX3BM4CoqNB8N33ZVEjACSXDRN
H67Bf3u8+Q4m4mbyXSSZbIuz1BhI40GeBYruNPQjWAW6SqBgVQNFhvBnXVb1hplYyrJROZ1m5Bxc
SN67ah1jPO70BBZa5Wgn1V4XG2Y805RWIhvVSYOMEzzfwSXOTEg1pf85fz28KOaar0EGcx2IzY/N
QzrZFrpow9BNZMoTaysfLaZ+UAtix7FKiegss15R/vSVTu5zEtYr9ekcyEjQ3xcd5s39v64uHxq+
u8xA2UIwMbJOGJSNcNTAHDAYE3ReIY2srWXc964yim5mxVjr1ZAAyrqUtdXj3dWR6JAAzZEV+VQb
k5hOFnRFyYAGDttvuQmgdxMMMAqmrQVSAFntepqVo6kREjCkunRFNg+L9SaycYMzDmt3xLOLFeSR
B+WwArsT3eygKyDiOQglAQxAm+QPGJ5/KHdgS8kUZHb7tpgjH5a3sNmomFbjNv6wzZUAyNsjqrO8
y3/L8SMsWpZCFSICfQYBW4CJWxTHMoQ6Rf3LTXpHzVPOtJ52YbNpMpi4Ih1W+Or2x+/7OWGU8A7K
ITEbUlJwxDBsDXGWDBdYTiyCdFKKsmgmrJP9PktyFBshZ22f2odPJzvNGhOORS441yLcSydEIrWs
hGNo/MFn4EIUWPFPB+V1HPU5/dk92FEyodWejCjiOL/F2KT7l8Ixvctx1R2uZlZjlaTGghzVuYoG
43hryiuhWYyOBwYH8DnCa9v3ON3btz2q10OqtenyGH89vrxfDeLxibCeaI4eF4I4KTUmn3EwvZSv
DWFUw379p+LxdwTOyjk0w4lhsNbIGSxxi/kmIhLMIPhbTv+TVsSMA0MdR08YRSMpVioFCntjqTX8
2RChh9GLB82KiRk68q0bFCWmhBi5+brvddCbNLA27MIksB3Q4qOwgwi9AeoSXtx6622tYfVYEC+u
V+yTNIUxsmtRTpqNTZqRfq2MIVVwak2O0M++AJ6AY8OJxco5HCQW8DqsBem9SAbH4C+kTY007M2H
js2H9vKz25Sex5vLh/s2oefspk3qK7J5EFSbwscopcOIeMUr4BkIZassczrEWqfD2TzY8xOpPPi6
mMFSjvD4Fe3rE8vF6vvjj8K1d9SW68n/zRERWjuRfKVrjddjWNcGiwCnJGpDBQlEPgtvsu6NVCBl
5ncF/SvJR+jHnFJVlsI62YMpY+0lmslYC9FGzHGzEpUhBaaQAdOnispRjDd2Pr18JO2OmqnCWKOn
bTVMG4WHi0Ha6LfFXQuSzzfI2rzNNU7A37gVrmIMLFPOhGgze5OTNIVaufA8SNDNABMBN+3LkvBh
DRR4eNEHVmw/E2Sb+ay2+DR0g0+DSg7RidWg9FQuMowyowhg7UVlHUhYymtC+WFnfO57mmPn1/vU
Uzm8EsCHffPo9O7x/iH+urh6zIfBfd1H3ZYZWlE49JKA+oOARJpikS1YfqMCqYFV88ieBYY8NtD4
fMZaFlNbDB0g8NB011n+Szp5BGOoCMVJyUUtMxKrQIvKINK21aBEUIXxpdrY0MsSLbopKFiy5ZCC
JesX1Dr1vqtBikvJHNEygFGnQaXnmMJiZe2rOtUkSMOToM9Ks4NuJ1bO+4LM1TCvFh7yfhXFcLnK
SWmdd/N+i9HPSOY2klsHGnpVO4mVU2OEpQPVCw9ABBlGmX5B02tIzZRLtt+unDsf2aKVVNtD8hlY
Qenl8RTksBawKQlL8eHdorHKVfCQayJrHv1LQVh2g5ckyyHDoRdYx1P0tcZNMKvdJNZjsQQVfahI
ohjPrTFDKqWKCMmEBk0xJPmXHMi9zXwilrV7vT81Rof1UvLD7W58b36//npXBFZx50wwMlQ+EZLj
voDxOFJh5SbQhJlTYcLtt9dXQQQbMVThYedF+7G43qvB1AIWcB9RNQ0OFTfiaFXThCBCiAJqJeW+
B3i410dvbDk29vBTvP/u7paXXQXjtgZfiyzuBFUSi5JpjZn6gemqznW3afI0Gclqow+Bwu73Ph37
uNeonIWxI7MYlL3ZYGF8WGAp6ZPmGmtDrI7hHYjYAgGT0s30aFuB1zNltGe+YsBxsHw36jXoK3cU
pChIIhmfxsYaHXJK3R9pWs52sRqZ7ap/OXy2vPzXY44Ubt3ssEg4FUzw0WC2wQGiWLwLq2UCcwF9
mQQrHW2B+Q8y+23v45PYvi3oXq2GZjVbD+yVk9XiarG8as7usVb8Q7MJFtjJK5808A9rKuB/GPoW
sDJyTSsN/F46qWwU5qW4yigxE7raWNP9BeCEDxkpPOxHGv3y2W9ER3ehn3lpVBxLhKeI0g6jdy0N
sI9SB5JYJPXzgDx3vY9PY/e+R/vw6oCDGB+AZ901p81vD3hnr1vToP1LPnrWMkVjBeolKJxB2cog
/hkBpUeHYAKnh+U1dj7N4fHtrKSQjpFNJws240FDH/beE5pLogBfrWumHajLOaAW3VHA6issZxyA
3fkk/1rNud373gzYyAxoB0F0BwL86tcj27n1cmwKBW6FMaGJYsELC3/UIppKReIFnJrkbO+OvOym
pIBejFCwg91++6GVu72QLCEdbHGNqB8Y3RcJaDChNhWok9boaIw4EFLxB0Ky9giYzeJvm7I2x7fr
XYnQk8fraxjgNUzNL66u7ufXi3UzX/4+v3341tzNf9zdghJ0Dzrmw+Lua5MLoz18u7zfvnidl+Rh
cf/9/OL27vzH5fr1nLXPsvfzfAV/PjSv52T/4X3zkOvMbZ6XAx/qnvy17uF/9mYFK5DHw/oqlzfN
2HjWWP7Hhpz943iO6an7y/sFWn26ufp9jhlR+Ob2Yt7t1uv56e3D4uoN6FhH5ngOh+5yDdLuDSXq
iB6/EuZvP83v/43Z+evz28eHcyDt8SajxsKI6zeUcvhnryT720+zf95dPiC7hU6QgK5rsBDezv8N
L0GMvlFaiPevKPTaDQVPTPtob6A35P0rAo+KwaCjV9bCUPPZl/j23aeP89P//RznE79/vPtyeuY+
zN7sflNNN69n/u38Pkelzi9zUsd4ayrI+1nYYEQDz8KCVq0J2v8HwhyR49nPJ/Of353Ov7aoHtD5
6hYORK9P9kTTV7BWIAGa9U/YFGwNaLr9h9tXc9j5xXqNVb7mQBmKqr21+2n2PpeenDt8Mv90s2om
lsK8nx27Dx8++fmTPypBhzneNn21WF9f3vw02Zoz6LW5RoDa08XXORNsumNoenLq/Pv52zP3JUxT
IHEVZicPi9X3+YEfKo3H8GmcZ2rdaXyiqToSx7N/NkuEHTjO6zfVVDCt3s/Oz4M7dQcIYAwX6/z8
3bF7Gw+0lcxgrx/efXwfA5yF6Z81RxZ7PY2/nB5YAEbapmcf3/lP4WkSJHyhs+v8Jc7RdfZES4uL
tflirtv9nf5Br3/gUzz9dOo+zA/u7JF62zb9rzmcwMf74ntov4P809TgFsxns/8HUEsDBBQAAgAI
AGBTTkeBwwsdCAQAADwLAAAmABwAYWNjZXNzaWJpbGl0eS9tYWMvYWNjZXNza2V5LXN0ZGVyci50
eHRVVAkAA2OQHlZjkB5WdXgLAAEE9QEAAAQUAAAArVbbbqNIEH3nK3iasaN54H5pjSI5JI6cxMGy
nc3LSqhpigmzBNimySR/v4W5GCfYSqR9MaL61KlTXRd8xXnOZZY/F0maZL/ksEpSkWREXmQvNE0i
mT1RTpkATuTvfyvfJVWWZeVVVSywYtOh8s3GI4RxoAKuXoFVgoYpLDJ0yGg62Z3+tfz2o8Ft8ooz
8PIIMGRWis6+iCATSZwAP7R79QuvmMj5bZJF762zEEWLt6mk9aJshZpKA7toUtmrKgmJq4yJJM9W
PBe5eCtgVhTpWy1oD5tMJb3lszU9dBSz4Tvuew0ZcIoi+3ynktFRqJblOGFDMX9PQQiNooG1AC4S
KBueWtJG4MWetYnfbK7TPKSpH/4GJvbWjuBszDSVzD4bI7bCeIyLkCRLxEC+1fnEphWBNu4To1P5
5NXFx1Dvi32zaXVOJbtno4arhPIjhF7OocZc+stHLG3+54KWcIJyzGXzBGmK9E5PH2qWYh3HElKC
aN4nj9s5IStalmuIV4L/7J16l/Op5A6YdTc+xXxc+WcCqUoTyDEtx1XtU4GaYftagG7+dmNT8bqj
DlCcFth6jzlPIyy+qvZiLEtz99AN40khcP4Ez9MUd0IrZqBvcopX63ltJdZP8dbt2FhPEurt3Ksm
hZCdIvzzSYlGy6hpqsvUmvE2wVbH55zTZ/T5Xda08CpwT6hmg3YhUmxmYiXWuMyyuushuqiyKIUV
/YVOHLDxZjFuxS2UO0+r82SRYehjnoRESbQGBskLLKEskWib13QTv6D/VvB4u4/QrE2saneEla7X
eWd+yetVvnvB2HZ3a4rqKlGf42F4L01wKR8XMe7VNFZ3ZTXwrG3QoSJs2tlqQUi/IFSnu3aTulr8
noOQIi/FYaRWzWSMvHN/KIFfUkHbA4zjdnFsi+Ja293LYoWj8UQHpD/bZzlQsDqm4EPG7XVPPiRx
Nv2S2vPJTlkb5hIYfmr4t7EL/n/i4XdU6a/H0G3tYxn2zdCauirslOJgZLD77GCUMe0YQe16TzUc
Jz5Atcx8SYs6UllQwZ6+HEDrUggBYuUgBZ4zhI+09OfZu4WjRCqLVfmd30fZpYgICQKVkCpLcDKD
Ahf0CPcPeY+MIKZVKoIIUhAwhj6X8ZOhGb0Ww9TpcS1+1ueJXu3Kso3QcC2nmc11ld3lOd46bsI4
58+4Df+psdYeG5raCWzdgDjG2m6z2HEcOxCGmhmqchB48/XD/Z3vr4LFJvBmd3eL++vAf9gGWz+Y
BRv/Ye1dKcHqaj3318tg/nDvbRf+fRBImjNgozqztIatEXCZN/8mS0XS3AOgDvEQiA9JV4YIDWxT
Hp5vCmD495NJutrjTDB0itsRj72Kc9yFVy/4U3sssiVWQfoPUEsDBBQAAgAIAH1TTkcscbc+ljgA
AKPDAAAzABwAYWNjZXNzaWJpbGl0eS9tYWMvYWx0LWZvci1jc3MtY29udGVudC1jcmFzaC1sb2cu
dHh0VVQJAAOekB5WgJAeVnV4CwABBPUBAAAEFAAAAOxcW5ObyJJ+Xn4FTxNqe1BTVRRQhNcTgMCn
Z/oWrfYldsKh4FJ0cywJDSC7+/z6zQIkgYTkZtZ7YiLm6EFqVxWZX2blrS74Ns8iXhSWvPlE2WIc
rFZzPv7Iw9/SUvy42bLky3I84V/5PFst4G/5d5OZTPss3Qbl4+5p+Jx/yObrBS/OP9xcvr/yzl+d
N4SSPFjwb1n+5fwDz4s0Wxbn9vmnW3fK868pgDh/Ievx0yo6b9qL86sgupm+9FHpIobvNEl5bg0S
V2og7yTVVfxaHsH3GI2N12eSm8Vcvn9e8c2QT6au6Jo8ug7K9Cs/A0XlQm+3W4X/8ssv8u/os3TH
ixUoIw3nzbPFI7Qz+ll6X/BcvpjsmFIVSdLtfP1wsZTbij+m83telHfr5ZLnF8t/8qjksbNexiBs
WP3sa/H0QxvGbR2+7Im28oTUI/VMkiZByc/v08VWYVhFVEGqgjQZqRY2LFUdq7ouK6qhqtLNVO7O
AUCWofETDB6zMZVHiPgIEe0MFLrK8rI1HCHJXmbL50W2LuT37yuNkontk4mOFFefqIpGXVNhnk0V
x/R023VtlXhYkiQ3D4pHHsv3jzkPYnhOleVJWqyCMnqU/1jzNcDf2dAiSJdKWQ2VJO8p4qsSEGzM
wvvkzhx7MgPy3nQqj6YX76beuw9nrZHCisA2fvPurmcX1x/sywsYPpncifFBKatPavMJwyAOOU8k
6cOVfMcfhDvJ1zzIYcymz5IU5a0sCWXNZvfep3t5/9MQQ6qOYgx/KO0GDf6QfxfDzN8+y7nydJ5/
e5KnV//t3nz8i7u5VE8XTFYzf5b1wllTOzHh1+BrMI3ydFW6Wc5rnf3XdhKQCkpL9IjLH+/9ipH8
WtaxPLILcFwxn8U4Wq0sgtGZhAYRjsKEIIbkogTosxmyrPUyBeCzVZm/+XXqWhbEkQfQ9DUYzM+t
YTFPgvW8nMV8zkt+MPSt/Fau2lZBXvR0j6qWD1evfq6HTbN1HvEqtkUgTvlT076LAd32X6e3gnDu
rNN5mS6vKnSdnmmZp1HZ6qhZVJ2t1nqwl+dZvqN9z5/K26xIhWo3CF3BPl9HZZb/li7jpvX+MS3u
J/8jCJ7BpGjMkPDACeARNYOaWgSmUXLviUfrMoAwfQEWly+D+UZbP/1JbfVj37baYTpPy2chAIY4
OJqW8WUaek8lmNr40SLUPJPIUKnigKo1n2aOdmIVlpWsl5HQLthEmZUQtmyg+ywk2g0bCUAM8BwS
qMxdN84kbRisJDRNldawjkN4xyHDBKCsrd4r1SB5tOCLLH+2QEv6mUSH8eacmGZY8/b3eVtWEMet
1pXwa17UAITg0xIs49XWQt/NszCY34QiC+5aNwRe9TUJGRCF/HXAvNYmOZP0gdqMIj1M+iBZVrpM
y476kCl4d4dVjLFJzyRjv0TasZR7wmEUk5jjfs4JsC4eXeFKIOS+6/w6bZRWYYISYB8S2LsBhmUO
AxRjxNRQbsYJNpObq4/ga9k3Jyj4CVR9j0wf+XxeIdSIPGpG/Dpt/GATFYRvUoDKhkJNdFU/ztey
Cl7W/x5BvhEhsijueHILGWH70PaRtwIlBVcftegAMA1KL6QOBUZYcgrYcSW+DCdB/cENoSFAOeaU
IeMU0DqQDwO4ie1VSF7nwtk7o3JAx/OPWT6Pa4dSyRFp8EBpiI7ZjtfG5Zdlns3nUHw30rQEHJ0G
pjMAtkelcnVEIMggMhCepibkFDwRaurW07goOgILUwywtMNFmnwUFuQ3g4fRKVjfXqovU+3B9Wgx
4UF0EKiEcRahZrFkWfDriyLZsv5ZVNXrU1nlVCKCSp6W3AnyPK2ZCQ1A+D+9zmozSyLKjIiCZd9B
4dEZdhs8AM+cQxyxE4hVglzN2JBHh0OrOdCwsFxjIAJdgwDZgwDq0zS+4xGHFfEVrIKBy30meI1u
VgGUtx9/27GvSyXwtk2XqByXD9vmr1kaN/8QMhjoQIjathmsCJE5zIgMztR4O19dqu48hWruuCT9
T9VRYzP9YuCrJvq0xYKIZN9eWFY7FxpsX64aQSWdIRyXDTPG2GA42UcDK4KsKLt8GrlGfTA3j4st
CljJB01HNRO0P/5hdRjOhARQS1TTfHELEfgxaIF60/wWLQluj0lwoPvGekYHSnh1Nkjat6MKWcNm
wiOoUvOf+qb6x/CrKm9Qb7kGFVoYQ5WB0UCtImLgw9nfWXPTtJn8SkCIUkteFacArk9kAUwn4Gaj
7uMNzTqeG6KAw3iYKzJkmkmH54bmVbASuOtV/XC4CIMiD0nWQUOFuIvJEKSRSkKeqB3NNlt9h6Fi
AEzc6LSmVS8JEKxy8MC8qPEoQfIe30P99W449GA7sefQM/qt/LZWudFeq8H6Ag9LpJwiSoLjUtws
txqu+aktfiYkAqwP294hiOlmHach7V1mGZgcFAlJli+gUPhScxH7ZKPNsjWYW0gjQjRjKKuQ4hOs
RASpMgKBxVEzwvXrDSYG7DopTjDxM4iBVUXeYWckSWLyMMQ0RPJs5vp3768vb25uZxfTmWtfXl5c
v5vdvL+f3d/M7Nn05v2d66mzW+/Ov7m7mvnvr937i5vr2axKTRJmw7gGJNJxzbWWYJLVmyaFKmxd
wxJRh1IkPGlThB9RvBEkETSQFOaQu9qEpisepUkaCa2rTCKd2PWPi/ssm4fZ06G1VgQp10gAZQTQ
cde52Pz3vsKXIH1R7YwJibEuETKUqhEachNQrqF4rMi62WKRCck1A4BqQ0lSKJpnzjyLvrxflul8
S/ZKuBWkpstU5FaB+mNaPvqw4OW5iPlUIh0XtlerYy5c8Qo0M8Qal2eT2+mWibAljWgS0QeSCkwW
ysrv11OxR5RG9cwu97FfBcUXCGcgljhzsOptSYha9Ubw5ypQgOEZw5hDjciiA+b5evm5WnkTiZjD
COrMMIncIXcVpGJKmaZKpONpu/30XmqMqMSMVPCLp1U0W9RUiEklDbxrnobQOo6f4Y+DE4EOpoQH
PAQ7bRNhTNLQi8/N2iFORzHRmSo3lGBZM9qJISTt7P4vFhZDZ5KGK8AANj6CuAM44hpNYshNQV5Z
1fYkAFnV1j4QKJ6Lki9mX3i+5PMuzTYpPTYJ1wOILOIs449qfM7LdV5hV6v9/B21VX180CHXARYz
lqimvBk4+/ZH/Ue17FOrzelB1KIkZLWYbVKIbAXGJ488hEqbTmURLCFh5sP1o+kQy79w4Wq61tHK
hnbPlLVpME1LNChgZ5vxs8VDPkuXX7MvVXAkbKOYAQQRRJEuwa16KN6qh/zd7EH7uwlM/24C68MF
NpIABRCQhaMUDzNYra/6ZH0BIR7D4m9DSBQG2t6B20squQTRdiW3TQ3R421Wx3MT7Z14vYQshdx5
UCAipKO9Y6ofUCF2z56+m/N1HKoUiqHraVWw3G9nVdOqQ59BBmKajO3MLczi58o+zOoQZxglAwc7
SttkSozq+GWg1UZMPiC0tVnDamel6+n7u8vduu4yC+I/kZf+Y9T/r0a9T+xgNWEi+Dbk17/vTeeo
ns8zeZbzolr0iYZqofu5WtaaewedL+EUmyGo4Xpa29OsKlPrxSlBf8byj/mQ+eN8iP1gHzL/TKIL
iEh0BV98C9JyVqQPy2De5yXRdyqukBEcR6q8DJZZMedcuBpWt+ktev16jPoL9zYVM1C1ENZLuz2l
8jEtmsLNsirCsyTLW9tT0WOeLTPLitd5ZSJv5tnyQRZf7a2pqu8Nmv9c7dLUn7m4BNPerh54iSLG
WqgasRwugjksmC1LqLBaNfvBvOjZQhOr6jfb0eLGQBpdrUv+9PanNtY/I5GQ5Wc5hOV9vaepVSep
WwbjR0vssmlD5Qtiluzk+wcXO61FFECOevj3y1edtxvy6AMXF2XE4ToeeslDiBRG2r5IYARRvTMz
3QhXbWSb8ggiiZBgFopbAhAAhl7CAI4RLHh3HO3ieRndB0VLUwLE5mRgD9mrs9HZW8sCZPnzbZYu
63M6RsTdsoYOKAJi3P4VjZfgolBI/t9wNUHL28Hb7k6yPYji7pv5w8Iw+3FhGKk/Ngwzy9oeO8sw
Bdl8ni4f/lO9/LWql+8SjKhpIiTvQWPGnv9/934EUbVE452LCLVFNDeJq+sRaTBP/8UbTpWLY6pV
tw7aY0HbYjuMkuHOThJOSX2ocNxlqyPm9vkFEUcl5tC4omKa1Ky+lcn9cW5UHtW9IOBtjao+10J6
c2vqx8SKwQ5+IlagHxsrVDlq7pV/S8tH8apAc8Fcru4TyiNdU8K0PLMkWc6DJ6vn4jd0hO0OMQVc
jxkInUedJzYf6Ii3HQKooWs0MCC0iJ70yCPFtgOTulH8Cu6rNi3KAhzQ+onDDpIIJnJuHjIRO9Jy
zg4eQRUtpB6BhdBBB9Z0IQnCba2IIiIOwuoR0kMLiQ7tWAc9gJUwUzBJV3uqr++By3ky36OFVKyK
Y40c980i0JIus4c0gurbvX1fv9qgS9W95+plgOZlh+2TunQvMsL1ehFu3mFBmiRJTroM8mf5YlHd
iZA29/uftlf7ZUXuNhIwgJe/7jOq3ndR5O0LL/Ib3zBhCcao4pk+VcjEIYpDDV9xbcNnzMSGRtS3
f+33BLoaYX1qYkmiya/B0ZtILm5ATR/TReP9IxU0QSaaphJCFN9jmkIM31aYalOFqmyiMoSY5/h9
mjhGdQ9X1IcrAouUX+9uBuxjQmjCXOypiso0VyGa4ymOLV53USemZuiG7+lk6Oy07iGAdnveHjrA
0pYk5FUA6UoSISq2C3puAfRYHNKZwXyPKB41hJ6pq5i2bSsI6whrvmo4nvYimeqGNrjIjA69JArE
hZme61WX/CGInvsgYur6xJ4QhToaVojt6Ypj+I5ie4bqOL6Ldf0ExJruUeVvR3SQh1F4gDzGIYQs
fCKD92DXNV8nPtUVZriOQghzFPBiX/FVamLXoMjxnD7sXcr96Ltj2vhjPTo0C25g41DzR4Hb4BI2
2IXpYF0hLrYVG3xPUSkzwC8nzPGdI0o/jrjpbENNIo0eQE0iQ9/44okbkrVXqhPsm67OFFdzwILp
BFSsU09h2J0ggk3m+/bbf9PrfB0ZKt/cEywmQSXYXphar8Trde1YY7iMmr7pKBBqwHB84ZcYGYqq
Y6oaWLUxxi+If23CHXRxEPSgC+IkCaq6zH33SbxiN7Y3oChjY0LHCAE4U4cQwQyhaIBEiG0oJnFM
xTRtlfnYYKZjArhpVdudX6ZhDon03N+YRHEu8L2DpPuYRkW/qdw1+5nF+SGYliAIinttXxDRCLGc
NIK4V9N+MTCzNQgsE0U1GFKI52DFtvFEYSbVIdYw0LT+Y8VoQekKQfuE0PW9euIbD6PaHpPqtsiO
Jwg2RvA8fAvnRbap+QgSlYOJQpAH8+MhTbF1k3kTbeKZqn8o2G2efoVKuSXfLsXbsIh5LtKiG/D3
OqUauijs9MBI+E6kTaNJYG0LIom7B/IIEzbWhK3bE404EBqp69kQawxwXpPoiq3qDOyJuTYV87Au
cqHFc/Fwi5VJDXrAChrNYE97W+jjWnA7XoiXLMp660weobGgAd8AydMAikYh6OEJWDjVfcXxXKZ4
EMZNTTPBYMyXaLCPU7+l9I3sSmmGPVKGuJJyt5Ja8rKSsbF3rKFKx+pEJ+qEEsU1DEiinkshnlBD
8XxHFS/PEkRJS8c1sfMjZLu4QnaIKwjZnvZbOwQjfcyEplWqj5EhtK06qm/7OhiAbQI4DyKL42MF
qZqr2p7ngyuedMQd8T7luq1+qYsyOIQehpoI0UKlPth3/dbkRp0IIciQujBaA1OiE6w4BICD+pBi
O7aquMjzNWrqummfjoGtO0mb+rzfMtrP3E9fEGf2YUtd8eihzBE2K5l301XwaJ2n5XPSmTbxHKUI
4zERNuVPXFinkGqeFMKIqdgmxVCnEeIS1bHtyelpmzZMTk+f3TNO6qIP+kQK9kSyo4jPxduOfPyV
R5diOklliM2/4B9iCWZOVBecBEKQDUI51FSgPtYV1YWsghFUb87ppNBi873prBn3D6v7OnLGfRGA
I21PTjebZ/n0eRnJI23MqjmrfkE4x6C6w1QQyZ4gUVVMIHH7TDFs8EDdJKYxwT/caLd4+kduu6Wu
WIdmqoulQ0L772GOROkqUqDOTJHbdd9XPewqyBUBHCFfsV1fVSAvkgnFBuT97+T2IA+P2WNr2BZA
/8htt9SRo12ebxt5sleevxP/o4FWTSCupg9WDq6NocpVYbWpQHmJFdOgEMl17CDmwDqJnZ4+oNiP
Ezq6CJMehEhFe8kmKObbRIOMcZ1qdEp9h2iwXsOuD9EcQ+5E2gQSqONT24Zork1OpZot0Q4iRHEP
IgoWEXbSX1amyfM2XGM0xmpVEzGA5Gi+pwCGCZg+rGVsCgah6bbvE2rAUuF0AmwR7gIzeQ8wzipg
rejjQQDV6ZgKE4VfvcKEDM9wDGWiMajTAIpYHXqKPvGRZmiexgzjuwXoy5OH1z/E9rry8KBPHn4Q
ZcTl6NtgyeeFqJ3wWIdnmBBLd/6XuCtZjuNIsnd8SV8CFvtyjFXNGapFkda6jtUqYoYEOASokfT1
8zxry8jMAmHTMM1BZBEVivBY3P09d4+AVjq2wgxvcOcuw5gCwjFhZcaElYODeA3dG4twzbZcWnST
lGLhNEmxPXn+H96ejlC4tbeSMApQkmscs1BDFMLg/BAitEJX8IRUTHxe9376srtHt4tyHprfHdz3
aeyJwAunTMr1SSF/X309VwX8TXKS2BgnY3SC1eDpxFcBMgmTkZIGPai8OlFHJ77vpB9cbhYGV3Lq
YH/68A/SklPhNk6FG6yXs3ywDL5xLSOQUuUx4GDArUbLBeOl2GhAHmN+EaqeDHTlWPeN+gkptTSh
9Wn7jzq/vX983J6ZI1BPOAAfoYUvzQIUiFRxFjz4lQEO4qGCF2vTYGeesyWjfjuxlF6wusqJyTr/
uNverYZ4niBr4jjhFqmqwv8fgKEV1rbBoITqFJOJ11Cr917Vl6ztqfPlRT1924u9cgtiU7TsaJph
0SUMxMkoO/Jl2VfwD3BU6xPwM+AyS01Vpn3NDv5ZOJf609l10wlg/IIAxofTduZffvxA7ybd3U8i
LSflLuCYXifBhAP/x4YCKCSRmakF7KNU6at6HeW+Iko3Ha8X1C0odZrO75/Hyynt4N+gTD6l6OA8
PIwuDDCLxTWAVwDWLAMHgZxo++cryxmUno+/FWa/3w3jv43vYv7383byoG/NIIGLIcHUCAsmoILQ
LMWKDbYqAZRZg//+CuQ8kbCb2tYumNHtMVRwpRQAHBqqL4S5FYMRE8JysqggfhQ1MpxFrBgzzsKM
KRuk0s8p/7jvXrYFeE/Zx5Ns3+7pnv1JKGUGU+R8yVmBpMiWIQ2XFXIFA8tkTNIuJ6PdojTj3nox
glgSw0yW6PFp9fR41iNwJz7Ik433lXvJStCJKQMFDy1EMIziFSAYl+VZ0zjqdiyVs97PpHJY60mU
Afzkw+p+OxACdYjnEM5q0hXwN5YNjLYCBGVBFsVKbtV5bJmw5UV+59z7FZdz/r6XPagF2VfriVl/
gA15HOL5dG8ZzlMPfEYYNyi4zDZbHTyDfsPplJBYglEAT3XKB96Ul/U1UBWZsg8nMZZbd026qe43
8zPs9lu/3x8qB9Z/Ek3jZ80iz8UTUW1lwBLIbuiQmeeWPBemFp0pUufecnW99ONv58Eoz5WYHJMP
f3xeP3wa4RRNCy1Bkgd34HysPkkBjyQMcIpqzPtsmVOpOc1Ta0Py4wXRv9Ew18J+oyY3vdRyYSrB
Tk7NdvW02u6ehkK+x82QzTHDwVfmYJZzaDFpTnS/ArhKmpblmVXdhNcigwWJl0yGLs2X00DXczyz
Zv2kgluY1EpTRng0qaPLXA17I49a3ESUToNIeqOgxRK0wkvhWQgOugEVK/FFCOfc+bPuejXZjZVZ
EHwtpiyP/mwfwDu+fN09Pg6ny1jCjfIcWxbWaNkCSFHBXgDoYEYRXkRnOO1YFOCjeKE1mox11SpN
2vUzWy+dMwqCHuz9f39bfV3dQ9N3J611A96I2I6UE8tcEWSCdU0tanKINiRZZFZ+0dBP+5sIs7jM
+4n+rgGfz3VzdNXuUFAhx7GSIl0ic5kSDIoiUJS4gSOygfvoo7RNfSc4Oen/Wmxy0qybj1iAcl44
PyPTFx5/evMKR9/rQ6Cc/saUdKnR6BaYFwUKUEtiMarMRAtZB5eUcuElB2dptGv8ed6yn99GL8xv
yyf7RQ6j3H0djMIfBBkP83IDbBh0m3sQwepZc/gDRkoCvXLDLPaJc+VcyO27APw8wnWvdW7SzULL
Oe/CD9eTWfxj9xS/PX08GVhze+AxQlRrJdhWVkwlp+G9QGbIcVmpm5L2Rb7i2Pmy6Mcve6E3dkHo
zZnDUpnqw0llvSZXIIoEuCuNdJZwEGBaVK0wrVuDbzOthbSos6O+JjIsHG+zOhOvzdc/vjw93NJr
sv7Co/FZD1kfVRLlJnWGb1UKzj9ZGMMG+1FlS9K3id+fd9dJ45acvxfnGMnq29N5QYQ3g3dsGnzZ
VhqaQwjvLUsmkYt02lRnXI4T2nTp5aYfZ2EpQINPg2++fXm8kDbl5BABzKnIxnNjLQIpQxDBoiiG
iRS0TdokldRkDUb99AKstgsC7KamZv3wGbM/RJUFcDtpX21SR4MzbAvMCaxIBf0Fvmygb1VHXpvL
LznDCaMsnl980cu6X5A1KDNRuPe7zw9Pu1/udv9zMkInGx/oAKmmNKU1Yd1hCpUW2LYsPcNUQESN
qanEl4g9H+Zakm3a7qaXf0EhsY0nZVg/fr4gX6UGSB8z51EyoYwk8haBM1skmuIKphbEYNDHyPfS
Rz+2Xxp75jd/LkSLzOAlhzRJFk1yZzUrtWEdNU5iUhF+BbzR82I1TNurJ4R+LstNfi79nBayJH4l
5Nm4jC5C/U1IMsa6WV9aNgyTckyFiMOgdWBYZ9NKrS6VSchz1MlNP848Cu7XOLhHdU5v44dZBKTU
QIFhzkyL4A0SOxuFzcwUV5yyAtij/UURkIt83bTW+zkV9RvhJ+eE/P4vd9vdA+FvT5ZCuIEZaZhF
pWAfJD3xDagaAb+NZ1pKr2RSIQn53YzF0PN1wDF8fdMLuGDYN24zAd+HUfPD/f7u12+Xqg6hDjx6
+EBmA+dCRuxSIdCqVCR2V3FmWlIebtu3+jyRXhjnuZqOrmE/L7dgBrczM1juHjfvd+B22yEw4AcL
SOGQW31wIiWCN3BNrgObkq2D/mYwvJZD9UXr6p6fUDfAFVo3bnLTy7uwOVuzPWnKv72rP1w0RZPV
UTmEUACXPCUDVI6BhZg8cy2UBJKHHXje6gw12W9+ekEtxGX0XuiFkiH4yt1k5be7x/96evjyePY+
0IZbNRwmP4S7pDSpZslZ8xVL34Bbg7Gc+cDBj0wK3PAXkevDQCcTSg2u7MO84XhiQfI5wQ5ShAkK
GBYwr77Q66sUBh986qFEoPJkTYlwRwp7Y6hiNaXIUvDAazqW1PRrhJnGEiw3Hrfo57hgm/HDzckx
vF9tQd83u8mpAx63sdoCcMWpFhcaEgS8XoHRro7DULv0Sqeul2Ai/HZBeAOvtukiICW+a5fqPglV
l4MhProaUw0Hj1SME3iFCmYWAYdAO1osmsumvqNCNMCVAAi+6UUOc2UJWq/38qDhD+v/3IwqLI0Y
zCxlH0rwmkknKk5Tg3DwgcwmiZMFtgTG0fvicT83/VibBQHsGVlNnrIBuAoUciEpsgaAFZT/zAqb
nim46Cj3r6XjJQRf6nJ8vO+zF8cu6BgI+FTHNhdMhB2kVJ00h4I37YwQlOlvCWAfTN4wT6FyDmtd
tbC2theFssZDXFGiUYt+Eqt5mB+ma8p5366+3W8+XqZhQFwUxbIOH2iftYUxr4VhApSBsJ4F3Tzz
hSdHWbW8FJX4vxYx9PJcOcBdm5t+ggsnybjzSdoMBQP5wDOPpwnIWlP4xWcNqhZh5j1FlGrJLAlj
WLWyFCm8q2K5rmXeaS+TWzhOJkwLOw+3hs+Rc2CZQ+gk2mASTg3EqgFmTVYYASeZDEWJqppQ3jyX
cRn328u1mzv2YLeroUoJje9wtH67UFpNwqSkdRLCsJgVGI0HCgd9LFQqQQUDURs74bNdLzf9UOuF
8XfTS1aPX3Y7qOlXgJNf7+96MEblU3II7g9/UyoIziwprBbEwWrVJljgSTKva+RFJV+seA339mGQ
6v2SUB1CnDbrV2CnF1ZgP9XR3L4bX3Mpc7iOCt+nCafkiB0qOCTK5ArHaEqL/2p8bbxI7QXtJ436
mc+rx/2KSxucmvKUUwE+gTNLv9+IjNOoyj+kVrhLgXnl4AasbQCblAtsUlehZU31X63yH7e46SV2
S9OY1kafim0/3p2wmDGck5uHgzIcesN4rTCujqBlkYrFUlSwJuoi/Ksc16MEf3/zfAXu399085N+
bk5XMqjh+hn0+dNgiS9BSHlyy1HzyIG3QJKFBXxJGlwACDoZ6GBsokQfF43WuMdelKAXRFlP6wPv
7vdnw651OJYsCplLqBpmINehoKewxLkFqo+2Avl6/nzJ4qXXXqb10vLsxbnM6PHTldiowsiU2Ifh
VA37LgDvNFBCa8DyRVHVgZtUx/R9dXKosCCHWk09zJdPqyd6G/dS93AyHwBPRRWqzZdQJCU1pZ1r
ZsWHFKIAHkrPFk/2PfeyrdSSbADz23m54SH8Pi6JTcUBTrrAnKHTxA0WyqXKKufVet4oQ/iynMip
/+cqCadB+JVauEGAH55DzuVu9ev9wyO93nJ8XP340vyZmgxhq1wSb45yaRG7raVmiaq4NPBKsI1T
mLzf7ef7nYi4tPmbMz//8xJEM0RpYRF5pmx3jpSOz1HTNa/ACsxlMaXoICfC/LkUQcMQu6Vx9yeF
/Lr7/PDbbn/3adfFRJXRqgXhWJBDmQNdypLgDi4mEAagbF7b4lGb9tcJswTZV/vtdl4+crgne/Cf
0ppbOfiQkoVK0gEmCPgQj70J+DeBwGqtMMe44rNh0is1dfn43U0v2XztAIa2+63sIOF55bh2t8IO
Ff5U9l6JdVEEFJ4e+uAdK1YrEHu6A/RsddKCimLgJWnE2Xx83N193q4+sdXj/fkoKQBUynrT4rkQ
awRuNiEpLFnA4lGtXaDMrM2aqvH7AzXvsJfHbxfk8btJ9ebjsVTnZM2cByAYJOI50G0/xZyywM04
G3A8QjApZHTRSDCaZyFz1/NEtP2CaGF2u+aAWR//uH/6uOuu1ZF1c0O8cvibFMKrlgxd1Rrqfgi2
epk8E6aF5r1Jjr/+nY0DLv0wl28OXs+N+oUIc/KwFnxavfJht/q6+XioZb09JqXobzrJVEtIpDgS
UVY2cegcGI5wQlt468C1eT1eeRbkGv45ft1NUgi9MElxThL88KZNY1AqKp6lZFpwqkpoVImm6HZR
NrbIanU0rxSDOg/eiSz3CyIreoxjagjpcufq7n73dVxJlwq8EyfXpDg2JbRKKbfCfAuODqnRvr6w
duXc/9WqlXOLbgZezAMXax82p0Ufth2Egn7dzskYeX7rDqVdqQRY7uwZfBlUH3adJemBHJKN2bnq
q5kknWf99dIsFKzgh+eAwqfV/a9328v1QYr+BKMtdlqw5ih5GXGyk8oFmKXKVgpoW5mk/ca9TIaf
+7U1kPAE2Z3DBiG4U6WmbUUBhnOmE3myFAxLFEYEHaqh8OJ8i88ZwYWQwXpQ+qk4q50eLmNfTtfq
2/bu4fbpeHEq0r/O17jErThYAUFGgEqJnKqemUjGr2XHkueOZWGTNc5a2b7jeEedXzlooxY3vdwL
W7te89PW/lY+vDtTCbi7IRpGFYIAyZWVQgkBT1dZM05a1VVlq5tz0f1FKcCLfN20tgvF8uvt7LY0
PaFz/883h/chDgZAHcrXak5lSJ/ZWqhsQ4FZY5ohe6lkabG8rFjgOMBVkztver3ocNSgn+t6wR1v
t1Nrd/wtmMNTXUdVPxUaCHvUFu10SNwzDpAAnaXfbQw0CgRRcAgTD4BgL5n1wlBXbuTNG/ZT284L
ojdc8oVM7vDrjuCBHKEKL4b5VIBCKjdkVVHOUOXEIhcUFuMp5ZhkDd+PilDH1yMi9O1NL51YElnM
iuE2DyvC4JTvGNL68PVAjcVR1J4ytlxAWHwCCuC5CBGE/07pM3V5TVJ8NRFzfmg22spJtvm3u6Hk
sq3o19MeleSkJoOiNC1To4QDTxTjMFR1HmG7ggBIL6AzLZuXHJnTCFfU5PjtTS+tWpqCmaGvDT2I
dfw1fWM/X6rLMXhA4kTOUccM6mMK47aY7BvQzMtqVPsRrsaWRm0m87AL8yCkf+CQvz9+ehrVgAwX
EEA3dACksopqmRo8WqiOEhMicGBKLbKY3IMZddKNbvWc9+CH+4lzXdNjreerEJaEaMkbi5PJZKQX
LQKnBzhCYqIanSy9AOTlc7513GUv0kL+YjMkwvZn8PPLj32MwfhDkVfKyg7v5PhAL/ooKqT2FAMP
XKrqqrHtle44zYTo5uD0ghlwq+3kcF6e63jz00AQYJAHYoTVBDjgh9s4ApZXCqHonhMAggfNjMJ4
MmYhGmNyzM+X+Q6dX8md/TQB/JBy4UQ4ggSqg1tdacj55Rl7Kyimq0PwGXCThQGCBo5PDfzOFBGz
UVmoDoLOgde8917IhYJu/PBciXhYi9t0AaWBrm4PaQJ6MMY0gMBMvt26RC+cZWZdliGkWN0Umfad
jeXYWj6ngFtr+El56ZmK97tf6bWT0YVtd3usCJbWNQAwZquGCqWq6A0twTg9T2Y1LL+s/4/va/SC
9/MOZmHe4Ww2No/77RI1AahI3pGX8wKWK2sAcqtxlAvshUiheD2xXKOeOgk2bu7Btht/ZgUP25EE
g4elMkRdU2RaJxrbKEZpE+YFQI9qrcD/TZL12ytjb9XC2LNIW6bHOt/v6Abk7uvxKuQ5cWUU5VuT
NJGHmsnXw35LfPK2AYGZpL1yYEvlRVxzaagrWGCh5WRyc/3fbuVmMjm6ybX5RBZL3ZowxKrpw3AT
Taum4Y6yompxQ9TZB1C/TFeKs2gmff8WeX57vcA9v73pZZuHyrY7pScCz6IKhAWOaOAQuGgA9q2Q
MzOGsswcYMY4zzRvuoGFGfGdO/3PBi6OX970Ui4c4p0ep+q/3IEp/cflOq8yh2B6ADuUTCR6nMzK
yJLmig1FzqLELDo16tL0fYe9OKsFa7ZbTWnTl69345sit+/o36esnrQDmq2ct1gFK5FTPDRLOGIc
CWOlET5TOcWrVFi960UZtxq+mkxvvTC99VRtf/z26enu6eHb5uNMkShfZE7FlqePQ/xSgiAFybKl
VBZ0mm5sFTJrNTXZvFIvytA8M3R3Q33arJ/meq7AOxHk/n97u7LmOG4k/d6/ol8mQo7ZYuA+FKEH
FA6tLFHSiuSM94nRR1FiiIeGh8feX7+ZqO7qRh1s2mZMP8hyAQISKFQeyMwvV8Uyf80Hcv5qA1+Q
1fnABA11Qsc52H2cRnhtFpSo6EDFoMYSb8mLWfZ5/glgoNw2KxYw4kNr6LLPlt43d8vm7vZ+X9EH
Vd64BOY7tQbFrEsg+50E3ST5KMFmOQQpsx10nNhta0EuI0OmhA/7dmA+5ghyINo02Jyp4KmjnlS+
JhjgLeHjJtxUPjkGWn7gUdk//e20bT1SR86L0E0PhmjrwN+eGCmBx4OCesQzFpHDiNYAzBIBZzjD
mBMDH3xiJmqlmQjkeThZT/vmC8KFGSqBjUKAk7KoafrYAruB4aJ5hnDJ/0WVwDlqFV7wJthlbgRw
fC3Rs5oMqKjWgBx+equ3Y0+Ff2yaZyWJIxuu0LVDeyHR31tg5r0gSdQe8hK4RiMsEKWlBmmVOMa8
GDg1jghdgQXrFZZTB3b7rNjcbq7J0OhNe7ESrYZ3ofCQbdXfx4fLDmGAoykDokmAsp3AgKlrjJ0S
GEtsK2ep5VQFTmIvFWk3RDHzYgQPrVmYzgA4fZf6fgnLOLHKqYow7xEuK8DcYCbCCaCCE48pQC/k
l9jNXhK9GJr6zZIse7cu/926BssgAM9MAK4VK0IRs01xBIsWYOTWgWNMtpRMPedNbwafgPJqG2cl
fasxojsYocebXcAebrNiYPwLKStqFANC4esCixWd26q2iPgpJpJmu4HK6UdgbLBExUh26RB+0chN
MKpmtg4quIomhfqIxqwVsDuYSowiZher64NXgYcg/Mo+s5LgoWbVwNPth3K5esS89r0IY0qPeMbP
AtGLjKhioDnD2zYKtpOqKtQS3ruM2hvRjzYsxpqVUw7ttuZC9bEDLm++7ys9G5OFEdxKzOOuQSvA
5FXYStB8EBhIVpi2G10iJgn9IsHzNxNMFRr213RBLoZq3QXlq94J+dwWxcaQ9S2Ya3bI5htjXBh8
XpoLzAsUOX4wh2pFAQaqMzFxQnV8VurxyEQTGuqw46xcw3psYescNgRvtoCoONtjtVs4jcBrFSXG
SHhMHqQY0lFbARxPWAXGjua0x20nhuyR1YyQpTqP8DZygI5EJfBotPSmrhLFO1eq4fAYDeYvswY0
BMtcYH1EpGK0khJlRyhBLKlV65tOv5x8W9w16z4WEuh8QSH6KgElBe+AFGiEYE75WmtO6hoUFvpC
QGclCSX5mo2Rvx6kRm2iRzdXPEdp8GXuRcEy5ogHSQfqIqYkYI0FZ0EjkM4HF8EuCwewPQfTTSgE
Za/ewkZOCKeLnov0fx4Xdw//1zoW2hQ8ztsIZp9qq1kA9dFxeD8GL7gdLII5lcPttRBPa+y7oSfS
MLv2WUnjCCvhcrGDzDsbwGopaXgArkwT3iphhrfhtYbzJE0iOtRWhpfCzDsbOUR8RAmGhx3JuZr5
nv8go9EwyiymwAqC4cLEuspoOCigqhuWBKiUvBf+VozSm39sy8zuJnCx+tbdw6k2PMHTqGRdaeZo
xYMDUSKBB9SMU2k9pvmNZ+jvDVWQIMbYgFCrXrrRu08nj3cXixUmg9Gc4WY3fkLLhQGFuaKsRrAS
gzUvIscEYc5qpoTlBwJWtiNP3bFvmkuqR0TxhWg61/v337ra5T10Lgp8E45WQvAzxCTWmKDKJSgz
gvIAf4AQHt3A3ZAFJZIOveUXisgtJT9/Zj1Vmtqaa1+ryhsMLjPAbuAAwbbBjiWD0C81ebHkxpG8
CaBOjZAsxe7iDNhTkeFCVXv9n2C/OGbQU4GYfBgBXdesrggJAXbVOtACJq7OyiFLeqQco6evpX5r
rn4gr+P5+AnU7xyYx1yBIh8IvEeOOGLAqUWVpK8D6CMx8pcB8YWpp5T+qx/lYpZ0ZDHrDkBu9fe/
L5aXXViIbeUOdQa4Ca/Atga1Hw0AEKap0oJHmxB9LJFBWno3TDH/YiTgBx8+ASiDrqecE5FRexQG
akXQMbSFNxzAqAcLqTK1JNxHBDv8q0F1+z16pJsR0ldqBAbt69VGiOS01FaYEPhyowTduqZ4ODHD
3lIMorKWGhFBdZL+TwuTtq0kdzWy00tE22YHL3xbub3B3s6WnwmGgeTgiPKQ2rBmCwRXUjMP8lxE
c+D+/M+4szpanrgFHsj5VTNywldNhweF5Rd2WWhtBQdBidbAI+BlEIuGGAhNxSNKsciJiCHS8fyA
3WAlDSPpPxdr1r8hDM3y8WuLoIb2ClHZX4GcI9I6xEBMJRl3aGiDqcJCdrl6TVkizuvn5WXvZphK
yN71KNawHoE6g4dNP+miqHz3SvJNSopD8CopEY4G2AWnJOKdBhx3paO3mN7AnvQSF+OWhC1H5ENj
+54M5OmPl+jEwq8Q9I/MyqjRIWH+o3E5dFoFkG6G4YsHDQVUUh/0czGozt5Nc5CzItEIyBvRpJpl
F/fw24/VLhaeoL7P2j0kPkg4lgI97QlERy2orBSvuSdwFBQbD4bvhiuJGAEkuWiaPlyD//Z48x1M
xM3iu0gy2RZnqTGQxoM8CxTdaehHsAp0lUDBqgaKDOHPuqzqTTOxlWWncjnNyDm4kLx31TrGeNzp
CWy0ytFOqr0uNsx4pimtRDaqkwYZJ3i+g0ucmZBqSv9z/npoKNaar0EGax2IzY/NQzrZFrpow9BN
ZMoTaysfLaZ+UAtix7FKiegss15R/vSVTh5zEtYr9ekcyEjQ3xcd5s39v64uHxq+u8xA2UIwMbJO
GJSNcNTAHDAYE3ReIY2srWXc964yimFmxVzr1ZAAyrqUtdXj3dWR6JAAzZEV+VQbk5hOFnRFyYAG
Dq/fchNA7yYYYBRMWwukALLajTQrZ1MjJCz7xZCOm4fFehPZuMEZh7074tnFCvLIg3JYgd2JbnbQ
FRDxHISSAAagTfIHDM8/lDuwpWQKMrttLdbIh+UtbDYqptW4jT9scyUA8vaI6izv8t9y/AiLlqVQ
hYhAn0HAK8DELYpzGUKdov7lFr2j5ilnWk+7sNk0GSxckQ4rfHX74/f9nDBKeAflkJgNKSk4Yhi2
hjhLhgusixZBOilFWTQT1sn+mCU5io2Qs7ZPvYdPJzvNGhOORa6c1yLcSydEIrWshGNo/MFn4EIU
WLpQB+V1HPU5/dl3sKNkQqs9GVHEcX2LsUX3L4VjepfjqjtczazGKkmNBTmqcxUNxvHWlFdCsxgd
DwwO4HOE13bscbq3rT2q10OqtenyGH89vrxfDeLxibCeaI4eF4I4KTUmn3EwvZSvDWFUw/v6T8Xj
7wiclWtohgvDYK2RM1jiFvNNRCSYQfC3nP4nrYgZB4Y6jp4wikZSrFQKFN6NpdbwZ0OEHkYvHnQr
FmboyLduUJSYEmLk5uu+10Fv0sDasAuTwHZAi4/CG0ToDVCX8OLWW29rDbvHgnhxvWKfpCmMkV2P
ctFsbNGM9GtlDKmCU2tyhH72BfAEHBtOLFbO4SCxgNdhUUvvRTI4B38hbWqkY289dGw9tJef3ab0
PN5cPty3CT1nN21SX5HNg6DaFD5GKR1GxCteAc9AKFtlmdMh1jodzubBkZ9I5cHmYgVLOcLjV7Sv
TywXq++PPwrX3lFbrif/N0dEaO1E8pWuNV6PYV0bLAKckqgNFSQQ+Sy8ybo3U4GUmdsK+leSj9CP
OaWqLIV1sgdTxtpLNJOxFqKNmONmJSpDCkwhA6ZPFZWjGG/sfHr5SNodNVOFsUZP22qYNgoPF4O0
0W+LuxYkn2+QtXmba5yAv3ErXMUYWKacCdFm9iYnaQq1cuF5kKCbCSYCbtrGkvBhDRR4eNEHVmw/
E2Sb+ay2+DR0g0+DSg7RidWg9FQuMowyowhg7UVlHUhYymtC+WFnfB57mmPn5n3qqRxeCeDDvnl0
evd4/xB/XVw95sPgvu6jbssMrSgceklA/UFAIk2xyBZsv1GB1MCqeWTPAkMem2h8PWM9i6Uthg4Q
eGi66yz/JZ08gjFUhOKk5KKWGYlVoEVlEGnbalAiqML4Um1s6GWJFsMUFCzZckjBkvULap1639Ug
xa1kjmgZwKjToNJzTGGxsvZVnWoSpOFJ0Gel2cGwEzvnfUHmaphXCw95v4piuFzlpLTOu3m/xehn
JHMbya0DDb2qncTKqTHC1oHqhQcgggyjTL+g6TWkZsol2+9Xrp2PvKKVVNtD8hlYQenl8RTksBbw
UhKW4sO7RWOVq+Ah10TWPPqXgrDsJi9JlkOGQy+wjqfoa42bYFa7SazHYgkq+lCRRDGeW2OGVEoV
EZIJDZpiSPIvOZB7L/OJWNaueX9pjA7rpeSH27fxvfn9+utdEVjFnTPByFD5REiO+wLG40iFlZtA
E2ZOhQm3395YBRFsxFCFh50X7cfieq8GUwtYwH1E1TQ4VNyIo1VNE4IIIQqolZT7HuDh3hi9ueXY
3MNP8f67u1tedhWM2xp8LbK4E1RJLEqmNWbqB6arOhcQp8nTZCSrjT4ECrs/+nTs416nchXGjqxi
UPZmg4XxYYGlpE+aa6wNsTqGNhCxBQImpZvl0bYCr2fKaM98xYDjYPlu1GvQV+4oSFGQRDI+jY01
OuWUuj/StVztYjWy2lX/cvhsefmvxxwp3LrZYZNwKZjgo8FsgwNEsXgXVssE5gL6MglWOtoC8x9k
9tvRxxexbS3oXq2GZjVbD+yVk9XiarG8as7usej9Q7MJFtjJK5808A9rKuB/GPoWsDJyTSsN/F46
qWwU5qW4yigxE7raWNf9DeCEDxkpPOxHGv3y2W9ER3ehn3lpVBxLhKeI0g6jdy0N8B6lDiSxSOrn
AXnuRh9fxq69R/vw6oCDGB+AZ901p81vD3hnr1vToP1LPnrWMkVjBeolKJxB2cog/hkBpUeHYAKn
h+U1Dj7N4bF1VlJIx8imkwWb8aChD3vvCc0lUYCv1jXTDtTlHFCL7ihg9RWWMw7A7nySf63m3K69
twI2sgLaQRDdgQC/+vXIdm69HJtCgVthTGiiWPDCwh+1iKZSkXgBpyY527sjL4cpKaAXIxTsYLff
fmjlbi8kS0gHr7hG1A+M7osENJhQmwrUSWt0NEYcCKn4AyFZewTMZvG3TVmb49v1rkToyeP1NUzw
GpbmF1dX9/PrxbqZL3+f3z58a+7mP+5uQQm6Bx3zYXH3tcmF0R6+Xd5vG17nLXlY3H8/v7i9O/9x
uX49Z+2z7P08X8GfD83rOdl/eN885Dpzm+flxIeGJ39tePifvVXBDuT5sL7K5U0zNh98nfqPTTn7
x/Ec01P3t/cL9Pp0c/X7HDOisOX2Yt69rdfz09uHxdUb0LGOzPEcDt3lGqTdG0rUET1+Jczffprf
/xuz89fnt48P50Da401GjYUZ128o5fDPXkn2t59m/7y7fEB2C4MgAd3QYCG8nf8bGkGMvsFafu9f
URi1m0pzrtpHexO9gV4EHhWTwUCvrIWp5rMv8e27Tx/np//7Oc4nfv949+X0zH2Yvdn9prpummf+
7fw+R6XOL3NSx3hvKsj7WdhgRAPPwoJWrQna/wfCHJHj2c8n85/fnc6/tqgeMPjqFg5Eb0z2RNdX
sFcgAZr1T9gVbA3ouv2H26Y5vPnFeo1VvuZAGYqqvb37afY+l56cO3wy/3Szaia2wryfHbsPHz75
+ZM/KvgRP952fbVYX1/e/DTZmzMYtblGgNrTxdc5E2x6YOh6cur8+/nbM/clTFMgcRdmJw+L1ff5
gR8FvfEYPo3zTK07jU90VUfiePbPZomwA8d5/6a6CqbV+9n5eXCn7gABjOFmnZ+/O3Zv44G+khkc
9cO7j+9jgLMw/bPmyOKop/GX00MbQNquZx/f+U/haRKkEO9n1/lLnKPr7ImeFjdr88Vct+93+gej
/oFP8fTTqfswP/hmj9Tbtut/zeEEPt4X30P7HeSfpgQYFTCO2f8DUEsDBBQAAgAIAG5TTkerij+x
CAQAADwLAAAwABwAYWNjZXNzaWJpbGl0eS9tYWMvYWx0LWZvci1jc3MtY29udGVudC1zdGRlcnIu
dHh0VVQJAAOAkB5WgJAeVnV4CwABBPUBAAAEFAAAAK1WTW+jSBC98ys4zdjRHPgwNrRGkRwnjpzE
wbKdzWUl1HRXT5glwDZNJvn3W5gP4wRbibQXI7pfvXrdVfXwlZSp1Fn6nEVxlPzSwyKKVZQQfZG8
0DjiOnuikjIFkujf/za+a6au68arabAQmONS/WYzI4RJoAquXoEVioYxLBIMSGg82O3+tfz2o8Jt
0kIymKUcMGWSq2Z9wSFRkYhAHq7PyhdZMJXK2yjh71enIYpWb0PN2ovi1DEq2EV1lL2qnBBRJExF
abKSqUrVWwbTLIvfSkF72GCo2Q2fCF3XcCq+47HXkICkKLI971AbNRQAtuuGFcX8PQUhlPPOagZS
RZBXPKWkjcKLPasPfrO5jtOQxn74G5jarzYEZ31LQ81pT8PYOBR9XIRESaQ68sd1DGfc5mD1xwgM
yp9mZfEx1fti32xqnUNt0rBxy/SMUH+EcJZKKDGX/vIRS5v+uaA5nKDsC9k8QRwjvbunF2NjfBxL
SA6qeh88bueErGier0GslPzZBrUh50PN6zDbnjjFfFz5ZxKZRpUILHA8c3IqUTVsX0vQzN9ubApZ
dtQBStIMW+8xlTHH4ptmK8YeW94eumEyyhTOn5JpHKMn1GI6+ganeK2Wd2QI+xRv2Y7V6klCuyLE
sZ9AyE4R/vmkxFHNKDzwmFky3kbY6vicS/qMMb/zkhZeFfqE6VRowRxvwhysxBrNLCm7HvhFkfAY
VvQXBknAxpsKdMUt5LvIcRs5Ho3svkhCeMTXwCB6gSXkORJt05Ju4Gf03wIeb/cZKtvEqjZbWOnS
zpvll7S08t0L5p40tzYBz+DtGQ/Tz+IITfm4iP6oqrGaKyuBZ3WDdhVh005XC0JagzDd5tr5xLPE
ew5CsjRXh5lqNYM+8ib8IQd5SRWtNzCP1+QRNkVb293LYoWj8UQ7pD/rZ95RsDqm4MOJ6+sefDjE
2fBLas8HO2V1mktg+KmR3/ou+P/Jh99Ro70e055YH8uwb4Z6qanCTikORgK7zw5m6dOOGcym9zzT
dcUBqmaWS5qVmfKMKvb05QS1xzDDDkEYB0eQKUN4T0t/nr01nBEwYerv4j7KzhUnJAhMQookwskM
MjToHu4f+h7JQdAiVgGHGBT0oc91/GRYjVWBYzo2Pa7FT9pzYlRtWdyyTW/sVrO5LpK7NMVbRycU
qXxGN/ynxI732NCxTmDLBsQxtnbOMhFCuBCGlhOaehDM5uuH+zvfXwWLTTCb3t0t7q8D/2EbbP1g
Gmz8h/XsyghWV+u5v14G84f72Xbh3weBZrkdNmqzsVWxVQIu0+rfZG5olncAtEF0gfjQbKOLsGDi
6N39TQYM/34yzTZbnAMjm6I74vaskBK98OoFf8qIRbLEKmj/AVBLAwQKAAAAAAB2U05HAAAAAAAA
AAAAAAAAHgAcAGFjY2Vzc2liaWxpdHkvbWFjL3NlbGVjdC10ZXh0L1VUCQADkJAeVqKQHlZ1eAsA
AQT1AQAABBQAAABQSwMEFAACAAgAfVNORxSdP8iZOAAAlcQAADkAHABhY2Nlc3NpYmlsaXR5L21h
Yy9zZWxlY3QtdGV4dC9zZWxlY3QtdGV4dC0xLWNyYXNoLWxvZy50eHRVVAkAA56QHlZIkB5WdXgL
AAEE9QEAAAQUAAAA7Fzrc5vIlv+8/BV8mpKTQe4n0KrZ3AIEuZ7xqywnmdqplApQY3MjC11Aib1/
/Z4GJIGEHTObvXWrZvVBcrqbc37n9Hn1g1znWSyLYqJvP3H2MA7X66Ucf5LRb2mpfrxsVcpVOZ7K
r3KZrR/gb/0PW1jC/qxdh+X9/mn4nH7MlpsHWZx+vDr/cOGfvjltCCV5+CC/ZfmX048yL9JsVZw6
p79fezOZf00BxOkrWY8f1/Fp016cXoTx1ey1j2pnC/hOk1Tmk0Hiag3kvaQmIm/1EXyP8dh6e6J5
2ULqt09ruR3yu20aJtNHl2GZfpUnoKhc6e16p/C//e1v+h/4s3YjizUoI42WzbPFPbQL/ln7UMhc
P5vumXKENe16ubk7W+ltxT+n81tZlDeb1UrmZ6t/yLiUC3ezWoCwUfVzqMWXH9oybuvwdU+0laek
HqETTZuGpTy9TR92CiMIcwMjAzMdownhEy7GNmK6gSyEtKuZ3p0DgKxD4+8weCzGXB9hGmBM2Qko
dJ3lZWs4xpqzylZPD9mm0D98qDRKp05ApyY2PHOKDMY92xC+ww3X9k3H8xxEfaJpmpeHxb1c6Lf3
uQwX8BzS9WlarMMyvtf/uZEbgL+3oYcwXRllNVTT/MdYrktAsDUL/3dv7jrTOZD3ZzN9NDt7P/Pf
fzxpjVRWBLbxm39zOT+7/Oicn8Hw6fRGjQ9LHT2i5hNF4SKSMtG0jxf6jbxT7qRfyjCHMdu+iWYY
73RNKWs+v/V/v9UPPw0xjBATFP4w2g0c/tD/UMPs3z7rufF4mn971GcX/+ldffo3d3Otni6YrGb+
JpNXzhrqxIRfw6/hLM7Tdelluax19h+7ScDI4sI2Y6l/ug0qRvpb3ST6yCnAcdV8FuN4vZ5Qgk80
PIiwmVgxFlgvSoA+n+PJZLNKAfh8Xea//DrzJhOII3eg6UswmJ9bwxYyCTfLcr6QS1nKo6Hv9Hd6
1bYO86Kne1S1fLx483M9bJZt8lhWsS0GccqfmvZ9DOi2/zq7VoRzd5Muy3R1UaHr9MzKPI3LVkfN
oupstdaD/TzP8j3tW/lYXmdFqlS7Regp9vkmLrP8t3S1aFpv79PidvpfiuAJTAoTlkaGTgDndlhT
i8E0Suk/ynhThhCmz8Di8lW43Grrpz+prX7su1YnSpdp+aQEIKYJ8aJcnKeR/1iCqY3vJ5TbJxod
KpUZclTzaeZoL1YxmSSbVay0CzZRZiWELQfoPimJ9sNGCpAAPMcEKnM3rRONDXMjyrCNeA3reQjv
JWSYEJS103ulGqyPHuRDlj9NQEvmicaH8SZmbNtRzTs45D2ZhItFq3Wt/FoWNQAl+KwEy3izs9D3
yywKl1eRyoL71i2BN31NSgbMIX8dMa+1SU80c6A2OTejpA/SZJKu0rKjPmwr3t1hFWNi8xPNOiyR
9iz1Y84wh/FCkn7OCbAu7j3lSiDkoev8OmuUVmGCEuAQEti7BYZlDwQUhgJFejNOsZleXXwCX8u+
uWEhX0DV98jsXi6XFUJG9VEz4tdZ4wfbqKB8kwNUMRBqZJvIfJ7vZFLIsv73CPKNCpFFcSOTa8gI
u4d2j7xTKDm4+qhFB4AxKL0wGgqMiuQlYM8r8XU4Ke4PbhgPAmqaUmDrJaB1IB8GcBvbq5C8yZWz
d0blgE7mn7J8uagdCtFnpCEDpYlNIva8ti6/KvNsuYTiu5GmJeDoZWCmAGAHVCpXxxSCDKYD4S1Q
Ql+Cp0JN3foyLo6fgUU4AVjseJGmPwvLJCaSUfwSrG+v1ZeNenDdT4TyID4IFCWWiHGzWJpM4DdQ
RfJk8o+iql4fyyqnUhVU8rSUbpjnac1MaQDC/8vrrDazkGFmxRws+wYKj86w6/AOeOYS4oiTQKxS
5GrGlj46HlrNASPKcq2BCDCDANmDAOrTdHEjYwkr4gtYBQOX20zxGl2tQyhvP/22Z1+XSuBt2y5V
Oa7uds1fs3TR/EPJYOEjIWrbFrAixPYwI0KWQIvdfHWpessUqrnnJel/qo4a2+lXA9800actFkQk
5/psMmnnQkscylUjqKSzlOOKYcZoIkGSQzSwIsiKssunkWvUB3P7uNqigJV82HRUM8H74x9Bw3Ba
cQi1RDXNZ9cQge/DFqhfmt+iJcH1cxIc6b6xntGREt6cDJL23ahC1rCZyhiq1Pynvqn+MfyqyhvU
W25AhRNCoMogeKBWQ2qR49nfW3PTtJ38SkCIUitZFacArk9kBcyk4Gaj7uMNzTqeW6qAI2SYK+LQ
tpMOzy3Ni3CtcNer+uFwMQFFHpOsgwaCuEvoMM3GTCaoo9lmq+84VAyASRqd1rTqJQGGVQ4Zlhfx
wooTrB/wPdZf74ZDD7YX9hx6Rr/T39Uqt9prNVhfED5QipDT8HkprlY7Ddf8UIufDYmAmMO2d6JQ
mHYdpyHtnWcZmBwUCUmWP0Ch8KXmovbJRttla7icYEaVaNZQVhEnL7BSEaTKCBQWR80IL6g3mASw
66Q4xSTIIAZWFXmHnZUkiS2jiPAI6/O5F9x8uDy/urqen83mnnN+fnb5fn714XZ+ezV35rOrDzee
j+bX/k1wdXMxDz5cerdnV5fzeZWaNCKGcQ0pFLU111qCaVZvmhRI2TojGkVDKVKZtCnCjyreKNYo
HkiKSMhdbUKztYzTJI2V1pHQaCd2/f3sNsuWUfZ4bK0VQS4ZDaGMADreJleb//5X+FKkz6qdMSUx
MTVKh1K1IktvAsolFI8VWS97eMiU5MwCoGwoSQ5F89xdZvGXD6syXe7IXii3gtR0nqrcqlB/Ssv7
ABa8Mlcxn2u048LOev2cC1e8QmZHhEl9Pr2e7ZgoW2KUadQcSCq0RaQbf1zO1B5RGtczuzrEfhEW
XyCcgVjqzGFSb0tC1Ko3gj9XgQIMzxrG3JJCxEfM883qc7Xyphq1hxE0hWVTvUPuIkzVlAqGNNrx
tP1+ei81QRG1YwR+8biO5w81FWpzjYF3LdMIWseLJ/jj6ESggymRoYzATttEhNAYfvW5WTvEISZA
RqQ3lGBZM9qLoSTt7P4/PEwEPtEYqQAD2MUziDuAY8l4soDcFOaVVe1OAvCk2toHAsVTUcqH+ReZ
r+SyS7NNylzYVJohRBZ1lvHPanwuy01eYUfVfv6e2ro+PuiQ6wBbCJEgW98OnH/7Z/1HtexD1eb0
IGpxEolazDYpTHcCkxePPJRKm07jIVxBwsyH64eZEMu/SOVqJutoZUu7Z8raNARjCYMCdr4dP3+4
y+fp6mv2pQqOVGwVM4AghijSJbhTDyc79dC/mj2wv5rA/K8msPlXE9gaLrCVhDiEDKQiQ3E3L/Nw
3SfrKwjJBax2t4RUJcQOThhfU7ommLdL110ujO+vszqB2fjgiO81ZDkUC0cVMcYmPjiX+wElcfew
7btFjkkixKH6u5xVFdrtblYZq065BhmIbQuxN7coWzxV9mFXp1bDKFkk3FPaVQ/Uqs6bBlptLPQj
QjubtSftNHw5+3Bzvl/Inmfh4k8k4v836v9Toz4kdrR8sjF8W/rbPw6mc1TP54k+z2VRrXJVQ7Wy
/1yt4+2Dk93XcFrYEajhclbb07yqy+vVOMV/xvKf8yH7x/mQ+ME+JP5MogupSnSFfPgWpuW8SO9W
4bLPS+LvlJiRoGQRI30VrrJiKaVyNYJ26S1++3aM+1cqbSp2iFgEC8T9Jlp5nxZNpTqZVITnSZa3
9uPi+zxbZZPJYpNXJvLLMlvd6eqrvRdX9f2Clz9X21L1Z6lu/bT35wfeGrH4giFroUcP4XKZxZOJ
UmG1TRCEy6Jnz1BtI/yyG62uSKTxxaaUj+9+amP9MxIpWX7Woyxb1pu4rDo63jEY30/UtiIbKh9d
iGQv39+l2lou4hBy1N2/Xr7qgoGljz5KdTNI3SYgg2+1gEhRzA5FAiOI662o2Va4aufe1kcQSZQE
80hdi4AAMPjWCV9wE7eMxCmeVvFtWLQ0pUBsj0IOkL05GZ28m0wAWf50naWr+mBSUHWZrqEDioAY
d3gn5TW4OBSS/ztcTdDy9/B227HiAKK67Gf/sDAsflwYxujHhmGMJpPdQbsOc5Atl+nq7v/Ll3+v
8uW7BGNu2xjrB9CEdRAAvn8jxF4kTHauXtQW0dydri6EpOEy/W/ZcKp8nHBW3bNojwVtqw1ATod7
e2xLTutjlOd9tjpUb5/YUHU4ZA9lJQhPalbfyuT2eW5cH9W9IOB1jao+ycNmc0/sxwSLwR7+QrDA
PzZYID1ubtJ/S8t79XJEc6Ver25Q6iOTGVFankw0Xc/Dx0nPVXfoiNodMAWmCZxB6DzuPLH9QMdi
16GAWibjoQWhRfWkzzxS7DoIrRvVr+K+btPiQE3dkVdPHHfQRDHRc/uYidqD13Nx9AiuaEFU7YeF
8VEHYaaSBJOOVkKEFmFUPUJ7aGHVwZ7r4EewEmErJum6q/rm5rueJ8sDWhgRpA5yctI3i0BLO8/u
0hjKb+/6Q/0yB9Oqm97V6w/N6x27J03tVmWEy81DtH1rBzNN09x0FeZP+tlDdQtE277R8Lh7mUE3
9G4jAwN4/QtOo+oNH0PfveKj/xJYNqzBBDd8O+AGnbrUcLkVGJ5jBULYxGIUvfv3fjOiq5G4T01x
kjD9LTh6E8nVna/ZffrQeP8IgSbolDFEKTUCXzCDWoFjCORwgyMxRQJj4btBnyaeo3qAK+nDBQaZ
6G/3dyEOMWE8FR7xkYEE8wzKXN9wHfWCD5razDKtwDfp0Nlp3bwA7fa8L3WEpS0JSyQ/kgQa7SQJ
q/Dqvf9dvRs0drZycCHGlI8xBnls03EcYbmGbWLLoNSxDJu6tmHbDhIBsYTt2iDPrArRp+dplIM/
nAZbMYpTpeb34Dv3aVz0i3fT7EsUp8dg2oKYOBJHgphsEULs77nA0eM62BSWCHxq+NxSBsM9wwbx
DExMTFiALNdnr5qcuqEDLmbRMbiFcveem3Hn8i6Mn/ogEu4F1JlSg7uMGNTxTcO1AtdwfAu5buAR
03wBYk33WSvajeggTzg7Qg45CiUJeaEU6cFussCkATcNYXku2IoAqyEQmQLEbeJZHLu+24e9S7kf
fXdMG78VsmOzsCH3HGv+WeAOqMEBu7BdYhrUI47hQBAxEBcWBJipcAP3GaU/j7jpbEMNWZ1HO1BD
RvE2qLxwubUOL2hKAtszheExFyyYT5Vjct8QxJtiSmwRBM67f9GbmB0ZhOwRDHK3Euwg3m7W6s3I
dtC0PMHtwHYNiJlgOIHySwLhBpmEI4sghxDyikDeJtxGF9vWsYVDI+QY2kRA72LWH/+IcBj449RA
lsAG9V1iOA6ZGsLmJrgoFN/I/LHxrwWlK4RAPUKE5KCe+CajuJ7GpLofs+cJgo0xPA/fyuaxY7MA
Q6JyCTUo9iGw+5gZjmkLf8qmvo2CY8Gu8/QrVMot+fYp3oFFzFORFt04edCp1dBVYWfaCWqVSLtG
atrqrre6baGPCBVjpkzEmTLqQkThnu+Ai1pg8zY1DQeZAhKR8Byu5mFT5EqLp+rhFiubW1wesoJG
OzzQ3g76uBbcWTyo10rKeu9MH+GxogHfAMlnAIVxiBVkCqmRm4Hh+p4wfIh+NmM2GIz9Gg32ceq3
lL6RXSntqEfKqLaR/UpqJctKxsbeCcOVjtHUpGjKqeFZFuQe3+Pghtwy/MBF6nVhijlt6bgmdvoM
2S6udubeNoaRONB+a4dgZI6F0jTi5hhbStvIRYETmGAAjg3gfIh8bkAMqGU85Ph+AK74oiPuifcp
12v1a12U4TH0KGIqsimVBmDf9XuiW3VijCGxmMpoLcKpSYnhUgAO6sOG4zrI8LAfMG6bpu28XDy1
bmFt6/N+y2g/czt7RZw5hK11xePHMsfErmTeT1ch402elk9JZ9rUc5xjQsZU2VQw9WCdQqt5Mqig
tuHYnEB5Q6lHkes405enbdYweXn6nJ5xWhd92CdSeCCSE8dyqd7vlOOvMj5X00krQ2z+Bf9QSzB7
ijxwEghBDgjlctuAstI0kEc4IxiKHvflpNBi873prBn3D6v7OnIu+iKAxOxATi9bZvnsaRXrIzYW
1ZxVvyCca3HTFQhEcqZYJeMpVPyBMCwHPNC0qW1NyQ832h2e/pG7bq0r1rGZmihSewb9N09HquJT
KdAUtsrtZhAgn3gG9lQAxzgwHC9ABuRFOuXEgrz/ndwe5tFz9tgatgPQP3LXrXXkiFGPcDI5qGrf
q//DgVUTSKrpg4LbcwgUh1DDg1AIEcO2OERyk7hYuLC8EC9PH1DsxwkdXYRJD0KM8EGyCYvlLtFg
a1ynGpPzwKUMljnECyCaE8idmE0hgboBdxyI5mz6UqrZEe0gwpz0IOJgEVEn/WVlmjztwjXBY4Kq
mkgAJJcFvgEYpmD6sARwOBgEM50goNyCCvvlBNgi3AVmyx5gUlTAWtHHhwBq8jFXJgq/ZoUJW77l
WsaUCajTAIpaVPmGOQ0ws5jPhGV9twB9ffLw+4c4flceGfbJI4+ijLoOfh2u5LJQtRMZm/CMUGKZ
7v8QdyXLcRxJ9o4v6UvAYl+Osao5Q7Uo0lrXsVpFzJAAhwA1kr5+nmdtGZlZIGwaprkIRVQowmNx
9/fcPQJa6dgKM7zBnbsMYwoIx4SVGRMGN0/qNXRvLMI123Jp0U1SioXTJMX25Pl/eHs6QuHW3krC
KEBJrnHMQg3k3eD8ECK0QlfwhFRMfF73fvqyu0e3i3Iemt8d3Pdp7InAC6dMyvVJIX9ffT2XBfxN
cpLYGCdjdILV4OnEVwEOBpORkgY9qLw6UUcnvu+kH1xuFgZXcupgf/rwD9KSU6k6ToUbrJezfLAM
vnEtI5BS5THgYMCtRssF46XYaHwEEn0Rqp4MdOVY9436CSm1NKH1afuPOr+9f3zcnpkjUE84AB+h
hS/NAhSIVHEWPPiVAQ7iocYYtGmwM8/ZklG/nVhKL1hd5cRknX/cbe9WQxhMkDVxnHCLVFXh/w/A
0Apr22BQQnWKycRrqNV7r+pL1vbU+fKinr7txV65BbHX7myaYdElDMTJKDvyZdlX8A9wVOsT8DPg
MktNVaZ9zQ7+WTiX+tPZddMJYPyCAMaH03bmX378QC9F3d1PAhQn5S7gmF4nwYQD/8eGAigkkZmp
BeyjVOmreh3lviJKNx2vF9QtKHWazu+fx8sp7eDfoEw+pejgPDyMLgwwi8U1gFcA1iwDB4GcaPvn
K8sZlJ6PvxVmv98N47+N72L+9/N28qBvzSCBiyHB1AgLJqCC0CzFig22KgGUWUro/BXIeSJhN7Wt
XTCj22Oo4EopADg0VF8IcysGIyaE5WRRQfwoamQ4i1gxZpyFGVM2SKWfU/5x371sC/DebgM/yfbt
nl4WOAmlzGCKnC85K5AU2TKk4bJCrmBgmYxJ2uVktFuUZtxbL0YQS2KYyRI9Pq2eHs96BO7EB3my
8b5yL1kJOjFloOChhQiGUbwCBOOyPGsaR92OpXLW+5lUDms9iTKAn3xY3W8HQqAO8RzCWU26Av7G
soHRVoCgLMiiWMmtOo8tE7a8yO+ce7/ics7f97IHtSD7aj0x6w+wIY9DGJxuasN56oHPCOMGBZfZ
ZquDZ9BvOJ0SEkswCuCpTvnAm/KyvgaqIlP24STGcuuuSTfV/WZ+ht1+6/f7Q+XA+k+iafysWeS5
eCKqrQxYAtkNHTLz3JLnwtSiM0Xq3Fuurpd+/O08GOW5EpNj8uGPz+uHTyOcommhJUjy4A6cj9Un
KeCRhAFOUY15ny1zKjWneWptyBm8IPo3GuZa2G/U5KaXWi5MJdjJqdmunlbb3dNQyfe4GZIgZjj4
yhzMcg4tJs2J7lcAV0nTsjyzqpvwWmSwIPGSydAzAeU00PXUyKxZP6ngFia10pQRHk3q6DJXw97I
oxY3EaXTIJLeKGixBK3wUngWgoNuQMVKfBHCOXf+rLteTXZjZRYEX4spy6P/tg/gHV++7h4fh9Nl
LOFGeY4tC2u0bAGkqGAvAHQwowgvojOcdiwK8FG80BpNxrpqlSbt+pmtl87ZWp/s/X9/W31d3UPT
dyetdQPeiNiOlBPLXBFkgnVNLWpyiDYkWWRWftHQT/ubCLO4zPuJ/q4Bn891c3S58FBQIcexkiJd
InOZEgyKIlCUuIEjsoH76KO0TX0nODnp/1psctKsm49YgHJeOD8j0xcef3rlC0ff60OgnH5iSrrU
aHQLzIsCBaglsRhVZqKFrINLSrnwkoOzNNo1/jxv2c9voxfmt+WT/SKHUe6+DkbhD4KMh3m5ATYM
us09iGD1rDn8B0ZKAr1ywyz2iXPlXMjtuwD8PMJ1r3Vu0s1Cyznvwi/Xk1n8Y/cUvz19PBlYc3vg
MUJUayXYVlZMJafhvUBmyHFZqZuS9kW+4tj5sujHL3uhN3ZB6M2Zw1KZ6sNJZb0mVyCKBLgrjXSW
cBBgWlStMK1bg28zrYW0qLOjviYyLBxvszoTr83XP748PdzS+7n+wqPxWQ9ZH1US5SZ1hm9VCs4/
WRjDBvtRZUvSt4nfn3fXSeOWnL8X5xjJ6tvTeUGEN4N3bBp82VYamkMI7y1LJpGLdNpUZ1yOE9p0
6eWmH2dhKUCDT4Nvvn15vJA25eQQAcypyMZzYy0CKUMQwaIohokUtE3aJJXUZA1G/fQCrLYLAuym
pmb98BmzP0SVBXA7aV9tUkeDM2wLzAmsSAX9Bb5soG9VR16byy85wwmjLJ5ffNHLul+QNSgzUbj3
u88PT7tf7nb/czJCJxsf6ACppjSlNWHdYQqVFti2LD3DVEBEjampxJeIPR/mWpJt2u6ml39BIbGN
J2VYP36+IF+lBkgfM+dRMqGMJPIWgTNbJJriCqYWxGDQx8j30kc/tl8ae+Y3fy5Ei8zgJYc0SRZN
UkEQK7VhHTVOYlIRfgW80fNiNUzbqyeEfi7LTX4u/ZwWsiR+JeTZuIxuQv1NSDLGullfWjYMk3JM
hYjDoHVgWGfTSq0ulUnIc9TJTT/OPAru1zi4R3VOb+OHWQSk1ECBYc5Mi+ANEjsbhc3MFFecsgLY
o/1FEZCLfN201vs5FfUb4SfnhPz+L3fb3QPhb0+WQriBGWmYRaVgHyQ9ag6oGgG/jWdaSq9kUiEJ
+d2MxdDzdcAxfH3TC7hg2DdU47PuWR2Nmh/u93e/frtUdQh14NHDBzIbOBcyYpcKgValIrG7ijPT
kvJw277V54n0wjjP1XR0Dft5uQUzuJ2ZwXL3uHm/A7fbDoEBP1hACofc6oMTKRG8gWtyHdiUbB30
N4PhtRyqL1pX9/yEugGu0Lpxk5te3oXN2ZrtSVP+7V394aIpmqyOyiGEArjkKRmgcgwsxOSZa6Ek
kDzswPNWZ6jJfvPTC2ohLqP3Qi+UDMFX7iYrv909/tfTw5fHs/eBNtyq4TD5IdwlpUk1S86ar1j6
BtwajOXMBw5+ZFLghr+IXB8GOplQanBlH+YNxxMLks8JdpAiTFDAsIB59YXem6Uw+OBTDyUClSdr
SoQ7UtgbQ4WeKUWWggde07Gkpl8jzDSWYLnxuEU/xwXbjF9uTo7h/WoL+r7ZTU4d8LiN1RaAK04l
rNCQIOD1Cox2dRyG2qVXOnW9BBPhtwvCG3i1TRcBKfFdu1T3Sai6HAzx0dWYajh4pGKcwCtUMLMI
OATa0WLRXDb1HRWiAa4EQPBNL3KYK0vQer2XBw1/WP/nZlRhacRgZin7UILXTDpRcZoahIMPZDZJ
nCywJTCO3heP+7npx9osCGDPyGryeA/AVaCQC0mRNQCsoPxnVtj0TMFFR7l/LR0vIfhSl+PjfZ+9
OHZBx0DApzq2uWAi7CCl6qQ5FLxpZ4SgTH9LAPtg8oZ5CpVzWOuqhbW1vSiUNR7iihKNWvSTWM3D
/IGede8t4NvVt/vNx8s0DIiLoljW4QPts7Yw5rUwTIAyENazoJtnvvDkKKuWl6IS/9cihl6eKwe4
a3PTT3DhJBl3PkmboWAgH3jm8TRZuhtCiZ+sQdUizLyniFItmSVhDKtWliKFd1Us17XMO+1lcgvH
yYRpYefh2vA5cg4scwidRBtMwqmBWDXArMkKI+Akk6EoUVUTypvnMi7jfnu5dnPHHixdyQiDXHc4
Wr9dKK0mYVLSOglhWMwKjMYDhYM+FiqVoIKBqI2d8Nmul5t+qPXC+Ds1OaGPX3Y7qOlXgJNf7+96
MEblU3II7g8/KRUEZ5YUVgviYLVqEyzwJJnXNfKiki9WvIZ7+zBI9X5JqA4hTpv1K7DTCyuwn+po
bt+Nr7mUOVxHhe/ThFNyxA4VHBJlcoVjNKXFfzW+Nl6k9oL2k0b9zPdzl7Pi0ganpjzlVIBP4Ayq
egjNjar8Q2qFuxSYVw5uwNoGsEm5wCZ1FVrWVP/VKv9xi5teYrc0jWlt9KnY9uPdCYsZwzm5eTgo
w6E3jNcK4+oIWhapWCxFBWuiLsK/ynE9SvD3N89X4P79TTc/6efmdCWDGm5tQZ8/DZb4EoSUJ7cc
NY8ceAskWVjAl6TBBYCgk4EOxiZK9HHRaI177EUJekGU9bQ+8O5+fzbsWodjyaKQuYSqYQZyHQp6
CkucW6D6aCuQr+fPlyxeeu1lWi8tz16cy4weP12JjSqMTIl9GE7VsO8C8E4DJbQGLF8UVR24SXVM
31cnhwoLcqjV1MN8+bR6oteAL3UPJ/MB8FRUodp8CUVSUlPauWZWfEghCuCh9GzxZN9zL9tKLckG
ML+dlxsewu/jkthUHOCkC8wZOk3cYKFcqqxyXq3njTKEL8uJnPp/rpJwGoRfqYUbBPjlOeRc7la/
3j880vMtx+fkj2/rn6nJELbKJfHmKJcWsdtaapaoiksDrwTbOIXJ+91+vt+JiEubvznz8z8vQTRD
lBYWkWfKdudI6fgcNd0PDazAXBZTig5yIsyfSxE0DLFbGnd/Usivu88Pv+32d592XUxUGa1aEI4F
OZQ50KUsCe7gYgJhAMrmtS0etWl/nTBLkH21327n5SOH66UH/ymtuZWDDylZqCQdYIKAD/HYm4B/
Ewis1gpzjCs+Gya9UlOXj9/d9JLN1w5gaLvfyg4SnleOa3cr7FDhT2XvlVgXRUDh6aEP3rFitQKx
pztAz1YnLagoBl6SRpzNx8fd3eft6hNbPd6fj5ICQKWsNy2eC7FG4GYTksKSBSwe1doFyszarKka
vz9Q8w57efx2QR6/m1RvPh5LdU7WzHkAgkEingPd9lPMKQvcjLMBxyMEk0JGF40Eo3kWMnc9T0Tb
L4gWZrdrDpj18Y/7p4+77lodWTc3xCuHn6QQXrVk6KrWUPdDsNXL5JkwLTTvTXL89e9sHHDph7l8
c/B6btQvRJiThzVdSO4X4sNu9XXz8VDLentMStFPOslUS0ikOBJRVjZx6BwYjnBCW3jrwLV5PV55
FuQa/jl+3U1SCL0wSXFOEvzwpk1jUCoqnqVkWnCqSmhUiabodlE2tshqdTSvFIM6D96JLPcLIit6
jGNqCOly5+rufvd1XEmXCrwTJ9ekODYltEopt8J8C44OqdG+vrB25dz/1aqVc4tuBl7MAxdrT49K
HBZ92HYQCvoDQydj5PmtO5R2pRJgubNn8GVQfdh1lqQHckg2Zueqr2aSdJ7110uzULCCX54DCp9W
97/ebS/XByn6E4y22GnBmqPkZcTJTioXYJYqWymgbWWS9hv3Mhl+7tfWQfMJsjuHDUJwp0pN24oC
DOdMJ/JkKRiWKIwIOlRD4cX5Fp8zggshg3UI85TderXTw2Xsy+lafdvePdw+HS9ORfrX+RqXuBUH
KyDICFApkVPVMxPJ+LXsWPLcsSxsssZZK9t3HO+o8ysHbdTippd7YWvX9PbAYWt/Kx/enakE3N0Q
DaMKQYDkykqhhICnq6wZJ63qqrLVzbno/qIU4EW+blrbhWL59XZ2W5qe0Ln/55vDswoHA6AO5Ws1
pzKkz2wtVLahwKwxzZC9VLK0WF5WLHAc4KrJnTe9XnQ4atDPdb3gjrfbqbU7/t3P4amuo6qfCg2E
PWqLdjok7hkHSIDO0l9zBhoFgig4hIkHQLCXzHphqCs38uYN+6lt5wXRGy75QiZ3+ANP8ECOUIUX
w3wqQCGVG7KqKGeocmKRCwqL8ZRyTLKG70dFqOPrERH69qaXTiyJLGbFcJuHFWFwyncMaX34eqDG
4ihqTxlbLiAsPgEF8FyECMJ/p/SZurwmKb6aiDk/NBtt5STb/NvdUHLZVvQHeY9KclKTQVGalqlR
woEninEYqjqPsF1BAKQX0JmWzUuOzGmEK2py/Paml1YtTcHM0NeGHsQ6/mHCsZ8v1eUYPCBxIueo
Ywb1MYVxW0z2DWjmZTWq/QhXY0ujNpN52IV5ENI/cMjfHz89jWpAhgsIoBs6AFJZRbVMDR4tVEeJ
CRE4MKUWWUzuwYw66Ua3es578Mv9xLmu6bXW81UIS0K05I3FyWQy0osWgdMDHCExUY1Olh7O8fI5
3zrushdpIX+xGRJh+zP4+eXHPsZg/KHIK2Vlh+dlfKCHcBQVUnuKgQcuVXXV2PZKd5xmQnRzcHrB
DLjVdnI4L891vPlpIAgwyAMxwmoCHPDDbRwByyuFUHTPCQDBg2ZGYTwZsxCNMTnm58t8h86v5M5+
mgB+SLlwIhxBAtXBra405PzyjL0VFNPVIfgMuMnCAEEDx6cGfmeKiNmoLFQHQefAa957L+RCQTd+
ea5EPKzFbbqA0kBXt4c0AT0YYxpAYCbfbl2iF84ysy7LEFKsbopM+87Gcmwtn1PArTX8pLz0TMX7
3a/02snowra7PVYES+saABizVUOFUlX09JRgnF71shqWX9b/x/c1esH7eQezMO9wNhubx/12iZoA
VCTvyMt5AcuVNQC51TjKBfZCpFC8nliuUU+dBBs392DbjT+zgoftSILBw1IZoq4pMq0TjW0Uo7QJ
8wKgR7VW4P8myfrtlbG3amHsWaQt02Od73d0A3L39XgV8py4MoryrUmayEPN5OthvyU+eduAwEzS
XjmwpfIirrk01BUssNByMrm5/m+3cjOZHN3k2nwii6VuTRhi1fRhuImmVdNwR1lRtbgh6uwDqF+m
K8VZNJO+f4s8v71e4J7f3vSyzUNl252aPlQ5iyoQFjiigUPgogHYt0LOzBjKMnOAGeM807zpBhZm
xHfu9D8buDh+edNLuXCId3qcqv9yB6b0H5frvMocgukB7FAykehVQysjS5orNhQ5ixKz6NSoS9P3
HfbirBas2W41pU1fvt6Nb4rcvqN/n7J60g5otnLeYhWsRE7x0CzhiHEkjJVG+EzlFK9SYfWuF2Xc
avhqMr31wvTWU7X98dunp7unh2+bjzNFonyRORVbnj4O8UsJghQky5ZSWdBpurFVyKzV1GTzSr0o
Q/PM0N0N9WmzfprruQLvRPjf3q6sOY4bSb/3r+iXiZBjthi4D0XoAYVDS1OUtCI5431i9FGUGOKh
Idkee3/9ZqL6Qh1s2mZMP8hyFQQkjsoDmfklu1oU0/w1H8jpmzV8QVbnAxM01Akd52D3cRph2ywo
UdGBikGNJd6SV7Ps8/gjwED53aSYwIAPraHzLls6aR7mzcP9476iD6q8cQnMd2oNilmXQPY7CbpJ
8lGCzXIIUmbT6TCxm7cFuYz0mRI+7NqB+ZgjyIFo02BzpoKnjnpS+ZpggLeEj5twU/nkGGj5gUdl
//S3077rkDpwXoRuOjBEGwf+5sRICTweFNQjnrGIHEa0BmCWCDjDGcacGPjgEzNRK81EIC/DyXre
N18QLkxfCWwUApyUZVzTxxbYDQwXzTOES/4vqgTOUavwgjfBKnMjgONriZ7VZEBFtQbk8PNLvel7
LPxj/XpSkjiw4ApdO7QTEv29BWbeC5JE7SFPgWs0wgJRWmqQVoljzIuBU+OI0BVYsF4pITiw2xfF
5m7HGg2NXr8vZqJV/y4UHrKN+rt6ut4iDHA0ZUA0CVC2ExgwdY2xUwJjiW3lLLWcqsBJ7KQi7boo
Rp4N4KE1M7M1AM6PU9cvYRknVjlVEeY9wmUFGBvMRDgBVHDiMQXolfwSu9FLomd9U7+Zk3nn1uW/
W9dgGQTgmQnAtWJFKGK2KY5g0QKM3DpwjMmWkqmX7PS68xEor/blpKRvMUT0FkZodbcL2MNlVgyM
fyFlRY1iQCh8XWCxonNb1ZYyqcRI0uy2o3L4ARgbLFExkF3ah180ch2MqpmtgwquokmhPqIxawXs
DqYSo4jZxer64FXgIQi/ss2kJLivWTXwdPOhXC9WmNe+F2FM6RHP+FkgepERVQw0Z9hto2A5qapC
LWHfZdTeiG60YdHXpByyb7c1V6qLHXB9931f6VmbLIzgUmIedw1aASavwlKC5oPAQLLCtN3oEjFJ
6FcJnr8bYarwYn9OV+Sqr9ZdUb7onJDPbRlwDFnfgLlmh2y+McaJweelucC8QJHjB3OoVhRgoDoT
EydUxxelHg8MNKKh9htOyjkshya2zGFDsLMFRMXFHqvdwGkEXqsoMUbCY/IgxZCO2grgeMIqMHY0
px1uO9Jlh6xmgCy19QhvIgfoQFQCj0ZLb+oqUbxzpRoOj9Fg/jJrQEOwzAXWRUQqeispUXaAEsSS
WrS+6fTL2bfZQ7PsYiGBzhcUoq8SUFLwDkiBRgjmlK+15qSuQWGhrwR0VpJQkq/ZEPnLXmrUOnp0
fcVzlHpf5l4ULGOOeJB0oC5iSgLWWHAWNALpfHAR7LJwANuzN9yIQlC26kxs4IRwOuu4SP9nNXt4
+r/WsdCm4HHeRjD7VFvNAqiPjsP+GLzgdjAJ5lQOt9dCPK+x77oeScPcvp+UNA6wEi5nO8i8ix6s
lpKGB+DKNOGtEmZ4G15rOE/SJKJDbWV4Lcy8i4FDxAeUYHi4JTnXb9/zH2Q0GkaZxRRYQTBcmFhX
GQ0HBVR1w5IAlZJ3wt+KXjrjDy2Z2d0Ezhbftvdwqg1P8DQqWVeaOVrx4ECUSOABNeNUWo9pfsMZ
+ntdFSSIITYg1KKTbnT86Wz1cDVbYDIYzRludu0ntFwYUJgrymoEKzFY8yJyTBDmrGZKWH4gYGXT
89gd+/p1SfWAKL4Szdb1/v23bbX2DjoXBb4JRysh+BliEmtMUOUSlBlBeYA/QAgPLuCuy4ISSfve
8itF5IaSnz+zjipNbc21r1XlDQaXGWA3cIBg2WDFkkHol5q8WnLjQN4EUKcGSJZid3EG7KnIcKGq
vf5PsF4cM+ipQEw+jICua1ZXhIQAq2odaAEjV2dllyU9Ug7R09VSvzU3P5DX8Xz8BOp3DsxjrkCR
DwT2kSOOGHBqUSXp6wD6SIz8dUB8Yegxpf/mRzmZOR2YzHILILf4+99n8+ttWIht5Q51BrgJr8C2
BrUfDQAQpqnSgkebEH0skV5a+rabYvzZQMAPPnwGUAZdTzknIqP2KAzUiqBjaAs7HMCoBwupMrUk
3EcEO/yrQXX7LTqkmwHSF2oABu3rzVqI5LTUVpgQ+HKjBN26png4McPeUgyispYaEUF1kv5PC5P2
XUnuYmCl54i2zQ5e+LZye429nS0/EwwDycER5SG1Yc0WCK6kZh7kuYjmwP35n3FnbWl55ha4J+cX
zcAJXzRbPCgsv7DLQmsrOAhKtAYeAZtBLBpiIDQVjyjFIicihkiH8wN2nZU0DKT/XC1Z94YwNPPV
1xZBDe0VorK/AjlHpHWIgZhKMu7Q0AZThYXscvWaskSc1y/Ly96NMJaQvWtRzGE5AHUGD5tu0kVR
+e6N5OuUFIfgVVIiHA2wC05JxDsNOO5KR28xvYE96yUu+i0Jmw/Ih8Z2PRnI01fX6MTCrxD0j8zK
qNEhYf6jcTl0WgWQbobhxoOGAiqpD/qlGFQXx+Mc5KJINALyBjSpZr6Ne/jtx2IXC09Q32ftGhIf
JBxLgZ72BKKjFlRWitfcEzgKig0Hw2+7K4kYACS5apouXIP/trr7DibievLbSDLZFmepMZDGgzwL
FN1p6EewCnSVQMGqBooM4S+6rOoMM7KUZaNyOs3AObiSvHPVOsR43PkZLLTK0U6qvS42zHimKa1E
NqqTBhkneL6DS5yZkGpK/3P+enhRzDVfg/Tm2hObH5undLYpdNGGoZvIlCfWVj5aTP2gFsSOY5US
0VlmvaL8+Sud3OcorFfq0tmTkaC/z7aYN4//url+avjuMgNlC8HEyDphUDbCUQNzwGBM0HmFNLK2
lnHfucooupkUYy0XfQIo26asLVYPN0diiwRojqzIp9qYxHSyoCtKBjRw2H7LTQC9m2CAUTBtLZAC
yGrX06QcTQ2QgCHVpSuyeZot15GNa5xxWLsjnl2sII88KIcV2J3oZgddARHPQSgJYADaJH/A8PxD
uQMbSsYgs9u3xRx5v7yFzUbFuBq39oetrwRA3h5RneVd/luOH2HRshSqEBHoMwjYAkzcojiWIdQp
6l9v0jtqnnOmdbQLm02T3sQV2WKFL+5//L6fE0YJ30I5JGZDSgqOGIatIc6S4QLLiUWQTkpRFs2I
dbLfZ0mOYgPkLO1z+/DpbKdZY8KxyAXnWoR76YRIpJaVcAyNP/gMXIgCK/7poLyOgz6nP7sHO0pG
tNqzAUUc5zcbmnT3Ujim4xxXvcXVzGqsktRYkKM6V9FgHG9NeSU0i9HxwOAAvkR4bfoepnvztkP1
sk+1Nts8xl9Prx8XvXh8IqwnmqPHhSBOSo3JZxxML+VrQxjVsF//qXj8HYGTcg5Nf2IYrDVwBkvc
Yr6OiAQzCP6W0/+kFTHjwFDH0RNG0UiKlUqBwt5Yag1/MUToYfTiXrNiYoYOfOsGRYkpIUbuvu57
HfQ6DawNuzAJbAe0+CjsIEJvgLqEF7feeltrWD0WxKvrFfskjWGM7FqUk2ZDk2akWyujTxWcWpMj
9LMvgCfg2HBisXIOB4kFvA5rQXovksEx+CtpUwMNO/OhQ/OhnfzsNqVndXf99Ngm9FzctUl9RTYP
gmpT+BildBgRr3gFPAOhbJVlTodY63Q4mwd7fiaVB18XM5jLAR6/oF19Yj5bfF/9KFx7R225nvzf
HBGhtRPJV7rWeD2GdW2wCHBKojZUkEDki/Am685IBVJmflfQv5B8gH7MKVVlKayzPZgy1l6imYy1
EG3EHDcrURlSYAoZMH2qqBzFeGPn0+tH0u6oGSuMNXjaFv20UXg466WNfps9tCD5fI2szdtc4wT8
jVvhKsbAMuVMiDazNzlJU6iVCy+DBF0PMBJw074sCe/XQIGHV11gxfYzQbaZz2qLT0PX+DSo5BCd
WA1KT+UiwygzigDWXlTWgYSlvCaUH3bG577HOXZ+vU89lf0rAXzYNY/OH1aPT/HX2c0qHwb3dR91
W2ZoReHQSwLqDwISaYpFtmD5jQqkBlbNI3sRGPLQQMPzGWpZTG3Wd4DAQ7O9zvJf0tkKjKEiFCcl
F7XMSKwCLSqDSNtWgxJBFcaXamNDJ0u06KagYM7mfQrmrFtQ69z7bQ1SXErmiJYBjDoNKj3HFBYr
a1/VqSZBGp4EfVGaHXQ7snLeF2Qu+nm18JB3qyiG60VOStt6Nx83GP2MZG4juXWgoVe1k1g5NUZY
OlC98ABEkGGU6Vc0vfrUjLlku+3KufOBLVpItTkkn4EVlF4eT0EOawGbkrAUH94tGqtcBQ+5JrLm
0b8WhOV28JJk2Wc49ArreIqu1rgOZrXrxHoslqCiDxVJFOO5NWZIpVQRIZnQoCmGJP+SA7mzmc/E
sm5f70+N0X69lPxwsxvfm99vvz4UgVXcOROMDJVPhOS4L2A8jlRYuQk0YeZUGHH77fVVEMEGDFV4
uPWi/Zjd7tVgagELuI+omgaHihtxtKppQhAhRAG1knLfATzc66Mzthwau/8pPn53D/PrbQXjtgZf
iyzuBFUSi5JpjZn6gemqznW3afI0Gclqow+Bwu73Ph77uNeonIWxA7Polb1ZY2F8mGEp6bPmFmtD
LE7hHYjYAgGT0vX0aFuB1zNltGe+YsBxsHw36jXoK3cUpChIIhmfx8YaHHJM3R9oWs52thiY7aJ7
OXwxv/7XKkcKt252WCScCib4aDDb4ABRLN6F1TKBuYC+TIKVjrbA/AeZ/ab34Uls3hZ0LxZ9s5ot
e/bK2WJ2M5vfNBePWCv+qVkHC+zklU8a+Ic1FfA/DH0LWBm5ppUGfi+dVDYK81pcZZCYEV1tqOn+
AnDC+4wUHnYjjX757NeiY3uhn3lpVBxLhKeI0g6jdy0NsI9SB5JYJPXLgDx3vQ9PY/e+Q3v/6oCD
GO+BZz00581vT3hnr1vToP1LPnrWMkVjBeolKJxB2cog/hkBpUeHYAKnh+U1dj7O4fHtpKSQDpFN
Rws240FDH/beE5pLogBfrWumHajLOaAW3VHA6issZxyA3fkk/1rNud37zgzYwAzoFoLoAQT4za9H
duvWy7EpFLgVxoQmigUvLPxRi2gqFYkXcGqSs5078rKbkgJ6NUDBDnb7/YdW7nZCsoR0sMU1on5g
dF8koMGE2lSgTlqjozHiQEjFHwjJ2iNgMom/rcvanN4vdyVCz1a3tzDAW5ian93cPE5vZ8tmOv99
ev/0rXmY/ni4ByXoEXTMp9nD1yYXRnv6dv24efE2L8nT7PH75dX9w+WP6+XbKWufZe/n5QL+fGre
Tsn+w8fmKdeZWz8vBz7UPflr3cP/7M0KViCPh/VVru+aofGskeaPDTn5x+kU01P3l/cLtPp0d/P7
FDOi8M391XS7W2+n5/dPs5t3oGMdmdMpHLrrJUi7d5SoI3r6Rpi//TR9/Ddm5y8v71dPl0Da6i6j
xsKIy3eUcvhnbyT720+Tfz5cPyG7hU6QgG3XYCG8n/4bXoIYfacUESdvKPS6HQo0adY+2hvoHTl5
Q+BRMRh09MZaGGo6+RLfH3/6OD3/389xOvL7x/GX8wv3YfJu9xtrun498e+njzkqdXqdkzqGW1NB
TiZhjRENPAsLWrUmaPcfCHNETic/n01/Pj6ffm1RPaDzxT0ciE6f7Jmmb2CtQAI0y5+wKdga0HTz
DzevprDzs+USq3xNgTIUVXtr99PkJJeenDp8Mv10t2hGlsKcTE7dhw+f/PTZH5X2iJ9umr6ZLW+v
734abc0Z9NrcIkDt+ezrlAk23jE0PTt3/mT6/sJ9CeMUSFyFydnTbPF9euBHQS0+hU/jMlPrzuMz
TdWROJ38s5kj7MBpXr+xpoJpdTK5vAzu3B0ggDFcrMvL41P3Ph5oK5nBXj8cfzyJAc7C+M+aI4u9
nsdfzg8tAGmbXnw89p/C8yRIIU4mt/lLnKLr7JmWFhdr/cXctvs7/oNe/8CneP7p3H2YHtzZI/W+
bfpfUziBq8fie2i/g/wDVRS3YDqZ/D9QSwMEFAACAAgAUFNORyL9cwObBAAAWgwAADYAHABhY2Nl
c3NpYmlsaXR5L21hYy9zZWxlY3QtdGV4dC9zZWxlY3QtdGV4dC0xLXN0ZGVyci50eHRVVAkAA0iQ
HlZIkB5WdXgLAAEE9QEAAAQUAAAArVbbTuNIEH33V/TTTIIG5Et8a42QQkhG4eYoCcvD7spqt8uD
B2N7220G/n7L1yQQIljtS6y0q8451V112rqqmceaeqyNiKZS3aSme2JYJrmD4DKWayjkskxTEH86
ru1aVBupxt9kulx6S0p8fzK7XV5NGL8HOhHAJKxZkEAxTsN5GsIzFOQJRBFnKeH1a3JMQiZZwAog
cUGSjD9AeEKmQkyyECgxTxT9vwjaUbKEhmz6mMuXRcVfSEjlSmYCvPQ8Lh5Qn5dDSjtVslZNWBqS
uNJNIhYnKExBYZkgPHvM4yROf5KgjBMZY+I8fWJJHBJ+zwTjEgQlX/9SvyoaIUR91lQrsk3TYeRi
NaG0lfMMvKyZ5ikmpCwZ1G//uP7yrYlbZaXgUO0EUqaF7NbnIcqPoxjE7vqk+iNKjoVdou7Xq+MA
RcuXoaJvRFnMVJuws6aUjaqC0qhMucTTWohMZvIlh3GeJy+VoE3YYKgYLZ5tjDRHNRu893N/AB4X
Q5F9vUNl1EHoFnecoIGYvYaglIXh1moOQsZQNDiVpJXEjT1qC79Y/UiygCVe8Au43Kx2AEf7loaK
2VdjmlYQ7cOiNE5juSXfanOweh6Cvj8nwqTivp4LpHp92BerVudQsXs0xlw1qFp9gr1axZx713d4
tNnvMxyZA5D7Ulb3kCQI7/TwgWOp1vuxlBYgm/+Du/WM0gUriiVECym+90l9yulQcbeQDTc6hPy+
8o8QaWpLZFngavYhombYPkfQzV89NqWoOmonSrAcW+8uE0mIh69pvRhu6e4mdMVFnEucPymyJEFP
aMVs6RscwtV73FCNjEO4VTs2qwcBjXbudUuFgB8C/P1BiaMW0dBtl2utKVOKz5lgj5jzq6hg4Vmi
T2hmE81G2sjmaOHrJZpZWnU9hGdlGiawYD8xSQA23jhCV6z8vcq0+kxtNDL2ZVIaxiFaPcRPcA1F
gUDrrIIbeDn7p4S7yw1DY5t4qt0rPOnKzrvlp6yy8voPctvdrqm2q4Z9jbv0kyRGU35fxP6sprG6
LasCj9oG3VaETTtezCntDUJzum23VFePXmNQmmeF3GVq1Qz2gXfptwWIc7yO2xfI43Y8Nmdoa/W+
zBc4GvdsC/R7+yy2FCzeU/Cm4na7B2+KOBp+Su3poFbW0pwDx6tGfNm3wf8PH96jar89zLD1t8ew
aYZ2qTuFWikORgr1tYMs+7Qjg9b1nsYcJ9qJapHFNcsrpiJnkt9/mkDvSuAjiNSdEkTGMXxPS38c
vTMcLbR5pJFXeW9lFzKk1Pc1Sss0xsn0czToPdjfyCYyhIiVifRDSEDCvuhTgleGPuq1MNNg72vx
0r5OzGotyzYD5lpOM5v4wXmVZbjr6IRRJh7RDR+qWGsTG5j6gdiqAXGM9dpZ7CiKHAgC3Qy0+sN1
eXtz5XkLf77yJ+Orq/nND9+7Xftrzx/7K+92OZmq/mK6nHnLa392ezNZz70b31d0ZwuNGXgVNWiN
gPOs+ZosVEV3dwINiLYD8aEY6naEDrZJtt+vcuD4+ckVQ+vjTBgZDN0RX09KIdALp0/4U2XM02s8
BeVfUEsDBBQAAgAIAH1TTkcn2YdFjDgAAKTDAAA5ABwAYWNjZXNzaWJpbGl0eS9tYWMvc2VsZWN0
LXRleHQvc2VsZWN0LXRleHQtMi1jcmFzaC1sb2cudHh0VVQJAAOekB5WY5AeVnV4CwABBPUBAAAE
FAAAAOxcWZObyJZ+Hn4FTx0qu1HlCqTC4w5A4FvdtUWpvMR0OBSAUlVcS0INyK66v35OghaQkFz0
eG50RF89SOXM5JzvnDxbLvg2S2OZ5wN984nTeT9cLmey/1FGvyWF+vHSRSEXRX8ov8pZupzD3/rv
trBN8Vm7DYvH3dPwOf+QzlZzmZ9/uLl8f+WfvzpfE5pm4Vx+S7Mv5x9klifpIj93zj/deiOZfU0A
xPkLWfeflvH5uj0/vwrjm9FLH9UuJvCdTBOZDTqJq60h7yQ1EXmt9+C7j/vW6zPNSydSv39eys2Q
T7ZpmEzvXYdF8lWegaIypbfbrcJ/+eUX/Xf8WbuT+RKUkUSz9bP5I7QL/ll7n8tMvxjumHKENe12
tnq4WOh1xR/T+b3Mi7vVYiGzi8U/ZVzIibtaTEDYqPzZ1+LphzaM6zp82RN15Smpe+hM04ZhIc/v
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
adC+Imza2WpBSGcQutNeO2Ouwd9zEJJnhTzM1KgZDZG34Q8FiEsqabOBedw2D3cp2truXhYrHI0n
2iP92TyLnoLVMQUfTtxc9+jDIc7GX1J7Ptopa9JcQoSfGvFt6IL/n3z4HdW667FN2/hYhn0zNEtt
FXZKcTBS2H12MMuQdsygt73n2o7DD1ANs1jSvMpU5FRGT19O0HiMa0504NrBEUQWIXygpT/P3hmO
NYm4rr6L+yi7kIyQINAJKdMYJzPI0aAHuH+oeyQDTstEBgwSkDCEPlfxk2FMOi22ZdLjWvy0OydG
NZZF0bHcqVPP5rpM77IMbx2dkGfiGd3wnwo73WNDyziBrRoQx9jYOYvNOXcgDA0r1NUg8Obrh/s7
318Fi03gze7uFvfXgf+wDbZ+MAs2/sPau9KC1dV67q+Xwfzh3tsu/PsgUAynx0bNaGrUbLWAy6z+
N1loiuEeAE3gfSA+FFPrIwywLbW/v8khwr+fkWLqHc6CiUnRHXHbK4VAL7x6wZ8qYpEusQrKf1BL
AwQUAAIACAB9U05HFieC/pM4AACkwwAAOAAcAGFuaW1hdGlvbnMvM2Qvc3RhdGUtYXQtZW5kLWV2
ZW50LXRyYW5zZm9ybS1jcmFzaC1sb2cudHh0VVQJAAOekB5WkJAeVnV4CwABBPUBAAAEFAAAAOxc
W3ObyLZ+PvwKnqbkZJD7QgNN5WQKEGR7xreynEudqZQKUGOzIwsNoMTev/6sBiSBhBwzJ2fXVM3W
g+R0N2t9a/W69YVc51ksisJWN584exiHq9VCjD+K6Le0lD9etizFshxPxFexyFYP8Lf6u8U54Z+V
67C83z0Nn9MP2WL9IIrTD1fn7y/801enDaEkDx/Etyz/cvpB5EWaLYtT5/TTtTcV+dcUQJy+kPX4
cRWfNu3F6UUYX01f+qhyNofvNElFbg8SV2kg7yQ1EHmtjuB7jMfm6xPFy+ZCvX1aic2QT5ahGbo6
ugzL9Ks4AUXlUm/XW4X/8ssv6u/4s3IjihUoI40WzbPFPbRz9ll5X4hcPZvsmDKEFeV6sb47W6pt
xR/T+a0oypv1cinys+U/RVyKubtezkHYqPrZ1+LzD20Yt3X4sifaypNSj9CJokzCUpzepg9bhRGE
mYaRhnUVI5uYNuFjjImqIRMh5WqqducAIKvQ+AkGj/mYqSNMA4ypfgIKXWV52RqOseIss+XTQ7Yu
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
U05HAAAAAAAAAAAAAAAAHQAcAGNvbXBvc2l0aW5nL2JhY2tncm91bmQtY29sb3IvVVQJAAOQkB5W
opAeVnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAB2U05HyfftH6MAAAAsAQAATgAcAGNvbXBvc2l0
aW5nL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvci1hbHBoYS13aXRoLW9wYWNpdHkt
Y3Jhc2gtbG9nLnR4dFVUCQADkJAeVpCQHlZ1eAsAAQT1AQAABBQAAADFzrEOgjAQgOHdp7jNCVpA
QsIquEg0ITEOxpDSntAEOHItGt5efAqn/x+/sq6vdQ4nZQc04AkYlYG9uDlkJ9rFDqYlLyrbsuJV
VNQ5UVjVTeS81TXOxN4JTWOo5nnA8I7t2fpfjjR5nHxY4BsHmsftm1hGaRDJQB4CKdMkyRr8uEhm
oWbl+n0Oj5J5IoifcCFwi+7htcGAGIxl1J54zf+l230BUEsDBBQAAgAIAHZTTkf1G6LcCAQAADwL
AABLABwAY29tcG9zaXRpbmcvYmFja2dyb3VuZC1jb2xvci9iYWNrZ3JvdW5kLWNvbG9yLWFscGhh
LXdpdGgtb3BhY2l0eS1zdGRlcnIudHh0VVQJAAOQkB5WkJAeVnV4CwABBPUBAAAEFAAAAK1W226j
SBB95yt4mrGjeeBqoDWK5JA4chIHy3Y2Lyuhhi7GzBJgmyaT/P0W5mLsYCuR1g9GVJ86dbrr0txw
nnE5zF7yOInTX3JQxomIUyLP01eaxEwOt5TTUAAn8ve/le+SKsuy8qYqoESaaVP5bu0SEnKgAm7e
ICwFDRKYp+iQ0mS0W/1r8e1HjVtnJQ/BzRhgyLQQrX3OIBVxFAM/tLvVCy9DkfH7OGXH1mmAosX7
WNL2onRqKjXsqt7KXlVBSFSmoYizdMkzkYn3HKZ5nrxXgvaw0VjSWz4jAFsxa77TvreQAqcostvv
WDJaCh0c2w5qitkxBSGUsZ41By5iKGqeStJa4MFeNBu/W98mWUATL/gNodhbW4KLIdNYMrvdMG0S
RENchMRpLHryJ41PpDKHgTbsE6FTsXWr5GOo42TfrRudY8lq2TTNcpRAfobAzThUmGtv8Yypzf5c
0QLOUA65rLeQJEhvd/S6OVEmp7GEFCDq99HzZkbIkhbFCqKl4D87p87lciw5PWbdic4xn1b+mUCq
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
BQADnpAeVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFBTTkfXycIDmgQAAFcMAAA9ABgAAAAA
AAEAAACkgVBuAABhY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHktbm9kZS1tZW1vcnktbWFuYWdl
bWVudC1zdGRlcnIudHh0VVQFAANIkB5WdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAfVNOR2TN
fejPOAAAysMAADcAGAAAAAAAAQAAAKSBYXMAAGFjY2Vzc2liaWxpdHkvYWNjZXNzaWJpbGl0eS1u
b2RlLXJlcGFyZW50LWNyYXNoLWxvZy50eHRVVAUAA56QHlZ1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACABgU05H1rhFiAcEAAA8CwAANAAYAAAAAAABAAAApIGhrAAAYWNjZXNzaWJpbGl0eS9hY2Nl
c3NpYmlsaXR5LW5vZGUtcmVwYXJlbnQtc3RkZXJyLnR4dFVUBQADY5AeVnV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAH1TTkckV3F8gjgAALLCAAA5ABgAAAAAAAEAAACkgRaxAABhY2Nlc3NpYmls
aXR5L2FjY2Vzc2liaWxpdHktb2JqZWN0LWRldGFjaGVkLWNyYXNoLWxvZy50eHRVVAUAA56QHlZ1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABvU05HWGTxcwgEAAA8CwAANgAYAAAAAAABAAAApIEL
6gAAYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5LW9iamVjdC1kZXRhY2hlZC1zdGRlcnIudHh0
VVQFAAOBkB5WdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAblNORwAAAAAAAAAAAAAAABIAGAAA
AAAAAAAQAO1Bg+4AAGFjY2Vzc2liaWxpdHkvbWFjL1VUBQADgJAeVnV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAH1TTkeXgNpX0TgAAMnDAAAxABgAAAAAAAEAAACkgc/uAABhY2Nlc3NpYmlsaXR5
L21hYy9hYmJyLWFjcm9ueW0tdGFncy1jcmFzaC1sb2cudHh0VVQFAAOekB5WdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAUFNOR+MX1uuaBAAAVwwAAC4AGAAAAAAAAQAAAKSBCygBAGFjY2Vzc2li
aWxpdHkvbWFjL2FiYnItYWNyb255bS10YWdzLXN0ZGVyci50eHRVVAUAA0iQHlZ1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAB9U05HzND70I84AACywgAAKQAYAAAAAAABAAAApIENLQEAYWNjZXNz
aWJpbGl0eS9tYWMvYWNjZXNza2V5LWNyYXNoLWxvZy50eHRVVAUAA56QHlZ1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACABgU05HgcMLHQgEAAA8CwAAJgAYAAAAAAABAAAApIH/ZQEAYWNjZXNzaWJp
bGl0eS9tYWMvYWNjZXNza2V5LXN0ZGVyci50eHRVVAUAA2OQHlZ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAB9U05HLHG3PpY4AACjwwAAMwAYAAAAAAABAAAApIFnagEAYWNjZXNzaWJpbGl0eS9t
YWMvYWx0LWZvci1jc3MtY29udGVudC1jcmFzaC1sb2cudHh0VVQFAAOekB5WdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAblNOR6uKP7EIBAAAPAsAADAAGAAAAAAAAQAAAKSBaqMBAGFjY2Vzc2li
aWxpdHkvbWFjL2FsdC1mb3ItY3NzLWNvbnRlbnQtc3RkZXJyLnR4dFVUBQADgJAeVnV4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAAHZTTkcAAAAAAAAAAAAAAAAeABgAAAAAAAAAEADtQdynAQBhY2Nl
c3NpYmlsaXR5L21hYy9zZWxlY3QtdGV4dC9VVAUAA5CQHlZ1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAB9U05HFJ0/yJk4AACVxAAAOQAYAAAAAAABAAAApIE0qAEAYWNjZXNzaWJpbGl0eS9tYWMv
c2VsZWN0LXRleHQvc2VsZWN0LXRleHQtMS1jcmFzaC1sb2cudHh0VVQFAAOekB5WdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAUFNORyL9cwObBAAAWgwAADYAGAAAAAAAAQAAAKSBQOEBAGFjY2Vz
c2liaWxpdHkvbWFjL3NlbGVjdC10ZXh0L3NlbGVjdC10ZXh0LTEtc3RkZXJyLnR4dFVUBQADSJAe
VnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAH1TTkcn2YdFjDgAAKTDAAA5ABgAAAAAAAEAAACk
gUvmAQBhY2Nlc3NpYmlsaXR5L21hYy9zZWxlY3QtdGV4dC9zZWxlY3QtdGV4dC0yLWNyYXNoLWxv
Zy50eHRVVAUAA56QHlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABgU05H1cquRAcEAAA8CwAA
NgAYAAAAAAABAAAApIFKHwIAYWNjZXNzaWJpbGl0eS9tYWMvc2VsZWN0LXRleHQvc2VsZWN0LXRl
eHQtMi1zdGRlcnIudHh0VVQFAANjkB5WdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAfVNOR1p7
NSmMOAAAs8IAADkAGAAAAAAAAQAAAKSBwSMCAGFjY2Vzc2liaWxpdHkvbWFjL3NlbGVjdC10ZXh0
L3NlbGVjdC10ZXh0LTMtY3Jhc2gtbG9nLnR4dFVUBQADnpAeVnV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAG5TTkcGPh11BwQAADwLAAA2ABgAAAAAAAEAAACkgcBcAgBhY2Nlc3NpYmlsaXR5L21h
Yy9zZWxlY3QtdGV4dC9zZWxlY3QtdGV4dC0zLXN0ZGVyci50eHRVVAUAA4CQHlZ1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAB9U05HPcwy0pM4AACkwwAAOQAYAAAAAAABAAAApIE3YQIAYWNjZXNz
aWJpbGl0eS9tYWMvc2VsZWN0LXRleHQvc2VsZWN0LXRleHQtNC1jcmFzaC1sb2cudHh0VVQFAAOe
kB5WdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAdlNOR4sQ8tEIBAAAPAsAADYAGAAAAAAAAQAA
AKSBPZoCAGFjY2Vzc2liaWxpdHkvbWFjL3NlbGVjdC10ZXh0L3NlbGVjdC10ZXh0LTQtc3RkZXJy
LnR4dFVUBQADkJAeVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAHtTTkcAAAAAAAAAAAAAAAAL
ABgAAAAAAAAAEADtQbWeAgBhbmltYXRpb25zL1VUBQADmpAeVnV4CwABBPUBAAAEFAAAAFBLAQIe
AwoAAAAAAHZTTkcAAAAAAAAAAAAAAAAOABgAAAAAAAAAEADtQfqeAgBhbmltYXRpb25zLzNkL1VU
BQADkJAeVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAH1TTkde45gF3zgAALvEAAA5ABgAAAAA
AAEAAACkgUKfAgBhbmltYXRpb25zLzNkL2NoYW5nZS10cmFuc2Zvcm0taW4tZW5kLWV2ZW50LWNy
YXNoLWxvZy50eHRVVAUAA56QHlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABRU05Hk3AMGJoE
AABXDAAANgAYAAAAAAABAAAApIGU2AIAYW5pbWF0aW9ucy8zZC9jaGFuZ2UtdHJhbnNmb3JtLWlu
LWVuZC1ldmVudC1zdGRlcnIudHh0VVQFAANJkB5WdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
fVNOR9CK8ZuQOAAAo8MAADsAGAAAAAAAAQAAAKSBnt0CAGFuaW1hdGlvbnMvM2QvbWF0cml4LXRy
YW5zZm9ybS10eXBlLWFuaW1hdGlvbi1jcmFzaC1sb2cudHh0VVQFAAOekB5WdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAYFNOR7YBzaYIBAAAPAsAADgAGAAAAAAAAQAAAKSBoxYDAGFuaW1hdGlv
bnMvM2QvbWF0cml4LXRyYW5zZm9ybS10eXBlLWFuaW1hdGlvbi1zdGRlcnIudHh0VVQFAANjkB5W
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAfVNOR7A+p/6NOAAAssIAADUAGAAAAAAAAQAAAKSB
HRsDAGFuaW1hdGlvbnMvM2QvcmVwbGFjZS1maWxsaW5nLXRyYW5zZm9ybS1jcmFzaC1sb2cudHh0
VVQFAAOekB5WdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAblNORwLEnYIIBAAAPAsAADIAGAAA
AAAAAQAAAKSBGVQDAGFuaW1hdGlvbnMvM2QvcmVwbGFjZS1maWxsaW5nLXRyYW5zZm9ybS1zdGRl
cnIudHh0VVQFAAOAkB5WdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAfVNORxYngv6TOAAApMMA
ADgAGAAAAAAAAQAAAKSBjVgDAGFuaW1hdGlvbnMvM2Qvc3RhdGUtYXQtZW5kLWV2ZW50LXRyYW5z
Zm9ybS1jcmFzaC1sb2cudHh0VVQFAAOekB5WdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAdlNO
RykCw58GBAAAPAsAADUAGAAAAAAAAQAAAKSBkpEDAGFuaW1hdGlvbnMvM2Qvc3RhdGUtYXQtZW5k
LWV2ZW50LXRyYW5zZm9ybS1zdGRlcnIudHh0VVQFAAOQkB5WdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAfVNOR8jnjz6ZOAAAlsQAAC4AGAAAAAAAAQAAAKSBB5YDAGFuaW1hdGlvbnMvYWRkZWQt
d2hpbGUtc3VzcGVuZGVkLWNyYXNoLWxvZy50eHRVVAUAA56QHlZ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABQU05Hc2mVG58EAABaDAAAKwAYAAAAAAABAAAApIEIzwMAYW5pbWF0aW9ucy9hZGRl
ZC13aGlsZS1zdXNwZW5kZWQtc3RkZXJyLnR4dFVUBQADSJAeVnV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAH1TTkdjE1k0iTgAAKTDAAA2ABgAAAAAAAEAAACkgQzUAwBhbmltYXRpb25zL2FkZGl0
aXZlLXRyYW5zZm9ybS1hbmltYXRpb25zLWNyYXNoLWxvZy50eHRVVAUAA56QHlZ1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABdU05H25/JUggEAAA8CwAAMwAYAAAAAAABAAAApIEFDQQAYW5pbWF0
aW9ucy9hZGRpdGl2ZS10cmFuc2Zvcm0tYW5pbWF0aW9ucy1zdGRlcnIudHh0VVQFAANikB5WdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAfVNOR+VPHDqPOAAAssIAADgAGAAAAAAAAQAAAKSBehEE
AGFuaW1hdGlvbnMvYW5pbWF0aW9uLWFkZC1ldmVudHMtaW4taGFuZGxlci1jcmFzaC1sb2cudHh0
VVQFAAOekB5WdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAbVNOR90Od3kJBAAAPAsAADUAGAAA
AAAAAQAAAKSBe0oEAGFuaW1hdGlvbnMvYW5pbWF0aW9uLWFkZC1ldmVudHMtaW4taGFuZGxlci1z
dGRlcnIudHh0VVQFAAN+kB5WdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAfVNOR07TYAKUOAAA
pMMAADIAGAAAAAAAAQAAAKSB804EAGFuaW1hdGlvbnMvYW5pbWF0aW9uLWJvcmRlci1vdmVyZmxv
dy1jcmFzaC1sb2cudHh0VVQFAAOekB5WdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAe1NORzIx
n6MIBAAAPAsAAC8AGAAAAAAAAQAAAKSB84cEAGFuaW1hdGlvbnMvYW5pbWF0aW9uLWJvcmRlci1v
dmVyZmxvdy1zdGRlcnIudHh0VVQFAAOakB5WdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAYFNO
RwAAAAAAAAAAAAAAAAcAGAAAAAAAAAAQAO1BZIwEAGNhbnZhcy9VVAUAA2OQHlZ1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAABgU05HAAAAAAAAAAAAAAAADgAYAAAAAAAAABAA7UGljAQAY2FudmFz
L3BoaWxpcC9VVAUAA2OQHlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABgU05HAAAAAAAAAAAA
AAAAFAAYAAAAAAAAABAA7UHtjAQAY2FudmFzL3BoaWxpcC90ZXN0cy9VVAUAA2OQHlZ1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABgU05HyfftH6MAAAAsAQAANAAYAAAAAAABAAAApIE7jQQAY2Fu
dmFzL3BoaWxpcC90ZXN0cy8yZC5jYW52YXMucmVhZG9ubHktY3Jhc2gtbG9nLnR4dFVUBQADY5Ae
VnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGBTTkc0vVCJBwQAADwLAAAxABgAAAAAAAEAAACk
gUyOBABjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNhbnZhcy5yZWFkb25seS1zdGRlcnIudHh0VVQF
AANjkB5WdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAdlNORwAAAAAAAAAAAAAAAAwAGAAAAAAA
AAAQAO1BvpIEAGNvbXBvc2l0aW5nL1VUBQADkJAeVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AG9TTkfNm1RHPwQAAJULAAA7ABgAAAAAAAEAAACkgQSTBABjb21wb3NpdGluZy9hYnNvbHV0ZS1p
bnNpZGUtb3V0LW9mLXZpZXctZml4ZWQtY3Jhc2gtbG9nLnR4dFVUBQADgpAeVnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAG9TTkdvhcQfBgQAADwLAAA4ABgAAAAAAAEAAACkgbiXBABjb21wb3Np
dGluZy9hYnNvbHV0ZS1pbnNpZGUtb3V0LW9mLXZpZXctZml4ZWQtc3RkZXJyLnR4dFVUBQADgpAe
VnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAG9TTkcAAAAAAAAAAAAAAAAWABgAAAAAAAAAEADt
QTCcBABjb21wb3NpdGluZy9hbmltYXRpb24vVVQFAAOCkB5WdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAb1NORxVnbbDRBAAAswwAAEUAGAAAAAAAAQAAAKSBgJwEAGNvbXBvc2l0aW5nL2FuaW1h
dGlvbi9hbmltYXRlZC1jb21wb3NpdGVkLWluc2lkZS1oaWRkZW4tY3Jhc2gtbG9nLnR4dFVUBQAD
gpAeVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAG9TTkf6nJnunQQAAFoMAABCABgAAAAAAAEA
AACkgdChBABjb21wb3NpdGluZy9hbmltYXRpb24vYW5pbWF0ZWQtY29tcG9zaXRlZC1pbnNpZGUt
aGlkZGVuLXN0ZGVyci50eHRVVAUAA4KQHlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABvU05H
AAAAAAAAAAAAAAAAIAAYAAAAAAAAABAA7UHppgQAY29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJp
bGl0eS9VVAUAA4KQHlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABvU05HqpLKDkEEAACVCwAA
RAAYAAAAAAABAAAApIFDpwQAY29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS9iYWNrZmFj
ZS12aXNpYmlsaXR5LTNkLWNyYXNoLWxvZy50eHRVVAUAA4KQHlZ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABvU05HbvC/YAgEAAA8CwAAQQAYAAAAAAABAAAApIECrAQAY29tcG9zaXRpbmcvYmFj
a2ZhY2UtdmlzaWJpbGl0eS9iYWNrZmFjZS12aXNpYmlsaXR5LTNkLXN0ZGVyci50eHRVVAUAA4KQ
HlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAB2U05HAAAAAAAAAAAAAAAAHQAYAAAAAAAAABAA
7UGFsAQAY29tcG9zaXRpbmcvYmFja2dyb3VuZC1jb2xvci9VVAUAA5CQHlZ1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAB2U05HyfftH6MAAAAsAQAATgAYAAAAAAABAAAApIHcsAQAY29tcG9zaXRp
bmcvYmFja2dyb3VuZC1jb2xvci9iYWNrZ3JvdW5kLWNvbG9yLWFscGhhLXdpdGgtb3BhY2l0eS1j
cmFzaC1sb2cudHh0VVQFAAOQkB5WdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAdlNOR/UbotwI
BAAAPAsAAEsAGAAAAAAAAQAAAKSBB7IEAGNvbXBvc2l0aW5nL2JhY2tncm91bmQtY29sb3IvYmFj
a2dyb3VuZC1jb2xvci1hbHBoYS13aXRoLW9wYWNpdHktc3RkZXJyLnR4dFVUBQADkJAeVnV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAAG9TTkcAAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQZS2BABj
b21wb3NpdGluZy9iYWNraW5nL1VUBQADgpAeVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAG9T
TkdtvGUUtAQAAE0MAAA6ABgAAAAAAAEAAACkgeK2BABjb21wb3NpdGluZy9iYWNraW5nL2JhY2tm
YWNlLXZpc2liaWxpdHktZmxpcC1jcmFzaC1sb2cudHh0VVQFAAOCkB5WdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAb1NOR8e7z09+BAAA9AsAADcAGAAAAAAAAQAAAKSBCrwEAGNvbXBvc2l0aW5n
L2JhY2tpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS1mbGlwLXN0ZGVyci50eHRVVAUAA4KQHlZ1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAABvU05HAAAAAAAAAAAAAAAAEwAYAAAAAAAAABAA7UH5wAQA
Y29tcG9zaXRpbmcvY2FudmFzL1VUBQADgpAeVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAG9T
TkcTQ9nl1QQAALAMAAA/ABgAAAAAAAEAAACkgUbBBABjb21wb3NpdGluZy9jYW52YXMvYWNjZWxl
cmF0ZWQtY2FudmFzLWNvbXBvc2l0aW5nLWNyYXNoLWxvZy50eHRVVAUAA4KQHlZ1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABvU05H62FdhZ0EAABXDAAAPAAYAAAAAAABAAAApIGUxgQAY29tcG9z
aXRpbmcvY2FudmFzL2FjY2VsZXJhdGVkLWNhbnZhcy1jb21wb3NpdGluZy1zdGRlcnIudHh0VVQF
AAOCkB5WdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAb1NORwAAAAAAAAAAAAAAABUAGAAAAAAA
AAAQAO1Bp8sEAGNvbXBvc2l0aW5nL2NsaXBwaW5nL1VUBQADgpAeVnV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAG9TTkeW5h+ntgQAAE0MAABRABgAAAAAAAEAAACkgfbLBABjb21wb3NpdGluZy9j
bGlwcGluZy9ib3JkZXItcmFkaXVzLW92ZXJmbG93LWhpZGRlbi1zdGFja2luZy1jb250ZXh0LWNy
YXNoLWxvZy50eHRVVAUAA4KQHlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABvU05Hv/xou38E
AAD0CwAATgAYAAAAAAABAAAApIE30QQAY29tcG9zaXRpbmcvY2xpcHBpbmcvYm9yZGVyLXJhZGl1
cy1vdmVyZmxvdy1oaWRkZW4tc3RhY2tpbmctY29udGV4dC1zdGRlcnIudHh0VVQFAAOCkB5WdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAUVNORwAAAAAAAAAAAAAAABsAGAAAAAAAAAAQAO1BPtYE
AGNvbXBvc2l0aW5nL2NvbG9yLW1hdGNoaW5nL1VUBQADSZAeVnV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAFFTTkcBZDbcogAAACwBAAA9ABgAAAAAAAEAAACkgZPWBABjb21wb3NpdGluZy9jb2xv
ci1tYXRjaGluZy9pbWFnZS1jb2xvci1tYXRjaGluZy1jcmFzaC1sb2cudHh0VVQFAANJkB5WdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAUVNOR1/qKqaYBAAAVwwAADoAGAAAAAAAAQAAAKSBrNcE
AGNvbXBvc2l0aW5nL2NvbG9yLW1hdGNoaW5nL2ltYWdlLWNvbG9yLW1hdGNoaW5nLXN0ZGVyci50
eHRVVAUAA0mQHlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABwU05HAAAAAAAAAAAAAAAAFAAY
AAAAAAAAABAA7UG43AQAY29tcG9zaXRpbmcvY29sdW1ucy9VVAUAA4OQHlZ1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACABwU05HDq/B9rUEAABNDAAAPwAYAAAAAAABAAAApIEG3QQAY29tcG9zaXRp
bmcvY29sdW1ucy9hbmNlc3Rvci1jbGlwcGVkLWluLXBhZ2luYXRlZC1jcmFzaC1sb2cudHh0VVQF
AAODkB5WdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAcFNOR/45AMB9BAAA9AsAADwAGAAAAAAA
AQAAAKSBNOIEAGNvbXBvc2l0aW5nL2NvbHVtbnMvYW5jZXN0b3ItY2xpcHBlZC1pbi1wYWdpbmF0
ZWQtc3RkZXJyLnR4dFVUBQADg5AeVnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAHBTTkcAAAAA
AAAAAAAAAAAcABgAAAAAAAAAEADtQSfnBABjb21wb3NpdGluZy9jb250ZW50cy1vcGFxdWUvVVQF
AAODkB5WdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAcFNOR+ma+ljRBAAAsAwAADkAGAAAAAAA
AQAAAKSBfecEAGNvbXBvc2l0aW5nL2NvbnRlbnRzLW9wYXF1ZS9iYWNrZ3JvdW5kLWNsaXAtY3Jh
c2gtbG9nLnR4dFVUBQADg5AeVnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHBTTkcII4INmwQA
AFcMAAA2ABgAAAAAAAEAAACkgcHsBABjb21wb3NpdGluZy9jb250ZW50cy1vcGFxdWUvYmFja2dy
b3VuZC1jbGlwLXN0ZGVyci50eHRVVAUAA4OQHlZ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABw
U05HAAAAAAAAAAAAAAAAGwAYAAAAAAAAABAA7UHM8QQAY29tcG9zaXRpbmcvY29udGVudHMtc2Nh
bGUvVVQFAAODkB5WdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAcFNORzPPIatDBAAAlQsAADIA
GAAAAAAAAQAAAKSBIfIEAGNvbXBvc2l0aW5nL2NvbnRlbnRzLXNjYWxlL2FuaW1hdGluZy1jcmFz
aC1sb2cudHh0VVQFAAODkB5WdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAcFNORyYU8YsKBAAA
PAsAAC8AGAAAAAAAAQAAAKSB0PYEAGNvbXBvc2l0aW5nL2NvbnRlbnRzLXNjYWxlL2FuaW1hdGlu
Zy1zdGRlcnIudHh0VVQFAAODkB5WdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAfFNORxCLQBjK
AAAALgEAAA0AGAAAAAAAAQAAAKSBQ/sEAGVycm9yX2xvZy50eHRVVAUAA5uQHlZ1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACACAU05H0lVbTAQDAAAZDwAAEQAYAAAAAAABAAAApIFU/AQAZnVsbF9y
ZXN1bHRzLmpzb25VVAUAA5+QHlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA5U05H6op8QmEF
AAAFDwAACgAYAAAAAAABAAAApIGj/wQAaHR0cGQuY29uZlVUBQADHpAeVnV4CwABBPUBAAAEFAAA
AFBLAQIeAwoAAAAAADpTTkcAAAAAAAAAAAAAAAArABgAAAAAAAAAAACkgUgFBQBweXdlYnNvY2tl
dC53cy5sb2ctMTRPY3QyMDE1LTEwMjU1MS1lcnIudHh0VVQFAAMgkB5WdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAAOlNORwAAAAAAAAAAAAAAACsAGAAAAAAAAAAAAKSBrQUFAHB5d2Vic29ja2V0
LndzLmxvZy0xNE9jdDIwMTUtMTAyNTUxLW91dC50eHRVVAUAAx+QHlZ1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACACAU05H5HxFo54mAADbpAAADAAYAAAAAAABAAAApIESBgUAcmVzdWx0cy5odG1s
VVQFAAOgkB5WdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAgFNORynQ8Dp6AwAA/AkAAAoAGAAA
AAAAAQAAAKSB9iwFAHN0YXRzLmpzb25VVAUAA5+QHlZ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CABKU05H8C+QzsUEAABTGQAAGQAYAAAAAAABAAAApIG0MAUAd3B0d2tfcHJvY2Vzc19sb2cub3V0
LnR4dFVUBQADPJAeVnV4CwABBPUBAAAEFAAAAFBLBQYAAAAAZQBlABwsAADMNQUAAAA=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263102</attachid>
            <date>2015-10-14 13:05:41 -0700</date>
            <delta_ts>2015-10-14 14:36:40 -0700</delta_ts>
            <desc>Fix Mac</desc>
            <filename>bug-149929-20151014130504.patch</filename>
            <type>text/plain</type>
            <size>269781</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MjU2NGRkMjExNDdmNjg2ZTgwMDdkMjc1ZjFjNWI1ZGE3ODRhOTQwLi5iN2QwMWY2NDUwMTQ1ZDhh
OWUwMmQxYjdiYzIwZTlmZDMxYzhjYWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODYgQEAKKzIwMTUtMTAtMTMgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmVzdHJ1Y3R1cmUgZ2VuZXJhdGUtanMtYmluZGluZ3Mgc2NyaXB0IHRvIGJlIG1v
ZHVsYXIgYW5kIHRlc3RhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDk5MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGlzIGEgbmV3IGNvZGUgZ2VuZXJhdG9yLCBiYXNlZCBvbiB0aGUgcmVw
bGF5IGlucHV0cyBjb2RlIGdlbmVyYXRvciBhbmQKKyAgICAgICAgdGhlIGluc3BlY3RvciBwcm90
b2NvbCBjb2RlIGdlbmVyYXRvciwgd2hpY2ggcHJvZHVjZXMgdmFyaW91cyBmaWxlcyBmb3IgSlMK
KyAgICAgICAgYnVpbHRpbnMuCisKKyAgICAgICAgUmVsYXRpdmUgdG8gdGhlIGdlbmVyYXRvciBp
dCByZXBsYWNlcywgdGhpcyBvbmUgY29uc29saWRhdGVzIHR3byBzY3JpcHRzIGluCisgICAgICAg
IEphdmFTY3JpcHRDb3JlIGFuZCBXZWJDb3JlIGludG8gYSBzaW5nbGUgc2NyaXB0IHdpdGggbXVs
dGlwbGUgZmlsZXMuIFBhcnNlZAorICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnVpbHRp
bnMgZmlsZSBpcyBzdG9yZWQgaW4gYmFja2VuZC1pbmRlcGVuZGVudCBtb2RlbAorICAgICAgICBv
YmplY3RzLiBFYWNoIG91dHB1dCBmaWxlIGhhcyBpdHMgb3duIGNvZGUgZ2VuZXJhdG9yIHRoYXQg
dXNlcyB0aGUgbW9kZWwgdG8KKyAgICAgICAgcHJvZHVjZSByZXN1bHRpbmcgY29kZS4gR2VuZXJh
dG9ycyBhcmUgYWRkaXRpb25hbGx5IHBhcmFtZXRlcml6ZWQgYnkgdGhlIHRhcmdldAorICAgICAg
ICBmcmFtZXdvcmsgKHRvIGNob29zZSBjb3JyZWN0IG1hY3JvcyBhbmQgaW5jbHVkZXMpIGFuZCBv
dXRwdXQgbW9kZSAob25lCisgICAgICAgIGhlYWRlci9pbXBsZW1lbnRhdGlvbiBmaWxlIHBlciBi
dWlsdGluIG9yIHBlciBmcmFtZXdvcmspLgorCisgICAgICAgIEl0IGluY2x1ZGVzIGEgZmV3IHNp
bXBsZSB0ZXN0cyBvZiB0aGUgZ2VuZXJhdG9yJ3MgZnVuY3Rpb25hbGl0eS4gVGhlc2UgcmVzdWx0
LQorICAgICAgICBiYXNlZCB0ZXN0cyB3aWxsIGJlY29tZSBpbmNyZWFzaW5nbHkgbW9yZSBpbXBv
cnRhbnQgYXMgd2Ugc3RhcnQgdG8gYWRkIHN1cHBvcnQKKyAgICAgICAgZm9yIGJ1aWx0aW5zIGFu
bm90YXRpb24gc3VjaCBhcyBAb3B0aW9uYWwsIEBpbnRlcm5hbCwgZXRjLiB0byB0aGUgY29kZSBn
ZW5lcmF0b3IuCisKKyAgICAgICAgU29tZSBvZiB0aGVzZSBjb21wbGV4aXRpZXMsIHN1Y2ggYXMg
aGF2aW5nIHR3byBvdXRwdXQgbW9kZXMsIHdpbGwgYmUgcmVtb3ZlZCBpbgorICAgICAgICBzdWJz
ZXF1ZW50IHBhdGNoZXMuIFRoaXMgcGF0Y2ggaXMgaW50ZW5kZWQgdG8gZXhhY3RseSByZXBsYWNl
IHRoZSBleGlzdGluZworICAgICAgICBmdW5jdGlvbmFsaXR5IHdpdGggYSB1bmlmaWVkIHNjcmlw
dCB0aGF0IG1ha2VzIGFkZGl0aW9uYWwgY2xlYW51cHMgc3RyYWlnaHRmb3J3YXJkLgorCisgICAg
ICAgIEFkZGl0aW9uYWwgY2xlYW51cCBhbmQgY29uc29saWRhdGlvbiBiZXR3ZWVuIGluc3BlY3Rv
ciBjb2RlIGdlbmVyYXRvciBzY3JpcHRzCisgICAgICAgIGFuZCB0aGlzIHNjcmlwdCB3aWxsIGJl
IHB1cnN1ZWQgaW4gZm9sbG93dXAgcGF0Y2hlcy4KKworICAgICAgICBOZXcgdGVzdHM6CisKKyAg
ICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21p
c2UtQ29tYmluZWQuanMKKyAgICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0
Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5qcworICAgICAgICBTY3JpcHRzL3Rlc3Rz
L2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qcwor
ICAgICAgICBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2Vw
YXJhdGUuanMKKyAgICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUd1YXJkZWRJ
bnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMKKyAgICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlu
cy9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMKKyAgICAgICAgU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMKKworCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisKKyAgICAgICAgICAgIERlZmluZSBKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTX0RJUiBleHBsaWNpdGx5IHNvIHRoZSBhZGRfY3VzdG9tX2NvbW1hbmQgYW5kCisg
ICAgICAgICAgICBzaGFyZWQgZmlsZSBsaXN0cyBhcmUgaWRlbnRpY2FsIGJldHdlZW4gSmF2YVNj
cmlwdENvcmUgYW5kIFdlYkNvcmUuCisKKyAgICAgICAgICAgIFRoZSBvdXRwdXQgZmlsZXMgYWRk
aXRpb25hbGx5IGRlcGVuZCBvbiBhbGwgYnVpbHRpbiBnZW5lcmF0b3Igc2NyaXB0IGZpbGVzCisg
ICAgICAgICAgICBhbmQgaW5wdXQgZmlsZXMgdGhhdCBhcmUgY29tYmluZWQgaW50byB0aGUgc2lu
Z2xlIGhlYWRlci9pbXBsZW1lbnRhdGlvbiBmaWxlLgorCisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKworICAgICAgICAgICAgRGVmaW5lIEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
IGV4cGxpY2l0bHkgc28gdGhlIHJ1bGUgZm9yIGNvZGUgZ2VuZXJhdGlvbiBhbmQKKyAgICAgICAg
ICAgIHNoYXJlZCBmaWxlIGxpc3RzIGFyZSBpZGVudGljYWwgYmV0d2VlbiBKYXZhU2NyaXB0Q29y
ZSBhbmQgV2ViQ29yZS4KKworICAgICAgICAgICAgVGhlIG91dHB1dCBmaWxlcyBhZGRpdGlvbmFs
bHkgZGVwZW5kIG9uIGFsbCBidWlsdGluIGdlbmVyYXRvciBzY3JpcHQgZmlsZXMKKyAgICAgICAg
ICAgIGFuZCBpbnB1dCBmaWxlcyB0aGF0IGFyZSBjb21iaW5lZCBpbnRvIHRoZSBzaW5nbGUgaGVh
ZGVyL2ltcGxlbWVudGF0aW9uIGZpbGUuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICAgICBNYXJrIHRoZSBuZXcgYnVpbHRp
bnMgZ2VuZXJhdG9yIGZpbGVzIGFzIHByaXZhdGUgaGVhZGVycyBzbyB3ZSBjYW4gdXNlIHRoZW0g
ZnJvbQorICAgICAgICAgICAgV2ViQ29yZS4KKworICAgICAgICAqIFNjcmlwdHMvVXBkYXRlQ29u
dGVudHMucHk6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVXBkYXRlQ29udGVu
dHMucHkuCisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9fX2luaXRfXy5weTogQWRkZWQuCisg
ICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGlucy5weTogQWRkZWQuCisgICAgICAgICog
U2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0b3IucHk6IEFkZGVkLiBUaGlzIGZpbGUg
Y29udGFpbnMgdGhlIGJhc2UgZ2VuZXJhdG9yLgorICAgICAgICAoV0tfbGNmaXJzdCk6CisgICAg
ICAgIChXS191Y2ZpcnN0KToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yKToKKyAgICAgICAg
KEJ1aWx0aW5zR2VuZXJhdG9yLl9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9y
Lm1vZGVsKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yLmdlbmVyYXRlX2xpY2Vuc2UpOgor
ICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3IuZ2VuZXJhdGVfaW5jbHVkZXNfZnJvbV9lbnRyaWVz
KToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAgICAg
IChCdWlsdGluc0dlbmVyYXRvci5vdXRwdXRfZmlsZW5hbWUpOgorICAgICAgICAoQnVpbHRpbnNH
ZW5lcmF0b3IubWFuZ2xlZE5hbWVGb3JGdW5jdGlvbik6CisgICAgICAgIChCdWlsdGluc0dlbmVy
YXRvci5tYW5nbGVkTmFtZUZvckZ1bmN0aW9uLnRvQ2FtZWwpOgorICAgICAgICAoQnVpbHRpbnNH
ZW5lcmF0b3IuZ2VuZXJhdGVfZW1iZWRkZWRfY29kZV9zdHJpbmdfc2VjdGlvbl9mb3JfZnVuY3Rp
b24pOgorICAgICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHk6IEFkZGVk
LiBUaGlzIGZpbGUgY29udGFpbnMgYnVpbHRpbnMgbW9kZWwgb2JqZWN0cy4KKyAgICAgICAgKFBh
cnNlRXhjZXB0aW9uKToKKyAgICAgICAgKEZyYW1ld29yayk6CisgICAgICAgIChGcmFtZXdvcmsu
X19pbml0X18pOgorICAgICAgICAoRnJhbWV3b3JrLnNldHRpbmcpOgorICAgICAgICAoRnJhbWV3
b3JrLmZyb21TdHJpbmcpOgorICAgICAgICAoRnJhbWV3b3Jrcyk6CisgICAgICAgIChCdWlsdGlu
T2JqZWN0KToKKyAgICAgICAgKEJ1aWx0aW5PYmplY3QuX19pbml0X18pOgorICAgICAgICAoQnVp
bHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEJ1aWx0aW5GdW5jdGlvbi5fX2luaXRfXyk6CisgICAg
ICAgIChCdWlsdGluRnVuY3Rpb24uZnJvbVN0cmluZyk6CisgICAgICAgIChCdWlsdGluRnVuY3Rp
b24uX19zdHJfXyk6CisgICAgICAgIChCdWlsdGluc0NvbGxlY3Rpb24pOgorICAgICAgICAoQnVp
bHRpbnNDb2xsZWN0aW9uLl9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5w
YXJzZV9idWlsdGluc19maWxlKToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5jb3B5cmln
aHRzKToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5hbGxfZnVuY3Rpb25zKToKKyAgICAg
ICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5fcGFyc2VfY29weXJpZ2h0X2xpbmVzKToKKyAgICAgICAg
KEJ1aWx0aW5zQ29sbGVjdGlvbi5fcGFyc2VfZnVuY3Rpb25zKToKKyAgICAgICAgKiBTY3JpcHRz
L2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weTogQWRkZWQuCisgICAgICAgIChCdWlsdGlu
c0dlbmVyYXRvclRlbXBsYXRlcyk6CisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0
ZV9idWlsdGluc19jb21iaW5lZF9oZWFkZXIucHk6IEFkZGVkLgorICAgICAgICAoQnVpbHRpbnND
b21iaW5lZEhlYWRlckdlbmVyYXRvcik6CisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSGVhZGVy
R2VuZXJhdG9yLl9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJHZW5l
cmF0b3Iub3V0cHV0X2ZpbGVuYW1lKToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJH
ZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFk
ZXJHZW5lcmF0b3IuZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlvbnMpOgorICAgICAgICAoRnVu
Y3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAgICAgICAgKENvbnN0cnVjdEFiaWxp
dHkpOgorICAgICAgICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3Jfb2JqZWN0KToKKyAgICAgICAgKGdl
bmVyYXRlX2V4dGVybnNfZm9yX29iamVjdCk6CisgICAgICAgIChnZW5lcmF0ZV9tYWNyb3NfZm9y
X29iamVjdCk6CisgICAgICAgIChnZW5lcmF0ZV9kZWZpbmVzX2Zvcl9vYmplY3QpOgorICAgICAg
ICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV90YWJsZV9tYWNybyk6CisgICAgICAgIChnZW5l
cmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX25hbWVfbWFjcm8pOgorICAgICAgICAqIFNjcmlwdHMvYnVp
bHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHk6IEFkZGVk
LgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yKToKKyAg
ICAgICAgKEJ1aWx0aW5zQ29tYmluZWRJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fX2luaXRfXyk6
CisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSW1wbGVtZW50YXRpb25HZW5lcmF0b3Iub3V0cHV0
X2ZpbGVuYW1lKToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRJbXBsZW1lbnRhdGlvbkdlbmVy
YXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEltcGxlbWVu
dGF0aW9uR2VuZXJhdG9yLmdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcyk6CisgICAgICAgICogU2Ny
aXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9oZWFkZXIucHk6IEFkZGVk
LgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvcik6CisgICAgICAgIChC
dWlsdGluc1NlcGFyYXRlSGVhZGVyR2VuZXJhdG9yLl9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0
aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0b3Iub3V0cHV0X2ZpbGVuYW1lKToKKyAgICAgICAgKEJ1
aWx0aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0b3IubWFjcm9fcHJlZml4KToKKyAgICAgICAgKEJ1
aWx0aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAgICAg
KEJ1aWx0aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0b3IuZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJh
dGlvbnMpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKGdlbmVyYXRl
X2hlYWRlcl9pbmNsdWRlcyk6CisgICAgICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9vYmplY3Qp
OgorICAgICAgICAoZ2VuZXJhdGVfZXh0ZXJuc19mb3Jfb2JqZWN0KToKKyAgICAgICAgKGdlbmVy
YXRlX21hY3Jvc19mb3Jfb2JqZWN0KToKKyAgICAgICAgKGdlbmVyYXRlX2RlZmluZXNfZm9yX29i
amVjdCk6CisgICAgICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX3RhYmxlX21hY3JvKToK
KyAgICAgICAgKGdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfbmFtZV9tYWNybyk6CisgICAgICAg
ICogU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9pbXBsZW1lbnRh
dGlvbi5weTogQWRkZWQuCisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlSW1wbGVtZW50YXRpb25H
ZW5lcmF0b3IpOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZXJh
dG9yLl9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlvbkdl
bmVyYXRvci5vdXRwdXRfZmlsZW5hbWUpOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUltcGxl
bWVudGF0aW9uR2VuZXJhdG9yLm1hY3JvX3ByZWZpeCk6CisgICAgICAgIChCdWlsdGluc1NlcGFy
YXRlSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAgICAgKEJ1
aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5nZW5lcmF0ZV9oZWFkZXJfaW5j
bHVkZXMpOgorICAgICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfc2Vw
YXJhdGVfd3JhcHBlci5weTogQWRkZWQuCisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlV3JhcHBl
ckdlbmVyYXRvcik6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlV3JhcHBlckdlbmVyYXRvci5f
X2luaXRfXyk6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlV3JhcHBlckdlbmVyYXRvci5vdXRw
dXRfZmlsZW5hbWUpOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZVdyYXBwZXJHZW5lcmF0b3Iu
bWFjcm9fcHJlZml4KToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9y
LmdlbmVyYXRlX291dHB1dCk6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlV3JhcHBlckdlbmVy
YXRvci5nZW5lcmF0ZV9oZWFkZXJfaW5jbHVkZXMpOgorICAgICAgICAqIFNjcmlwdHMvZ2VuZXJh
dGUtanMtYnVpbHRpbnMucHk6IEFkZGVkLgorCisgICAgICAgICAgICBQYXJzZSBjb21tYW5kIGxp
bmUgb3B0aW9ucywgZGVjaWRlIHdoaWNoIGdlbmVyYXRvcnMgYW5kIG91dHB1dCBtb2RlcyB0byB1
c2UuCisKKyAgICAgICAgKGdlbmVyYXRlX2JpbmRpbmdzX2Zvcl9idWlsdGluc19maWxlcyk6Cisg
ICAgICAgICogU2NyaXB0cy9sYXp5d3JpdGVyLnB5OiBDb3BpZWQgZnJvbSB0aGUgaW5zcGVjdG9y
IHByb3RvY29sIGdlbmVyYXRvci4KKyAgICAgICAgKExhenlGaWxlV3JpdGVyKToKKyAgICAgICAg
KExhenlGaWxlV3JpdGVyLl9faW5pdF9fKToKKyAgICAgICAgKExhenlGaWxlV3JpdGVyLndyaXRl
KToKKyAgICAgICAgKExhenlGaWxlV3JpdGVyLmNsb3NlKToKKyAgICAgICAgKiBTY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1Db21iaW5lZC5qczog
QWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1C
dWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5qczogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmluZWQu
anM6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFy
ZGVkQnVpbHRpbi1TZXBhcmF0ZS5qczogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9XZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanM6IEFkZGVk
LgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1Vbmd1YXJkZWRCdWls
dGluLVNlcGFyYXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5z
L1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qczogQWRkZWQuCisgICAgICAgICogU2Ny
aXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21p
c2UtQ29tYmluZWQuanMtcmVzdWx0OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1
aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVk
LmpzLXJlc3VsdDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBl
Y3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmluZWQuanMtcmVzdWx0
OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNv
cmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0OiBBZGRlZC4KKyAgICAgICAgKiBT
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVp
bHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQ6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMv
YnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJl
c3VsdDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9X
ZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0OiBBZGRlZC4KKyAgICAgICAg
KiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwOgorICAgICAgICAoSlNDOjpCdWlsdGlu
RXhlY3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyk6CisgICAgICAgICogYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgICogY3JlYXRlX2hhc2hfdGFibGU6CisKKyAgICAg
ICAgICAgIFVwZGF0ZSB0aGUgZ2VuZXJhdGVkIGJ1aWx0aW4gbWFjcm8gbmFtZXMuCisKKyAgICAg
ICAgKiBnZW5lcmF0ZS1qcy1idWlsdGluczogUmVtb3ZlZC4KKwogMjAxNS0xMC0xMiAgR2VvZmZy
ZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIENvZGVCbG9jayB3cml0ZSBi
YXJyaWVycyBzaG91bGQgYmUgcHJlY2lzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDY4MjhkN2QwMDM4MjViZDYx
OGExMmE2NGY0Yjc4MDEzOWRmMGI1M2UuLjllNTA1ZjVlZjI5ODNhNWMwZTEwODY2NGFiOTA0MmY2
YmJmMTUwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxNS0xMC0xMyAgQnJpYW4g
QnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBSZXN0cnVjdHVyZSBnZW5lcmF0ZS1q
cy1iaW5kaW5ncyBzY3JpcHQgdG8gYmUgbW9kdWxhciBhbmQgdGVzdGFibGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTkyOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisK
KyAgICAgICAgICAgIERlZmluZSBKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUiBleHBsaWNpdGx5
IHNvIHRoZSBhZGRfY3VzdG9tX2NvbW1hbmQgYW5kCisgICAgICAgICAgICBzaGFyZWQgZmlsZSBs
aXN0cyBhcmUgaWRlbnRpY2FsIGJldHdlZW4gSmF2YVNjcmlwdENvcmUgYW5kIFdlYkNvcmUuCisK
KyAgICAgICAgICAgIFRoZSBvdXRwdXQgZmlsZXMgYWRkaXRpb25hbGx5IGRlcGVuZCBvbiBhbGwg
YnVpbHRpbiBnZW5lcmF0b3Igc2NyaXB0IGZpbGVzLgorCisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKworICAgICAgICAgICAgVXNlIEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSIHNv
IHRoYXQgdGhlIHJ1bGUgZm9yIGNvZGUgZ2VuZXJhdGlvbiBhbmQKKyAgICAgICAgICAgIHNoYXJl
ZCBmaWxlIGxpc3RzIGFyZSBpZGVudGljYWwgYmV0d2VlbiBKYXZhU2NyaXB0Q29yZSBhbmQgV2Vi
Q29yZS4KKworICAgICAgICAgICAgVGhlIG91dHB1dCBmaWxlcyBhZGRpdGlvbmFsbHkgZGVwZW5k
IG9uIGFsbCBidWlsdGluIGdlbmVyYXRvciBzY3JpcHQgZmlsZXMuCisKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgICAgIERlZmluZSBKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUiBiZWZvcmUgY2FsbGluZyBEZXJpdmVkU291cmNlcy5tYWtl
LgorICAgICAgICAgICAgVGhpcyB3aWxsIGV2ZW50dWFsbHkgYmUgbWVyZ2VkIHdpdGggdGhlIG90
aGVyIHNpbWlsYXIgc2NyaXB0IHBhdGhzLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6ZmluaXNo
Q3JlYXRpb24pOgorCisgICAgICAgICAgICBVcGRhdGUgdGhlIGdlbmVyYXRlZCBidWlsdGluIG1h
Y3JvIG5hbWVzLgorCisgICAgICAgICogZ2VuZXJhdGUtanMtYnVpbHRpbnM6IFJlbW92ZWQuCisK
IDIwMTUtMTAtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBB
dm9pZCB1c2VsZXNzIGNvcGllcyBpbiByYW5nZS1sb29wcyB0aGF0IGFyZSB1c2luZyAnYXV0bycK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBiODA0OTIyZjJiNWM4N2ZjNjVj
NjMwZDFhMzExNjZmZTFmZmE2N2YwLi4xZGZhNmQwMzFkZGY0M2ExNjU4MzdjNjAyMTY4MDMxNGY4
MmYwNzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC03MDIsNiArNzAy
LDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX0xJQlJBUklFUwogICAgICR7SUNVX0kxOE5fTElCUkFS
SUVTfQogKQogCitzZXQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIgIiR7SkFWQVNDUklQVENP
UkVfRElSfS9TY3JpcHRzIikKKwogaWYgKFVTRV9VRElTODYpCiAgICAgc2V0KFVESVNfR0VOX0RF
UAogICAgICAgICBkaXNhc3NlbWJsZXIvdWRpczg2L3VkX29wY29kZS5weQpAQCAtMTA3NCw2ICsx
MDc2LDE5IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBWRVJCQVRJTSkKIAogIyBKU0NCdWls
dGlucworCitzZXQoQlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMKKyAgICAkKEphdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSKS9idWlsdGluc19nZW5lcmF0b3IucHkKKyAgICAkKEphdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSKS9idWlsdGluc19tb2RlbC5weQorICAgICQoSmF2YVNjcmlwdENvcmVf
U0NSSVBUU19ESVIpL2J1aWx0aW5zX3RlbXBsYXRlcy5weQorICAgICQoSmF2YVNjcmlwdENvcmVf
U0NSSVBUU19ESVIpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisgICAgJChKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaGVhZGVyLnB5CisgICAg
JChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRf
aW1wbGVtZW50YXRpb24ucHkKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5l
cmF0ZV9idWlsdGluc19zZXBhcmF0ZV9oZWFkZXIucHkKKyAgICAkKEphdmFTY3JpcHRDb3JlX1ND
UklQVFNfRElSKS9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weQor
ICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFy
YXRlX3dyYXBwZXIucHkKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9sYXp5d3Jp
dGVyLnB5CisKIHNldChKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0FycmF5Q29uc3RydWN0b3IuanMKICAgICAke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXlJdGVyYXRvci5wcm90b3R5cGUuanMKQEAgLTEw
OTUsMTAgKzExMTAsMTEgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICkK
IAogYWRkX2N1c3RvbV9jb21tYW5kKAotICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFT
Q1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuY3BwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAotICAgTUFJTl9ERVBFTkRFTkNZICR7Q01BS0VfQ1VS
UkVOVF9TT1VSQ0VfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucwotICAgREVQRU5EUyAke0phdmFT
Y3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVN9Ci0gICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFC
TEV9ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucyAtLWlu
cHV0LWRpcmVjdG9yeSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vYnVpbHRpbnMgLS1vdXRw
dXQgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5jcHAK
KyAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0
aW5zLmNwcAorICAgICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0v
SlNDQnVpbHRpbnMuaAorICAgTUFJTl9ERVBFTkRFTkNZICR7SmF2YVNjcmlwdENvcmVfU0NSSVBU
U19ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisgICBERVBFTkRTICR7SmF2YVNjcmlwdENv
cmVfQlVJTFRJTlNfU09VUkNFU30gJHtCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUU30KKyAgIENP
TU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0v
Z2VuZXJhdGUtanMtYnVpbHRpbnMucHkgLS1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLS1pbnB1
dC1kaXJlY3RvcnkgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zIC0tb3V0cHV0LWRpcmVj
dG9yeSAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9CiAgICBWRVJCQVRJTSkK
IAogbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfU09VUkNFUwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAxMDE1ZGRjNzc5ODc4MGVlOTcyNjIzZjRjOGU4
ZDNjNzVhOWU0YjcxLi5iYzBiNDVmOTQ5MGIwMjdhNDVhODVlYzU2MmY1YzU1ZmNmMjQ4NmU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNzEsMTIgKzcx
LDEyIEBAIGFsbCA6IFwKICAgICB1ZGlzODZfaXRhYi5oIFwKICAgICBCeXRlY29kZXMuaCBcCiAg
ICAgSW5pdEJ5dGVjb2Rlcy5hc20gXAotICAgIEpTQ0J1aWx0aW5zIFwKKyAgICBKU0NCdWlsdGlu
cy5oIFwKICMKIAotIyBidWlsdGluIGZ1bmN0aW9ucwogUFlUSE9OID0gcHl0aG9uCiBQRVJMID0g
cGVybAorSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIgPSAkKEphdmFTY3JpcHRDb3JlKS9TY3Jp
cHRzCiAKIGlmZXEgKCQoT1MpLFdpbmRvd3NfTlQpCiAgICAgREVMRVRFID0gY21kIC8vQyBkZWwK
QEAgLTg1LDE1ICs4NSwyMyBAQCBlbHNlCiBlbmRpZgogIyAtLS0tLS0tLQogCi0uUEhPTlk6IEpT
Q0J1aWx0aW5zCi1KU0NCdWlsdGluczogJChKYXZhU2NyaXB0Q29yZSkvZ2VuZXJhdGUtanMtYnVp
bHRpbnMgSlNDQnVpbHRpbnMuaCBKU0NCdWlsdGlucy5jcHAKLUpTQ0J1aWx0aW5zLmg6ICQoSmF2
YVNjcmlwdENvcmUpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0
aW5zIEpTQ0J1aWx0aW5zU291cmNlcwotCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlKS9nZW5l
cmF0ZS1qcy1idWlsdGlucyAtLWlucHV0LWRpcmVjdG9yeSAkKEphdmFTY3JpcHRDb3JlKS9idWls
dGlucyAtLW91dHB1dCAkQAotCi1KU0NCdWlsdGlucy5jcHA6IEpTQ0J1aWx0aW5zLmgKKyMgSmF2
YVNjcmlwdCBidWlsdGlucy4KKworQlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMgPSBcCisgICAg
JChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnMvX19pbml0X18ucHkgXAorICAg
ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRv
ci5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnMvYnVpbHRp
bnNfbW9kZWwucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5z
L2J1aWx0aW5zX3RlbXBsYXRlcy5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJ
UikvYnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaGVhZGVyLnB5IFwKKyAgICAk
KEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19j
b21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRT
X0RJUikvYnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaGVhZGVyLnB5IFwKKyAg
ICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGlu
c19zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJ
UFRTX0RJUikvYnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfd3JhcHBlci5weSBc
CisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGUtanMtYnVpbHRpbnMu
cHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2xhenl3cml0ZXIucHkgXAor
IwogCi0uUEhPTlk6IEpTQ0J1aWx0aW5zU291cmNlcwotSlNDQnVpbHRpbnNTb3VyY2VzOiBcCitK
YXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUp
L2J1aWx0aW5zL0FycmF5Q29uc3RydWN0b3IuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1
aWx0aW5zL0FycmF5SXRlcmF0b3IucHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3Jl
KS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMgXApAQCAtMTEwLDggKzExOCwxOSBAQCBKU0NC
dWlsdGluc1NvdXJjZXM6IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9SZWZsZWN0
T2JqZWN0LmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TdHJpbmdDb25zdHJ1
Y3Rvci5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvU3RyaW5nSXRlcmF0b3Iu
cHJvdG90eXBlLmpzIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9UeXBlZEFycmF5
LnByb3RvdHlwZS5qcyBcCiAjCiAKKyMgVGhlIGNvbWJpbmVkIG91dHB1dCBmaWxlIGRlcGVuZHMg
b24gdGhlIGNvbnRlbnRzIG9mIGJ1aWx0aW5zIGFuZCBnZW5lcmF0b3Igc2NyaXB0cywgc28KKyMg
YWRkaW5nLCBtb2RpZnlpbmcsIG9yIHJlbW92aW5nIGJ1aWx0aW5zIG9yIHNjcmlwdHMgd2lsbCB0
cmlnZ2VyIHJlZ2VuZXJhdGlvbiBvZiBmaWxlcy4KKworLlBIT05ZOiBmb3JjZQorSmF2YVNjcmlw
dENvcmVfQlVJTFRJTlNfREVQRU5ERU5DSUVTX0xJU1QgOiAkKEphdmFTY3JpcHRDb3JlX1NDUklQ
VFNfRElSKS9VcGRhdGVDb250ZW50cy5weSBmb3JjZQorCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSKS9VcGRhdGVDb250ZW50cy5weSAnJChKYXZhU2NyaXB0Q29yZV9CVUlM
VElOU19TT1VSQ0VTKSAkKEJVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTKScgJEAKKworSlNDQnVp
bHRpbnMuaDogJChCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUykgJChKYXZhU2NyaXB0Q29yZV9C
VUlMVElOU19TT1VSQ0VTKSBKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19ERVBFTkRFTkNJRVNfTElT
VAorCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZS1qcy1i
dWlsdGlucy5weSAtLWNvbWJpbmVkIC0tb3V0cHV0LWRpcmVjdG9yeSAuIC0tZnJhbWV3b3JrIEph
dmFTY3JpcHRDb3JlICQoSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUykKKwogIyBsb29r
dXAgdGFibGVzIGZvciBjbGFzc2VzCiAKICUubHV0Lmg6IGNyZWF0ZV9oYXNoX3RhYmxlICUuY3Bw
CkBAIC0xOTgsOCArMjE3LDggQEAgYWxsIDogXAogIyBhZGRpbmcsIG1vZGlmeWluZywgb3IgcmVt
b3ZpbmcgZG9tYWlucyB3aWxsIHRyaWdnZXIgcmVnZW5lcmF0aW9uIG9mIGluc3BlY3RvciBmaWxl
cy4KIAogLlBIT05ZOiBmb3JjZQotRW5hYmxlZEluc3BlY3RvckRvbWFpbnMgOiAkKEphdmFTY3Jp
cHRDb3JlKS9VcGRhdGVDb250ZW50cy5weSBmb3JjZQotCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRD
b3JlKS9VcGRhdGVDb250ZW50cy5weSAnJChJTlNQRUNUT1JfRE9NQUlOUyknICRACitFbmFibGVk
SW5zcGVjdG9yRG9tYWlucyA6ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL1VwZGF0ZUNv
bnRlbnRzLnB5IGZvcmNlCisJJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIp
L1VwZGF0ZUNvbnRlbnRzLnB5ICckKElOU1BFQ1RPUl9ET01BSU5TKScgJEAKIAogQ29tYmluZWRE
b21haW5zLmpzb24gOiBpbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0
b3ItanNvbi5weSAkKElOU1BFQ1RPUl9ET01BSU5TKSBFbmFibGVkSW5zcGVjdG9yRG9tYWlucwog
CSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1j
b21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSAkKElOU1BFQ1RPUl9ET01BSU5TKSA+IC4vQ29tYmlu
ZWREb21haW5zLmpzb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODQxNjUyOGY5
YzUyZmE1NjU3ZmI2M2YzZDNkMjFkOTE2NTYxM2YzYy4uMmJiNDFiZmU4ZDUzOGU5OGU4NDJkMGQx
ODg1Y2E3MzFmZTRhMWYyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk1Niw3
ICs5NTYsNiBAQAogCQkyQURGQTI2MzE4RUYzNTQwMDA0RjlGQ0MgLyogR0NMb2dnaW5nLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBREZBMjYyMThF
RjM1NDAwMDRGOUZDQyAvKiBHQ0xvZ2dpbmcuY3BwICovOyB9OwogCQkyQUY3MzgyQzE4QkJCRjky
MDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUY3MzgyQTE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0
dXJlSURUYWJsZS5jcHAgKi87IH07CiAJCTJBRjczODJEMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1
Y3R1cmVJRFRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyQUY3MzgyQjE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTJERkI4QUZFMUJC
MzIzQkQwMDkzRDIzNyAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MURBODBEMTg4MEQ3MUYwMEQxRjI5OSAvKiBn
ZW5lcmF0ZS1qcy1idWlsdGlucyAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkzNzFEODQyRDE3Qzk4QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiBpbiBG
cmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUQ4NDJDMTdD
OThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliICovOyB9OwogCQk0MTM1OUNGMzBGREQ4OUFEMDAy
MDYxODAgLyogRGF0ZUNvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEQyMTIwMjI5MEFENDMxMEMwMEVENzlCNiAvKiBEYXRlQ29udmVyc2lv
bi5oICovOyB9OwogCQk0MURFQTEzMjFCOUYzMTYzMDA2RDY1REQgLyogQnVpbHRpblV0aWxzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MURFQTEzMTFC
OUYzMTU0MDA2RDY1REQgLyogQnVpbHRpblV0aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyMTEsNiArMTIxMCwxOCBAQAogCQk5NjlBMDc5
QjBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDc5NTBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTc4ODAx
NDAxNDcxQUQ5MjAwNDFCMDE2IC8qIEpTRGF0ZU1hdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc4OEZDMjIxNDcxQUQwQzAwNjhDRTJEIC8qIEpT
RGF0ZU1hdGguY3BwICovOyB9OwogCQk5Nzg4MDE0MTE0NzFBRDkyMDA0MUIwMTYgLyogSlNEYXRl
TWF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc4
OEZDMjMxNDcxQUQwQzAwNjhDRTJEIC8qIEpTRGF0ZU1hdGguaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OTFENUVENDFCQ0MzNUFBMDBFNEMyNUQg
LyogZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5OTA0NEIzMTFCQ0MyM0RDMDA3QzI1MEQgLyogZ2VuZXJhdGUtanMt
YnVpbHRpbnMucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJOTkxRDVFRDUxQkNDMzVCMTAwRTRDMjVEIC8qIGJ1aWx0aW5zX2dlbmVyYXRvci5weSBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MDQ0QjNCMUJD
QzI0OTEwMDdDMjUwRCAvKiBidWlsdGluc19nZW5lcmF0b3IucHkgKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTkxRDVFRDYxQkNDMzVCMTAwRTRDMjVE
IC8qIGJ1aWx0aW5zX21vZGVsLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTkwNDRCM0MxQkNDMjQ5MTAwN0MyNTBEIC8qIGJ1aWx0aW5zX21vZGVsLnB5
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5MUQ1
RUQ3MUJDQzM1QjEwMEU0QzI1RCAvKiBidWlsdGluc190ZW1wbGF0ZXMucHkgaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTA0NEIzRDFCQ0MyNDkxMDA3QzI1
MEQgLyogYnVpbHRpbnNfdGVtcGxhdGVzLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTk5MUQ1RUQ4MUJDQzM1QjEwMEU0QzI1RCAvKiBnZW5lcmF0
ZV9idWlsdGluc19jb21iaW5lZF9oZWFkZXIucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OTA0NEIzRTFCQ0MyNDkxMDA3QzI1MEQgLyogZ2VuZXJhdGVf
YnVpbHRpbnNfY29tYmluZWRfaGVhZGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTk5MUQ1RUQ5MUJDQzM1QjEwMEU0QzI1RCAvKiBnZW5lcmF0
ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MDQ0QjNGMUJDQzI0OTEwMDdDMjUwRCAvKiBn
ZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weSAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OTFENUVEQTFCQ0MzNUIxMDBF
NEMyNUQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaGVhZGVyLnB5IGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkwNDRCNDExQkNDMkIwNTAwN0My
NTBEIC8qIGdlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2hlYWRlci5weSAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OTFENUVEQjFCQ0MzNUIxMDBF
NEMyNUQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkgaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTA0NEI0MjFCQ0My
QjA1MDA3QzI1MEQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24u
cHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTkx
RDVFREMxQkNDMzVCMTAwRTRDMjVEIC8qIGdlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX3dyYXBw
ZXIucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTA0
NEI0MzFCQ0MyQjA1MDA3QzI1MEQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfd3JhcHBl
ci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5
OTFENUVERDFCQ0MzNUIzMDBFNEMyNUQgLyogbGF6eXdyaXRlci5weSBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MDQ0QjQwMUJDQzI0OTEwMDdDMjUwRCAv
KiBsYXp5d3JpdGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTk5MUQ1RURGMUJDQzYzMEMwMEU0QzI1RCAvKiBVcGRhdGVDb250ZW50cy5weSBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MUQ1RURFMUJD
QzYyRUEwMEU0QzI1RCAvKiBVcGRhdGVDb250ZW50cy5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OTFENUVFMTFCQ0M2NDY5MDBFNEMyNUQgLyog
YnVpbHRpbnMucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5OTFENUVFMDFCQ0M2NDE1MDBFNEMyNUQgLyogYnVpbHRpbnMucHkgKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTkyOEZGM0IxOEFDNEFFQzAwQjhD
RjEyIC8qIEpTUmVwbGF5SW5wdXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk5MjhGRjM5MThBQzRBRUMwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0
cy5jcHAgKi87IH07CiAJCTk5MjhGRjNDMThBQzRBRUMwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkyOEZG
M0ExOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTk2MjMxRTkxOEQxODA0MjAwQzAzRkRB
IC8qIEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcyBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MzI0Mzk2MTg1NkE0NzUwMDJFRDY5MiAvKiBJbnNwZWN0
b3JCYWNrZW5kQ29tbWFuZHMuanMgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTMxMTEsNiArMzEyMiwxOSBAQAogCQk5NjlBMDkyMjBFRDFFMDlDMDBG
MUY2ODEgLyogQ29tcGxldGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDb21wbGV0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc4OEZD
MjIxNDcxQUQwQzAwNjhDRTJEIC8qIEpTRGF0ZU1hdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNEYXRlTWF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk3ODhGQzIzMTQ3MUFEMEMwMDY4Q0UyRCAvKiBKU0RhdGVNYXRoLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGF0ZU1hdGguaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTkwNDRCMzExQkNDMjNEQzAwN0MyNTBEIC8qIGdlbmVyYXRlLWpzLWJ1aWx0
aW5zLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gImdlbmVyYXRlLWpz
LWJ1aWx0aW5zLnB5Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTkwNDRCM0ExQkND
MjQ5MTAwN0MyNTBEIC8qIF9faW5pdF9fLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9u
OyBwYXRoID0gX19pbml0X18ucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MDQ0
QjNCMUJDQzI0OTEwMDdDMjUwRCAvKiBidWlsdGluc19nZW5lcmF0b3IucHkgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBidWlsdGluc19nZW5lcmF0b3IucHk7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MDQ0QjNDMUJDQzI0OTEwMDdDMjUwRCAvKiBidWlsdGlu
c19tb2RlbC5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGJ1aWx0aW5z
X21vZGVsLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTA0NEIzRDFCQ0MyNDkx
MDA3QzI1MEQgLyogYnVpbHRpbnNfdGVtcGxhdGVzLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQu
cHl0aG9uOyBwYXRoID0gYnVpbHRpbnNfdGVtcGxhdGVzLnB5OyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5OTA0NEIzRTFCQ0MyNDkxMDA3QzI1MEQgLyogZ2VuZXJhdGVfYnVpbHRpbnNf
Y29tYmluZWRfaGVhZGVyLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0g
Z2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaGVhZGVyLnB5OyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5OTA0NEIzRjFCQ0MyNDkxMDA3QzI1MEQgLyogZ2VuZXJhdGVfYnVpbHRpbnNf
Y29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247
IHBhdGggPSBnZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTkwNDRCNDAxQkNDMjQ5MTAwN0MyNTBEIC8qIGxh
enl3cml0ZXIucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBsYXp5d3Jp
dGVyLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTA0NEI0MTFCQ0MyQjA1MDA3
QzI1MEQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaGVhZGVyLnB5ICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaGVh
ZGVyLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTA0NEI0MjFCQ0MyQjA1MDA3
QzI1MEQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBnZW5lcmF0ZV9idWlsdGluc19zZXBh
cmF0ZV9pbXBsZW1lbnRhdGlvbi5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTkw
NDRCNDMxQkNDMkIwNTAwN0MyNTBEIC8qIGdlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX3dyYXBw
ZXIucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBnZW5lcmF0ZV9idWls
dGluc19zZXBhcmF0ZV93cmFwcGVyLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
OTFENUVERTFCQ0M2MkVBMDBFNEMyNUQgLyogVXBkYXRlQ29udGVudHMucHkgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBVcGRhdGVDb250ZW50cy5weTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTkxRDVFRTAxQkNDNjQxNTAwRTRDMjVEIC8qIGJ1aWx0aW5zLnB5
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gYnVpbHRpbnMucHk7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MjhGRjM5MThBQzRBRUMwMEI4Q0YxMiAvKiBKU1Jl
cGxheUlucHV0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Jl
cGxheUlucHV0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MjhGRjNBMThB
QzRBRUMwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1JlcGxheUlucHV0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5OTI4RkYzRDE4QUM0QjFDMDBCOENGMTIgLyogSlNJbnB1dHMuanNvbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuanNvbjsgcGF0aCA9IEpTSW5wdXRzLmpzb247IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zMzA2LDcgKzMzMzAsNiBAQAogCQlBNzEyMzZFNDExOTVGMzNDMDBCRDIxNzQgLyogSklU
T3Bjb2RlczMyXzY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJ
VE9wY29kZXMzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MThGNjFB
MTE3NTRBMjEwMDI0NjVBNyAvKiBSZWdFeHBKaXRUYWJsZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVnRXhwSml0VGFibGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE3MThGODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB0ZXh0LnNjcmlw
dC5weXRob247IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBjcmVhdGVfcmVnZXhfdGFibGVzOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNzFEQTgwRDE4ODBENzFGMDBEMUYyOTkgLyog
Z2VuZXJhdGUtanMtYnVpbHRpbnMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGgg
PSAiZ2VuZXJhdGUtanMtYnVpbHRpbnMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NzIwMjhCNDE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4QyAvKiBK
U0NUZXN0UnVubmVyVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlND
VGVzdFJ1bm5lclV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI5
MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0Z1bmN0aW9uSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMzgyNyw3ICszODUwLDYgQEAKIAkJCQk4NjA0RjRGMjE0M0E2QzQ0MDBCMjk1
RjUgLyogQ2hhbmdlTG9nICovLAogCQkJCUY2OTJBODU0MDI1NTU5N0QwMUZGNjBGNyAvKiBjcmVh
dGVfaGFzaF90YWJsZSAqLywKIAkJCQlBNzE4RjgyMTExNzhFQjRCMDAyNDY1QTcgLyogY3JlYXRl
X3JlZ2V4X3RhYmxlcyAqLywKLQkJCQlBNzFEQTgwRDE4ODBENzFGMDBEMUYyOTkgLyogZ2VuZXJh
dGUtanMtYnVpbHRpbnMgKi8sCiAJCQkJNDVFMTJEODgwNkE0OUIwRjAwRTlERjg0IC8qIGpzYy5j
cHAgKi8sCiAJCQkJRjY4RUJCOEMwMjU1RDRDNjAxRkY2MEY3IC8qIGNvbmZpZy5oICovLAogCQkJ
CUY1QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oICovLApA
QCAtMzgzOSwxMiArMzg2MSw5IEBACiAJCQkJQTdEODAxOUYxODgwRDY2RTAwMjZDMzlCIC8qIGJ1
aWx0aW5zICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywK
IAkJCQk3RTM5RDgxRDBFQzM4RUZBMDAzQUYxMUEgLyogYnl0ZWNvbXBpbGVyICovLAotCQkJCTFD
OTA1MTNFMEJBOUU4ODMwMDgxRTlEMCAvKiBDb25maWd1cmF0aW9ucyAqLywKIAkJCQkxNDgwREI5
QTBEREMyMjMxMDAzQ0ZERjIgLyogZGVidWdnZXIgKi8sCi0JCQkJNjUwRkRGOEQwOUQwRkNBNzAw
NzY5RTU0IC8qIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQk4NkVDOURCMzEzMjhERjQ0MDAyQjJB
RDcgLyogZGZnICovLAogCQkJCTBGRjQyNzJFMTU4RUJDQ0UwMDRDQjlGRiAvKiBkaXNhc3NlbWJs
ZXIgKi8sCi0JCQkJMDg2N0Q2OUFGRTg0MDI4RkMwMkFBQzA3IC8qIEZyYW1ld29ya3MgKi8sCiAJ
CQkJMEZFQTA5RkMxNzA1MTM3RjAwQkI3MjJDIC8qIGZ0bCAqLywKIAkJCQkxNDJFMzEyQTEzNEZG
MEE2MDBBRkFEQjUgLyogaGVhcCAqLywKIAkJCQlBNUJBMTVERjE4MjM0MDkyMDBBODJFNjkgLyog
aW5zcGVjdG9yICovLApAQCAtMzg1MywxNSArMzg3MiwxOSBAQAogCQkJCTBGNDY4MDlDMTRCQTdG
NEQwMEJGRTI3MiAvKiBsbGludCAqLywKIAkJCQkwRkNFRkFBRDE4MDVDQTQ0MDA0NzJDRTQgLyog
bGx2bSAqLywKIAkJCQk3RTM5RDgzNzBFQzNBMzg4MDAzQUYxMUEgLyogcGFyc2VyICovLAotCQkJ
CTAzNDc2OERGRkYzOEE1MDQxMURCOUM4QiAvKiBQcm9kdWN0cyAqLywKIAkJCQk5NUFCODMxQTBE
QTQyQzY5MDBCQzgzRjMgLyogcHJvZmlsZXIgKi8sCiAJCQkJOTlFNDVBMEMxOEEwMUU5MzAwMjZE
ODhGIC8qIHJlcGxheSAqLywKLQkJCQk5MzJGQzNDMjA4MjRCQjcwMDA1QjNDNzUgLyogUmVzb3Vy
Y2VzICovLAogCQkJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovLAogCQkJ
CTE0MTIxMTAwMEE0ODc3MjYwMDQ4MDI1NSAvKiB0ZXN0cyAqLywKIAkJCQk4NjAzQ0VGMDE0Qzc1
M0VGMDBBRTU5RTMgLyogdG9vbHMgKi8sCiAJCQkJN0I5OEQxMzMxQjYwQ0QxRTAwMjNCMUE0IC8q
IHdhc20gKi8sCiAJCQkJODZFQUM0OEMwRjkzRThCOTAwOEVDOTQ4IC8qIHlhcnIgKi8sCisJCQkJ
NjUwRkRGOEQwOUQwRkNBNzAwNzY5RTU0IC8qIERlcml2ZWQgU291cmNlcyAqLywKKwkJCQk5OTA0
NEIzMDFCQ0MyM0IyMDA3QzI1MEQgLyogU2NyaXB0cyAqLywKKwkJCQk5MzJGQzNDMjA4MjRCQjcw
MDA1QjNDNzUgLyogUmVzb3VyY2VzICovLAorCQkJCTA4NjdENjlBRkU4NDAyOEZDMDJBQUMwNyAv
KiBGcmFtZXdvcmtzICovLAorCQkJCTAzNDc2OERGRkYzOEE1MDQxMURCOUM4QiAvKiBQcm9kdWN0
cyAqLywKKwkJCQkxQzkwNTEzRTBCQTlFODgzMDA4MUU5RDAgLyogQ29uZmlndXJhdGlvbnMgKi8s
CiAJCQkpOwogCQkJbmFtZSA9IEphdmFTY3JpcHRDb3JlOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTU3MjcsNiArNTc1MCwzNCBAQAogCQkJcGF0aCA9IGJ5dGVjb2RlOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJOTkwNDRCMzAxQkNDMjNCMjAwN0MyNTBEIC8q
IFNjcmlwdHMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CTk5MDQ0QjM5MUJDQzIzRkYwMDdDMjUwRCAvKiBidWlsdGlucyAqLywKKwkJCQk5OTA0NEIzMTFC
Q0MyM0RDMDA3QzI1MEQgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgKi8sCisJCQkJOTkwNDRC
NDAxQkNDMjQ5MTAwN0MyNTBEIC8qIGxhenl3cml0ZXIucHkgKi8sCisJCQkJOTkxRDVFREUxQkND
NjJFQTAwRTRDMjVEIC8qIFVwZGF0ZUNvbnRlbnRzLnB5ICovLAorCQkJKTsKKwkJCXBhdGggPSBT
Y3JpcHRzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJOTkwNDRCMzkxQkND
MjNGRjAwN0MyNTBEIC8qIGJ1aWx0aW5zICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQlj
aGlsZHJlbiA9ICgKKwkJCQk5OTA0NEIzQTFCQ0MyNDkxMDA3QzI1MEQgLyogX19pbml0X18ucHkg
Ki8sCisJCQkJOTkxRDVFRTAxQkNDNjQxNTAwRTRDMjVEIC8qIGJ1aWx0aW5zLnB5ICovLAorCQkJ
CTk5MDQ0QjNCMUJDQzI0OTEwMDdDMjUwRCAvKiBidWlsdGluc19nZW5lcmF0b3IucHkgKi8sCisJ
CQkJOTkwNDRCM0MxQkNDMjQ5MTAwN0MyNTBEIC8qIGJ1aWx0aW5zX21vZGVsLnB5ICovLAorCQkJ
CTk5MDQ0QjNEMUJDQzI0OTEwMDdDMjUwRCAvKiBidWlsdGluc190ZW1wbGF0ZXMucHkgKi8sCisJ
CQkJOTkwNDRCM0UxQkNDMjQ5MTAwN0MyNTBEIC8qIGdlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVk
X2hlYWRlci5weSAqLywKKwkJCQk5OTA0NEIzRjFCQ0MyNDkxMDA3QzI1MEQgLyogZ2VuZXJhdGVf
YnVpbHRpbnNfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkgKi8sCisJCQkJOTkwNDRCNDExQkND
MkIwNTAwN0MyNTBEIC8qIGdlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2hlYWRlci5weSAqLywK
KwkJCQk5OTA0NEI0MjFCQ0MyQjA1MDA3QzI1MEQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJh
dGVfaW1wbGVtZW50YXRpb24ucHkgKi8sCisJCQkJOTkwNDRCNDMxQkNDMkIwNTAwN0MyNTBEIC8q
IGdlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX3dyYXBwZXIucHkgKi8sCisJCQkpOworCQkJcGF0
aCA9IGJ1aWx0aW5zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJOTlFNDVB
MEMxOEEwMUU5MzAwMjZEODhGIC8qIHJlcGxheSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCkBAIC02MDI0LDYgKzYwNzUsMTAgQEAKIAkJCQlGRUEwODYyMDE4MkI3
QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODAxQTUx
ODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTc1RUU5QjIxOEFBQjdFMjAwQUFEMDQzIC8qIEJ1aWx0aW5OYW1lcy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJOTkxRDVFRTExQkNDNjQ2OTAwRTRDMjVEIC8qIGJ1aWx0aW5zLnB5IGluIEhlYWRl
cnMgKi8sCisJCQkJOTkxRDVFRDUxQkNDMzVCMTAwRTRDMjVEIC8qIGJ1aWx0aW5zX2dlbmVyYXRv
ci5weSBpbiBIZWFkZXJzICovLAorCQkJCTk5MUQ1RUQ2MUJDQzM1QjEwMEU0QzI1RCAvKiBidWls
dGluc19tb2RlbC5weSBpbiBIZWFkZXJzICovLAorCQkJCTk5MUQ1RUQ3MUJDQzM1QjEwMEU0QzI1
RCAvKiBidWlsdGluc190ZW1wbGF0ZXMucHkgaW4gSGVhZGVycyAqLywKIAkJCQk0MURFQTEzMjFC
OUYzMTYzMDA2RDY1REQgLyogQnVpbHRpblV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5RTcy
OTQwQjE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZCN0YzOTcxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZseS5oIGluIEhlYWRlcnMgKi8sCkBA
IC02MDUxLDYgKzYxMDYsNyBAQAogCQkJCTBGMEI4M0I5MTRCQ0Y5NUYwMDg4NUI0RiAvKiBDYWxs
UmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzQjdF
MkIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjI0RTU0MjE3RUE5RjU5MDBBQkIyMTcgLyogQ0NhbGxIZWxwZXJzLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjFDM0REQTFCQkNFMDlFMDBFNTIzRTQgLyogQ2VsbFN0YXRlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzZBQUFFNTBFMUY0MjY1MDBBRDg3RDggLyogQ2xhc3NJbmZvLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkUwNTAyNjFBQTkwOTU2MDBEMzNCMzMgLyogQ2xvbmVkQXJndW1lbnRzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDc5NzBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2Nr
LmggaW4gSGVhZGVycyAqLywKQEAgLTYxODIsMTAgKzYyMzgsOCBAQAogCQkJCUE3OEE5Nzc1MTc5
NzM4QjgwMDlERjc0NCAvKiBERkdGYWlsZWRGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3QkZGM0MwMTc5ODY4OTQwMDAyRjQ2MiAvKiBERkdGaWx0cmF0aW9uUmVzdWx0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNzhBOTc3NzE3OTczOEI4MDA5REY3NDQgLyogREZHRmluYWxpemVyLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk3QjgzMjlCRjFCQjIxRkUzMDA2NDlBNkUgLyogV0FTTUZ1bmN0
aW9uTExWTUlSR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCREMxNjE1MUM1RDRG
MDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RDMzOTcx
N0ZGQzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRBdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEYz
MkJEMTExQkIzNEYxOTAwOTNBNTdGIC8qIEhlYXBIZWxwZXJQb29sLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0Q4OUNGODE3QTBCOENDMDA3NzNBRDggLyogREZHRmx1c2hGb3JtYXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMkREODE1MUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdGb3JBbGxLaWxscy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2OUNDODkxOTNBQzYwQTAwNDU3NTlFIC8qIERGR0Zyb3pl
blZhbHVlLmggaW4gSGVhZGVycyAqLywKQEAgLTYyNTQsNyArNjMwOCw2IEBACiAJCQkJMEZCMTc2
NjMxOTZCOEY5RTAwOTEwNTJBIC8qIERGR1B1cmVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYzQTFCRkExQTlFQ0I3RDAwMERFMDFBIC8qIERGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NkVDOUREMTEzMjhERjgyMDAyQjJBRDcgLyogREZHUmVnaXN0ZXJC
YW5rLmggaW4gSGVhZGVycyAqLywKLQkJCQlERUE3RTI0NTFCQkM2NzdGMDBENzg0NDAgLyogSlNU
eXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyRkNDRkMxOEE2
MDA3MDAwMUEyN0Y4IC8qIERGR1NhZmVwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3QTQy
NDMxN0EwQkJGRDAwQThEQjgxIC8qIERGR1NhZmVUb0V4ZWN1dGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3NDEwMTdGMTc5REFGODAwMDJFQjhCQSAvKiBERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93
UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC02Mzk4LDcgKzY0NTEsMTIgQEAKIAkJ
CQlBNTRFOEVCMTE4QkZGQkJFMDA1NTZEMjggLyogR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1MzI0Mzk0MTg1Njk3MDkwMDJFRDY5MiAvKiBnZW5lcmF0ZS1j
b21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSBpbiBIZWFkZXJzICovLAogCQkJCUM0NzAzQ0MwMTky
ODQ0OTYwMDEzRkJFQSAvKiBnZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkg
aW4gSGVhZGVycyAqLywKLQkJCQkyREZCOEFGRTFCQjMyM0JEMDA5M0QyMzcgLyogZ2VuZXJhdGUt
anMtYnVpbHRpbnMgaW4gSGVhZGVycyAqLywKKwkJCQk5OTFENUVENDFCQ0MzNUFBMDBFNEMyNUQg
LyogZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgaW4gSGVhZGVycyAqLywKKwkJCQk5OTFENUVEODFC
Q0MzNUIxMDBFNEMyNUQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaGVhZGVyLnB5IGlu
IEhlYWRlcnMgKi8sCisJCQkJOTkxRDVFRDkxQkNDMzVCMTAwRTRDMjVEIC8qIGdlbmVyYXRlX2J1
aWx0aW5zX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJOTkx
RDVFREExQkNDMzVCMTAwRTRDMjVEIC8qIGdlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2hlYWRl
ci5weSBpbiBIZWFkZXJzICovLAorCQkJCTk5MUQ1RURCMUJDQzM1QjEwMEU0QzI1RCAvKiBnZW5l
cmF0ZV9idWlsdGluc19zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovLAor
CQkJCTk5MUQ1RURDMUJDQzM1QjEwMEU0QzI1RCAvKiBnZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0
ZV93cmFwcGVyLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFQTcwRUMxOUY1QjNFQTAwOThGNUVD
IC8qIGdlbmVyYXRlX2NwcF9hbHRlcm5hdGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weSBp
biBIZWFkZXJzICovLAogCQkJCUE1RUY5QjE0MUExRDQzRjYwMDcwMkU5MCAvKiBnZW5lcmF0ZV9j
cHBfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1RUY5
QjE1MUExRDQzRkEwMDcwMkU5MCAvKiBnZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2lt
cGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCkBAIC02NDM1LDYgKzY0OTMsNyBAQAogCQkJ
CTE0MkUzMTM4MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGVTdGFjay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTQ3ODI5N0IxMzc5RThBODAwQTdDMkEzIC8qIEhhbmRsZVR5cGVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNEJBN0E5ODEzQUFERkY4MDA1QjdDMkMgLyogSGVhcC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEYzMkJEMTExQkIzNEYxOTAwOTNBNTdGIC8qIEhlYXBIZWxwZXJQb29sLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDMkRBNzc4MzE4RTI1OTk5MDA2NkZDQjYgLyogSGVhcElubGluZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJBRDg5MzJCMTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRl
cmF0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBNkY0NjI2MTdFOTU5Q0UwMEM0NUM5
OCAvKiBIZWFwT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTY1NzksNyArNjYzOCw2IEBA
CiAJCQkJODZFM0M2MTQxNjdCQUJENzAwNkQ3NjBBIC8qIEpTRXhwb3J0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0I0QUNBRjE0ODRDOUNFMDBCMzhBMzYgLyogSlNFeHBvcnRNYWNyb3MuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMkI2NkVGMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0MzJBcnJh
eS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTM5MTdFN0IxQjc5MDZGQTAwMEVCRDMzIC8qIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJCNjZGMDE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDNDFGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0Z1bmN0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNzIwMjhCQTE3OTc2MDNEMDA5ODAyOEMgLyogSlNGdW5jdGlvbklubGlu
ZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNjU4OCw2ICs2NjQ2LDcgQEAKIAkJCQkwRjJCNjZGMzE3
QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGlu
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkY0MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkY1
MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTM5MTdFN0IxQjc5MDZGQTAwMEVCRDMzIC8qIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJC
NjZGNjE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OTdFMDdBQTFCOEZDRkI5MDA4NDAwQkEgLyog
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDIx
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0dsb2JhbE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCkBAIC02
NjYxLDYgKzY3MjAsNyBAQAogCQkJCTBGMkI2NkZCMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVk
QXJyYXlDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkZEMTdCNkI1QUIw
MEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlQcm90b3R5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjJCNjZGRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5cy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJREVBN0UyNDUxQkJDNjc3RjAwRDc4NDQwIC8qIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1MDdEMjlFMEU4NzFFNUUwMEQ3RDg5NiAvKiBKU1R5
cGVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjcwMjE3QjZCNUFCMDBBN0FFM0YgLyog
SlNVaW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY3MDMxN0I2QjVBQjAwQTdB
RTNGIC8qIEpTVWludDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLApAQCAtNjY4NCw2ICs2NzQ0LDcg
QEAKIAkJCQk5NjlBMDcyQTBFRDFDRTY5MDBGMUY2ODEgLyogTGFiZWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk2MDA5N0E2MEVCQUJCNTgwMDdBNzI5NyAvKiBMYWJlbFNjb3BlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkI1NDY3NzE0RjU5QjVDMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5MUQ1RUREMUJDQzM1QjMwMEU0QzI1RCAvKiBs
YXp5d3JpdGVyLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NTIwRTE2RjVDRDAwQjM0NDYw
IC8qIExlZ2FjeVByb2ZpbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQzMTBFMTZGNUNE
MDBCMzQ0NjAgLyogTGV4ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNTJFMEUxNkZDRTEw
MEIzNDQ2MCAvKiBMZXhlci5sdXQuaCBpbiBIZWFkZXJzICovLApAQCAtNjkzOSw4ICs3MDAwLDgg
QEAKIAkJCQlBN0I2MDE4MjE2MzlGRDJBMDAzNzJCQTMgLyogVW5saW5rZWRDb2RlQmxvY2suaCBp
biBIZWFkZXJzICovLAogCQkJCTE0MTQyRTUxMUI3OTZFQ0UwMEY0QkY0QiAvKiBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyRTg5MkMxNkQwMjhBRDAw
OUU0RkQyIC8qIFVudXNlZFBvaW50ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5MUQ1RURGMUJD
QzYzMEMwMEU0QzI1RCAvKiBVcGRhdGVDb250ZW50cy5weSBpbiBIZWFkZXJzICovLAogCQkJCTBG
OTYzQjM4MTNGQzZGRTkwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAot
CQkJCTBGMUMzRERBMUJCQ0UwOUUwMEU1MjNFNCAvKiBDZWxsU3RhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNDI2QTQ4MTQ2MENCQjMwMDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3OUVFMEMwMDFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9u
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2QzczNTExQUM5Rjk5RjAwQkUxNjgyIC8qIFZh
cmlhYmxlV3JpdGVGaXJlRGV0YWlsLmggaW4gSGVhZGVycyAqLywKQEAgLTY5NTIsNiArNzAxMyw3
IEBACiAJCQkJN0IwMjQ3NTUxQjg2ODJERDAwNTQyNDQwIC8qIFdBU01Db25zdGFudHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdCQzU0N0QzMUI2OTU5QTEwMDk1OUI1OCAvKiBXQVNNRm9ybWF0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3QjJFMDEwRTFCOTdBQTY5MDBFRjVENUMgLyogV0FTTUZ1bmN0
aW9uQ29tcGlsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCODMyOUJGMUJCMjFGRTMwMDY0OUE2
RSAvKiBXQVNNRnVuY3Rpb25MTFZNSVJHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTdC
MDI0NzU3MUI4NjgyRTQwMDU0MjQ0MCAvKiBXQVNNRnVuY3Rpb25QYXJzZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdCMDI0NzU5MUI4NjhFQjcwMDU0MjQ0MCAvKiBXQVNNRnVuY3Rpb25TeW50YXhD
aGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QjM5Rjc2RTFCNjJERTMyMDAzNjBGQjQgLyog
V0FTTU1vZHVsZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCkBAIC03NzYzLDYgKzc4MjUsNyBAQAog
CQkJCTE0MkUzMTM1MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGVTZXQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMTQyRTMxMzcxMzRGRjBBNjAwQUZBREI1IC8qIEhhbmRsZVN0YWNrLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0QkE3QTk3MTNBQURGRjgwMDVCN0MyQyAvKiBIZWFwLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTBGMzJCRDEwMUJCMzRGMTkwMDkzQTU3RiAvKiBIZWFwSGVscGVyUG9v
bC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMjREMzFFMjE2MUNENjk1MDAyQUE0REIgLyogSGVh
cFN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzJFNTI2QkQxNTkwRUYwMDAwNTRF
NDhEIC8qIEhlYXBUaW1lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTdCQTYwRjFBMUE3Q0VD
MDBGMUY3QjQgLyogSGVhcFZlcmlmaWVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzkxOSw2ICs3
OTgyLDcgQEAKIAkJCQkwRjJCNjZGQTE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5Q29u
c3RydWN0b3JzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkI2NkZDMTdCNkI1QUIwMEE3QUUz
RiAvKiBKU1R5cGVkQXJyYXlQcm90b3R5cGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkI2
NkZFMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlzLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCURFQTdFMjQ0MUJCQzY3NzIwMEQ3ODQ0MCAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RTNDNjFBMTY3QkFCRUUwMDZENzYwQSAvKiBKU1Zh
bHVlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRCRDVBMzIwQTNFOTFGNjAwQkFGNTlDIC8qIEpT
VmFsdWVSZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFM0M2MUMxNjdCQUJFRTAwNkQ3NjBB
IC8qIEpTVmlydHVhbE1hY2hpbmUubW0gaW4gU291cmNlcyAqLywKQEAgLTc5OTIsNyArODA1Niw2
IEBACiAJCQkJMEY5ODIwNjAxNkJGRTM4MTAwMjQwRDAyIC8qIFByZWNpc2VKdW1wVGFyZ2V0cy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5NTc0MkY2NTBERDExRjVBMDAwOTE3RkIgLyogUHJvZmls
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NUNENDU3NjBFMUM0RkREMDA4NTM1OEUgLyogUHJv
ZmlsZUdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlERUE3RTI0NDFCQkM2NzcyMDBE
Nzg0NDAgLyogSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5NUFCODM1NjBEQTQzQzMwMDBCQzgzRjMgLyogUHJvZmlsZU5vZGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZGNzI5QUQxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVyQnl0ZWNvZGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNzI5QUUxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVy
Qnl0ZWNvZGVzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtODEwMCw3ICs4MTYzLDYgQEAKIAkJCQkw
RkY0Mjc0MDE1OEVCRThCMDA0Q0I5RkYgLyogdWRpczg2X2RlY29kZS5jIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZGNDI3NDMxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl9pbnB1dC5jIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZGNDI3NEQxNThFQkZFNjAwNENCOUZGIC8qIHVkaXM4Nl9pdGFiX2hvbGRl
ci5jIGluIFNvdXJjZXMgKi8sCi0JCQkJMEYzMkJEMTAxQkIzNEYxOTAwOTNBNTdGIC8qIEhlYXBI
ZWxwZXJQb29sLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzQ1MTU4RUJFOTEwMDRDQjlG
RiAvKiB1ZGlzODZfc3luLWF0dC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NDYxNThFQkU5
MTAwNENCOUZGIC8qIHVkaXM4Nl9zeW4taW50ZWwuYyBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQy
NzQ3MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfc3luLmMgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL1VwZGF0ZUNvbnRlbnRzLnB5IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvVXBkYXRlQ29udGVudHMucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzc2ZDQ2ZmI0YzQyMzAyYjg1ZmYxMGM4NTFlYjM0YzFlMjc4OTRjMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL1VwZGF0ZUNvbnRlbnRzLnB5CkBA
IC0wLDAgKzEsNDggQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisKKyMgQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMgMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyMgICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyMgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyMg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9y
dCBzeXMKK2ltcG9ydCBvcworCithc3NlcnQobGVuKHN5cy5hcmd2KSA9PSAzKQorCitjb21wID0g
c3lzLmFyZ3ZbMV0KK2ZpbGVuYW1lID0gc3lzLmFyZ3ZbMl0KKwordCA9IEZhbHNlCisKK2lmIG9z
LnBhdGguaXNmaWxlKGZpbGVuYW1lKToKKyAgICBmID0gb3BlbihmaWxlbmFtZSwgJ3InKQorICAg
IGNvbXBhcmF0b3IgPSBmLnJlYWQoKQorICAgIGYuY2xvc2UoKQorICAgIHQgPSBUcnVlCisKK2lm
IChub3QgdCBvciBjb21wICE9IGNvbXBhcmF0b3IpOgorICAgIGYgPSBvcGVuKGZpbGVuYW1lLCAn
dycpCisgICAgZi53cml0ZShjb21wKQorICAgIGYuY2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvX19pbml0X18ucHkgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZGZj
YmE5ODFkOGY4ZGEwNzgxMzU4Y2ZlNjRmYTFjNzgwNzRhMTYwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvX19pbml0X18ucHkKQEAgLTAs
MCArMSwzIEBACisjIFJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5
IGZvciBtb2R1bGUgZmlsZXMKKworZnJvbSBidWlsdGlucyBpbXBvcnQgKgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnMucHkgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGlucy5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jZGZlZDc2NmFmMTUwYmRhZTRkMWIyY2U3NTkxZjgzZjA1OWY0MTY1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnMucHkK
QEAgLTAsMCArMSwxMiBAQAorIyBUaGlzIGZpbGUgaXMgdXNlZCB0byBzaW11bGF0ZSB0aGUgYnVp
bHRpbnMvIGRpcmVjdG9yeSB3aGVuIGdlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisjIGlzIHJ1biBm
cm9tIEphdmFTY3JpcHRDb3JlIGZyYW1ld29yaydzIHByaXZhdGUgaGVhZGVycyBkaXJlY3Rvcnks
IHdoaWNoIGlzIGZsYXR0ZW5lZC4KKworZnJvbSBidWlsdGluc19tb2RlbCBpbXBvcnQgKgorZnJv
bSBidWlsdGluc190ZW1wbGF0ZXMgaW1wb3J0ICoKKworZnJvbSBidWlsdGluc19nZW5lcmF0b3Ig
aW1wb3J0ICoKK2Zyb20gZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaGVhZGVyIGltcG9ydCAq
Citmcm9tIGdlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uIGltcG9ydCAq
Citmcm9tIGdlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2hlYWRlciBpbXBvcnQgKgorZnJvbSBn
ZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbiBpbXBvcnQgKgorZnJvbSBn
ZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV93cmFwcGVyIGltcG9ydCAqCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0b3Iu
cHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5l
cmF0b3IucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDE2MmNhZmNkNTBjYWJmZTg5MjExMmI2Yjc2ODIwNmFlMzdm
NGU0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1
aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5weQpAQCAtMCwwICsxLDE1OSBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdh
c2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBy
ZQorZnJvbSBzdHJpbmcgaW1wb3J0IFRlbXBsYXRlCitpbXBvcnQganNvbgorCitmcm9tIGJ1aWx0
aW5zX21vZGVsIGltcG9ydCBCdWlsdGluRnVuY3Rpb24KK2Zyb20gYnVpbHRpbnNfdGVtcGxhdGVz
IGltcG9ydCBCdWlsdGluc0dlbmVyYXRvclRlbXBsYXRlcyBhcyBUZW1wbGF0ZXMKKworbG9nID0g
bG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcpCisKKyMgVGhlc2UgbWF0Y2ggV0tfbGNmaXJzdCBh
bmQgV0tfdWNmaXJzdCBkZWZpbmVkIGluIENvZGVHZW5lcmF0b3IucG0uCitkZWYgV0tfbGNmaXJz
dChzdHIpOgorICAgIHN0ciA9IHN0cls6MV0ubG93ZXIoKSArIHN0clsxOl0KKyAgICBzdHIgPSBz
dHIucmVwbGFjZSgnaFRNTCcsICdodG1sJykKKyAgICBzdHIgPSBzdHIucmVwbGFjZSgndVJMJywg
J3VybCcpCisgICAgc3RyID0gc3RyLnJlcGxhY2UoJ2pTJywgJ2pzJykKKyAgICBzdHIgPSBzdHIu
cmVwbGFjZSgneE1MJywgJ3htbCcpCisgICAgc3RyID0gc3RyLnJlcGxhY2UoJ3hTTFQnLCAneHNs
dCcpCisgICAgc3RyID0gc3RyLnJlcGxhY2UoJ2NTUycsICdjc3MnKQorICAgIHJldHVybiBzdHIK
KworZGVmIFdLX3VjZmlyc3Qoc3RyKToKKyAgICBzdHIgPSBzdHJbOjFdLnVwcGVyKCkgKyBzdHJb
MTpdCisgICAgc3RyID0gc3RyLnJlcGxhY2UoJ1htbCcsICdYTUwnKQorICAgIHN0ciA9IHN0ci5y
ZXBsYWNlKCdTdmcnLCAnU1ZHJykKKyAgICByZXR1cm4gc3RyCisKK2NsYXNzIEJ1aWx0aW5zR2Vu
ZXJhdG9yOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCk6CisgICAgICAgIHNlbGYuX21v
ZGVsID0gbW9kZWwKKworICAgIGRlZiBtb2RlbChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
X21vZGVsCisKKyAgICAjIFRoZXNlIG1ldGhvZHMgYXJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nl
cy4KKworICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6CisgICAgICAgIHBhc3MKKworICAg
IGRlZiBvdXRwdXRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHBhc3MKKworCisgICAgIyBTaGFy
ZWQgY29kZSBnZW5lcmF0aW9uIG1ldGhvZHMuCisgICAgZGVmIGdlbmVyYXRlX2xpY2Vuc2Uoc2Vs
Zik6CisgICAgICAgIHJhd19saWNlbnNlID0gVGVtcGxhdGUoVGVtcGxhdGVzLkxpY2Vuc2VUZXh0
KS5zdWJzdGl0dXRlKE5vbmUpCisgICAgICAgIGNvcHlyaWdodHMgPSBzZWxmLl9tb2RlbC5jb3B5
cmlnaHRzKCkKKyAgICAgICAgY29weXJpZ2h0cy5zb3J0KCkKKworICAgICAgICBsaWNlbnNlX2Js
b2NrID0gW10KKyAgICAgICAgbGljZW5zZV9ibG9jay5hcHBlbmQoIi8qIikKKyAgICAgICAgZm9y
IGNvcHlyaWdodCBpbiBjb3B5cmlnaHRzOgorICAgICAgICAgICAgbGljZW5zZV9ibG9jay5hcHBl
bmQoIiAqIENvcHlyaWdodCAoYykgJXMiICUgY29weXJpZ2h0KQorICAgICAgICBpZiBsZW4oY29w
eXJpZ2h0cykgPiAwOgorICAgICAgICAgICAgbGljZW5zZV9ibG9jay5hcHBlbmQoIiAqICIpCisK
KyAgICAgICAgZm9yIGxpbmUgaW4gcmF3X2xpY2Vuc2Uuc3BsaXQoJ1xuJyk6CisgICAgICAgICAg
ICBsaWNlbnNlX2Jsb2NrLmFwcGVuZCgiICogIiArIGxpbmUpCisKKyAgICAgICAgbGljZW5zZV9i
bG9jay5hcHBlbmQoIiAqLyIpCisKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaWNlbnNlX2Js
b2NrKQorCisgICAgZGVmIGdlbmVyYXRlX2luY2x1ZGVzX2Zyb21fZW50cmllcyhzZWxmLCBlbnRy
aWVzKToKKyAgICAgICAgaW5jbHVkZXMgPSBzZXQoKQorICAgICAgICBmb3IgZW50cnkgaW4gZW50
cmllczoKKyAgICAgICAgICAgIChhbGxvd2VkX2ZyYW1ld29ya19uYW1lcywgZGF0YSkgPSBlbnRy
eQorICAgICAgICAgICAgKGZyYW1ld29ya19uYW1lLCBoZWFkZXJfcGF0aCkgPSBkYXRhCisKKyAg
ICAgICAgICAgIGlmIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsubmFtZSBub3QgaW4gYWxsb3dlZF9m
cmFtZXdvcmtfbmFtZXM6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlm
IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsubmFtZSAhPSBmcmFtZXdvcmtfbmFtZToKKyAgICAgICAg
ICAgICAgICBpbmNsdWRlcy5hZGQoIiNpbmNsdWRlIDwlcz4iICUgaGVhZGVyX3BhdGgpCisgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGluY2x1ZGVzLmFkZCgiI2luY2x1ZGUgXCIl
c1wiIiAlIG9zLnBhdGguYmFzZW5hbWUoaGVhZGVyX3BhdGgpKQorCisgICAgICAgIHNvcnRlZF9p
bmNsdWRlcyA9IHNvcnRlZChsaXN0KGluY2x1ZGVzKSkKKyAgICAgICAgIyBBbHdheXMgaW5jbHVk
ZSBjb25maWcuaCBhbmQgdGhlIGNvdW50ZXJwYXJ0IGhlYWRlciBiZWZvcmUgb3RoZXIgaGVhZGVy
cy4KKyAgICAgICAgbmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChzZWxmLm91dHB1dF9maWxl
bmFtZSgpKQorICAgICAgICBpZiBleHQgIT0gJy5oJzoKKyAgICAgICAgICAgIHNvcnRlZF9pbmNs
dWRlc1s6MF0gPSBbCisgICAgICAgICAgICAgICAgIiNpbmNsdWRlIFwiY29uZmlnLmhcIiIsCisg
ICAgICAgICAgICAgICAgIiNpbmNsdWRlIFwiJXMuaFwiIiAlIG5hbWUsCisgICAgICAgICAgICAg
ICAgIiIsCisgICAgICAgICAgICBdCisKKyAgICAgICAgcmV0dXJuIHNvcnRlZF9pbmNsdWRlcwor
CisgICAgZGVmIGdlbmVyYXRlX2VtYmVkZGVkX2NvZGVfc3RyaW5nX3NlY3Rpb25fZm9yX2Z1bmN0
aW9uKHNlbGYsIGZ1bmN0aW9uKToKKyAgICAgICAgdGV4dCA9IGZ1bmN0aW9uLmZ1bmN0aW9uX3Nv
dXJjZQorICAgICAgICAjIFdyYXAgaXQgaW4gcGFyZW5zIHRvIGF2b2lkIGFkZGluZyB0byBnbG9i
YWwgc2NvcGUuCisgICAgICAgIHRleHQgPSAiKGZ1bmN0aW9uICIgKyB0ZXh0W3RleHQuaW5kZXgo
IigiKTpdICsgIikiCisgICAgICAgIGVtYmVkZGVkU291cmNlTGVuZ3RoID0gbGVuKHRleHQpICsg
MSAgIyBGb3IgZXh0cmEgXG4uCisgICAgICAgICMgTGF6eSB3YXkgdG8gZXNjYXBlIHF1b3Rlcywg
SSB0aGluaz8KKyAgICAgICAgdGV4dExpbmVzID0ganNvbi5kdW1wcyh0ZXh0KVsxOi0xXS5zcGxp
dCgiXFxuIikKKyAgICAgICAgIyBUaGlzIGxvb2tzIHNjYXJ5IGJlY2F1c2Ugd2UgbmVlZCB0aGUg
SlMgc291cmNlIGl0c2VsZiB0byBoYXZlIG5ld2xpbmVzLgorICAgICAgICBlbWJlZGRlZFNvdXJj
ZSA9ICdcbicuam9pbihbJyAgICAiJXNcXG4iIFxcJyAlIGxpbmUgZm9yIGxpbmUgaW4gdGV4dExp
bmVzXSkKKworICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gIkNhbm5vdENvbnN0cnVjdCIKKyAg
ICAgICAgaWYgZnVuY3Rpb24uaXNfY29uc3RydWN0b3I6CisgICAgICAgICAgICBjb25zdHJ1Y3RB
YmlsaXR5ID0gIkNhbkNvbnN0cnVjdCIKKworICAgICAgICBhcmdzID0geworICAgICAgICAgICAg
J2NvZGVOYW1lJzogQnVpbHRpbnNHZW5lcmF0b3IubWFuZ2xlZE5hbWVGb3JGdW5jdGlvbihmdW5j
dGlvbikgKyAnQ29kZScsCisgICAgICAgICAgICAnZW1iZWRkZWRTb3VyY2UnOiBlbWJlZGRlZFNv
dXJjZSwKKyAgICAgICAgICAgICdlbWJlZGRlZFNvdXJjZUxlbmd0aCc6IGVtYmVkZGVkU291cmNl
TGVuZ3RoLAorICAgICAgICAgICAgJ2NhbkNvbnN0cnVjdCc6IGNvbnN0cnVjdEFiaWxpdHkKKyAg
ICAgICAgfQorCisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCJjb25z
dCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc18lKGNvZGVOYW1lKXNDb25zdHJ1Y3RBYmlsaXR5ID0g
SlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjolKGNhbkNvbnN0cnVjdClzOyIgJSBhcmdzKTsKKyAgICAg
ICAgbGluZXMuYXBwZW5kKCJjb25zdCBpbnQgc18lKGNvZGVOYW1lKXNMZW5ndGggPSAlKGVtYmVk
ZGVkU291cmNlTGVuZ3RoKWQ7IiAlIGFyZ3MpOworICAgICAgICBsaW5lcy5hcHBlbmQoImNvbnN0
IGNoYXIqIHNfJShjb2RlTmFtZSlzID1cbiUoZW1iZWRkZWRTb3VyY2Upc1xuOyIgJSBhcmdzKTsK
KyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKKworICAgICMgSGVscGVyIG1ldGhvZHMu
CisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIG1hbmdsZWROYW1lRm9yRnVuY3Rpb24oZnVu
Y3Rpb24pOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmdW5jdGlvbiwgQnVpbHRpbkZ1bmN0
aW9uKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiSW52YWxpZCBhcmd1bWVudCBwYXNz
ZWQgdG8gbWFuZ2xlZE5hbWVGb3JGdW5jdGlvbigpIikKKworICAgICAgICBvYmplY3RfbmFtZSA9
IGZ1bmN0aW9uLm9iamVjdC5vYmplY3RfbmFtZQorICAgICAgICBtYW5nbGVkX25hbWUgPSAiJXMl
cyIgJSAoV0tfbGNmaXJzdChvYmplY3RfbmFtZSksIFdLX3VjZmlyc3QoZnVuY3Rpb24uZnVuY3Rp
b25fbmFtZSkpCisKKyAgICAgICAgZGVmIHRvQ2FtZWwobWF0Y2gpOgorICAgICAgICAgICAgc3Ry
ID0gbWF0Y2guZ3JvdXAoMCkKKyAgICAgICAgICAgIHJldHVybiBzdHJbMV0udXBwZXIoKQorICAg
ICAgICBtYW5nbGVkX25hbWUgPSByZS5zdWIocidcLlthLXpdJywgdG9DYW1lbCwgbWFuZ2xlZF9u
YW1lLCBmbGFncz1yZS5JR05PUkVDQVNFKQorICAgICAgICBpZiBmdW5jdGlvbi5pc19jb25zdHJ1
Y3RvcjoKKyAgICAgICAgICAgIG1hbmdsZWRfbmFtZSA9IG1hbmdsZWRfbmFtZSArICJDb25zdHJ1
Y3RvciIKKyAgICAgICAgcmV0dXJuIG1hbmdsZWRfbmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19tb2RlbC5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iNWQ0YmRlNjRkNmJhNmNkMWQwNzM1M2Q0ZjJiZDVlYTE0NTBhYTNmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNf
bW9kZWwucHkKQEAgLTAsMCArMSwyMzMgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBD
b3B5cmlnaHQgKGMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9y
dCByZQoraW1wb3J0IG9zCisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwnKQorCitf
RlJBTUVXT1JLX0NPTkZJR19NQVAgPSB7CisgICAgIkphdmFTY3JpcHRDb3JlIjogeworICAgICAg
ICAibWFjcm9fcHJlZml4IjogIkpTQyIsCisgICAgICAgICJuYW1lc3BhY2UiOiAiSlNDIiwKKyAg
ICB9LAorICAgICJXZWJDb3JlIjogeworICAgICAgICAibWFjcm9fcHJlZml4IjogIldFQkNPUkUi
LAorICAgICAgICAibmFtZXNwYWNlIjogIldlYkNvcmUiLAorICAgIH0sCit9CisKK2Z1bmN0aW9u
SGVhZFJlZ0V4cCA9IHJlLmNvbXBpbGUociIoPzpmdW5jdGlvbnxjb25zdHJ1Y3Rvcilccytcdytc
cypcKC4qP1wpIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uTmFtZVJlZ0V4cCA9IHJl
LmNvbXBpbGUociIoPzpmdW5jdGlvbnxjb25zdHJ1Y3RvcilccysoXHcrKVxzKlwoIiwgcmUuTVVM
VElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uSXNDb25zdHJ1Y3RvclJlZ0V4cCA9IHJlLmNvbXBpbGUo
ciJeY29uc3RydWN0b3IiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25QYXJhbWV0ZXJG
aW5kZXIgPSByZS5jb21waWxlKHIiXig/OmZ1bmN0aW9ufGNvbnN0cnVjdG9yKVxzKyg/Olx3Kylc
cypcKCgoPzpccypcdyspP1xzKig/OlxzKixccypcdyspKik/XHMqXCkiLCByZS5NVUxUSUxJTkUg
fCByZS5TKQorCittdWx0aWxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXCouKj9c
KlwvIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK3NpbmdsZUxpbmVDb21tZW50UmVnRXhwID0gcmUu
Y29tcGlsZShyIlwvXC8uKj9cbiIsIHJlLk1VTFRJTElORSB8IHJlLlMpCisKKworY2xhc3MgUGFy
c2VFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICBwYXNzCisKKworY2xhc3MgRnJhbWV3b3JrOgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgc2VsZi5fc2V0dGluZ3MgPSBf
RlJBTUVXT1JLX0NPTkZJR19NQVBbbmFtZV0KKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisg
ICAgZGVmIHNldHRpbmcoc2VsZiwga2V5LCBkZWZhdWx0PScnKToKKyAgICAgICAgcmV0dXJuIHNl
bGYuX3NldHRpbmdzLmdldChrZXksIGRlZmF1bHQpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAg
ZGVmIGZyb21TdHJpbmcoZnJhbWV3b3JrU3RyaW5nKToKKyAgICAgICAgaWYgZnJhbWV3b3JrU3Ry
aW5nID09ICJKYXZhU2NyaXB0Q29yZSI6CisgICAgICAgICAgICByZXR1cm4gRnJhbWV3b3Jrcy5K
YXZhU2NyaXB0Q29yZQorCisgICAgICAgIGlmIGZyYW1ld29ya1N0cmluZyA9PSAiV2ViQ29yZSI6
CisgICAgICAgICAgICByZXR1cm4gRnJhbWV3b3Jrcy5XZWJDb3JlCisKKyAgICAgICAgcmFpc2Ug
UGFyc2VFeGNlcHRpb24oIlVua25vd24gZnJhbWV3b3JrOiAlcyIgJSBmcmFtZXdvcmtTdHJpbmcp
CisKKworY2xhc3MgRnJhbWV3b3JrczoKKyAgICBKYXZhU2NyaXB0Q29yZSA9IEZyYW1ld29yaygi
SmF2YVNjcmlwdENvcmUiKQorICAgIFdlYkNvcmUgPSBGcmFtZXdvcmsoIldlYkNvcmUiKQorCisK
K2NsYXNzIEJ1aWx0aW5PYmplY3Q6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9iamVjdF9uYW1l
LCBmdW5jdGlvbnMpOgorICAgICAgICBzZWxmLm9iamVjdF9uYW1lID0gb2JqZWN0X25hbWUKKyAg
ICAgICAgc2VsZi5mdW5jdGlvbnMgPSBmdW5jdGlvbnMKKyAgICAgICAgc2VsZi5jb2xsZWN0aW9u
ID0gTm9uZSAgIyBTZXQgYnkgdGhlIG93bmluZyBCdWlsdGluc0NvbGxlY3Rpb24KKworICAgICAg
ICBmb3IgZnVuY3Rpb24gaW4gc2VsZi5mdW5jdGlvbnM6CisgICAgICAgICAgICBmdW5jdGlvbi5v
YmplY3QgPSBzZWxmCisKKworY2xhc3MgQnVpbHRpbkZ1bmN0aW9uOgorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBmdW5jdGlvbl9uYW1lLCBmdW5jdGlvbl9zb3VyY2UsIGlzX2NvbnN0cnVjdG9yLCBw
YXJhbWV0ZXJzKToKKyAgICAgICAgc2VsZi5mdW5jdGlvbl9uYW1lID0gZnVuY3Rpb25fbmFtZQor
ICAgICAgICBzZWxmLmZ1bmN0aW9uX3NvdXJjZSA9IGZ1bmN0aW9uX3NvdXJjZQorICAgICAgICBz
ZWxmLmlzX2NvbnN0cnVjdG9yID0gaXNfY29uc3RydWN0b3IKKyAgICAgICAgc2VsZi5wYXJhbWV0
ZXJzID0gcGFyYW1ldGVycworICAgICAgICBzZWxmLm9iamVjdCA9IE5vbmUgICMgU2V0IGJ5IHRo
ZSBvd25pbmcgQnVpbHRpbk9iamVjdAorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBmcm9t
U3RyaW5nKGZ1bmN0aW9uX3N0cmluZyk6CisgICAgICAgIGZ1bmN0aW9uX3NvdXJjZSA9IG11bHRp
bGluZUNvbW1lbnRSZWdFeHAuc3ViKCIiLCBmdW5jdGlvbl9zdHJpbmcpCisgICAgICAgIGZ1bmN0
aW9uX25hbWUgPSBmdW5jdGlvbk5hbWVSZWdFeHAuZmluZGFsbChmdW5jdGlvbl9zb3VyY2UpWzBd
CisgICAgICAgIGlzX2NvbnN0cnVjdG9yID0gZnVuY3Rpb25Jc0NvbnN0cnVjdG9yUmVnRXhwLm1h
dGNoKGZ1bmN0aW9uX3NvdXJjZSkgIT0gTm9uZQorICAgICAgICBwYXJhbWV0ZXJzID0gW3Muc3Ry
aXAoKSBmb3IgcyBpbiBmdW5jdGlvblBhcmFtZXRlckZpbmRlci5maW5kYWxsKGZ1bmN0aW9uX3Nv
dXJjZSlbMF0uc3BsaXQoJywnKV0KKyAgICAgICAgaWYgbGVuKHBhcmFtZXRlcnNbMF0pID09IDA6
CisgICAgICAgICAgICBwYXJhbWV0ZXJzID0gW10KKworICAgICAgICByZXR1cm4gQnVpbHRpbkZ1
bmN0aW9uKGZ1bmN0aW9uX25hbWUsIGZ1bmN0aW9uX3NvdXJjZSwgaXNfY29uc3RydWN0b3IsIHBh
cmFtZXRlcnMpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgaW50ZXJmYWNlID0g
IiVzKCVzKSIgJSAoc2VsZi5mdW5jdGlvbl9uYW1lLCAnLCAnLmpvaW4oc2VsZi5wYXJhbWV0ZXJz
KSkKKyAgICAgICAgaWYgc2VsZi5pc19jb25zdHJ1Y3RvcjoKKyAgICAgICAgICAgIGludGVyZmFj
ZSA9IGludGVyZmFjZSArICIgW0NvbnN0cnVjdG9yXSIKKworICAgICAgICByZXR1cm4gaW50ZXJm
YWNlCisKKworY2xhc3MgQnVpbHRpbnNDb2xsZWN0aW9uOgorICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBmcmFtZXdvcmtfbmFtZSk6CisgICAgICAgIHNlbGYuX2NvcHlyaWdodF9saW5lcyA9IHNldCgp
CisgICAgICAgIHNlbGYub2JqZWN0cyA9IFtdCisgICAgICAgIHNlbGYuZnJhbWV3b3JrID0gRnJh
bWV3b3JrLmZyb21TdHJpbmcoZnJhbWV3b3JrX25hbWUpCisgICAgICAgIGxvZy5kZWJ1ZygiQ3Jl
YXRlZCBuZXcgQnVpbHRpbnMgY29sbGVjdGlvbi4iKQorCisgICAgZGVmIHBhcnNlX2J1aWx0aW5z
X2ZpbGUoc2VsZiwgZmlsZW5hbWUsIHRleHQpOgorICAgICAgICBsb2cuZGVidWcoIlBhcnNpbmcg
YnVpbHRpbnMgZmlsZTogJXMiICUgZmlsZW5hbWUpCisKKyAgICAgICAgcGFyc2VkX2NvcHlyaWdo
dHMgPSBzZXQoc2VsZi5fcGFyc2VfY29weXJpZ2h0X2xpbmVzKHRleHQpKQorICAgICAgICBzZWxm
Ll9jb3B5cmlnaHRfbGluZXMgPSBzZWxmLl9jb3B5cmlnaHRfbGluZXMudW5pb24ocGFyc2VkX2Nv
cHlyaWdodHMpCisKKyAgICAgICAgbG9nLmRlYnVnKCJGb3VuZCBjb3B5cmlnaHQgbGluZXM6IikK
KyAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5fY29weXJpZ2h0X2xpbmVzOgorICAgICAgICAgICAg
bG9nLmRlYnVnKGxpbmUpCisgICAgICAgIGxvZy5kZWJ1ZygiIikKKworICAgICAgICBvYmplY3Rf
bmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKSkK
KyAgICAgICAgbG9nLmRlYnVnKCJQYXJzaW5nIG9iamVjdDogJXMiICUgb2JqZWN0X25hbWUpCisK
KyAgICAgICAgcGFyc2VkX2Z1bmN0aW9ucyA9IHNlbGYuX3BhcnNlX2Z1bmN0aW9ucyh0ZXh0KQor
ICAgICAgICBmb3IgZnVuY3Rpb24gaW4gcGFyc2VkX2Z1bmN0aW9uczoKKyAgICAgICAgICAgIGZ1
bmN0aW9uLm9iamVjdCA9IG9iamVjdF9uYW1lCisKKyAgICAgICAgbG9nLmRlYnVnKCJQYXJzZWQg
ZnVuY3Rpb25zOiIpCisgICAgICAgIGZvciBmdW5jIGluIHBhcnNlZF9mdW5jdGlvbnM6CisgICAg
ICAgICAgICBsb2cuZGVidWcoZnVuYykKKyAgICAgICAgbG9nLmRlYnVnKCIiKQorCisgICAgICAg
IG5ld19vYmplY3QgPSBCdWlsdGluT2JqZWN0KG9iamVjdF9uYW1lLCBwYXJzZWRfZnVuY3Rpb25z
KQorICAgICAgICBuZXdfb2JqZWN0LmNvbGxlY3Rpb24gPSBzZWxmCisgICAgICAgIHNlbGYub2Jq
ZWN0cy5hcHBlbmQobmV3X29iamVjdCkKKworICAgIGRlZiBjb3B5cmlnaHRzKHNlbGYpOgorICAg
ICAgICBvd25lcl90b195ZWFycyA9IGRpY3QoKQorICAgICAgICBjb3B5cmlnaHRZZWFyUmVnRXhw
ID0gcmUuY29tcGlsZShyIihcZHs0fSlbLCBdezAsMn0iKQorICAgICAgICBvd25lclN0YXJ0UmVn
RXhwID0gcmUuY29tcGlsZShyIlteXGQsIF0iKQorCisgICAgICAgICMgUmV0dXJucyBkZWR1cGxp
Y2F0ZWQgY29weXJpZ2h0cyBrZXllZCBvbiB0aGUgb3duZXIuCisgICAgICAgIGZvciBsaW5lIGlu
IHNlbGYuX2NvcHlyaWdodF9saW5lczoKKyAgICAgICAgICAgIHllYXJzID0gc2V0KGNvcHlyaWdo
dFllYXJSZWdFeHAuZmluZGFsbChsaW5lKSkKKyAgICAgICAgICAgIG93bmVySW5kZXggPSBvd25l
clN0YXJ0UmVnRXhwLnNlYXJjaChsaW5lKS5zdGFydCgpCisgICAgICAgICAgICBvd25lciA9IGxp
bmVbb3duZXJJbmRleDpdCisgICAgICAgICAgICBsb2cuZGVidWcoIkZvdW5kIHllYXJzOiAlcyBh
bmQgb3duZXI6ICVzIiAlICh5ZWFycywgb3duZXIpKQorICAgICAgICAgICAgaWYgb3duZXIgbm90
IGluIG93bmVyX3RvX3llYXJzOgorICAgICAgICAgICAgICAgIG93bmVyX3RvX3llYXJzW293bmVy
XSA9IHNldCgpCisKKyAgICAgICAgICAgIG93bmVyX3RvX3llYXJzW293bmVyXSA9IG93bmVyX3Rv
X3llYXJzW293bmVyXS51bmlvbih5ZWFycykKKworICAgICAgICByZXN1bHQgPSBbXQorCisgICAg
ICAgIGZvciBvd25lciwgeWVhcnMgaW4gb3duZXJfdG9feWVhcnMuaXRlbXMoKToKKyAgICAgICAg
ICAgIHNvcnRlZF95ZWFycyA9IGxpc3QoeWVhcnMpCisgICAgICAgICAgICBzb3J0ZWRfeWVhcnMu
c29ydCgpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIlcyAlcyIgJSAoJywgJy5qb2luKHNv
cnRlZF95ZWFycyksIG93bmVyKSkKKworICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYg
YWxsX2Z1bmN0aW9ucyhzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gW10KKyAgICAgICAgZm9yIG9i
amVjdCBpbiBzZWxmLm9iamVjdHM6CisgICAgICAgICAgICByZXN1bHQuZXh0ZW5kKG9iamVjdC5m
dW5jdGlvbnMpCisKKyAgICAgICAgcmVzdWx0LnNvcnQoKQorICAgICAgICByZXR1cm4gcmVzdWx0
CisKKyAgICAjIFByaXZhdGUgbWV0aG9kcy4KKworICAgIGRlZiBfcGFyc2VfY29weXJpZ2h0X2xp
bmVzKHNlbGYsIHRleHQpOgorICAgICAgICBsaWNlbnNlQmxvY2sgPSBtdWx0aWxpbmVDb21tZW50
UmVnRXhwLmZpbmRhbGwodGV4dClbMF0KKyAgICAgICAgbGljZW5zZUJsb2NrID0gbGljZW5zZUJs
b2NrWzpsaWNlbnNlQmxvY2suaW5kZXgoIlJlZGlzdHJpYnV0aW9uIildCisKKyAgICAgICAgY29w
eXJpZ2h0TGluZXMgPSBbXQorICAgICAgICBmb3IgbGluZSBpbiBsaWNlbnNlQmxvY2suc3BsaXQo
IlxuIik6CisgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIvKiIsICIiKQorICAgICAg
ICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKi8iLCAiIikKKyAgICAgICAgICAgIGxpbmUgPSBs
aW5lLnJlcGxhY2UoIioiLCAiIikKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIkNv
cHlyaWdodCIsICIiKQorICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiY29weXJpZ2h0
IiwgIiIpCisgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIoQykiLCAiIikKKyAgICAg
ICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIihjKSIsICIiKQorICAgICAgICAgICAgbGluZSA9
IGxpbmUuc3RyaXAoKQorCisgICAgICAgICAgICBpZiBsZW4obGluZSkgPT0gMDoKKyAgICAgICAg
ICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBjb3B5cmlnaHRMaW5lcy5hcHBlbmQobGlu
ZSkKKworICAgICAgICByZXR1cm4gY29weXJpZ2h0TGluZXMKKworICAgIGRlZiBfcGFyc2VfZnVu
Y3Rpb25zKHNlbGYsIHRleHQpOgorICAgICAgICB0ZXh0ID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4
cC5zdWIoIi8qKi8iLCBzaW5nbGVMaW5lQ29tbWVudFJlZ0V4cC5zdWIoIi8vXG4iLCB0ZXh0KSkK
KworICAgICAgICBtYXRjaGVzID0gW2Z1bmMgZm9yIGZ1bmMgaW4gZnVuY3Rpb25IZWFkUmVnRXhw
LmZpbmRpdGVyKHRleHQpXQorICAgICAgICBmdW5jdGlvbkJvdW5kcyA9IFtdCisgICAgICAgIHN0
YXJ0ID0gMAorICAgICAgICBlbmQgPSAwCisgICAgICAgIGZvciBtYXRjaCBpbiBtYXRjaGVzOgor
ICAgICAgICAgICAgc3RhcnQgPSBtYXRjaC5zdGFydCgpCisgICAgICAgICAgICBpZiBzdGFydCA8
IGVuZDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZW5kID0gbWF0Y2gu
ZW5kKCkKKyAgICAgICAgICAgIHdoaWxlIHRleHRbZW5kXSAhPSAneyc6CisgICAgICAgICAgICAg
ICAgZW5kID0gZW5kICsgMQorICAgICAgICAgICAgZGVwdGggPSAxCisgICAgICAgICAgICBlbmQg
PSBlbmQgKyAxCisgICAgICAgICAgICB3aGlsZSBkZXB0aCA+IDA6CisgICAgICAgICAgICAgICAg
aWYgdGV4dFtlbmRdID09ICd7JzoKKyAgICAgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCAr
IDEKKyAgICAgICAgICAgICAgICBlbGlmIHRleHRbZW5kXSA9PSAnfSc6CisgICAgICAgICAgICAg
ICAgICAgIGRlcHRoID0gZGVwdGggLSAxCisgICAgICAgICAgICAgICAgZW5kID0gZW5kICsgMQor
ICAgICAgICAgICAgZnVuY3Rpb25Cb3VuZHMuYXBwZW5kKChzdGFydCwgZW5kKSkKKworICAgICAg
ICBmdW5jdGlvblN0cmluZ3MgPSBbdGV4dFtzdGFydDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwg
ZW5kKSBpbiBmdW5jdGlvbkJvdW5kc10KKyAgICAgICAgcmV0dXJuIG1hcChCdWlsdGluRnVuY3Rp
b24uZnJvbVN0cmluZywgZnVuY3Rpb25TdHJpbmdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI1ZWRmNjU2ZWEyY2VhNGQwZDRmMWY2OTI1ZDM0YThlMTBhZjNkODMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWls
dGluc190ZW1wbGF0ZXMucHkKQEAgLTAsMCArMSwyMTkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBCdWlsdGlu
cyBnZW5lcmF0b3IgdGVtcGxhdGVzLCB3aGljaCBjYW4gYmUgZmlsbGVkIHdpdGggc3RyaW5nLlRl
bXBsYXRlLgorCisKK2NsYXNzIEJ1aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVzOgorCisgICAgTGlj
ZW5zZVRleHQgPSAoCisgICAgIiIiUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKK2FyZSBtZXQ6CisxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKK0FORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCitCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCitDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCitJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKK0FSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKK1RIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyIiIikKKworICAgIERvTm90RWRpdFdhcm5pbmcgPSAoCisgICAg
IiIiLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRl
ZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weSIiIikK
KworICAgIEhlYWRlckluY2x1ZGVHdWFyZFRvcCA9ICgKKyAgICAiIiIjaWZuZGVmICR7aGVhZGVy
R3VhcmR9CisjZGVmaW5lICR7aGVhZGVyR3VhcmR9IiIiKQorCisgICAgSGVhZGVySW5jbHVkZUd1
YXJkQm90dG9tID0gKAorICAgICIiIiNlbmRpZiAvLyAke2hlYWRlckd1YXJkfQorIiIiKQorCisg
ICAgTmFtZXNwYWNlVG9wID0gKAorICAgICIiIm5hbWVzcGFjZSAke25hbWVzcGFjZX0geyIiIikK
KworICAgIE5hbWVzcGFjZUJvdHRvbSA9ICgKKyAgICAiIiJ9IC8vIG5hbWVzcGFjZSAke25hbWVz
cGFjZX0iIiIpCisKKyAgICBDb21iaW5lZEhlYWRlclN0YXRpY01hY3JvcyA9ICgKKyAgICAiIiIj
ZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwg
YXJndW1lbnRDb3VudCkgXFwKKyAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUj
I0dlbmVyYXRvcihKU0M6OlZNJik7CisKKyR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9D
T0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dF
TkVSQVRPUgorCisjZGVmaW5lICR7bWFjcm9QcmVmaXh9X0JVSUxUSU5fRVhJU1RTKG9iamVjdCwg
ZnVuYykgZGVmaW5lZCAke21hY3JvUHJlZml4fV9CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBm
dW5jIiIiKQorCisgICAgU2VwYXJhdGVIZWFkZXJTdGF0aWNNYWNyb3MgPSAoCisgICAgIiIiI2Rl
ZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFy
Z3VtZW50Q291bnQpIFxcCisgICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNH
ZW5lcmF0b3IoSlNDOjpWTSYpOworCiske21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TmFt
ZX1fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVDTEFS
RV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lICR7bWFjcm9QcmVmaXh9X0JVSUxUSU5fJHtv
YmplY3ROYW1lfV9FWElTVFMob2JqZWN0LCBmdW5jKSBkZWZpbmVkICR7bWFjcm9QcmVmaXh9X0JV
SUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMiIiIpCisKKyAgICBDb21iaW5lZEpTQ0ltcGxl
bWVudGF0aW9uU3RhdGljTWFjcm9zID0gKAorICAgICIiIgorI2RlZmluZSBERUZJTkVfQlVJTFRJ
Tl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKK0pT
Qzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBc
XAore1xcCisgICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhl
Y3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1Nv
dXJjZSgpKTsgXAorfQorJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5F
X0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgorIiIi
KQorCisgICAgU2VwYXJhdGVKU0NJbXBsZW1lbnRhdGlvblN0YXRpY01hY3JvcyA9ICgKKyAgICAi
IiIKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5h
bWUsIGFyZ3VtZW50Q291bnQpIFxcCitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUj
I0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKK3tcXAorICAgIHJldHVybiB2bS5idWlsdGluRXhl
Y3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4
ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IFwKK30KKyR7bWFjcm9QcmVmaXh9X0ZP
UkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRP
UikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKyIiIikKKworICAgIENvbWJpbmVk
V2ViQ29yZUltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9zID0gKAorICAgICAgICAiIiIKKyNkZWZp
bmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3Vt
ZW50Q291bnQpIFxcCitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRv
cihKU0M6OlZNJiB2bSkgXFwKK3tcXAorICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0g
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXFwKKyAgICByZXR1
cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5z
KCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1
bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpKTsg
XFwKK30KKyR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElO
X0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKyIiIikKKworICAg
IFNlcGFyYXRlV2ViQ29yZUltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9zID0gKAorICAgICAgICAi
IiIKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5h
bWUsIGFyZ3VtZW50Q291bnQpIFxcCitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUj
I0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKK3tcXAorICAgIEpTVk1DbGllbnREYXRhKiBjbGll
bnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXFwK
KyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxD
fUJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+
YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI1Nv
dXJjZSgpKTsgXFwKK30KKyR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJ
TFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJ
Tl9HRU5FUkFUT1IKKyIiIikKKworICAgIFNlcGFyYXRlV3JhcHBlckhlYWRlckJvaWxlcnBsYXRl
ID0gKAorICAgICIiImNsYXNzICR7b2JqZWN0TmFtZX1CdWlsdGluc1dyYXBwZXIgOiBwcml2YXRl
IEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCAke29iamVjdE5h
bWV9QnVpbHRpbnNXcmFwcGVyKEpTQzo6Vk0qIHZtKQorICAgICAgICA6IG1fdm0oKnZtKQorICAg
ICAgICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fRlVOQ1RJ
T05fTkFNRShJTklUSUFMSVpFX0JVSUxUSU5fTkFNRVMpCisjZGVmaW5lIElOSVRJQUxJWkVfQlVJ
TFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgLCBtXyMjbmFt
ZSMjU291cmNlKEpTQzo6bWFrZVNvdXJjZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChz
XyMjbmFtZSwgbGVuZ3RoKSkpCisgICAgICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmpl
Y3RNYWNyb31fQlVJTFRJTl9DT0RFKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykK
KyN1bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKKyAgICB7CisgICAgfQor
CisjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwg
bGVuZ3RoKSBcXAorICAgIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4
ZWN1dGFibGUoKTsgXFwKKyAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KKyAgICAke21hY3JvUHJlZml4fV9G
T1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShFWFBPU0VfQlVJTFRJTl9FWEVDVVRB
QkxFUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUworCisgICAgJHttYWNyb1By
ZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFS
RV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCisKKyAgICB2b2lkIGV4cG9ydE5hbWVzKCk7
CisKK3ByaXZhdGU6CisgICAgSlNDOjpWTSYgbV92bTsKKworICAgICR7bWFjcm9QcmVmaXh9X0ZP
UkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJ
Tl9OQU1FUykKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwg
ZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFxcCisgICAgSlNDOjpTb3VyY2VDb2RlIG1fIyNuYW1lIyNT
b3VyY2U7XFwKKyAgICBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4g
bV8jI25hbWUjI0V4ZWN1dGFibGU7CisgICAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVj
dE1hY3JvfV9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3Vu
ZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworCit9OworCisjZGVmaW5lIERFRklO
RV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcXAoraW5s
aW5lIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqICR7b2JqZWN0TmFtZX1CdWlsdGlu
c1dyYXBwZXI6Om5hbWUjI0V4ZWN1dGFibGUoKSBcXAore1xcCisgICAgaWYgKCFtXyMjbmFtZSMj
RXhlY3V0YWJsZSlcXAorICAgICAgICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9IEpTQzo6V2VhazxK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPihKU0M6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRh
YmxlKG1fdm0sIG1fIyNuYW1lIyNTb3VyY2UsIGZ1bmN0aW9uTmFtZSMjUHVibGljTmFtZSgpLCBz
XyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0eSksIHRoaXMsICZtXyMjbmFtZSMjRXhlY3V0YWJsZSk7
XFwKKyAgICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7XFwKK30KKyR7bWFjcm9Q
cmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElO
X0VYRUNVVEFCTEVTKQorI3VuZGVmIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTCisKK2lubGlu
ZSB2b2lkICR7b2JqZWN0TmFtZX1CdWlsdGluc1dyYXBwZXI6OmV4cG9ydE5hbWVzKCkKK3sKKyNk
ZWZpbmUgRVhQT1JUX0ZVTkNUSU9OX05BTUUobmFtZSkgbV92bS5wcm9wZXJ0eU5hbWVzLT5hcHBl
bmRFeHRlcm5hbE5hbWUobmFtZSMjUHVibGljTmFtZSgpLCBuYW1lIyNQcml2YXRlTmFtZSgpKTsK
KyAgICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fRlVOQ1RJ
T05fTkFNRShFWFBPUlRfRlVOQ1RJT05fTkFNRSkKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT05fTkFN
RQorfQorCitjbGFzcyAke29iamVjdE5hbWV9QnVpbHRpbkZ1bmN0aW9ucyB7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgJHtvYmplY3ROYW1lfUJ1aWx0aW5GdW5jdGlvbnMoSlNDOjpWTSYgdm0pIDog
bV92bSh2bSkgeyB9CisKKyAgICB2b2lkIGluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYpOworICAg
IHZvaWQgdmlzaXQoSlNDOjpTbG90VmlzaXRvciYpOworCitwdWJsaWM6CisgICAgSlNDOjpWTSYg
bV92bTsKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMoZnVuY3Rpb25O
YW1lKSBcXAorICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNGdW5jdGlvbj4gbV8jI2Z1bmN0
aW9uTmFtZSMjRnVuY3Rpb247CisgICAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1h
Y3JvfV9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJT
KQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworfTsKKworaW5saW5lIHZv
aWQgJHtvYmplY3ROYW1lfUJ1aWx0aW5GdW5jdGlvbnM6OmluaXQoSlNDOjpKU0dsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQoreworI2RlZmluZSBFWFBPUlRfRlVOQ1RJT04oY29kZU5hbWUsIGZ1
bmN0aW9uTmFtZSwgbGVuZ3RoKVxcCisgICAgbV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb24uc2V0
KG1fdm0sICZnbG9iYWxPYmplY3QsIEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0
aW9uKG1fdm0sIGNvZGVOYW1lIyNHZW5lcmF0b3IobV92bSksICZnbG9iYWxPYmplY3QpKTsKKyAg
ICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShFWFBP
UlRfRlVOQ1RJT04pCisjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OCit9CisKK2lubGluZSB2b2lkICR7
b2JqZWN0TmFtZX1CdWlsdGluRnVuY3Rpb25zOjp2aXNpdChKU0M6OlNsb3RWaXNpdG9yJiB2aXNp
dG9yKQoreworI2RlZmluZSBWSVNJVF9GVU5DVElPTihuYW1lKSB2aXNpdG9yLmFwcGVuZCgmbV8j
I25hbWUjI0Z1bmN0aW9uKTsKKyAgICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFj
cm99X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShWSVNJVF9GVU5DVElPTikKKyN1bmRlZiBWSVNJVF9G
VU5DVElPTgorfQorIiIiKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvYnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaGVhZGVyLnB5IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmlu
ZWRfaGVhZGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwODlmZGY1OWEyYmFlOTYxNWU5OGE4YTZlMmNjMjk4
MDQ5M2U2MTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9oZWFkZXIucHkKQEAgLTAsMCAr
MSwxNjIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIw
MTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitpbXBvcnQgbG9nZ2luZworaW1w
b3J0IHJlCitpbXBvcnQgc3RyaW5nCitmcm9tIHN0cmluZyBpbXBvcnQgVGVtcGxhdGUKKworZnJv
bSBidWlsdGluc19nZW5lcmF0b3IgaW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9yCitmcm9tIGJ1aWx0
aW5zX3RlbXBsYXRlcyBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3JUZW1wbGF0ZXMgYXMgVGVtcGxh
dGVzCisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwnKQorCisKK2NsYXNzIEJ1aWx0
aW5zQ29tYmluZWRIZWFkZXJHZW5lcmF0b3IoQnVpbHRpbnNHZW5lcmF0b3IpOgorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBtb2RlbCk6CisgICAgICAgIEJ1aWx0aW5zR2VuZXJhdG9yLl9faW5pdF9f
KHNlbGYsIG1vZGVsKQorCisgICAgZGVmIG91dHB1dF9maWxlbmFtZShzZWxmKToKKyAgICAgICAg
cmV0dXJuICIlc0J1aWx0aW5zLmgiICUgc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdu
YW1lc3BhY2UnKQorCisgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKKyAgICAgICAgYXJn
cyA9IHsKKyAgICAgICAgICAgICduYW1lc3BhY2UnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNl
dHRpbmcoJ25hbWVzcGFjZScpLAorICAgICAgICAgICAgJ2hlYWRlckd1YXJkJzogc2VsZi5vdXRw
dXRfZmlsZW5hbWUoKS5yZXBsYWNlKCcuJywgJ18nKSwKKyAgICAgICAgICAgICdtYWNyb1ByZWZp
eCc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbWFjcm9fcHJlZml4JyksCisgICAg
ICAgIH0KKworICAgICAgICBzZWN0aW9ucyA9IFtdCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChz
ZWxmLmdlbmVyYXRlX2xpY2Vuc2UoKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRl
KFRlbXBsYXRlcy5Eb05vdEVkaXRXYXJuaW5nKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBz
ZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkhlYWRlckluY2x1ZGVHdWFyZFRvcCku
c3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVf
Zm9yd2FyZF9kZWNsYXJhdGlvbnMoKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRl
KFRlbXBsYXRlcy5OYW1lc3BhY2VUb3ApLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIGZvciBv
YmplY3QgaW4gc2VsZi5tb2RlbCgpLm9iamVjdHM6CisgICAgICAgICAgICBzZWN0aW9ucy5hcHBl
bmQoc2VsZi5nZW5lcmF0ZV9zZWN0aW9uX2Zvcl9vYmplY3Qob2JqZWN0KSkKKyAgICAgICAgc2Vj
dGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV90YWJsZV9tYWNybygp
KQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2Rl
X25hbWVfbWFjcm8oKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRl
cy5Db21iaW5lZEhlYWRlclN0YXRpY01hY3Jvcykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAg
c2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VCb3R0b20pLnN1YnN0
aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMu
SGVhZGVySW5jbHVkZUd1YXJkQm90dG9tKS5zdWJzdGl0dXRlKGFyZ3MpKQorCisgICAgICAgIHJl
dHVybiAiXG5cbiIuam9pbihzZWN0aW9ucykKKworICAgIGRlZiBnZW5lcmF0ZV9mb3J3YXJkX2Rl
Y2xhcmF0aW9ucyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIiIm5hbWVzcGFjZSBKU0MgeworY2xh
c3MgRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgVk07CisKK2VudW0gY2xhc3MgQ29uc3RydWN0
QWJpbGl0eSA6IHVuc2lnbmVkOworfSIiIgorCisgICAgZGVmIGdlbmVyYXRlX3NlY3Rpb25fZm9y
X29iamVjdChzZWxmLCBvYmplY3QpOgorICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxpbmVz
LmFwcGVuZCgnLyogJXMgKi8nICUgb2JqZWN0Lm9iamVjdF9uYW1lKQorICAgICAgICBsaW5lcy5l
eHRlbmQoc2VsZi5nZW5lcmF0ZV9leHRlcm5zX2Zvcl9vYmplY3Qob2JqZWN0KSkKKyAgICAgICAg
bGluZXMuYXBwZW5kKCIiKQorICAgICAgICBsaW5lcy5leHRlbmQoc2VsZi5nZW5lcmF0ZV9tYWNy
b3NfZm9yX29iamVjdChvYmplY3QpKQorICAgICAgICBsaW5lcy5hcHBlbmQoIiIpCisgICAgICAg
IGxpbmVzLmV4dGVuZChzZWxmLmdlbmVyYXRlX2RlZmluZXNfZm9yX29iamVjdChvYmplY3QpKQor
ICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQorCisgICAgZGVmIGdlbmVyYXRlX2V4dGVy
bnNfZm9yX29iamVjdChzZWxmLCBvYmplY3QpOgorICAgICAgICBsaW5lcyA9IFtdCisKKyAgICAg
ICAgZm9yIGZ1bmN0aW9uIGluIG9iamVjdC5mdW5jdGlvbnM6CisgICAgICAgICAgICBmdW5jdGlv
bl9hcmdzID0geworICAgICAgICAgICAgICAgICdjb2RlTmFtZSc6IEJ1aWx0aW5zR2VuZXJhdG9y
Lm1hbmdsZWROYW1lRm9yRnVuY3Rpb24oZnVuY3Rpb24pICsgJ0NvZGUnLAorICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiIiZXh0ZXJuIGNvbnN0IGNoYXIqIHNfJShj
b2RlTmFtZSlzOworZXh0ZXJuIGNvbnN0IGludCBzXyUoY29kZU5hbWUpc0xlbmd0aDsKK2V4dGVy
biBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc18lKGNvZGVOYW1lKXNDb25zdHJ1Y3RBYmls
aXR5OyIiIiAlIGZ1bmN0aW9uX2FyZ3MpCisKKyAgICAgICAgcmV0dXJuIGxpbmVzCisKKyAgICBk
ZWYgZ2VuZXJhdGVfbWFjcm9zX2Zvcl9vYmplY3Qoc2VsZiwgb2JqZWN0KToKKyAgICAgICAgYXJn
cyA9IHsKKyAgICAgICAgICAgICdtYWNyb1ByZWZpeCc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsu
c2V0dGluZygnbWFjcm9fcHJlZml4JyksCisgICAgICAgICAgICAnb2JqZWN0TWFjcm8nOiBvYmpl
Y3Qub2JqZWN0X25hbWUucmVwbGFjZSgnLicsICcnKS51cHBlcigpLAorICAgICAgICB9CisKKyAg
ICAgICAgbGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoIiNkZWZpbmUgJShtYWNyb1By
ZWZpeClzX0ZPUkVBQ0hfJShvYmplY3RNYWNybylzX0JVSUxUSU5fREFUQShtYWNybykgXFwiICUg
YXJncykKKyAgICAgICAgZm9yIGZ1bmN0aW9uIGluIG9iamVjdC5mdW5jdGlvbnM6CisgICAgICAg
ICAgICBmdW5jdGlvbl9hcmdzID0geworICAgICAgICAgICAgICAgICdmdW5jTmFtZSc6IGZ1bmN0
aW9uLmZ1bmN0aW9uX25hbWUsCisgICAgICAgICAgICAgICAgJ21hbmdsZWROYW1lJzogQnVpbHRp
bnNHZW5lcmF0b3IubWFuZ2xlZE5hbWVGb3JGdW5jdGlvbihmdW5jdGlvbiksCisgICAgICAgICAg
ICAgICAgJ3BhcmFtQ291bnQnOiBsZW4oZnVuY3Rpb24ucGFyYW1ldGVycyksCisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiICAgIG1hY3JvKCUoZnVuY05hbWUpcywg
JShtYW5nbGVkTmFtZSlzLCAlKHBhcmFtQ291bnQpZCkgXFwiICUgZnVuY3Rpb25fYXJncykKKyAg
ICAgICAgcmV0dXJuIGxpbmVzCisKKyAgICBkZWYgZ2VuZXJhdGVfZGVmaW5lc19mb3Jfb2JqZWN0
KHNlbGYsIG9iamVjdCk6CisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgZm9yIGZ1bmN0aW9u
IGluIG9iamVjdC5mdW5jdGlvbnM6CisgICAgICAgICAgICBhcmdzID0geworICAgICAgICAgICAg
ICAgICdtYWNyb1ByZWZpeCc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbWFjcm9f
cHJlZml4JyksCisgICAgICAgICAgICAgICAgJ29iamVjdE1hY3JvJzogb2JqZWN0Lm9iamVjdF9u
YW1lLnJlcGxhY2UoJy4nLCAnJykudXBwZXIoKSwKKyAgICAgICAgICAgICAgICAnZnVuY3Rpb25N
YWNybyc6IGZ1bmN0aW9uLmZ1bmN0aW9uX25hbWUudXBwZXIoKSwKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGxpbmVzLmFwcGVuZCgiI2RlZmluZSAlKG1hY3JvUHJlZml4KXNfQlVJTFRJTl8l
KG9iamVjdE1hY3JvKXNfJShmdW5jdGlvbk1hY3JvKXMgMSIgJSBhcmdzKQorCisgICAgICAgIHJl
dHVybiBsaW5lcworCisgICAgZGVmIGdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfdGFibGVfbWFj
cm8oc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBz
ZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZpeCcpLAorICAgICAgICB9
CisKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoIiNkZWZpbmUgJSht
YWNyb1ByZWZpeClzX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKG1hY3JvKSBcXCIgJSBhcmdzKQorICAg
ICAgICBmb3IgZnVuY3Rpb24gaW4gc2VsZi5tb2RlbCgpLmFsbF9mdW5jdGlvbnMoKToKKyAgICAg
ICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ2Z1bmNOYW1lJzogZnVu
Y3Rpb24uZnVuY3Rpb25fbmFtZSwKKyAgICAgICAgICAgICAgICAnY29kZU5hbWUnOiBCdWlsdGlu
c0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvckZ1bmN0aW9uKGZ1bmN0aW9uKSArICdDb2RlJywKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIgICAgbWFjcm8oJShjb2Rl
TmFtZSlzLCAlKGZ1bmNOYW1lKXMsIHNfJShjb2RlTmFtZSlzTGVuZ3RoKSBcXCIgJSBmdW5jdGlv
bl9hcmdzKQorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQorCisgICAgZGVmIGdlbmVy
YXRlX3NlY3Rpb25fZm9yX2NvZGVfbmFtZV9tYWNybyhzZWxmKToKKyAgICAgICAgYXJncyA9IHsK
KyAgICAgICAgICAgICdtYWNyb1ByZWZpeCc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGlu
ZygnbWFjcm9fcHJlZml4JyksCisgICAgICAgIH0KKworICAgICAgICBsaW5lcyA9IFtdCisgICAg
ICAgIGxpbmVzLmFwcGVuZCgiI2RlZmluZSAlKG1hY3JvUHJlZml4KXNfRk9SRUFDSF9CVUlMVElO
X0ZVTkNUSU9OX05BTUUobWFjcm8pIFxcIiAlIGFyZ3MpCisgICAgICAgIHVuaXF1ZV9uYW1lcyA9
IGxpc3Qoc2V0KFtmdW5jdGlvbi5mdW5jdGlvbl9uYW1lIGZvciBmdW5jdGlvbiBpbiBzZWxmLm1v
ZGVsKCkuYWxsX2Z1bmN0aW9ucygpXSkpCisgICAgICAgIHVuaXF1ZV9uYW1lcy5zb3J0KCkKKyAg
ICAgICAgZm9yIGZ1bmN0aW9uX25hbWUgaW4gdW5pcXVlX25hbWVzOgorICAgICAgICAgICAgZnVu
Y3Rpb25fYXJncyA9IHsKKyAgICAgICAgICAgICAgICAnZnVuY05hbWUnOiBmdW5jdGlvbl9uYW1l
LAorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiAgICBtYWNybygl
KGZ1bmNOYW1lKXMpIFxcIiAlIGZ1bmN0aW9uX2FyZ3MpCisgICAgICAgIHJldHVybiAnXG4nLmpv
aW4obGluZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWls
dGlucy9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX2NvbWJp
bmVkX2ltcGxlbWVudGF0aW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyODc4ZDM2MTBiYzNkMTM5N2RjMTE1
ODNiNGQzOWI4MmY0MjZkODgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRh
dGlvbi5weQpAQCAtMCwwICsxLDkwIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29w
eXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
Q29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
IyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworaW1w
b3J0IGxvZ2dpbmcKK2ltcG9ydCByZQoraW1wb3J0IHN0cmluZworZnJvbSBzdHJpbmcgaW1wb3J0
IFRlbXBsYXRlCisKK2Zyb20gYnVpbHRpbnNfZ2VuZXJhdG9yIGltcG9ydCBCdWlsdGluc0dlbmVy
YXRvcgorZnJvbSBidWlsdGluc19tb2RlbCBpbXBvcnQgRnJhbWV3b3JrLCBGcmFtZXdvcmtzCitm
cm9tIGJ1aWx0aW5zX3RlbXBsYXRlcyBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3JUZW1wbGF0ZXMg
YXMgVGVtcGxhdGVzCisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwnKQorCisKK2Ns
YXNzIEJ1aWx0aW5zQ29tYmluZWRJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihCdWlsdGluc0dlbmVy
YXRvcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZGVsKToKKyAgICAgICAgQnVpbHRpbnNH
ZW5lcmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWwpCisKKyAgICBkZWYgb3V0cHV0X2ZpbGVuYW1l
KHNlbGYpOgorICAgICAgICByZXR1cm4gIiVzQnVpbHRpbnMuY3BwIiAlIHNlbGYubW9kZWwoKS5m
cmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNlJykKKworICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQo
c2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbmFtZXNwYWNlJzogc2VsZi5t
b2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCduYW1lc3BhY2UnKSwKKyAgICAgICAgICAgICdtYWNy
b1ByZWZpeCc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbWFjcm9fcHJlZml4Jyks
CisgICAgICAgIH0KKworICAgICAgICBzZWN0aW9ucyA9IFtdCisgICAgICAgIHNlY3Rpb25zLmFw
cGVuZChzZWxmLmdlbmVyYXRlX2xpY2Vuc2UoKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRl
bXBsYXRlKFRlbXBsYXRlcy5Eb05vdEVkaXRXYXJuaW5nKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAg
ICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9oZWFkZXJfaW5jbHVkZXMoKSkKKyAg
ICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VUb3ApLnN1
YnN0aXR1dGUoYXJncykpCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBzZWxmLm1vZGVsKCkuYWxs
X2Z1bmN0aW9ucygpOgorICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVf
ZW1iZWRkZWRfY29kZV9zdHJpbmdfc2VjdGlvbl9mb3JfZnVuY3Rpb24oZnVuY3Rpb24pKQorICAg
ICAgICBpZiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrIGlzIEZyYW1ld29ya3MuSmF2YVNjcmlwdENv
cmU6CisgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkNvbWJp
bmVkSlNDSW1wbGVtZW50YXRpb25TdGF0aWNNYWNyb3MpLnN1YnN0aXR1dGUoYXJncykpCisgICAg
ICAgIGVsaWYgc2VsZi5tb2RlbCgpLmZyYW1ld29yayBpcyBGcmFtZXdvcmtzLldlYkNvcmU6Cisg
ICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkNvbWJpbmVkV2Vi
Q29yZUltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9zKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAg
ICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZUJvdHRvbSkuc3Vi
c3RpdHV0ZShhcmdzKSkKKworICAgICAgICByZXR1cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMpCisK
KyAgICBkZWYgZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKHNlbGYpOgorICAgICAgICBoZWFkZXJf
aW5jbHVkZXMgPSBbCisgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZSJdLAorICAgICAgICAg
ICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAiYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgi
KSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZSIsICJXZWJD
b3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL0V4ZWN1
dGFibGUuaCIpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIChbIkphdmFTY3JpcHRDb3Jl
IiwgIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgInJ1bnRp
bWUvSlNDZWxsSW5saW5lcy5oIiksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKFsiV2Vi
Q29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9TdHJ1
Y3R1cmVJbmxpbmVzLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJXZWJDb3Jl
Il0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJKYXZhU2NyaXB0
Q29yZSIsICJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJy
dW50aW1lL1ZNLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAgIF0KKworICAgICAgICByZXR1
cm4gJ1xuJy5qb2luKHNlbGYuZ2VuZXJhdGVfaW5jbHVkZXNfZnJvbV9lbnRyaWVzKGhlYWRlcl9p
bmNsdWRlcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWls
dGlucy9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9oZWFk
ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTYzZjM2YjIzNWI1NGI3YTViMDYyOTQ1Y2NlOWE1OTIzNDZjMmZm
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0
aW5zL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2hlYWRlci5weQpAQCAtMCwwICsxLDE3NSBA
QAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNCBVbml2
ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgcmUK
K2ltcG9ydCBzdHJpbmcKK2Zyb20gc3RyaW5nIGltcG9ydCBUZW1wbGF0ZQorCitmcm9tIGJ1aWx0
aW5zX2dlbmVyYXRvciBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3IKK2Zyb20gYnVpbHRpbnNfdGVt
cGxhdGVzIGltcG9ydCBCdWlsdGluc0dlbmVyYXRvclRlbXBsYXRlcyBhcyBUZW1wbGF0ZXMKKwor
bG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcpCisKKworY2xhc3MgQnVpbHRpbnNTZXBh
cmF0ZUhlYWRlckdlbmVyYXRvcihCdWlsdGluc0dlbmVyYXRvcik6CisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIG1vZGVsLCBvYmplY3QpOgorICAgICAgICBCdWlsdGluc0dlbmVyYXRvci5fX2luaXRf
XyhzZWxmLCBtb2RlbCkKKyAgICAgICAgc2VsZi5vYmplY3QgPSBvYmplY3QKKworICAgIGRlZiBv
dXRwdXRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiAiJXNCdWlsdGlucy5oIiAlIHNl
bGYub2JqZWN0Lm9iamVjdF9uYW1lCisKKyAgICBkZWYgbWFjcm9fcHJlZml4KHNlbGYpOgorICAg
ICAgICByZXR1cm4gc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdtYWNyb19wcmVmaXgn
KQorCisgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKKyAgICAgICAgYXJncyA9IHsKKyAg
ICAgICAgICAgICduYW1lc3BhY2UnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ25h
bWVzcGFjZScpLAorICAgICAgICAgICAgJ2hlYWRlckd1YXJkJzogc2VsZi5vdXRwdXRfZmlsZW5h
bWUoKS5yZXBsYWNlKCcuJywgJ18nKSwKKyAgICAgICAgICAgICdtYWNyb1ByZWZpeCc6IHNlbGYu
bWFjcm9fcHJlZml4KCksCisgICAgICAgICAgICAnb2JqZWN0TmFtZSc6IHNlbGYub2JqZWN0Lm9i
amVjdF9uYW1lLnVwcGVyKCksCisgICAgICAgIH0KKworICAgICAgICBzZWN0aW9ucyA9IFtdCisg
ICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2xpY2Vuc2UoKSkKKyAgICAgICAg
c2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5Eb05vdEVkaXRXYXJuaW5nKS5zdWJz
dGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVz
LkhlYWRlckluY2x1ZGVHdWFyZFRvcCkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlv
bnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKCkpCisgICAgICAgIHNlY3Rp
b25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zKCkpCisgICAgICAg
IHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlVG9wKS5zdWJzdGl0
dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9zZWN0aW9u
X2Zvcl9vYmplY3Qoc2VsZi5vYmplY3QpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5n
ZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX3RhYmxlX21hY3JvKCkpCisgICAgICAgIHNlY3Rpb25z
LmFwcGVuZChzZWxmLmdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfbmFtZV9tYWNybygpKQorICAg
ICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLlNlcGFyYXRlSGVhZGVyU3Rh
dGljTWFjcm9zKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVt
cGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZUJvdHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAg
ICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5IZWFkZXJJbmNsdWRlR3VhcmRC
b3R0b20pLnN1YnN0aXR1dGUoYXJncykpCisKKyAgICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNl
Y3Rpb25zKQorCisgICAgZGVmIGdlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zKHNlbGYpOgor
ICAgICAgICByZXR1cm4gIiIibmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFi
bGU7Cit9IiIiCisKKyAgICBkZWYgZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKHNlbGYpOgorICAg
ICAgICBoZWFkZXJfaW5jbHVkZXMgPSBbCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAg
ICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJidWlsdGlucy9CdWlsdGluVXRpbHMuaCIp
LAorICAgICAgICAgICAgKSwKKyAgICAgICAgXQorCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4o
c2VsZi5nZW5lcmF0ZV9pbmNsdWRlc19mcm9tX2VudHJpZXMoaGVhZGVyX2luY2x1ZGVzKSkKKwor
ICAgIGRlZiBnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9vYmplY3Qoc2VsZiwgb2JqZWN0KToKKyAgICAg
ICAgbGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoJy8qICVzICovJyAlIG9iamVjdC5v
YmplY3RfbmFtZSkKKyAgICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2VuZXJhdGVfZXh0ZXJuc19m
b3Jfb2JqZWN0KG9iamVjdCkpCisgICAgICAgIGxpbmVzLmFwcGVuZCgiIikKKyAgICAgICAgbGlu
ZXMuZXh0ZW5kKHNlbGYuZ2VuZXJhdGVfbWFjcm9zX2Zvcl9vYmplY3Qob2JqZWN0KSkKKyAgICAg
ICAgbGluZXMuYXBwZW5kKCIiKQorICAgICAgICBsaW5lcy5leHRlbmQoc2VsZi5nZW5lcmF0ZV9k
ZWZpbmVzX2Zvcl9vYmplY3Qob2JqZWN0KSkKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5l
cykKKworICAgIGRlZiBnZW5lcmF0ZV9leHRlcm5zX2Zvcl9vYmplY3Qoc2VsZiwgb2JqZWN0KToK
KyAgICAgICAgbGluZXMgPSBbXQorCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBvYmplY3QuZnVu
Y3Rpb25zOgorICAgICAgICAgICAgZnVuY3Rpb25fYXJncyA9IHsKKyAgICAgICAgICAgICAgICAn
Y29kZU5hbWUnOiBCdWlsdGluc0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvckZ1bmN0aW9uKGZ1bmN0
aW9uKSArICdDb2RlJywKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGluZXMuYXBwZW5k
KCIiImV4dGVybiBjb25zdCBjaGFyKiBzXyUoY29kZU5hbWUpczsKK2V4dGVybiBjb25zdCBpbnQg
c18lKGNvZGVOYW1lKXNMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
IHNfJShjb2RlTmFtZSlzQ29uc3RydWN0QWJpbGl0eTsiIiIgJSBmdW5jdGlvbl9hcmdzKQorCisg
ICAgICAgIHJldHVybiBsaW5lcworCisgICAgZGVmIGdlbmVyYXRlX21hY3Jvc19mb3Jfb2JqZWN0
KHNlbGYsIG9iamVjdCk6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbWFjcm9QcmVm
aXgnOiBzZWxmLm1hY3JvX3ByZWZpeCgpLAorICAgICAgICAgICAgJ29iamVjdE1hY3JvJzogb2Jq
ZWN0Lm9iamVjdF9uYW1lLnJlcGxhY2UoJy4nLCAnXycpLnVwcGVyKCksCisgICAgICAgIH0KKwor
ICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZCgiI2RlZmluZSAlKG1hY3Jv
UHJlZml4KXNfRk9SRUFDSF8lKG9iamVjdE1hY3JvKXNfQlVJTFRJTl9EQVRBKG1hY3JvKSBcXCIg
JSBhcmdzKQorICAgICAgICBmb3IgZnVuY3Rpb24gaW4gb2JqZWN0LmZ1bmN0aW9uczoKKyAgICAg
ICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ2Z1bmNOYW1lJzogZnVu
Y3Rpb24uZnVuY3Rpb25fbmFtZSwKKyAgICAgICAgICAgICAgICAnbWFuZ2xlZE5hbWUnOiBCdWls
dGluc0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvckZ1bmN0aW9uKGZ1bmN0aW9uKSwKKyAgICAgICAg
ICAgICAgICAncGFyYW1Db3VudCc6IGxlbihmdW5jdGlvbi5wYXJhbWV0ZXJzKSwKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIgICAgbWFjcm8oJShmdW5jTmFtZSlz
LCAlKG1hbmdsZWROYW1lKXMsICUocGFyYW1Db3VudClkKSBcXCIgJSBmdW5jdGlvbl9hcmdzKQor
ICAgICAgICByZXR1cm4gbGluZXMKKworICAgIGRlZiBnZW5lcmF0ZV9kZWZpbmVzX2Zvcl9vYmpl
Y3Qoc2VsZiwgb2JqZWN0KToKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBmb3IgZnVuY3Rp
b24gaW4gb2JqZWN0LmZ1bmN0aW9uczoKKyAgICAgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAg
ICAgICAgJ21hY3JvUHJlZml4Jzogc2VsZi5tYWNyb19wcmVmaXgoKSwKKyAgICAgICAgICAgICAg
ICAnb2JqZWN0TWFjcm8nOiBvYmplY3Qub2JqZWN0X25hbWUucmVwbGFjZSgnLicsICdfJykudXBw
ZXIoKSwKKyAgICAgICAgICAgICAgICAnZnVuY3Rpb25NYWNybyc6IGZ1bmN0aW9uLmZ1bmN0aW9u
X25hbWUudXBwZXIoKSwKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgi
I2RlZmluZSAlKG1hY3JvUHJlZml4KXNfQlVJTFRJTl8lKG9iamVjdE1hY3JvKXNfJShmdW5jdGlv
bk1hY3JvKXMgMSIgJSBhcmdzKQorCisgICAgICAgIHJldHVybiBsaW5lcworCisgICAgZGVmIGdl
bmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfdGFibGVfbWFjcm8oc2VsZik6CisgICAgICAgIGFyZ3Mg
PSB7CisgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNl
dHRpbmcoJ21hY3JvX3ByZWZpeCcpLAorICAgICAgICAgICAgJ29iamVjdE1hY3JvJzogc2VsZi5v
YmplY3Qub2JqZWN0X25hbWUudXBwZXIoKSwKKyAgICAgICAgfQorCisgICAgICAgIGxpbmVzID0g
W10KKyAgICAgICAgbGluZXMuYXBwZW5kKCIjZGVmaW5lICUobWFjcm9QcmVmaXgpc19GT1JFQUNI
XyUob2JqZWN0TWFjcm8pc19CVUlMVElOX0NPREUobWFjcm8pIFxcIiAlIGFyZ3MpCisgICAgICAg
IGZvciBmdW5jdGlvbiBpbiBzZWxmLm9iamVjdC5mdW5jdGlvbnM6CisgICAgICAgICAgICBmdW5j
dGlvbl9hcmdzID0geworICAgICAgICAgICAgICAgICdmdW5jTmFtZSc6IGZ1bmN0aW9uLmZ1bmN0
aW9uX25hbWUsCisgICAgICAgICAgICAgICAgJ2NvZGVOYW1lJzogQnVpbHRpbnNHZW5lcmF0b3Iu
bWFuZ2xlZE5hbWVGb3JGdW5jdGlvbihmdW5jdGlvbikgKyAnQ29kZScsCisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiICAgIG1hY3JvKCUoY29kZU5hbWUpcywgJShm
dW5jTmFtZSlzLCBzXyUoY29kZU5hbWUpc0xlbmd0aCkgXFwiICUgZnVuY3Rpb25fYXJncykKKyAg
ICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKKworICAgIGRlZiBnZW5lcmF0ZV9zZWN0aW9u
X2Zvcl9jb2RlX25hbWVfbWFjcm8oc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAg
ICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1hY3JvX3ByZWZpeCgpLAorICAgICAgICAgICAgJ29iamVj
dE1hY3JvJzogc2VsZi5vYmplY3Qub2JqZWN0X25hbWUudXBwZXIoKSwKKyAgICAgICAgfQorCisg
ICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCIjZGVmaW5lICUobWFjcm9Q
cmVmaXgpc19GT1JFQUNIXyUob2JqZWN0TWFjcm8pc19CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFj
cm8pIFxcIiAlIGFyZ3MpCisgICAgICAgIHVuaXF1ZV9uYW1lcyA9IGxpc3Qoc2V0KFtmdW5jdGlv
bi5mdW5jdGlvbl9uYW1lIGZvciBmdW5jdGlvbiBpbiBzZWxmLm9iamVjdC5mdW5jdGlvbnNdKSkK
KyAgICAgICAgdW5pcXVlX25hbWVzLnNvcnQoKQorICAgICAgICBmb3IgZnVuY3Rpb25fbmFtZSBp
biB1bmlxdWVfbmFtZXM6CisgICAgICAgICAgICBmdW5jdGlvbl9hcmdzID0geworICAgICAgICAg
ICAgICAgICdmdW5jTmFtZSc6IGZ1bmN0aW9uX25hbWUsCisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGxpbmVzLmFwcGVuZCgiICAgIG1hY3JvKCUoZnVuY05hbWUpcykgXFwiICUgZnVuY3Rp
b25fYXJncykKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX3Nl
cGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
YnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTc3ZDEyZTM3ODVlMzJhODk2YjM1MWQyMWM5YzgwZDljNjZmYzZkNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2dlbmVy
YXRlX2J1aWx0aW5zX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5CkBAIC0wLDAgKzEsOTkgQEAK
KyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTQgVW5pdmVy
c2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
IyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHJlCitp
bXBvcnQgc3RyaW5nCitmcm9tIHN0cmluZyBpbXBvcnQgVGVtcGxhdGUKKworZnJvbSBidWlsdGlu
c19nZW5lcmF0b3IgaW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9yLCBXS19sY2ZpcnN0Citmcm9tIGJ1
aWx0aW5zX21vZGVsIGltcG9ydCBGcmFtZXdvcmssIEZyYW1ld29ya3MKK2Zyb20gYnVpbHRpbnNf
dGVtcGxhdGVzIGltcG9ydCBCdWlsdGluc0dlbmVyYXRvclRlbXBsYXRlcyBhcyBUZW1wbGF0ZXMK
KworbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcpCisKKworY2xhc3MgQnVpbHRpbnNT
ZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEJ1aWx0aW5zR2VuZXJhdG9yKToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgbW9kZWwsIG9iamVjdCk6CisgICAgICAgIEJ1aWx0aW5zR2VuZXJh
dG9yLl9faW5pdF9fKHNlbGYsIG1vZGVsKQorICAgICAgICBzZWxmLm9iamVjdCA9IG9iamVjdAor
CisgICAgZGVmIG91dHB1dF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuICIlc0J1aWx0
aW5zLmNwcCIgJSBzZWxmLm9iamVjdC5vYmplY3RfbmFtZQorCisgICAgZGVmIG1hY3JvX3ByZWZp
eChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygn
bWFjcm9fcHJlZml4JykKKworICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6CisgICAgICAg
IGFyZ3MgPSB7CisgICAgICAgICAgICAnbmFtZXNwYWNlJzogc2VsZi5tb2RlbCgpLmZyYW1ld29y
ay5zZXR0aW5nKCduYW1lc3BhY2UnKSwKKyAgICAgICAgICAgICdtYWNyb1ByZWZpeCc6IHNlbGYu
bWFjcm9fcHJlZml4KCksCisgICAgICAgICAgICAnb2JqZWN0TWFjcm8nOiBzZWxmLm9iamVjdC5v
YmplY3RfbmFtZS51cHBlcigpLAorICAgICAgICAgICAgJ29iamVjdE5hbWVMQyc6IFdLX2xjZmly
c3Qoc2VsZi5vYmplY3Qub2JqZWN0X25hbWUpLAorICAgICAgICB9CisKKyAgICAgICAgc2VjdGlv
bnMgPSBbXQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9saWNlbnNlKCkp
CisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuRG9Ob3RFZGl0V2Fy
bmluZykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2Vu
ZXJhdGVfaGVhZGVyX2luY2x1ZGVzKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0
ZShUZW1wbGF0ZXMuTmFtZXNwYWNlVG9wKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBmb3Ig
ZnVuY3Rpb24gaW4gc2VsZi5vYmplY3QuZnVuY3Rpb25zOgorICAgICAgICAgICAgc2VjdGlvbnMu
YXBwZW5kKHNlbGYuZ2VuZXJhdGVfZW1iZWRkZWRfY29kZV9zdHJpbmdfc2VjdGlvbl9mb3JfZnVu
Y3Rpb24oZnVuY3Rpb24pKQorICAgICAgICBpZiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrIGlzIEZy
YW1ld29ya3MuSmF2YVNjcmlwdENvcmU6CisgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVt
cGxhdGUoVGVtcGxhdGVzLlNlcGFyYXRlSlNDSW1wbGVtZW50YXRpb25TdGF0aWNNYWNyb3MpLnN1
YnN0aXR1dGUoYXJncykpCisgICAgICAgIGVsaWYgc2VsZi5tb2RlbCgpLmZyYW1ld29yayBpcyBG
cmFtZXdvcmtzLldlYkNvcmU6CisgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUo
VGVtcGxhdGVzLlNlcGFyYXRlV2ViQ29yZUltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9zKS5zdWJz
dGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVz
Lk5hbWVzcGFjZUJvdHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkKKworICAgICAgICByZXR1cm4gIlxu
XG4iLmpvaW4oc2VjdGlvbnMpCisKKyAgICBkZWYgZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKHNl
bGYpOgorICAgICAgICBoZWFkZXJfaW5jbHVkZXMgPSBbCisgICAgICAgICAgICAoWyJKYXZhU2Ny
aXB0Q29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAiYnVpbHRpbnMv
QnVpbHRpbkV4ZWN1dGFibGVzLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJK
YXZhU2NyaXB0Q29yZSIsICJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0
Q29yZSIsICJydW50aW1lL0V4ZWN1dGFibGUuaCIpLAorICAgICAgICAgICAgKSwKKyAgICAgICAg
ICAgIChbIkphdmFTY3JpcHRDb3JlIiwgIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkph
dmFTY3JpcHRDb3JlIiwgInJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oIiksCisgICAgICAgICAgICAp
LAorICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlw
dENvcmUiLCAicnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgiKSwKKyAgICAgICAgICAgICksCisg
ICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29y
ZSIsICJydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgiKSwKKyAgICAgICAgICAgICksCisgICAg
ICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZSIsICJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAg
KCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL1ZNLmgiKSwKKyAgICAgICAgICAgICksCisgICAg
ICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJXZWJDb3JlIiwgImJpbmRp
bmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaCIpLAorICAgICAgICAgICAgKSwKKyAgICAgICAg
XQorCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4oc2VsZi5nZW5lcmF0ZV9pbmNsdWRlc19mcm9t
X2VudHJpZXMoaGVhZGVyX2luY2x1ZGVzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX3dyYXBwZXIu
cHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWls
dGluc19zZXBhcmF0ZV93cmFwcGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4MTQxZDYyNzdjZmRiNTQ4MTk4
YzhlZjg2OTA0NzRmNGE2OGIxZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV93cmFwcGVy
LnB5CkBAIC0wLDAgKzEsOTQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmln
aHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5
cmlnaHQgKGMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitpbXBvcnQg
bG9nZ2luZworaW1wb3J0IHJlCitpbXBvcnQgc3RyaW5nCitmcm9tIHN0cmluZyBpbXBvcnQgVGVt
cGxhdGUKKworZnJvbSBidWlsdGluc19nZW5lcmF0b3IgaW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9y
Citmcm9tIGJ1aWx0aW5zX3RlbXBsYXRlcyBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3JUZW1wbGF0
ZXMgYXMgVGVtcGxhdGVzCisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwnKQorCisK
K2NsYXNzIEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9yKEJ1aWx0aW5zR2VuZXJhdG9y
KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZWwsIG9iamVjdCk6CisgICAgICAgIEJ1aWx0
aW5zR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYsIG1vZGVsKQorICAgICAgICBzZWxmLm9iamVjdCA9
IG9iamVjdAorCisgICAgZGVmIG91dHB1dF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJu
ICIlc0J1aWx0aW5zV3JhcHBlci5oIiAlIHNlbGYub2JqZWN0Lm9iamVjdF9uYW1lCisKKyAgICBk
ZWYgbWFjcm9fcHJlZml4KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5tb2RlbCgpLmZyYW1l
d29yay5zZXR0aW5nKCdtYWNyb19wcmVmaXgnKQorCisgICAgZGVmIGdlbmVyYXRlX291dHB1dChz
ZWxmKToKKyAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICduYW1lc3BhY2UnOiBzZWxmLm1v
ZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpLAorICAgICAgICAgICAgJ2hlYWRl
ckd1YXJkJzogc2VsZi5vdXRwdXRfZmlsZW5hbWUoKS5yZXBsYWNlKCcuJywgJ18nKSwKKyAgICAg
ICAgICAgICdtYWNyb1ByZWZpeCc6IHNlbGYubWFjcm9fcHJlZml4KCksCisgICAgICAgICAgICAn
b2JqZWN0TmFtZSc6IHNlbGYub2JqZWN0Lm9iamVjdF9uYW1lLAorICAgICAgICAgICAgJ29iamVj
dE1hY3JvJzogc2VsZi5vYmplY3Qub2JqZWN0X25hbWUudXBwZXIoKSwKKyAgICAgICAgfQorCisg
ICAgICAgIHNlY3Rpb25zID0gW10KKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJh
dGVfbGljZW5zZSgpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVz
LkRvTm90RWRpdFdhcm5pbmcpLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFw
cGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuSGVhZGVySW5jbHVkZUd1YXJkVG9wKS5zdWJzdGl0dXRl
KGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9oZWFkZXJfaW5j
bHVkZXMoKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1l
c3BhY2VUb3ApLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1w
bGF0ZShUZW1wbGF0ZXMuU2VwYXJhdGVXcmFwcGVySGVhZGVyQm9pbGVycGxhdGUpLnN1YnN0aXR1
dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFt
ZXNwYWNlQm90dG9tKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQo
VGVtcGxhdGUoVGVtcGxhdGVzLkhlYWRlckluY2x1ZGVHdWFyZEJvdHRvbSkuc3Vic3RpdHV0ZShh
cmdzKSkKKworICAgICAgICByZXR1cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMpCisKKyAgICBkZWYg
Z2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKHNlbGYpOgorICAgICAgICBoZWFkZXJfaW5jbHVkZXMg
PSBbCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJXZWJDb3Jl
IiwgIiVzQnVpbHRpbnMuaCIgJSBzZWxmLm9iamVjdC5vYmplY3RfbmFtZSksCisgICAgICAgICAg
ICApLAorCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZh
U2NyaXB0Q29yZSIsICJieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIiksCisg
ICAgICAgICAgICApLAorCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAg
ICAgKCJKYXZhU2NyaXB0Q29yZSIsICJidWlsdGlucy9CdWlsdGluVXRpbHMuaCIpLAorICAgICAg
ICAgICAgKSwKKworICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgi
SmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9JZGVudGlmaWVyLmgiKSwKKyAgICAgICAgICAgICks
CisKKyAgICAgICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3Jp
cHRDb3JlIiwgInJ1bnRpbWUvSlNGdW5jdGlvbi5oIiksCisgICAgICAgICAgICApLAorICAgICAg
ICBdCisKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihzZWxmLmdlbmVyYXRlX2luY2x1ZGVzX2Zy
b21fZW50cmllcyhoZWFkZXJfaW5jbHVkZXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNzA3MDli
NDgwODM4OGU2NzhmM2RiMjM4MmY0NmEzZDYzMzM5MDZlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKQEAgLTAs
MCArMSwxNjQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIw
MTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMp
IDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBUaGlzIHNjcmlwdCBnZW5l
cmF0ZXMgQysrIGJpbmRpbmdzIGZvciBKYXZhU2NyaXB0IGJ1aWx0aW5zLgorIyBHZW5lcmF0b3Jz
IGZvciBpbmRpdmlkdWFsIGZpbGVzIGFyZSBsb2NhdGVkIGluIHRoZSBidWlsdGlucy8gZGlyZWN0
b3J5LgorCitpbXBvcnQgZm5tYXRjaAoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcHRwYXJzZQor
aW1wb3J0IG9zCisKK2xvZ2dpbmcuYmFzaWNDb25maWcoZm9ybWF0PSclKGxldmVsbmFtZSlzOiAl
KG1lc3NhZ2UpcycsIGxldmVsPWxvZ2dpbmcuRVJST1IpCitsb2cgPSBsb2dnaW5nLmdldExvZ2dl
cignZ2xvYmFsJykKKworZnJvbSBsYXp5d3JpdGVyIGltcG9ydCBMYXp5RmlsZVdyaXRlcgorCitp
bXBvcnQgYnVpbHRpbnMKK2Zyb20gYnVpbHRpbnMgaW1wb3J0ICoKKworCitkZWYgZ2VuZXJhdGVf
YmluZGluZ3NfZm9yX2J1aWx0aW5zX2ZpbGVzKGJ1aWx0aW5zX2ZpbGVzPVtdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfcGF0aD1Ob25lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25jYXRlbmF0ZV9vdXRwdXQ9RmFs
c2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbWJpbmVkX291
dHB1dD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJh
bWV3b3JrX25hbWU9IiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZvcmNlX291dHB1dD1GYWxzZSk6CisKKyAgICBnZW5lcmF0b3JzID0gW10KKworICAgIG1vZGVs
ID0gQnVpbHRpbnNDb2xsZWN0aW9uKGZyYW1ld29ya19uYW1lPWZyYW1ld29ya19uYW1lKQorCisg
ICAgZm9yIGZpbGVwYXRoIGluIGJ1aWx0aW5zX2ZpbGVzOgorICAgICAgICB3aXRoIG9wZW4oZmls
ZXBhdGgsICJyIikgYXMgZmlsZToKKyAgICAgICAgICAgIGZpbGVfdGV4dCA9IGZpbGUucmVhZCgp
CisgICAgICAgICAgICBmaWxlX25hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGZpbGVwYXRoKQorCisg
ICAgICAgICAgICAjIElmIHRoaXMgaXMgYSB0ZXN0IGZpbGUsIHRoZW4gcmV3cml0ZSB0aGUgZmls
ZW5hbWUgdG8gcmVtb3ZlIHRoZQorICAgICAgICAgICAgIyB0ZXN0IHJ1bm5pbmcgb3B0aW9ucyBl
bmNvZGVkIGludG8gdGhlIGZpbGVuYW1lLgorICAgICAgICAgICAgaWYgZmlsZV9uYW1lLnN0YXJ0
c3dpdGgoZnJhbWV3b3JrX25hbWUpOgorICAgICAgICAgICAgICAgIChfLCBvYmplY3RfbmFtZSwg
XykgPSBmaWxlX25hbWUuc3BsaXQoJy0nKQorICAgICAgICAgICAgICAgIGZpbGVfbmFtZSA9IG9i
amVjdF9uYW1lICsgJy5qcycKKyAgICAgICAgICAgIG1vZGVsLnBhcnNlX2J1aWx0aW5zX2ZpbGUo
ZmlsZV9uYW1lLCBmaWxlX3RleHQpCisKKyAgICBpZiBjb21iaW5lZF9vdXRwdXQ6CisgICAgICAg
IGxvZy5kZWJ1ZygiVXNpbmcgZ2VuZXJhdG9yIHN0eWxlOiBjb21iaW5lZCBmaWxlcyBmb3IgYWxs
IGJ1aWx0aW5zLiIpCisgICAgICAgIGdlbmVyYXRvcnMuYXBwZW5kKEJ1aWx0aW5zQ29tYmluZWRI
ZWFkZXJHZW5lcmF0b3IobW9kZWwpKQorICAgICAgICBnZW5lcmF0b3JzLmFwcGVuZChCdWlsdGlu
c0NvbWJpbmVkSW1wbGVtZW50YXRpb25HZW5lcmF0b3IobW9kZWwpKQorICAgIGVsc2U6CisgICAg
ICAgIGxvZy5kZWJ1ZygiVXNpbmcgZ2VuZXJhdG9yIHN0eWxlOiBzaW5nbGUgZmlsZXMgZm9yIGVh
Y2ggYnVpbHRpbi4iKQorICAgICAgICBmb3Igb2JqZWN0IGluIG1vZGVsLm9iamVjdHM6CisgICAg
ICAgICAgICBnZW5lcmF0b3JzLmFwcGVuZChCdWlsdGluc1NlcGFyYXRlSGVhZGVyR2VuZXJhdG9y
KG1vZGVsLCBvYmplY3QpKQorICAgICAgICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQoQnVpbHRpbnNT
ZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZXJhdG9yKG1vZGVsLCBvYmplY3QpKQorCisgICAgICAg
ICAgICBpZiBtb2RlbC5mcmFtZXdvcmsgaXMgRnJhbWV3b3Jrcy5XZWJDb3JlOgorICAgICAgICAg
ICAgICAgIGdlbmVyYXRvcnMuYXBwZW5kKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9y
KG1vZGVsLCBvYmplY3QpKQorCisgICAgbG9nLmRlYnVnKCIiKQorICAgIGxvZy5kZWJ1ZygiR2Vu
ZXJhdGluZyBiaW5kaW5ncyBmb3IgYnVpbHRpbnMuIikKKworICAgIHRlc3RfcmVzdWx0X2ZpbGVf
Y29udGVudHMgPSBbXQorCisgICAgZm9yIGdlbmVyYXRvciBpbiBnZW5lcmF0b3JzOgorICAgICAg
ICBvdXRwdXRfZmlsZXBhdGggPSBvcy5wYXRoLmpvaW4ob3V0cHV0X3BhdGgsIGdlbmVyYXRvci5v
dXRwdXRfZmlsZW5hbWUoKSkKKyAgICAgICAgbG9nLmRlYnVnKCJHZW5lcmF0aW5nIG91dHB1dCBm
aWxlOiAlcyIgJSBnZW5lcmF0b3Iub3V0cHV0X2ZpbGVuYW1lKCkpCisgICAgICAgIG91dHB1dCA9
IGdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQoKQorCisgICAgICAgIGxvZy5kZWJ1ZygiLS0tIikK
KyAgICAgICAgbG9nLmRlYnVnKCJcbiIgKyBvdXRwdXQpCisgICAgICAgIGxvZy5kZWJ1ZygiLS0t
IikKKyAgICAgICAgaWYgY29uY2F0ZW5hdGVfb3V0cHV0OgorICAgICAgICAgICAgdGVzdF9yZXN1
bHRfZmlsZV9jb250ZW50cy5hcHBlbmQoJyMjIyBCZWdpbiBGaWxlOiAlcycgJSBnZW5lcmF0b3Iu
b3V0cHV0X2ZpbGVuYW1lKCkpCisgICAgICAgICAgICB0ZXN0X3Jlc3VsdF9maWxlX2NvbnRlbnRz
LmFwcGVuZChvdXRwdXQpCisgICAgICAgICAgICB0ZXN0X3Jlc3VsdF9maWxlX2NvbnRlbnRzLmFw
cGVuZCgnIyMjIEVuZCBGaWxlOiAlcycgJSBnZW5lcmF0b3Iub3V0cHV0X2ZpbGVuYW1lKCkpCisg
ICAgICAgICAgICB0ZXN0X3Jlc3VsdF9maWxlX2NvbnRlbnRzLmFwcGVuZCgnJykKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIGxvZy5kZWJ1ZygiV3JpdGluZyBmaWxlOiAlcyIgJSBvdXRwdXRf
ZmlsZXBhdGgpCisgICAgICAgICAgICBvdXRwdXRfZmlsZSA9IExhenlGaWxlV3JpdGVyKG91dHB1
dF9maWxlcGF0aCwgZm9yY2Vfb3V0cHV0KQorICAgICAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUo
b3V0cHV0KQorICAgICAgICAgICAgb3V0cHV0X2ZpbGUuY2xvc2UoKQorCisgICAgaWYgY29uY2F0
ZW5hdGVfb3V0cHV0OgorICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmJh
c2VuYW1lKGJ1aWx0aW5zX2ZpbGVzWzBdKSArICctcmVzdWx0JykKKyAgICAgICAgb3V0cHV0X2Zp
bGVwYXRoID0gb3MucGF0aC5qb2luKG91dHB1dF9wYXRoLCBmaWxlbmFtZSkKKyAgICAgICAgbG9n
LmRlYnVnKCJXcml0aW5nIGZpbGU6ICVzIiAlIG91dHB1dF9maWxlcGF0aCkgCisgICAgICAgIG91
dHB1dF9maWxlID0gTGF6eUZpbGVXcml0ZXIob3V0cHV0X2ZpbGVwYXRoLCBmb3JjZV9vdXRwdXQp
CisgICAgICAgIG91dHB1dF9maWxlLndyaXRlKCdcbicuam9pbih0ZXN0X3Jlc3VsdF9maWxlX2Nv
bnRlbnRzKSkKKyAgICAgICAgb3V0cHV0X2ZpbGUuY2xvc2UoKQorCitpZiBfX25hbWVfXyA9PSAn
X19tYWluX18nOgorICAgIGFsbG93ZWRfZnJhbWV3b3JrX25hbWVzID0gWydKYXZhU2NyaXB0Q29y
ZScsICdXZWJDb3JlJ10KKyAgICBjbGlfcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVz
YWdlPSJ1c2FnZTogJXByb2cgW29wdGlvbnNdIEJ1aWx0aW4xLmpzIFssIEJ1aWx0aW4yLmpzLCAu
Li5dIikKKyAgICBjbGlfcGFyc2VyLmFkZF9vcHRpb24oIi1pIiwgIi0taW5wdXQtZGlyZWN0b3J5
IiwgaGVscD0iSWYgc3BlY2lmaWVkLCBnZW5lcmF0ZXMgYnVpbHRpbnMgZnJvbSBhbGwgSmF2YVNj
cmlwdCBmaWxlcyBpbiB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeSBpbiBhZGRpdGlvbiB0byBzcGVj
aWZpYyBmaWxlcyBwYXNzZWQgYXMgYXJndW1lbnRzLiIpCisgICAgY2xpX3BhcnNlci5hZGRfb3B0
aW9uKCItbyIsICItLW91dHB1dC1kaXJlY3RvcnkiLCBoZWxwPSJEaXJlY3Rvcnkgd2hlcmUgZ2Vu
ZXJhdGVkIGZpbGVzIHNob3VsZCBiZSB3cml0dGVuLiIpCisgICAgY2xpX3BhcnNlci5hZGRfb3B0
aW9uKCItLWZyYW1ld29yayIsIHR5cGU9ImNob2ljZSIsIGNob2ljZXM9YWxsb3dlZF9mcmFtZXdv
cmtfbmFtZXMsIGhlbHA9IkRlc3RpbmF0aW9uIGZyYW1ld29yayBmb3IgZ2VuZXJhdGVkIGZpbGVz
LiIpCisgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9uKCItLWZvcmNlIiwgYWN0aW9uPSJzdG9yZV90
cnVlIiwgaGVscD0iRm9yY2Ugb3V0cHV0IG9mIGdlbmVyYXRlZCBzY3JpcHRzLCBldmVuIGlmIG5v
dGhpbmcgY2hhbmdlZC4iKQorICAgIGNsaV9wYXJzZXIuYWRkX29wdGlvbigiLS1jb21iaW5lZCIs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IlByb2R1Y2Ugb25lIC5oLy5jcHAgZmlsZSBpbnN0
ZWFkIG9mIHByb2R1Y2luZyBvbmUgcGVyIGJ1aWx0aW4gb2JqZWN0LiIpCisgICAgY2xpX3BhcnNl
ci5hZGRfb3B0aW9uKCItdiIsICItLWRlYnVnIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0i
TG9nIGV4dHJhIG91dHB1dCBmb3IgZGVidWdnaW5nIHRoZSBnZW5lcmF0b3IgaXRzZWxmLiIpCisg
ICAgY2xpX3BhcnNlci5hZGRfb3B0aW9uKCItdCIsICItLXRlc3QiLCBhY3Rpb249InN0b3JlX3Ry
dWUiLCBoZWxwPSJFbmFibGUgdGVzdCBtb2RlLiIpCisKKyAgICBhcmdfb3B0aW9ucywgYXJnX3Zh
bHVlcyA9IGNsaV9wYXJzZXIucGFyc2VfYXJncygpCisgICAgaWYgbGVuKGFyZ192YWx1ZXMpIGlz
IDAgYW5kIG5vdCBhcmdfb3B0aW9ucy5pbnB1dF9kaXJlY3Rvcnk6CisgICAgICAgIHJhaXNlIFBh
cnNlRXhjZXB0aW9uKCJBdCBsZWFzdCBvbmUgaW5wdXQgZmlsZSBvciBkaXJlY3RvcnkgZXhwZWN0
ZWQuIikKKworICAgIGlmIG5vdCBhcmdfb3B0aW9ucy5vdXRwdXRfZGlyZWN0b3J5OgorICAgICAg
ICByYWlzZSBQYXJzZUV4Y2VwdGlvbigiTWlzc2luZyBvdXRwdXQgZGlyZWN0b3J5LiIpCisKKyAg
ICBpZiBhcmdfb3B0aW9ucy5kZWJ1ZzoKKyAgICAgICAgbG9nLnNldExldmVsKGxvZ2dpbmcuREVC
VUcpCisKKyAgICBpbnB1dF9maWxlcGF0aHMgPSBhcmdfdmFsdWVzWzpdCisgICAgaWYgYXJnX29w
dGlvbnMuaW5wdXRfZGlyZWN0b3J5OgorICAgICAgICBmb3IgZmlsZXBhdGggaW4gb3MubGlzdGRp
cihhcmdfb3B0aW9ucy5pbnB1dF9kaXJlY3RvcnkpOgorICAgICAgICAgICAgaW5wdXRfZmlsZXBh
dGhzLmFwcGVuZChvcy5wYXRoLmpvaW4oYXJnX29wdGlvbnMuaW5wdXRfZGlyZWN0b3J5LCBmaWxl
cGF0aCkpCisKKyAgICBpbnB1dF9maWxlcGF0aHMgPSBmaWx0ZXIobGFtYmRhIG5hbWU6IGZubWF0
Y2guZm5tYXRjaChuYW1lLCAnKi5qcycpLCBpbnB1dF9maWxlcGF0aHMpCisKKyAgICBvcHRpb25z
ID0geworICAgICAgICAnb3V0cHV0X3BhdGgnOiBhcmdfb3B0aW9ucy5vdXRwdXRfZGlyZWN0b3J5
LAorICAgICAgICAnZnJhbWV3b3JrX25hbWUnOiBhcmdfb3B0aW9ucy5mcmFtZXdvcmssCisgICAg
ICAgICdjb21iaW5lZF9vdXRwdXQnOiBhcmdfb3B0aW9ucy5jb21iaW5lZCwKKyAgICAgICAgJ2Zv
cmNlX291dHB1dCc6IGFyZ19vcHRpb25zLmZvcmNlLAorICAgICAgICAnY29uY2F0ZW5hdGVfb3V0
cHV0JzogYXJnX29wdGlvbnMudGVzdCwKKyAgICB9CisKKyAgICBsb2cuZGVidWcoIkdlbmVyYXRp
bmcgY29kZSBmb3IgYnVpbHRpbnMuIikKKyAgICBsb2cuZGVidWcoIlBhcnNlZCBvcHRpb25zOiIp
CisgICAgZm9yIG9wdGlvbiwgdmFsdWUgaW4gb3B0aW9ucy5pdGVtcygpOgorICAgICAgICBsb2cu
ZGVidWcoIiAgICAlczogJXMiICUgKG9wdGlvbiwgdmFsdWUpKQorICAgIGxvZy5kZWJ1ZygiIikK
KyAgICBsb2cuZGVidWcoIklucHV0IGZpbGVzOiIpCisgICAgZm9yIGZpbGVwYXRoIGluIGlucHV0
X2ZpbGVwYXRoczoKKyAgICAgICAgbG9nLmRlYnVnKCIgICAgJXMiICUgZmlsZXBhdGgpCisgICAg
bG9nLmRlYnVnKCIiKQorCisgICAgdHJ5OgorICAgICAgICBnZW5lcmF0ZV9iaW5kaW5nc19mb3Jf
YnVpbHRpbnNfZmlsZXMoYnVpbHRpbnNfZmlsZXM9aW5wdXRfZmlsZXBhdGhzLCAqKm9wdGlvbnMp
CisgICAgZXhjZXB0IFBhcnNlRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIGlmIGFyZ19vcHRpb25z
LnRlc3Q6CisgICAgICAgICAgICBsb2cuZXJyb3IoZS5tZXNzYWdlKQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgcmFpc2UgICMgRm9yY2UgdGhlIGJ1aWxkIHRvIGZhaWwuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9sYXp5d3JpdGVyLnB5IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvbGF6eXdyaXRlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTNhMmM2OTdj
YWNiZDc3NDFmZTk5OGVmMTkwZWIxY2Q2ZjI0NTM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvbGF6eXdyaXRlci5weQpAQCAtMCwwICsxLDU4IEBACisj
IS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisjIEEgd3JpdGVyIHRoYXQgb25seSB1cGRhdGVzIGZpbGUgaWYgaXQgYWN0dWFsbHkgY2hh
bmdlZC4KKworCitjbGFzcyBMYXp5RmlsZVdyaXRlcjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
ZmlsZXBhdGgsIGZvcmNlX291dHB1dCk6CisgICAgICAgIHNlbGYuX2ZpbGVwYXRoID0gZmlsZXBh
dGgKKyAgICAgICAgc2VsZi5fb3V0cHV0ID0gIiIKKyAgICAgICAgc2VsZi5mb3JjZV9vdXRwdXQg
PSBmb3JjZV9vdXRwdXQKKworICAgIGRlZiB3cml0ZShzZWxmLCB0ZXh0KToKKyAgICAgICAgc2Vs
Zi5fb3V0cHV0ICs9IHRleHQKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgdGV4dF9j
aGFuZ2VkID0gVHJ1ZQorICAgICAgICBzZWxmLl9vdXRwdXQgPSBzZWxmLl9vdXRwdXQucnN0cmlw
KCkgKyAiXG4iCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgc2VsZi5mb3JjZV9vdXRw
dXQ6CisgICAgICAgICAgICAgICAgcmFpc2UKKworICAgICAgICAgICAgcmVhZF9maWxlID0gb3Bl
bihzZWxmLl9maWxlcGF0aCwgInIiKQorICAgICAgICAgICAgb2xkX3RleHQgPSByZWFkX2ZpbGUu
cmVhZCgpCisgICAgICAgICAgICByZWFkX2ZpbGUuY2xvc2UoKQorICAgICAgICAgICAgdGV4dF9j
aGFuZ2VkID0gb2xkX3RleHQgIT0gc2VsZi5fb3V0cHV0CisgICAgICAgIGV4Y2VwdDoKKyAgICAg
ICAgICAgICMgSWdub3JlLCBqdXN0IG92ZXJ3cml0ZSBieSBkZWZhdWx0CisgICAgICAgICAgICBw
YXNzCisKKyAgICAgICAgaWYgdGV4dF9jaGFuZ2VkIG9yIHNlbGYuZm9yY2Vfb3V0cHV0OgorICAg
ICAgICAgICAgb3V0X2ZpbGUgPSBvcGVuKHNlbGYuX2ZpbGVwYXRoLCAidyIpCisgICAgICAgICAg
ICBvdXRfZmlsZS53cml0ZShzZWxmLl9vdXRwdXQpCisgICAgICAgICAgICBvdXRfZmlsZS5jbG9z
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWls
dGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtQ29tYmluZWQuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWls
dGluLlByb21pc2UtQ29tYmluZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ1ZDgxY2ViOWVkOTA2NDI1ODRm
YTBiYjQ1OGRjZjBkYmFkYzNhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlz
ZS1Db21iaW5lZC5qcwpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIHJlamVjdFByb21pc2UocHJvbWlz
ZSwgcmVhc29uKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciByZWFjdGlvbnMgPSBw
cm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25zOworICAgIHByb21pc2UuQHByb21pc2VSZXN1
bHQgPSByZWFzb247CisgICAgcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlvbnMgPSB1bmRl
ZmluZWQ7CisgICAgcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucyA9IHVuZGVmaW5lZDsK
KyAgICBwcm9taXNlLkBwcm9taXNlU3RhdGUgPSBAcHJvbWlzZVJlamVjdGVkOworCisgICAgQElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5wcm9taXNlUmVqZWN0ZWQocHJvbWlzZSwgcmVhc29uLCBy
ZWFjdGlvbnMpOworCisgICAgQHRyaWdnZXJQcm9taXNlUmVhY3Rpb25zKHJlYWN0aW9ucywgcmVh
c29uKTsKK30KKworZnVuY3Rpb24gZnVsZmlsbFByb21pc2UocHJvbWlzZSwgdmFsdWUpCit7Cisg
ICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIHJlYWN0aW9ucyA9IHByb21pc2UuQHByb21pc2VG
dWxmaWxsUmVhY3Rpb25zOworICAgIHByb21pc2UuQHByb21pc2VSZXN1bHQgPSB2YWx1ZTsKKyAg
ICBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucyA9IHVuZGVmaW5lZDsKKyAgICBwcm9t
aXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25zID0gdW5kZWZpbmVkOworICAgIHByb21pc2UuQHBy
b21pc2VTdGF0ZSA9IEBwcm9taXNlRnVsZmlsbGVkOworCisgICAgQEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5wcm9taXNlRnVsZmlsbGVkKHByb21pc2UsIHZhbHVlLCByZWFjdGlvbnMpOworCisg
ICAgQHRyaWdnZXJQcm9taXNlUmVhY3Rpb25zKHJlYWN0aW9ucywgdmFsdWUpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNj
cmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3Rv
dHlwZS1Db21iaW5lZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDQ4Yjk4MzJiNjZhNGJkZjBmZTJjNGJkODcw
MTBmNjBhZDcyZGYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29t
YmluZWQuanMKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
WXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCitmdW5jdGlvbiBldmVyeShjYWxsYmFjayAvKiwg
dGhpc0FyZyAqLykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAodGhpcyA9PT0gbnVs
bCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSBy
ZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCIpOworICAgIAorICAgIGlmICh0aGlzID09
PSB1bmRlZmluZWQpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5
cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZCIpOworICAgIAor
ICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7CisgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0
aChhcnJheS5sZW5ndGgpOworCisgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9u
IikKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSBj
YWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKKyAgICAKKyAgICB2YXIgdGhpc0FyZyA9IGFy
Z3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkOworICAgIAorICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKCEoaSBpbiBh
cnJheSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFjYWxsYmFjay5AY2Fs
bCh0aGlzQXJnLCBhcnJheVtpXSwgaSwgYXJyYXkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gZm9yRWFjaChj
YWxsYmFjayAvKiwgdGhpc0FyZyAqLykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAo
dGhpcyA9PT0gbnVsbCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3Rv
dHlwZS5mb3JFYWNoIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIik7CisgICAgCisg
ICAgaWYgKHRoaXMgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3Io
IkFycmF5LnByb3RvdHlwZS5mb3JFYWNoIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRl
ZmluZWQiKTsKKyAgICAKKyAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMpOworICAgIHZhciBs
ZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsKKworICAgIGlmICh0eXBlb2YgY2FsbGJh
Y2sgIT09ICJmdW5jdGlvbiIpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5w
cm90b3R5cGUuZm9yRWFjaCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKKyAgICAKKyAg
ICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5k
ZWZpbmVkOworICAgIAorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgaWYgKGkgaW4gYXJyYXkpCisgICAgICAgICAgICBjYWxsYmFjay5AY2FsbCh0aGlzQXJn
LCBhcnJheVtpXSwgaSwgYXJyYXkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5D
b25zdHJ1Y3Rvci1Db21iaW5lZC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45ZThjMWI0NDk2Y2M1NDRmNDA3NzM5NTA0MmNmZDI0ZThhMzk0NjYxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpzCkBAIC0w
LDAgKzEsMTEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworZnVuY3Rpb24gb2YoLyogaXRlbXMuLi4gKi8pCit7CisgICAgInVzZSBzdHJpY3QiOworCisg
ICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7CisgICAgLy8gVE9ETzogTmVlZCBpc0Nv
bnN0cnVjdG9yKHRoaXMpIGluc3RlYWQgb2YgdHlwZW9mICJmdW5jdGlvbiIgY2hlY2suCisgICAg
dmFyIGFycmF5ID0gdHlwZW9mIHRoaXMgPT09ICdmdW5jdGlvbicgPyBuZXcgdGhpcyhsZW5ndGgp
IDogbmV3IEBBcnJheShsZW5ndGgpOworICAgIGZvciAodmFyIGsgPSAwOyBrIDwgbGVuZ3RoOyAr
K2spCisgICAgICAgIEBwdXRCeVZhbERpcmVjdChhcnJheSwgaywgYXJndW1lbnRzW2tdKTsKKyAg
ICBhcnJheS5sZW5ndGggPSBsZW5ndGg7CisgICAgcmV0dXJuIGFycmF5OworfQorCitmdW5jdGlv
biBmcm9tKGl0ZW1zIC8qLCBtYXBGbiwgdGhpc0FyZyAqLykKK3sKKyAgICAidXNlIHN0cmljdCI7
CisKKyAgICB2YXIgdGhpc09iaiA9IHRoaXM7CisKKyAgICB2YXIgbWFwRm4gPSBhcmd1bWVudHMu
bGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDsKKworICAgIHZhciB0aGlzQXJn
OworCisgICAgaWYgKG1hcEZuICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgaWYgKHR5cGVvZiBt
YXBGbiAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJB
cnJheS5mcm9tIHJlcXVpcmVzIHRoYXQgdGhlIHNlY29uZCBhcmd1bWVudCwgd2hlbiBwcm92aWRl
ZCwgYmUgYSBmdW5jdGlvbiIpOworCisgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMikK
KyAgICAgICAgICAgIHRoaXNBcmcgPSBhcmd1bWVudHNbMl07CisgICAgfQorCisgICAgaWYgKGl0
ZW1zID09IG51bGwpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5mcm9tIHJl
cXVpcmVzIGFuIGFycmF5LWxpa2Ugb2JqZWN0IC0gbm90IG51bGwgb3IgdW5kZWZpbmVkIik7CisK
KyAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVtc1tAc3ltYm9sSXRlcmF0b3JdOworICAgIGlm
IChpdGVyYXRvck1ldGhvZCAhPSBudWxsKSB7CisgICAgICAgIGlmICh0eXBlb2YgaXRlcmF0b3JN
ZXRob2QgIT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigi
QXJyYXkuZnJvbSByZXF1aXJlcyB0aGF0IHRoZSBwcm9wZXJ0eSBvZiB0aGUgZmlyc3QgYXJndW1l
bnQsIGl0ZW1zW1N5bWJvbC5pdGVyYXRvcl0sIHdoZW4gZXhpc3RzLCBiZSBhIGZ1bmN0aW9uIik7
CisKKyAgICAgICAgLy8gVE9ETzogTmVlZCBpc0NvbnN0cnVjdG9yKHRoaXNPYmopIGluc3RlYWQg
b2YgdHlwZW9mICJmdW5jdGlvbiIgY2hlY2suCisgICAgICAgIHZhciByZXN1bHQgPSAodHlwZW9m
IHRoaXNPYmogPT09ICJmdW5jdGlvbiIpID8gQE9iamVjdChuZXcgdGhpc09iaigpKSA6IFtdOwor
CisgICAgICAgIHZhciBrID0gMDsKKyAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JNZXRo
b2QuQGNhbGwoaXRlbXMpOworCisgICAgICAgIC8vIFNpbmNlIGZvci1vZiBsb29wIG9uY2UgbW9y
ZSBsb29rcyB1cCB0aGUgQEBpdGVyYXRvciBwcm9wZXJ0eSBvZiBhIGdpdmVuIGl0ZXJhYmxlLAor
ICAgICAgICAvLyBpdCBjb3VsZCBiZSBvYnNlcnZhYmxlIGlmIHRoZSB1c2VyIGRlZmluZXMgYSBn
ZXR0ZXIgZm9yIEBAaXRlcmF0b3IuCisgICAgICAgIC8vIFRvIGF2b2lkIHRoaXMgc2l0dWF0aW9u
LCB3ZSBkZWZpbmUgYSB3cmFwcGVyIG9iamVjdCB0aGF0IEBAaXRlcmF0b3IganVzdCByZXR1cm5z
IGEgZ2l2ZW4gaXRlcmF0b3IuCisgICAgICAgIHZhciB3cmFwcGVyID0geworICAgICAgICAgICAg
W0BzeW1ib2xJdGVyYXRvcl0oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yOwor
ICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGZvciAodmFyIHZhbHVlIG9mIHdy
YXBwZXIpIHsKKyAgICAgICAgICAgIGlmIChtYXBGbikKKyAgICAgICAgICAgICAgICBAcHV0QnlW
YWxEaXJlY3QocmVzdWx0LCBrLCB0aGlzQXJnID09PSB1bmRlZmluZWQgPyBtYXBGbih2YWx1ZSwg
aykgOiBtYXBGbi5AY2FsbCh0aGlzQXJnLCB2YWx1ZSwgaykpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHZhbHVlKTsKKyAgICAg
ICAgICAgIGsgKz0gMTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdC5sZW5ndGggPSBrOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHZhciBhcnJheUxpa2UgPSBAT2Jq
ZWN0KGl0ZW1zKTsKKyAgICB2YXIgYXJyYXlMaWtlTGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5TGlr
ZS5sZW5ndGgpOworCisgICAgLy8gVE9ETzogTmVlZCBpc0NvbnN0cnVjdG9yKHRoaXNPYmopIGlu
c3RlYWQgb2YgdHlwZW9mICJmdW5jdGlvbiIgY2hlY2suCisgICAgdmFyIHJlc3VsdCA9ICh0eXBl
b2YgdGhpc09iaiA9PT0gImZ1bmN0aW9uIikgPyBAT2JqZWN0KG5ldyB0aGlzT2JqKGFycmF5TGlr
ZUxlbmd0aCkpIDogbmV3IEBBcnJheShhcnJheUxpa2VMZW5ndGgpOworCisgICAgdmFyIGsgPSAw
OworICAgIHdoaWxlIChrIDwgYXJyYXlMaWtlTGVuZ3RoKSB7CisgICAgICAgIHZhciB2YWx1ZSA9
IGFycmF5TGlrZVtrXTsKKyAgICAgICAgaWYgKG1hcEZuKQorICAgICAgICAgICAgQHB1dEJ5VmFs
RGlyZWN0KHJlc3VsdCwgaywgdGhpc0FyZyA9PT0gdW5kZWZpbmVkID8gbWFwRm4odmFsdWUsIGsp
IDogbWFwRm4uQGNhbGwodGhpc0FyZywgdmFsdWUsIGspKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywgdmFsdWUpOworICAgICAgICBrICs9IDE7
CisgICAgfQorCisgICAgcmVzdWx0Lmxlbmd0aCA9IGFycmF5TGlrZUxlbmd0aDsKKyAgICByZXR1
cm4gcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
dGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEJ1
aWx0aW4tU2VwYXJhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY4ODdlN2VkY2FkNmIyYTg3ZWY1ZTc4Mjlk
MjkzY2VmMDFlMzcyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMK
QEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKy8vIEBvcHRpb25hbD1TVFJFQU1TX0FQSQorCitmdW5jdGlvbiBpc1JlYWRhYmxlU3Ry
ZWFtTG9ja2VkKHN0cmVhbSkKK3sKKyAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiAhIXN0
cmVhbS5AcmVhZGVyOworfQorCisKK2Z1bmN0aW9uIGNhbmNlbFJlYWRhYmxlU3RyZWFtKHN0cmVh
bSwgcmVhc29uKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmIChzdHJlYW0uQHN0YXRl
ID09PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29s
dmUoKTsKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZCkK
KyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpOworICAg
IHN0cmVhbS5AcXVldWUgPSBbXTsKKyAgICBAZmluaXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0
cmVhbSk7CisgICAgcmV0dXJuIEBwcm9taXNlSW52b2tlT3JOb29wKHN0cmVhbS5AdW5kZXJseWlu
Z1NvdXJjZSwgImNhbmNlbCIsIFtyZWFzb25dKS50aGVuKGZ1bmN0aW9uKCkgeyB9KTsKK30KKwor
CitmdW5jdGlvbiBwcm9taXNlSW52b2tlT3JOb29wKG9iamVjdCwga2V5LCBhcmdzKQoreworICAg
ICJ1c2Ugc3RyaWN0IjsKKworICAgIHRyeSB7CisgICAgICAgIHZhciBtZXRob2QgPSBvYmplY3Rb
a2V5XTsKKyAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QgPT09ICJ1bmRlZmluZWQiKQorICAgICAg
ICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgICAgICB2YXIgcmVzdWx0ID0gbWV0
aG9kLkBhcHBseShvYmplY3QsIGFyZ3MpOworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZl
KHJlc3VsdCk7CisgICAgfQorICAgIGNhdGNoKGVycm9yKSB7CisgICAgICAgIHJldHVybiBQcm9t
aXNlLnJlamVjdChlcnJvcik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxCdWls
dGluLVNlcGFyYXRlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRmNWU3YjNiODQxZDUxMGEyOWY1NzZmOTQzNjA5OWU4ZTI3NjI2NTcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJD
b3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMKQEAgLTAsMCArMSw2NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIEBvcHRpb25h
bD1TVFJFQU1TX0FQSQorLy8gQGludGVybmFsCisKK2Z1bmN0aW9uIGlzUmVhZGFibGVTdHJlYW1M
b2NrZWQoc3RyZWFtKQoreworICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuICEhc3RyZWFt
LkByZWFkZXI7Cit9CisKKworZnVuY3Rpb24gY2FuY2VsUmVhZGFibGVTdHJlYW0oc3RyZWFtLCBy
ZWFzb24pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09
IEByZWFkYWJsZVN0cmVhbUNsb3NlZCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgp
OworICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKQorICAg
ICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoc3RyZWFtLkBzdG9yZWRFcnJvcik7CisgICAgc3Ry
ZWFtLkBxdWV1ZSA9IFtdOworICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFt
KTsKKyAgICByZXR1cm4gQHByb21pc2VJbnZva2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291
cmNlLCAiY2FuY2VsIiwgW3JlYXNvbl0pLnRoZW4oZnVuY3Rpb24oKSB7IH0pOworfQorCisKK2Z1
bmN0aW9uIHByb21pc2VJbnZva2VPck5vb3Aob2JqZWN0LCBrZXksIGFyZ3MpCit7CisgICAgInVz
ZSBzdHJpY3QiOworCisgICAgdHJ5IHsKKyAgICAgICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXld
OworICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gInVuZGVmaW5lZCIpCisgICAgICAgICAg
ICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIHZhciByZXN1bHQgPSBtZXRob2Qu
QGFwcGx5KG9iamVjdCwgYXJncyk7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVz
dWx0KTsKKyAgICB9CisgICAgY2F0Y2goZXJyb3IpIHsKKyAgICAgICAgcmV0dXJuIFByb21pc2Uu
cmVqZWN0KGVycm9yKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJh
dGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJD
b3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWJkYzhkM2I3ZTli
ZTI5ODBhZmRkNmI2MTM4YzA0ODhmZWIyNmEwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtVW5ndWFyZGVkQnVp
bHRpbi1TZXBhcmF0ZS5qcwpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbUxvY2tlZChz
dHJlYW0pCit7CisgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gISFzdHJlYW0uQHJlYWRl
cjsKK30KKworCitmdW5jdGlvbiBjYW5jZWxSZWFkYWJsZVN0cmVhbShzdHJlYW0sIHJlYXNvbikK
K3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRh
YmxlU3RyZWFtQ2xvc2VkKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAg
aWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpCisgICAgICAgIHJl
dHVybiBQcm9taXNlLnJlamVjdChzdHJlYW0uQHN0b3JlZEVycm9yKTsKKyAgICBzdHJlYW0uQHF1
ZXVlID0gW107CisgICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pOworICAg
IHJldHVybiBAcHJvbWlzZUludm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsICJj
YW5jZWwiLCBbcmVhc29uXSkudGhlbihmdW5jdGlvbigpIHsgfSk7Cit9CisKKworZnVuY3Rpb24g
cHJvbWlzZUludm9rZU9yTm9vcChvYmplY3QsIGtleSwgYXJncykKK3sKKyAgICAidXNlIHN0cmlj
dCI7CisKKyAgICB0cnkgeworICAgICAgICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07CisgICAg
ICAgIGlmICh0eXBlb2YgbWV0aG9kID09PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIHJldHVy
biBQcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IG1ldGhvZC5AYXBwbHko
b2JqZWN0LCBhcmdzKTsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpOwor
ICAgIH0KKyAgICBjYXRjaChlcnJvcikgeworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qo
ZXJyb3IpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUteG1sQ2Fz
aW5nVGVzdC1TZXBhcmF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTM5M2JjNTk4MTQyODI4N2UwZjA0MzE5
ZGI2ZTQyMDJiNTVlMjY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS14bWxDYXNpbmdUZXN0LVNlcGFyYXRlLmpz
CkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisvLyBAb3B0aW9uYWw9U1RSRUFNU19BUEkKKy8vIEBpbnRlcm5hbAorCitmdW5jdGlv
biB4bWxDYXNpbmdUZXN0KHN0cmVhbSkKK3sKKyAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVy
biAhIXN0cmVhbS5AcmVhZGVyOworfQorCisKK2Z1bmN0aW9uIGNzc0Nhc2luZ1Rlc3Qoc3RyZWFt
LCByZWFzb24pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKHN0cmVhbS5Ac3RhdGUg
PT09IEByZWFkYWJsZVN0cmVhbUNsb3NlZCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2
ZSgpOworICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKQor
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoc3RyZWFtLkBzdG9yZWRFcnJvcik7CisgICAg
c3RyZWFtLkBxdWV1ZSA9IFtdOworICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3Ry
ZWFtKTsKKyAgICByZXR1cm4gQHByb21pc2VJbnZva2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5n
U291cmNlLCAiY2FuY2VsIiwgW3JlYXNvbl0pLnRoZW4oZnVuY3Rpb24oKSB7IH0pOworfQorCisK
K2Z1bmN0aW9uIHVybENhc2luZ1Rlc3Qob2JqZWN0LCBrZXksIGFyZ3MpCit7CisgICAgInVzZSBz
dHJpY3QiOworCisgICAgdHJ5IHsKKyAgICAgICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldOwor
ICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICBy
ZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFw
cGx5KG9iamVjdCwgYXJncyk7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0
KTsKKyAgICB9CisgICAgY2F0Y2goZXJyb3IpIHsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVq
ZWN0KGVycm9yKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlBy
b21pc2UtQ29tYmluZWQuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
dGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNv
bWJpbmVkLmpzLXJlc3VsdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zY2M4ZDZlZjBmZTE2YjkzZjIyYWYxYzM1YjZi
ZTI1OWM0ZmQ3MDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9t
aXNlLUNvbWJpbmVkLmpzLXJlc3VsdApAQCAtMCwwICsxLDE2OCBAQAorIyMjIEJlZ2luIEZpbGU6
IEpTQ0J1aWx0aW5zLmgKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgWXVzdWtlIFN1enVraSA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElU
IFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0
IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lmbmRlZiBKU0NCdWlsdGlu
c19oCisjZGVmaW5lIEpTQ0J1aWx0aW5zX2gKKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5j
dGlvbkV4ZWN1dGFibGU7CitjbGFzcyBWTTsKKworZW51bSBjbGFzcyBDb25zdHJ1Y3RBYmlsaXR5
IDogdW5zaWduZWQ7Cit9CisKK25hbWVzcGFjZSBKU0MgeworCisvKiBCdWlsdGluLlByb21pc2Ug
Ki8KK2V4dGVybiBjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNvZGU7
CitleHRlcm4gY29uc3QgaW50IHNfYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNlQ29kZUxlbmd0
aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvbWlzZVJl
amVjdFByb21pc2VDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX2J1
aWx0aW5Qcm9taXNlRnVsZmlsbFByb21pc2VDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2J1aWx0
aW5Qcm9taXNlRnVsZmlsbFByb21pc2VDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29u
c3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm9taXNlRnVsZmlsbFByb21pc2VDb2RlQ29uc3RydWN0
QWJpbGl0eTsKKworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOUFJPTUlTRV9CVUlMVElOX0RB
VEEobWFjcm8pIFwKKyAgICBtYWNybyhyZWplY3RQcm9taXNlLCBidWlsdGluUHJvbWlzZVJlamVj
dFByb21pc2UsIDIpIFwKKyAgICBtYWNybyhmdWxmaWxsUHJvbWlzZSwgYnVpbHRpblByb21pc2VG
dWxmaWxsUHJvbWlzZSwgMikgXAorCisjZGVmaW5lIEpTQ19CVUlMVElOX0JVSUxUSU5QUk9NSVNF
X1JFSkVDVFBST01JU0UgMQorI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOUFJPTUlTRV9GVUxG
SUxMUFJPTUlTRSAxCisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKG1hY3JvKSBc
CisgICAgbWFjcm8oYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNlQ29kZSwgcmVqZWN0UHJvbWlz
ZSwgc19idWlsdGluUHJvbWlzZVJlamVjdFByb21pc2VDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8o
YnVpbHRpblByb21pc2VGdWxmaWxsUHJvbWlzZUNvZGUsIGZ1bGZpbGxQcm9taXNlLCBzX2J1aWx0
aW5Qcm9taXNlRnVsZmlsbFByb21pc2VDb2RlTGVuZ3RoKSBcCisKKyNkZWZpbmUgSlNDX0ZPUkVB
Q0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcCisgICAgbWFjcm8oZnVsZmlsbFByb21p
c2UpIFwKKyAgICBtYWNybyhyZWplY3RQcm9taXNlKSBcCisKKyNkZWZpbmUgREVDTEFSRV9CVUlM
VElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCisg
ICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYp
OworCitKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikK
KyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5f
RVhJU1RTKG9iamVjdCwgZnVuYykgZGVmaW5lZCBKU0NfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8g
IyMgZnVuYworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTQ0J1aWx0aW5zX2gK
KworIyMjIEVuZCBGaWxlOiBKU0NCdWlsdGlucy5oCisKKyMjIyBCZWdpbiBGaWxlOiBKU0NCdWls
dGlucy5jcHAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPi4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMg
RklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVz
IGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIK
KyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFi
aWxpdHkgc19idWlsdGluUHJvbWlzZVJlamVjdFByb21pc2VDb2RlQ29uc3RydWN0QWJpbGl0eSA9
IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfYnVp
bHRpblByb21pc2VSZWplY3RQcm9taXNlQ29kZUxlbmd0aCA9IDU0MTsKK2NvbnN0IGNoYXIqIHNf
YnVpbHRpblByb21pc2VSZWplY3RQcm9taXNlQ29kZSA9CisgICAiKGZ1bmN0aW9uIChwcm9taXNl
LCByZWFzb24pXG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwK
KyAgICJcbiIgXAorICAgIiAgICB2YXIgcmVhY3Rpb25zID0gcHJvbWlzZS5AcHJvbWlzZVJlamVj
dFJlYWN0aW9ucztcbiIgXAorICAgIiAgICBwcm9taXNlLkBwcm9taXNlUmVzdWx0ID0gcmVhc29u
O1xuIiBcCisgICAiICAgIHByb21pc2UuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zID0gdW5kZWZp
bmVkO1xuIiBcCisgICAiICAgIHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnMgPSB1bmRl
ZmluZWQ7XG4iIFwKKyAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVN0YXRlID0gQHByb21pc2VSZWpl
Y3RlZDtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIEBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
cHJvbWlzZVJlamVjdGVkKHByb21pc2UsIHJlYXNvbiwgcmVhY3Rpb25zKTtcbiIgXAorICAgIlxu
IiBcCisgICAiICAgIEB0cmlnZ2VyUHJvbWlzZVJlYWN0aW9ucyhyZWFjdGlvbnMsIHJlYXNvbik7
XG4iIFwKKyAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1
aWx0aW5Qcm9taXNlRnVsZmlsbFByb21pc2VDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29u
c3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfYnVpbHRpblByb21p
c2VGdWxmaWxsUHJvbWlzZUNvZGVMZW5ndGggPSA1NDA7Citjb25zdCBjaGFyKiBzX2J1aWx0aW5Q
cm9taXNlRnVsZmlsbFByb21pc2VDb2RlID0KKyAgICIoZnVuY3Rpb24gKHByb21pc2UsIHZhbHVl
KVxuIiBcCisgICAie1xuIiBcCisgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4i
IFwKKyAgICIgICAgdmFyIHJlYWN0aW9ucyA9IHByb21pc2UuQHByb21pc2VGdWxmaWxsUmVhY3Rp
b25zO1xuIiBcCisgICAiICAgIHByb21pc2UuQHByb21pc2VSZXN1bHQgPSB2YWx1ZTtcbiIgXAor
ICAgIiAgICBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucyA9IHVuZGVmaW5lZDtcbiIg
XAorICAgIiAgICBwcm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25zID0gdW5kZWZpbmVkO1xu
IiBcCisgICAiICAgIHByb21pc2UuQHByb21pc2VTdGF0ZSA9IEBwcm9taXNlRnVsZmlsbGVkO1xu
IiBcCisgICAiXG4iIFwKKyAgICIgICAgQEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5wcm9taXNl
RnVsZmlsbGVkKHByb21pc2UsIHZhbHVlLCByZWFjdGlvbnMpO1xuIiBcCisgICAiXG4iIFwKKyAg
ICIgICAgQHRyaWdnZXJQcm9taXNlUmVhY3Rpb25zKHJlYWN0aW9ucywgdmFsdWUpO1xuIiBcCisg
ICAifSlcbiIgXAorOworCisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVO
YW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCit7XAorICAgIHJldHVybiB2
bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwg
dm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IH0KK0pTQ19GT1JF
QUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5F
X0JVSUxUSU5fR0VORVJBVE9SCisKKworfSAvLyBuYW1lc3BhY2UgSlNDCisjIyMgRW5kIEZpbGU6
IEpTQ0J1aWx0aW5zLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5
cGUtQ29tYmluZWQuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29t
YmluZWQuanMtcmVzdWx0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4OWYxZTY1YzAxNTRkOTQ1NmMyZDllOWRmZTU3
ZTk1NGVhOTUxNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3Rv
dHlwZS1Db21iaW5lZC5qcy1yZXN1bHQKQEAgLTAsMCArMSwxOTIgQEAKKyMjIyBCZWdpbiBGaWxl
OiBKU0NCdWlsdGlucy5oCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAxNSBZdXN1a2UgU3V6
dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9U
IEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFT
Y3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaWZuZGVmIEpTQ0J1
aWx0aW5zX2gKKyNkZWZpbmUgSlNDQnVpbHRpbnNfaAorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNz
IEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIFZNOworCitlbnVtIGNsYXNzIENvbnN0cnVjdEFi
aWxpdHkgOiB1bnNpZ25lZDsKK30KKworbmFtZXNwYWNlIEpTQyB7CisKKy8qIEJ1aWx0aW4ucHJv
dG90eXBlICovCitleHRlcm4gY29uc3QgY2hhciogc19idWlsdGluUHJvdG90eXBlRXZlcnlDb2Rl
OworZXh0ZXJuIGNvbnN0IGludCBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGVMZW5ndGg7Citl
eHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5
Q29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19idWlsdGluUHJvdG90
eXBlRm9yRWFjaENvZGU7CitleHRlcm4gY29uc3QgaW50IHNfYnVpbHRpblByb3RvdHlwZUZvckVh
Y2hDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0
aW5Qcm90b3R5cGVGb3JFYWNoQ29kZUNvbnN0cnVjdEFiaWxpdHk7CisKKyNkZWZpbmUgSlNDX0ZP
UkVBQ0hfQlVJTFRJTlBST1RPVFlQRV9CVUlMVElOX0RBVEEobWFjcm8pIFwKKyAgICBtYWNybyhl
dmVyeSwgYnVpbHRpblByb3RvdHlwZUV2ZXJ5LCAxKSBcCisgICAgbWFjcm8oZm9yRWFjaCwgYnVp
bHRpblByb3RvdHlwZUZvckVhY2gsIDEpIFwKKworI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElO
UFJPVE9UWVBFX0VWRVJZIDEKKyNkZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTlBST1RPVFlQRV9G
T1JFQUNIIDEKKworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUobWFjcm8pIFwKKyAg
ICBtYWNybyhidWlsdGluUHJvdG90eXBlRXZlcnlDb2RlLCBldmVyeSwgc19idWlsdGluUHJvdG90
eXBlRXZlcnlDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8oYnVpbHRpblByb3RvdHlwZUZvckVhY2hD
b2RlLCBmb3JFYWNoLCBzX2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZUxlbmd0aCkgXAorCisj
ZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXAorICAgIG1h
Y3JvKGV2ZXJ5KSBcCisgICAgbWFjcm8oZm9yRWFjaCkgXAorCisjZGVmaW5lIERFQ0xBUkVfQlVJ
TFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAor
ICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0m
KTsKKworSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1Ip
CisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIEpTQ19CVUlMVElO
X0VYSVNUUyhvYmplY3QsIGZ1bmMpIGRlZmluZWQgSlNDX0JVSUxUSU5fICMjIG9iamVjdCAjIyBf
ICMjIGZ1bmMKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0NCdWlsdGluc19o
CisKKyMjIyBFbmQgRmlsZTogSlNDQnVpbHRpbnMuaAorCisjIyMgQmVnaW4gRmlsZTogSlNDQnVp
bHRpbnMuY3BwCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQg
VEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQg
ZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxl
cy5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgi
CisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IEpTQzo6Q29uc3Ry
dWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0g
SlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19idWls
dGluUHJvdG90eXBlRXZlcnlDb2RlTGVuZ3RoID0gMTAxNTsKK2NvbnN0IGNoYXIqIHNfYnVpbHRp
blByb3RvdHlwZUV2ZXJ5Q29kZSA9CisgICAiKGZ1bmN0aW9uIChjYWxsYmFjayApXG4iIFwKKyAg
ICJ7XG4iIFwKKyAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICJcbiIgXAorICAgIiAg
ICBpZiAodGhpcyA9PT0gbnVsbClcbiIgXAorICAgIiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoXCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51
bGxcIik7XG4iIFwKKyAgICIgICAgXG4iIFwKKyAgICIgICAgaWYgKHRoaXMgPT09IHVuZGVmaW5l
ZClcbiIgXAorICAgIiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5wcm90b3R5
cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZFwiKTtcbiIgXAor
ICAgIiAgICBcbiIgXAorICAgIiAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMpO1xuIiBcCisg
ICAiICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTtcbiIgXAorICAgIlxu
IiBcCisgICAiICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rpb25cIilcbiIgXAor
ICAgIiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5wcm90b3R5cGUuZXZlcnkg
Y2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uXCIpO1xuIiBcCisgICAiICAgIFxuIiBcCisgICAi
ICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1
bmRlZmluZWQ7XG4iIFwKKyAgICIgICAgXG4iIFwKKyAgICIgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBsZW5ndGg7IGkrKykge1xuIiBcCisgICAiICAgICAgICBpZiAoIShpIGluIGFycmF5KSlcbiIg
XAorICAgIiAgICAgICAgICAgIGNvbnRpbnVlO1xuIiBcCisgICAiICAgICAgICBpZiAoIWNhbGxi
YWNrLkBjYWxsKHRoaXNBcmcsIGFycmF5W2ldLCBpLCBhcnJheSkpXG4iIFwKKyAgICIgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7XG4iIFwKKyAgICIgICAgfVxuIiBcCisgICAiICAgIFxuIiBcCisg
ICAiICAgIHJldHVybiB0cnVlO1xuIiBcCisgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNv
bnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGVDb25zdHJ1Y3RBYmls
aXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQg
c19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGVMZW5ndGggPSA5MTE7Citjb25zdCBjaGFyKiBz
X2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZSA9CisgICAiKGZ1bmN0aW9uIChjYWxsYmFjayAp
XG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICJcbiIg
XAorICAgIiAgICBpZiAodGhpcyA9PT0gbnVsbClcbiIgXAorICAgIiAgICAgICAgdGhyb3cgbmV3
IEBUeXBlRXJyb3IoXCJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCByZXF1aXJlcyB0aGF0IHx0aGlz
fCBub3QgYmUgbnVsbFwiKTtcbiIgXAorICAgIiAgICBcbiIgXAorICAgIiAgICBpZiAodGhpcyA9
PT0gdW5kZWZpbmVkKVxuIiBcCisgICAiICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcIkFy
cmF5LnByb3RvdHlwZS5mb3JFYWNoIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmlu
ZWRcIik7XG4iIFwKKyAgICIgICAgXG4iIFwKKyAgICIgICAgdmFyIGFycmF5ID0gQE9iamVjdCh0
aGlzKTtcbiIgXAorICAgIiAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7
XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSBcImZ1bmN0
aW9uXCIpXG4iIFwKKyAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkucHJv
dG90eXBlLmZvckVhY2ggY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uXCIpO1xuIiBcCisgICAi
ICAgIFxuIiBcCisgICAiICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBh
cmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4iIFwKKyAgICIgICAgXG4iIFwKKyAgICIgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuIiBcCisgICAiICAgICAgICBpZiAoaSBp
biBhcnJheSlcbiIgXAorICAgIiAgICAgICAgICAgIGNhbGxiYWNrLkBjYWxsKHRoaXNBcmcsIGFy
cmF5W2ldLCBpLCBhcnJheSk7XG4iIFwKKyAgICIgICAgfVxuIiBcCisgICAifSlcbiIgXAorOwor
CisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5h
bWUsIGFyZ3VtZW50Q291bnQpIFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMj
R2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCit7XAorICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0
YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1
dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IH0KK0pTQ19GT1JFQUNIX0JVSUxUSU5fQ09E
RShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJB
VE9SCisKKworfSAvLyBuYW1lc3BhY2UgSlNDCisjIyMgRW5kIEZpbGU6IEpTQ0J1aWx0aW5zLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRp
bnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpz
LXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4
cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qcy1yZXN1
bHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2E1MjllZTkxYzYwYjFlZTg2NmVkN2FlMjRiMDc2YTNhODgyMjYwNAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1
aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5l
ZC5qcy1yZXN1bHQKQEAgLTAsMCArMSwyMjQgQEAKKyMjIyBCZWdpbiBGaWxlOiBKU0NCdWlsdGlu
cy5oCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMg
YXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVp
bHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJh
dGUtanMtYnVpbHRpbnMucHkKKworI2lmbmRlZiBKU0NCdWlsdGluc19oCisjZGVmaW5lIEpTQ0J1
aWx0aW5zX2gKKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Citj
bGFzcyBWTTsKKworZW51bSBjbGFzcyBDb25zdHJ1Y3RBYmlsaXR5IDogdW5zaWduZWQ7Cit9CisK
K25hbWVzcGFjZSBKU0MgeworCisvKiBCdWlsdGluQ29uc3RydWN0b3IgKi8KK2V4dGVybiBjb25z
dCBjaGFyKiBzX2J1aWx0aW5Db25zdHJ1Y3Rvck9mQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19i
dWlsdGluQ29uc3RydWN0b3JPZkNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5IHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4
dGVybiBjb25zdCBjaGFyKiBzX2J1aWx0aW5Db25zdHJ1Y3RvckZyb21Db2RlOworZXh0ZXJuIGNv
bnN0IGludCBzX2J1aWx0aW5Db25zdHJ1Y3RvckZyb21Db2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0
IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Db25zdHJ1Y3RvckZyb21Db2RlQ29uc3Ry
dWN0QWJpbGl0eTsKKworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOQ09OU1RSVUNUT1JfQlVJ
TFRJTl9EQVRBKG1hY3JvKSBcCisgICAgbWFjcm8ob2YsIGJ1aWx0aW5Db25zdHJ1Y3Rvck9mLCAw
KSBcCisgICAgbWFjcm8oZnJvbSwgYnVpbHRpbkNvbnN0cnVjdG9yRnJvbSwgMSkgXAorCisjZGVm
aW5lIEpTQ19CVUlMVElOX0JVSUxUSU5DT05TVFJVQ1RPUl9PRiAxCisjZGVmaW5lIEpTQ19CVUlM
VElOX0JVSUxUSU5DT05TVFJVQ1RPUl9GUk9NIDEKKworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlM
VElOX0NPREUobWFjcm8pIFwKKyAgICBtYWNybyhidWlsdGluQ29uc3RydWN0b3JPZkNvZGUsIG9m
LCBzX2J1aWx0aW5Db25zdHJ1Y3Rvck9mQ29kZUxlbmd0aCkgXAorICAgIG1hY3JvKGJ1aWx0aW5D
b25zdHJ1Y3RvckZyb21Db2RlLCBmcm9tLCBzX2J1aWx0aW5Db25zdHJ1Y3RvckZyb21Db2RlTGVu
Z3RoKSBcCisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3Jv
KSBcCisgICAgbWFjcm8oZnJvbSkgXAorICAgIG1hY3JvKG9mKSBcCisKKyNkZWZpbmUgREVDTEFS
RV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50
KSBcCisgICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlND
OjpWTSYpOworCitKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVS
QVRPUikKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgSlNDX0JV
SUxUSU5fRVhJU1RTKG9iamVjdCwgZnVuYykgZGVmaW5lZCBKU0NfQlVJTFRJTl8gIyMgb2JqZWN0
ICMjIF8gIyMgZnVuYworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTQ0J1aWx0
aW5zX2gKKworIyMjIEVuZCBGaWxlOiBKU0NCdWlsdGlucy5oCisKKyMjIyBCZWdpbiBGaWxlOiBK
U0NCdWlsdGlucy5jcHAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBG
SUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMg
Zm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiSlNDQnVpbHRpbnMuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgor
I2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5j
bHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJp
bGl0eSBzX2J1aWx0aW5Db25zdHJ1Y3Rvck9mQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNv
bnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0aW5Db25z
dHJ1Y3Rvck9mQ29kZUxlbmd0aCA9IDQwNDsKK2NvbnN0IGNoYXIqIHNfYnVpbHRpbkNvbnN0cnVj
dG9yT2ZDb2RlID0KKyAgICIoZnVuY3Rpb24gKClcbiIgXAorICAgIntcbiIgXAorICAgIiAgICBc
InVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHZhciBsZW5ndGggPSBhcmd1
bWVudHMubGVuZ3RoO1xuIiBcCisgICAiICAgIC8vXG4iIFwKKyAgICIgICAgdmFyIGFycmF5ID0g
dHlwZW9mIHRoaXMgPT09ICdmdW5jdGlvbicgPyBuZXcgdGhpcyhsZW5ndGgpIDogbmV3IEBBcnJh
eShsZW5ndGgpO1xuIiBcCisgICAiICAgIGZvciAodmFyIGsgPSAwOyBrIDwgbGVuZ3RoOyArK2sp
XG4iIFwKKyAgICIgICAgICAgIEBwdXRCeVZhbERpcmVjdChhcnJheSwgaywgYXJndW1lbnRzW2td
KTtcbiIgXAorICAgIiAgICBhcnJheS5sZW5ndGggPSBsZW5ndGg7XG4iIFwKKyAgICIgICAgcmV0
dXJuIGFycmF5O1xuIiBcCisgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFi
aWxpdHkgc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6
OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0aW5D
b25zdHJ1Y3RvckZyb21Db2RlTGVuZ3RoID0gMjcxMDsKK2NvbnN0IGNoYXIqIHNfYnVpbHRpbkNv
bnN0cnVjdG9yRnJvbUNvZGUgPQorICAgIihmdW5jdGlvbiAoaXRlbXMgKVxuIiBcCisgICAie1xu
IiBcCisgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdmFy
IHRoaXNPYmogPSB0aGlzO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdmFyIG1hcEZuID0gYXJn
dW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4iIFwKKyAgICJc
biIgXAorICAgIiAgICB2YXIgdGhpc0FyZztcbiIgXAorICAgIlxuIiBcCisgICAiICAgIGlmICht
YXBGbiAhPT0gdW5kZWZpbmVkKSB7XG4iIFwKKyAgICIgICAgICAgIGlmICh0eXBlb2YgbWFwRm4g
IT09IFwiZnVuY3Rpb25cIilcbiIgXAorICAgIiAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVy
cm9yKFwiQXJyYXkuZnJvbSByZXF1aXJlcyB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQsIHdoZW4g
cHJvdmlkZWQsIGJlIGEgZnVuY3Rpb25cIik7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICAgICAg
aWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKVxuIiBcCisgICAiICAgICAgICAgICAgdGhpc0FyZyA9
IGFyZ3VtZW50c1syXTtcbiIgXAorICAgIiAgICB9XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICBp
ZiAoaXRlbXMgPT0gbnVsbClcbiIgXAorICAgIiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3Io
XCJBcnJheS5mcm9tIHJlcXVpcmVzIGFuIGFycmF5LWxpa2Ugb2JqZWN0IC0gbm90IG51bGwgb3Ig
dW5kZWZpbmVkXCIpO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdmFyIGl0ZXJhdG9yTWV0aG9k
ID0gaXRlbXNbQHN5bWJvbEl0ZXJhdG9yXTtcbiIgXAorICAgIiAgICBpZiAoaXRlcmF0b3JNZXRo
b2QgIT0gbnVsbCkge1xuIiBcCisgICAiICAgICAgICBpZiAodHlwZW9mIGl0ZXJhdG9yTWV0aG9k
ICE9PSBcImZ1bmN0aW9uXCIpXG4iIFwKKyAgICIgICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVF
cnJvcihcIkFycmF5LmZyb20gcmVxdWlyZXMgdGhhdCB0aGUgcHJvcGVydHkgb2YgdGhlIGZpcnN0
IGFyZ3VtZW50LCBpdGVtc1tTeW1ib2wuaXRlcmF0b3JdLCB3aGVuIGV4aXN0cywgYmUgYSBmdW5j
dGlvblwiKTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgICAgICAvL1xuIiBcCisgICAiICAgICAg
ICB2YXIgcmVzdWx0ID0gKHR5cGVvZiB0aGlzT2JqID09PSBcImZ1bmN0aW9uXCIpID8gQE9iamVj
dChuZXcgdGhpc09iaigpKSA6IFtdO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgICAgIHZhciBr
ID0gMDtcbiIgXAorICAgIiAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JNZXRob2QuQGNh
bGwoaXRlbXMpO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgICAgIC8vXG4iIFwKKyAgICIgICAg
ICAgIC8vXG4iIFwKKyAgICIgICAgICAgIC8vXG4iIFwKKyAgICIgICAgICAgIHZhciB3cmFwcGVy
ID0ge1xuIiBcCisgICAiICAgICAgICAgICAgW0BzeW1ib2xJdGVyYXRvcl0oKSB7XG4iIFwKKyAg
ICIgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yO1xuIiBcCisgICAiICAgICAgICAgICAg
fVxuIiBcCisgICAiICAgICAgICB9O1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgICAgIGZvciAo
dmFyIHZhbHVlIG9mIHdyYXBwZXIpIHtcbiIgXAorICAgIiAgICAgICAgICAgIGlmIChtYXBGbilc
biIgXAorICAgIiAgICAgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB0aGlz
QXJnID09PSB1bmRlZmluZWQgPyBtYXBGbih2YWx1ZSwgaykgOiBtYXBGbi5AY2FsbCh0aGlzQXJn
LCB2YWx1ZSwgaykpO1xuIiBcCisgICAiICAgICAgICAgICAgZWxzZVxuIiBcCisgICAiICAgICAg
ICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHZhbHVlKTtcbiIgXAorICAgIiAg
ICAgICAgICAgIGsgKz0gMTtcbiIgXAorICAgIiAgICAgICAgfVxuIiBcCisgICAiXG4iIFwKKyAg
ICIgICAgICAgIHJlc3VsdC5sZW5ndGggPSBrO1xuIiBcCisgICAiICAgICAgICByZXR1cm4gcmVz
dWx0O1xuIiBcCisgICAiICAgIH1cbiIgXAorICAgIlxuIiBcCisgICAiICAgIHZhciBhcnJheUxp
a2UgPSBAT2JqZWN0KGl0ZW1zKTtcbiIgXAorICAgIiAgICB2YXIgYXJyYXlMaWtlTGVuZ3RoID0g
QHRvTGVuZ3RoKGFycmF5TGlrZS5sZW5ndGgpO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgLy9c
biIgXAorICAgIiAgICB2YXIgcmVzdWx0ID0gKHR5cGVvZiB0aGlzT2JqID09PSBcImZ1bmN0aW9u
XCIpID8gQE9iamVjdChuZXcgdGhpc09iaihhcnJheUxpa2VMZW5ndGgpKSA6IG5ldyBAQXJyYXko
YXJyYXlMaWtlTGVuZ3RoKTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHZhciBrID0gMDtcbiIg
XAorICAgIiAgICB3aGlsZSAoayA8IGFycmF5TGlrZUxlbmd0aCkge1xuIiBcCisgICAiICAgICAg
ICB2YXIgdmFsdWUgPSBhcnJheUxpa2Vba107XG4iIFwKKyAgICIgICAgICAgIGlmIChtYXBGbilc
biIgXAorICAgIiAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHRoaXNBcmcg
PT09IHVuZGVmaW5lZCA/IG1hcEZuKHZhbHVlLCBrKSA6IG1hcEZuLkBjYWxsKHRoaXNBcmcsIHZh
bHVlLCBrKSk7XG4iIFwKKyAgICIgICAgICAgIGVsc2VcbiIgXAorICAgIiAgICAgICAgICAgIEBw
dXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHZhbHVlKTtcbiIgXAorICAgIiAgICAgICAgayArPSAx
O1xuIiBcCisgICAiICAgIH1cbiIgXAorICAgIlxuIiBcCisgICAiICAgIHJlc3VsdC5sZW5ndGgg
PSBhcnJheUxpa2VMZW5ndGg7XG4iIFwKKyAgICIgICAgcmV0dXJuIHJlc3VsdDtcbiIgXAorICAg
In0pXG4iIFwKKzsKKworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFt
ZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJs
ZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAore1wKKyAgICByZXR1cm4gdm0u
YnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZt
LmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyB9CitKU0NfRk9SRUFD
SF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFRklORV9C
VUlMVElOX0dFTkVSQVRPUgorCisKK30gLy8gbmFtZXNwYWNlIEpTQworIyMjIEVuZCBGaWxlOiBK
U0NCdWlsdGlucy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUu
anMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
ZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDQzNmQyZTM1YmFlZmI3NjA1Mzg4ODc3ZTg0NmE3MDBhZWY4NjgxMgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4
cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0wLDAg
KzEsMzE4IEBACisjIyMgQmVnaW4gRmlsZTogR3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5oCisvKgor
ICogQ29weXJpZ2h0IChjKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGlj
YWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkg
dGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVp
bHRpbnMucHkKKworI2lmbmRlZiBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zX2gKKyNkZWZpbmUgR3Vh
cmRlZEJ1aWx0aW5CdWlsdGluc19oCisKKyNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMu
aD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Cit9CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworLyogR3VhcmRlZEJ1aWx0aW4gKi8KK2V4dGVybiBjb25zdCBj
aGFyKiBzX2d1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGU7CitleHRlcm4g
Y29uc3QgaW50IHNfZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUxlbmd0
aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkQnVpbHRpbklz
UmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBj
aGFyKiBzX2d1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlOworZXh0ZXJuIGNv
bnN0IGludCBzX2d1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlTGVuZ3RoOwor
ZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRCdWlsdGluQ2FuY2Vs
UmVhZGFibGVTdHJlYW1Db2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBz
X2d1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGU7CitleHRlcm4gY29uc3QgaW50
IHNfZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUxlbmd0aDsKK2V4dGVybiBj
b25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VP
ck5vb3BDb2RlQ29uc3RydWN0QWJpbGl0eTsKKworI2RlZmluZSBXRUJDT1JFX0ZPUkVBQ0hfR1VB
UkRFREJVSUxUSU5fQlVJTFRJTl9EQVRBKG1hY3JvKSBcCisgICAgbWFjcm8oaXNSZWFkYWJsZVN0
cmVhbUxvY2tlZCwgZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkLCAxKSBcCisg
ICAgbWFjcm8oY2FuY2VsUmVhZGFibGVTdHJlYW0sIGd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFi
bGVTdHJlYW0sIDIpIFwKKyAgICBtYWNybyhwcm9taXNlSW52b2tlT3JOb29wLCBndWFyZGVkQnVp
bHRpblByb21pc2VJbnZva2VPck5vb3AsIDMpIFwKKworI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5f
R1VBUkRFREJVSUxUSU5fSVNSRUFEQUJMRVNUUkVBTUxPQ0tFRCAxCisjZGVmaW5lIFdFQkNPUkVf
QlVJTFRJTl9HVUFSREVEQlVJTFRJTl9DQU5DRUxSRUFEQUJMRVNUUkVBTSAxCisjZGVmaW5lIFdF
QkNPUkVfQlVJTFRJTl9HVUFSREVEQlVJTFRJTl9QUk9NSVNFSU5WT0tFT1JOT09QIDEKKworI2Rl
ZmluZSBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKG1hY3JvKSBc
CisgICAgbWFjcm8oZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZSwgaXNS
ZWFkYWJsZVN0cmVhbUxvY2tlZCwgc19ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2Nr
ZWRDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8oZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0
cmVhbUNvZGUsIGNhbmNlbFJlYWRhYmxlU3RyZWFtLCBzX2d1YXJkZWRCdWlsdGluQ2FuY2VsUmVh
ZGFibGVTdHJlYW1Db2RlTGVuZ3RoKSBcCisgICAgbWFjcm8oZ3VhcmRlZEJ1aWx0aW5Qcm9taXNl
SW52b2tlT3JOb29wQ29kZSwgcHJvbWlzZUludm9rZU9yTm9vcCwgc19ndWFyZGVkQnVpbHRpblBy
b21pc2VJbnZva2VPck5vb3BDb2RlTGVuZ3RoKSBcCisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNI
X0dVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXAorICAgIG1hY3Jv
KGNhbmNlbFJlYWRhYmxlU3RyZWFtKSBcCisgICAgbWFjcm8oaXNSZWFkYWJsZVN0cmVhbUxvY2tl
ZCkgXAorICAgIG1hY3JvKHByb21pc2VJbnZva2VPck5vb3ApIFwKKworI2RlZmluZSBERUNMQVJF
X0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQp
IFwKKyAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6
OlZNJik7CisKK1dFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVD
TEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9S
CisKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX0dVQVJERURCVUlMVElOX0VYSVNUUyhvYmplY3Qs
IGZ1bmMpIGRlZmluZWQgV0VCQ09SRV9CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEd1YXJkZWRCdWlsdGluQnVpbHRp
bnNfaAorCisjIyMgRW5kIEZpbGU6IEd1YXJkZWRCdWlsdGluQnVpbHRpbnMuaAorCisjIyMgQmVn
aW4gRmlsZTogR3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5jcHAKKy8qCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKwor
Ly8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBm
cm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5oIgorCisj
aW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXhlY3V0
YWJsZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4KKyNpbmNsdWRl
IDxydW50aW1lL0pTQ2VsbElubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL1N0cnVjdHVyZUlu
bGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL1ZNLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxl
U3RyZWFtTG9ja2VkQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6
OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2d1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0
cmVhbUxvY2tlZENvZGVMZW5ndGggPSAxMjc7Citjb25zdCBjaGFyKiBzX2d1YXJkZWRCdWlsdGlu
SXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGUgPQorICAgIihmdW5jdGlvbiAoc3RyZWFtKVxuIiBc
CisgICAie1xuIiBcCisgICAiICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICJcbiIgXAorICAg
IiAgICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjtcbiIgXAorICAgIn0pXG4iIFwKKzsKKworY29u
c3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0
cmVhbUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RD
b25zdHJ1Y3Q7Citjb25zdCBpbnQgc19ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFt
Q29kZUxlbmd0aCA9IDUxNDsKK2NvbnN0IGNoYXIqIHNfZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFk
YWJsZVN0cmVhbUNvZGUgPQorICAgIihmdW5jdGlvbiAoc3RyZWFtLCByZWFzb24pXG4iIFwKKyAg
ICJ7XG4iIFwKKyAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICJcbiIgXAorICAgIiAg
ICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xvc2VkKVxuIiBcCisgICAi
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4iIFwKKyAgICIgICAgaWYgKHN0cmVh
bS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpXG4iIFwKKyAgICIgICAgICAgIHJl
dHVybiBQcm9taXNlLnJlamVjdChzdHJlYW0uQHN0b3JlZEVycm9yKTtcbiIgXAorICAgIiAgICBz
dHJlYW0uQHF1ZXVlID0gW107XG4iIFwKKyAgICIgICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0
cmVhbShzdHJlYW0pO1xuIiBcCisgICAiICAgIHJldHVybiBAcHJvbWlzZUludm9rZU9yTm9vcChz
dHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsIFwiY2FuY2VsXCIsIFtyZWFzb25dKS50aGVuKGZ1bmN0
aW9uKCkgeyB9KTtcbiIgXAorICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RB
YmlsaXR5IHNfZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUNvbnN0cnVjdEFi
aWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGlu
dCBzX2d1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVMZW5ndGggPSA0Nzc7Citj
b25zdCBjaGFyKiBzX2d1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGUgPQorICAg
IihmdW5jdGlvbiAob2JqZWN0LCBrZXksIGFyZ3MpXG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAg
XCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICB0cnkge1xuIiBcCisgICAi
ICAgICAgICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07XG4iIFwKKyAgICIgICAgICAgIGlmICh0
eXBlb2YgbWV0aG9kID09PSBcInVuZGVmaW5lZFwiKVxuIiBcCisgICAiICAgICAgICAgICAgcmV0
dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuIiBcCisgICAiICAgICAgICB2YXIgcmVzdWx0ID0gbWV0
aG9kLkBhcHBseShvYmplY3QsIGFyZ3MpO1xuIiBcCisgICAiICAgICAgICByZXR1cm4gUHJvbWlz
ZS5yZXNvbHZlKHJlc3VsdCk7XG4iIFwKKyAgICIgICAgfVxuIiBcCisgICAiICAgIGNhdGNoKGVy
cm9yKSB7XG4iIFwKKyAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4i
IFwKKyAgICIgICAgfVxuIiBcCisgICAifSlcbiIgXAorOworCisKKyNkZWZpbmUgREVGSU5FX0JV
SUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwK
K0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZt
KSBcCit7XAorICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXAorICAgIHJldHVybiBjbGllbnREYXRhLT5i
dWlsdGluRnVuY3Rpb25zKCkuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNFeGVj
dXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5ndWFyZGVk
QnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpKTsgXAorfQorV0VCQ09SRV9GT1JF
QUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1Ip
CisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCisKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorIyMjIEVuZCBGaWxlOiBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmNwcAorCisjIyMgQmVn
aW4gRmlsZTogR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIuaAorLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAq
LworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJh
dGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisK
KyNpZm5kZWYgR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAorI2RlZmluZSBHdWFyZGVk
QnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9oCisKKyNpbmNsdWRlICJHdWFyZGVkQnVpbHRpbkJ1aWx0
aW5zLmgiCisjaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+CisjaW5jbHVkZSA8Ynl0
ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0lk
ZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlciA6IHByaXZh
dGUgSlNDOjpXZWFrSGFuZGxlT3duZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IEd1YXJkZWRC
dWlsdGluQnVpbHRpbnNXcmFwcGVyKEpTQzo6Vk0qIHZtKQorICAgICAgICA6IG1fdm0oKnZtKQor
ICAgICAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9O
QU1FKElOSVRJQUxJWkVfQlVJTFRJTl9OQU1FUykKKyNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElO
X1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNT
b3VyY2UoSlNDOjptYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNfIyNu
YW1lLCBsZW5ndGgpKSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JV
SUxUSU5fQ09ERShJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgSU5J
VElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCisgICAgeworICAgIH0KKworI2RlZmluZSBF
WFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAor
ICAgIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsg
XAorICAgIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgY29uc3QgeyByZXR1
cm4gbV8jI25hbWUjI1NvdXJjZTsgfQorICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJ
Tl9CVUlMVElOX0NPREUoRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgRVhQT1NF
X0JVSUxUSU5fRVhFQ1VUQUJMRVMKKworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJ
Tl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNT
T1IpCisKKyAgICB2b2lkIGV4cG9ydE5hbWVzKCk7CisKK3ByaXZhdGU6CisgICAgSlNDOjpWTSYg
bV92bTsKKworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNU
SU9OX05BTUUoREVDTEFSRV9CVUlMVElOX05BTUVTKQorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJ
Tl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorICAgIEpTQzo6
U291cmNlQ29kZSBtXyMjbmFtZSMjU291cmNlO1wKKyAgICBKU0M6OldlYWs8SlNDOjpVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZT4gbV8jI25hbWUjI0V4ZWN1dGFibGU7CisgICAgV0VCQ09SRV9G
T1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fU09VUkNF
X01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCisKK307CisK
KyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBs
ZW5ndGgpIFwKK2lubGluZSBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBHdWFyZGVk
QnVpbHRpbkJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tcCisgICAgaWYg
KCFtXyMjbmFtZSMjRXhlY3V0YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0g
SlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6Y3JlYXRlQnVp
bHRpbkV4ZWN1dGFibGUobV92bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25OYW1lIyNQdWJs
aWNOYW1lKCksIHNfIyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNF
eGVjdXRhYmxlKTtcCisgICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKK30K
K1dFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxU
SU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMKKworaW5s
aW5lIHZvaWQgR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXI6OmV4cG9ydE5hbWVzKCkKK3sK
KyNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9OX05BTUUobmFtZSkgbV92bS5wcm9wZXJ0eU5hbWVzLT5h
cHBlbmRFeHRlcm5hbE5hbWUobmFtZSMjUHVibGljTmFtZSgpLCBuYW1lIyNQcml2YXRlTmFtZSgp
KTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9O
QU1FKEVYUE9SVF9GVU5DVElPTl9OQU1FKQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTl9OQU1FCit9
CisKK2NsYXNzIEd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9ucyB7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgR3VhcmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zKEpTQzo6Vk0mIHZtKSA6IG1f
dm0odm0pIHsgfQorCisgICAgdm9pZCBpbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKKyAgICB2
b2lkIHZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImKTsKKworcHVibGljOgorICAgIEpTQzo6Vk0mIG1f
dm07CisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKGZ1bmN0aW9uTmFt
ZSkgXAorICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNGdW5jdGlvbj4gbV8jI2Z1bmN0aW9u
TmFtZSMjRnVuY3Rpb247CisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxU
SU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYg
REVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCit9OworCitpbmxpbmUgdm9pZCBHdWFyZGVk
QnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnM6OmluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQoreworI2RlZmluZSBFWFBPUlRfRlVOQ1RJT04oY29kZU5hbWUsIGZ1bmN0aW9uTmFt
ZSwgbGVuZ3RoKVwKKyAgICBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbi5zZXQobV92bSwgJmds
b2JhbE9iamVjdCwgSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24obV92bSwg
Y29kZU5hbWUjI0dlbmVyYXRvcihtX3ZtKSwgJmdsb2JhbE9iamVjdCkpOworICAgIFdFQkNPUkVf
Rk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoRVhQT1JUX0ZVTkNUSU9OKQorI3Vu
ZGVmIEVYUE9SVF9GVU5DVElPTgorfQorCitpbmxpbmUgdm9pZCBHdWFyZGVkQnVpbHRpbkJ1aWx0
aW5GdW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisjZGVmaW5l
IFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFtZSMjRnVuY3Rpb24p
OworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05B
TUUoVklTSVRfRlVOQ1RJT04pCisjdW5kZWYgVklTSVRfRlVOQ1RJT04KK30KKworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBl
cl9oCisKKyMjIyBFbmQgRmlsZTogR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIuaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhw
ZWN0ZWQvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dl
YkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODJlZDY3ZWNhNDAwYzUzMTg2ZmNkYjM1NWI1ZTRiZTUzNjljZTNmNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVj
dGVkL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAg
LTAsMCArMSwzMTggQEAKKyMjIyBCZWdpbiBGaWxlOiBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVp
bHRpbnMuaAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0
IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8v
IGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dl
bmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1
aWx0aW5zX2gKKyNkZWZpbmUgR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zX2gKKworI2lu
Y2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oPgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNz
IEZ1bmN0aW9uRXhlY3V0YWJsZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvKiBHdWFy
ZGVkSW50ZXJuYWxCdWlsdGluICovCitleHRlcm4gY29uc3QgY2hhciogc19ndWFyZGVkSW50ZXJu
YWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGU7CitleHRlcm4gY29uc3QgaW50IHNf
Z3VhcmRlZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlTGVuZ3RoOwor
ZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0
aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29u
c3QgY2hhciogc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2Rl
OworZXh0ZXJuIGNvbnN0IGludCBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFkYWJs
ZVN0cmVhbUNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNf
Z3VhcmRlZEludGVybmFsQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUNvbnN0cnVjdEFi
aWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluUHJvbWlz
ZUludm9rZU9yTm9vcENvZGU7CitleHRlcm4gY29uc3QgaW50IHNfZ3VhcmRlZEludGVybmFsQnVp
bHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29u
c3RydWN0QWJpbGl0eSBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29w
Q29kZUNvbnN0cnVjdEFiaWxpdHk7CisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJ
TlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9EQVRBKG1hY3JvKSBcCisgICAgbWFjcm8oaXNSZWFkYWJs
ZVN0cmVhbUxvY2tlZCwgZ3VhcmRlZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2Nr
ZWQsIDEpIFwKKyAgICBtYWNybyhjYW5jZWxSZWFkYWJsZVN0cmVhbSwgZ3VhcmRlZEludGVybmFs
QnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtLCAyKSBcCisgICAgbWFjcm8ocHJvbWlzZUludm9r
ZU9yTm9vcCwgZ3VhcmRlZEludGVybmFsQnVpbHRpblByb21pc2VJbnZva2VPck5vb3AsIDMpIFwK
KworI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9JU1JFQURB
QkxFU1RSRUFNTE9DS0VEIDEKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX0dVQVJERURJTlRFUk5B
TEJVSUxUSU5fQ0FOQ0VMUkVBREFCTEVTVFJFQU0gMQorI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5f
R1VBUkRFRElOVEVSTkFMQlVJTFRJTl9QUk9NSVNFSU5WT0tFT1JOT09QIDEKKworI2RlZmluZSBX
RUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0NPREUobWFjcm8p
IFwKKyAgICBtYWNybyhndWFyZGVkSW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tl
ZENvZGUsIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbklz
UmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8oZ3VhcmRlZEludGVy
bmFsQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZSwgY2FuY2VsUmVhZGFibGVTdHJlYW0s
IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUxlbmd0aCkg
XAorICAgIG1hY3JvKGd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29k
ZSwgcHJvbWlzZUludm9rZU9yTm9vcCwgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluUHJvbWlzZUlu
dm9rZU9yTm9vcENvZGVMZW5ndGgpIFwKKworI2RlZmluZSBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRF
RElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFwKKyAgICBtYWNy
byhjYW5jZWxSZWFkYWJsZVN0cmVhbSkgXAorICAgIG1hY3JvKGlzUmVhZGFibGVTdHJlYW1Mb2Nr
ZWQpIFwKKyAgICBtYWNybyhwcm9taXNlSW52b2tlT3JOb29wKSBcCisKKyNkZWZpbmUgREVDTEFS
RV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50
KSBcCisgICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlND
OjpWTSYpOworCitXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElO
X0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5f
R0VORVJBVE9SCisKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX0dVQVJERURJTlRFUk5BTEJVSUxU
SU5fRVhJU1RTKG9iamVjdCwgZnVuYykgZGVmaW5lZCBXRUJDT1JFX0JVSUxUSU5fICMjIG9iamVj
dCAjIyBfICMjIGZ1bmMKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gR3Vh
cmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zX2gKKworIyMjIEVuZCBGaWxlOiBHdWFyZGVkSW50
ZXJuYWxCdWlsdGluQnVpbHRpbnMuaAorCisjIyMgQmVnaW4gRmlsZTogR3VhcmRlZEludGVybmFs
QnVpbHRpbkJ1aWx0aW5zLmNwcAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBU
SElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBm
aWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnMuaCIKKworI2luY2x1ZGUg
IldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlIDxydW50aW1lL0V4ZWN1dGFibGUuaD4K
KyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGlt
ZS9KU0NlbGxJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+
CisjaW5jbHVkZSA8cnVudGltZS9WTS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0
IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1JlYWRhYmxl
U3RyZWFtTG9ja2VkQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6
OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1Jl
YWRhYmxlU3RyZWFtTG9ja2VkQ29kZUxlbmd0aCA9IDEyNzsKK2NvbnN0IGNoYXIqIHNfZ3VhcmRl
ZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlID0KKyAgICIoZnVuY3Rp
b24gKHN0cmVhbSlcbiIgXAorICAgIntcbiIgXAorICAgIiAgIFwidXNlIHN0cmljdFwiO1xuIiBc
CisgICAiXG4iIFwKKyAgICIgICAgcmV0dXJuICEhc3RyZWFtLkByZWFkZXI7XG4iIFwKKyAgICJ9
KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRJbnRlcm5h
bEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpD
b25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19ndWFyZGVkSW50
ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlTGVuZ3RoID0gNTE0OworY29uc3Qg
Y2hhciogc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlID0K
KyAgICIoZnVuY3Rpb24gKHN0cmVhbSwgcmVhc29uKVxuIiBcCisgICAie1xuIiBcCisgICAiICAg
IFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgaWYgKHN0cmVhbS5Ac3Rh
dGUgPT09IEByZWFkYWJsZVN0cmVhbUNsb3NlZClcbiIgXAorICAgIiAgICAgICAgcmV0dXJuIFBy
b21pc2UucmVzb2x2ZSgpO1xuIiBcCisgICAiICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVh
ZGFibGVTdHJlYW1FcnJvcmVkKVxuIiBcCisgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWpl
Y3Qoc3RyZWFtLkBzdG9yZWRFcnJvcik7XG4iIFwKKyAgICIgICAgc3RyZWFtLkBxdWV1ZSA9IFtd
O1xuIiBcCisgICAiICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTtcbiIg
XAorICAgIiAgICByZXR1cm4gQHByb21pc2VJbnZva2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5n
U291cmNlLCBcImNhbmNlbFwiLCBbcmVhc29uXSkudGhlbihmdW5jdGlvbigpIHsgfSk7XG4iIFwK
KyAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRJ
bnRlcm5hbEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBK
U0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2d1YXJk
ZWRJbnRlcm5hbEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUxlbmd0aCA9IDQ3NzsKK2Nv
bnN0IGNoYXIqIHNfZ3VhcmRlZEludGVybmFsQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2Rl
ID0KKyAgICIoZnVuY3Rpb24gKG9iamVjdCwga2V5LCBhcmdzKVxuIiBcCisgICAie1xuIiBcCisg
ICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdHJ5IHtcbiIg
XAorICAgIiAgICAgICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldO1xuIiBcCisgICAiICAgICAg
ICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gXCJ1bmRlZmluZWRcIilcbiIgXAorICAgIiAgICAgICAg
ICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiIgXAorICAgIiAgICAgICAgdmFyIHJlc3Vs
dCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBhcmdzKTtcbiIgXAorICAgIiAgICAgICAgcmV0dXJu
IFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xuIiBcCisgICAiICAgIH1cbiIgXAorICAgIiAgICBj
YXRjaChlcnJvcikge1xuIiBcCisgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJy
b3IpO1xuIiBcCisgICAiICAgIH1cbiIgXAorICAgIn0pXG4iIFwKKzsKKworCisjZGVmaW5lIERF
RklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENv
dW50KSBcCitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6
OlZNJiB2bSkgXAore1wKKyAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19j
YXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFwKKyAgICByZXR1cm4gY2xpZW50
RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucygp
LmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5j
dGlvbnMoKS5ndWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNl
KCkpOyBcCit9CitXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElO
X0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFRklORV9CVUlMVElOX0dF
TkVSQVRPUgorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyMjIyBFbmQgRmlsZTogR3VhcmRl
ZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zLmNwcAorCisjIyMgQmVnaW4gRmlsZTogR3VhcmRlZElu
dGVybmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlci5oCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1
IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERP
IE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBK
YXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lmbmRlZiBH
dWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyX2gKKyNkZWZpbmUgR3VhcmRlZElu
dGVybmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9oCisKKyNpbmNsdWRlICJHdWFyZGVkSW50ZXJu
YWxCdWlsdGluQnVpbHRpbnMuaCIKKyNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4K
KyNpbmNsdWRlIDxieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5C
dWlsdGluc1dyYXBwZXIgOiBwcml2YXRlIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyKEpTQzo6
Vk0qIHZtKQorICAgICAgICA6IG1fdm0oKnZtKQorICAgICAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VB
UkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElaRV9CVUlM
VElOX05BTUVTKQorI2RlZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFt
ZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpICwgbV8jI25hbWUjI1NvdXJjZShKU0M6Om1ha2VTb3Vy
Y2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc18jI25hbWUsIGxlbmd0aCkpKQorICAg
ICAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0NPREUo
SU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIElOSVRJQUxJWkVfQlVJ
TFRJTl9TT1VSQ0VfTUVNQkVSUworICAgIHsKKyAgICB9CisKKyNkZWZpbmUgRVhQT1NFX0JVSUxU
SU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKKyAgICBKU0M6OlVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFwKKyAgICBjb25z
dCBKU0M6OlNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1l
IyNTb3VyY2U7IH0KKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9C
VUlMVElOX0NPREUoRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgRVhQT1NFX0JV
SUxUSU5fRVhFQ1VUQUJMRVMKKworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxC
VUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9B
Q0NFU1NPUikKKworICAgIHZvaWQgZXhwb3J0TmFtZXMoKTsKKworcHJpdmF0ZToKKyAgICBKU0M6
OlZNJiBtX3ZtOworCisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5f
QlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FUykKKworI2RlZmluZSBE
RUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgp
IFwKKyAgICBKU0M6OlNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJjZTtcCisgICAgSlNDOjpXZWFr
PEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVjdXRhYmxlOwor
ICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShE
RUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NP
VVJDRV9NRU1CRVJTCisKK307CisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMo
bmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKK2lubGluZSBKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyOjpuYW1l
IyNFeGVjdXRhYmxlKCkgXAore1wKKyAgICBpZiAoIW1fIyNuYW1lIyNFeGVjdXRhYmxlKVwKKyAg
ICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUgPSBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZT4oSlNDOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShtX3ZtLCBtXyMjbmFt
ZSMjU291cmNlLCBmdW5jdGlvbk5hbWUjI1B1YmxpY05hbWUoKSwgc18jI25hbWUjI0NvbnN0cnVj
dEFiaWxpdHkpLCB0aGlzLCAmbV8jI25hbWUjI0V4ZWN1dGFibGUpO1wKKyAgICByZXR1cm4gbV8j
I25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7XAorfQorV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRF
Uk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3Vu
ZGVmIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTCisKK2lubGluZSB2b2lkIEd1YXJkZWRJbnRl
cm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXI6OmV4cG9ydE5hbWVzKCkKK3sKKyNkZWZpbmUgRVhQ
T1JUX0ZVTkNUSU9OX05BTUUobmFtZSkgbV92bS5wcm9wZXJ0eU5hbWVzLT5hcHBlbmRFeHRlcm5h
bE5hbWUobmFtZSMjUHVibGljTmFtZSgpLCBuYW1lIyNQcml2YXRlTmFtZSgpKTsKKyAgICBXRUJD
T1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUo
RVhQT1JUX0ZVTkNUSU9OX05BTUUpCisjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OX05BTUUKK30KKwor
Y2xhc3MgR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnMgeworcHVibGljOgor
ICAgIGV4cGxpY2l0IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zKEpTQzo6
Vk0mIHZtKSA6IG1fdm0odm0pIHsgfQorCisgICAgdm9pZCBpbml0KEpTQzo6SlNHbG9iYWxPYmpl
Y3QmKTsKKyAgICB2b2lkIHZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImKTsKKworcHVibGljOgorICAg
IEpTQzo6Vk0mIG1fdm07CisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJT
KGZ1bmN0aW9uTmFtZSkgXAorICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNGdW5jdGlvbj4g
bV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb247CisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJ
TlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9TT1VS
Q0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKK307CisK
K2lubGluZSB2b2lkIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zOjppbml0
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyNkZWZpbmUgRVhQT1JUX0ZV
TkNUSU9OKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aClcCisgICAgbV8jI2Z1bmN0aW9u
TmFtZSMjRnVuY3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmplY3QsIEpTQzo6SlNGdW5jdGlvbjo6
Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKG1fdm0sIGNvZGVOYW1lIyNHZW5lcmF0b3IobV92bSksICZn
bG9iYWxPYmplY3QpKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJ
Tl9CVUlMVElOX0NPREUoRVhQT1JUX0ZVTkNUSU9OKQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTgor
fQorCitpbmxpbmUgdm9pZCBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbkZ1bmN0aW9uczo6
dmlzaXQoSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyNkZWZpbmUgVklTSVRfRlVOQ1RJ
T04obmFtZSkgdmlzaXRvci5hcHBlbmQoJm1fIyNuYW1lIyNGdW5jdGlvbik7CisgICAgV0VCQ09S
RV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKFZJ
U0lUX0ZVTkNUSU9OKQorI3VuZGVmIFZJU0lUX0ZVTkNUSU9OCit9CisKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3Jh
cHBlcl9oCisKKyMjIyBFbmQgRmlsZTogR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3Jh
cHBlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVz
dWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0
ZWQvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41NjI1ZDU2YzcwMTZlMmMwMDMwOTZmMWM3OGVhMjg0M2M1ODVlMjAwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0
ZWQvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMCwwICsx
LDMxOCBAQAorIyMjIEJlZ2luIEZpbGU6IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5oCisvKgor
ICogQ29weXJpZ2h0IChjKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGlj
YWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkg
dGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVp
bHRpbnMucHkKKworI2lmbmRlZiBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNfaAorI2RlZmluZSBV
bmd1YXJkZWRCdWlsdGluQnVpbHRpbnNfaAorCisjaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0
aWxzLmg+CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOworfQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8qIFVuZ3VhcmRlZEJ1aWx0aW4gKi8KK2V4dGVybiBj
b25zdCBjaGFyKiBzX3VuZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZTsK
K2V4dGVybiBjb25zdCBpbnQgc191bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tl
ZENvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfdW5ndWFy
ZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4
dGVybiBjb25zdCBjaGFyKiBzX3VuZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNv
ZGU7CitleHRlcm4gY29uc3QgaW50IHNfdW5ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3Ry
ZWFtQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc191bmd1
YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4
dGVybiBjb25zdCBjaGFyKiBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29k
ZTsKK2V4dGVybiBjb25zdCBpbnQgc191bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9v
cENvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfdW5ndWFy
ZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlQ29uc3RydWN0QWJpbGl0eTsKKworI2Rl
ZmluZSBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0RBVEEobWFjcm8p
IFwKKyAgICBtYWNybyhpc1JlYWRhYmxlU3RyZWFtTG9ja2VkLCB1bmd1YXJkZWRCdWlsdGluSXNS
ZWFkYWJsZVN0cmVhbUxvY2tlZCwgMSkgXAorICAgIG1hY3JvKGNhbmNlbFJlYWRhYmxlU3RyZWFt
LCB1bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW0sIDIpIFwKKyAgICBtYWNybyhw
cm9taXNlSW52b2tlT3JOb29wLCB1bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcCwg
MykgXAorCisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9VTkdVQVJERURCVUlMVElOX0lTUkVBREFC
TEVTVFJFQU1MT0NLRUQgMQorI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fVU5HVUFSREVEQlVJTFRJ
Tl9DQU5DRUxSRUFEQUJMRVNUUkVBTSAxCisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9VTkdVQVJE
RURCVUlMVElOX1BST01JU0VJTlZPS0VPUk5PT1AgMQorCisjZGVmaW5lIFdFQkNPUkVfRk9SRUFD
SF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShtYWNybykgXAorICAgIG1hY3JvKHVuZ3Vh
cmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZSwgaXNSZWFkYWJsZVN0cmVhbUxv
Y2tlZCwgc191bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5ndGgp
IFwKKyAgICBtYWNybyh1bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlLCBj
YW5jZWxSZWFkYWJsZVN0cmVhbSwgc191bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJl
YW1Db2RlTGVuZ3RoKSBcCisgICAgbWFjcm8odW5ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VP
ck5vb3BDb2RlLCBwcm9taXNlSW52b2tlT3JOb29wLCBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNl
SW52b2tlT3JOb29wQ29kZUxlbmd0aCkgXAorCisjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9VTkdV
QVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXAorICAgIG1hY3JvKGNh
bmNlbFJlYWRhYmxlU3RyZWFtKSBcCisgICAgbWFjcm8oaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCkg
XAorICAgIG1hY3JvKHByb21pc2VJbnZva2VPck5vb3ApIFwKKworI2RlZmluZSBERUNMQVJFX0JV
SUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwK
KyAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZN
Jik7CisKK1dFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShERUNM
QVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IK
KworI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fVU5HVUFSREVEQlVJTFRJTl9FWElTVFMob2JqZWN0
LCBmdW5jKSBkZWZpbmVkIFdFQkNPUkVfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVuYwor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVbmd1YXJkZWRCdWlsdGluQnVp
bHRpbnNfaAorCisjIyMgRW5kIEZpbGU6IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5oCisKKyMj
IyBCZWdpbiBGaWxlOiBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnMuY3BwCisvKgorICogQ29weXJp
Z2h0IChjKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAor
ICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5l
cmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlw
dDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkK
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlu
cy5oIgorCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgPHJ1bnRp
bWUvRXhlY3V0YWJsZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4K
KyNpbmNsdWRlIDxydW50aW1lL0pTQ2VsbElubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL1N0
cnVjdHVyZUlubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL1ZNLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfdW5ndWFyZGVkQnVpbHRp
bklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3Ry
dWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfdW5ndWFyZGVkQnVpbHRp
bklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlTGVuZ3RoID0gMTI3OworY29uc3QgY2hhciogc191
bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGUgPQorICAgIihmdW5jdGlv
biAoc3RyZWFtKVxuIiBcCisgICAie1xuIiBcCisgICAiICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwK
KyAgICJcbiIgXAorICAgIiAgICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjtcbiIgXAorICAgIn0p
XG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfdW5ndWFyZGVkQnVpbHRp
bkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVj
dEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX3VuZ3VhcmRlZEJ1aWx0aW5D
YW5jZWxSZWFkYWJsZVN0cmVhbUNvZGVMZW5ndGggPSA1MTQ7Citjb25zdCBjaGFyKiBzX3VuZ3Vh
cmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGUgPQorICAgIihmdW5jdGlvbiAoc3Ry
ZWFtLCByZWFzb24pXG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4i
IFwKKyAgICJcbiIgXAorICAgIiAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3Ry
ZWFtQ2xvc2VkKVxuIiBcCisgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4i
IFwKKyAgICIgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQp
XG4iIFwKKyAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChzdHJlYW0uQHN0b3JlZEVy
cm9yKTtcbiIgXAorICAgIiAgICBzdHJlYW0uQHF1ZXVlID0gW107XG4iIFwKKyAgICIgICAgQGZp
bmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pO1xuIiBcCisgICAiICAgIHJldHVybiBA
cHJvbWlzZUludm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsIFwiY2FuY2VsXCIs
IFtyZWFzb25dKS50aGVuKGZ1bmN0aW9uKCkgeyB9KTtcbiIgXAorICAgIn0pXG4iIFwKKzsKKwor
Y29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfdW5ndWFyZGVkQnVpbHRpblByb21pc2VJbnZv
a2VPck5vb3BDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fu
bm90Q29uc3RydWN0OworY29uc3QgaW50IHNfdW5ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VP
ck5vb3BDb2RlTGVuZ3RoID0gNDc3OworY29uc3QgY2hhciogc191bmd1YXJkZWRCdWlsdGluUHJv
bWlzZUludm9rZU9yTm9vcENvZGUgPQorICAgIihmdW5jdGlvbiAob2JqZWN0LCBrZXksIGFyZ3Mp
XG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICJcbiIg
XAorICAgIiAgICB0cnkge1xuIiBcCisgICAiICAgICAgICB2YXIgbWV0aG9kID0gb2JqZWN0W2tl
eV07XG4iIFwKKyAgICIgICAgICAgIGlmICh0eXBlb2YgbWV0aG9kID09PSBcInVuZGVmaW5lZFwi
KVxuIiBcCisgICAiICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuIiBcCisg
ICAiICAgICAgICB2YXIgcmVzdWx0ID0gbWV0aG9kLkBhcHBseShvYmplY3QsIGFyZ3MpO1xuIiBc
CisgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XG4iIFwKKyAgICIg
ICAgfVxuIiBcCisgICAiICAgIGNhdGNoKGVycm9yKSB7XG4iIFwKKyAgICIgICAgICAgIHJldHVy
biBQcm9taXNlLnJlamVjdChlcnJvcik7XG4iIFwKKyAgICIgICAgfVxuIiBcCisgICAifSlcbiIg
XAorOworCisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5j
dGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2Rl
TmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCit7XAorICAgIEpTVk1DbGllbnREYXRhKiBj
bGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsg
XAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkudW5ndWFyZGVkQnVp
bHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0
YS0+YnVpbHRpbkZ1bmN0aW9ucygpLnVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1l
IyNTb3VyY2UoKSk7IFwKK30KK1dFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxU
SU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5f
R0VORVJBVE9SCisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorIyMjIEVuZCBGaWxlOiBVbmd1
YXJkZWRCdWlsdGluQnVpbHRpbnMuY3BwCisKKyMjIyBCZWdpbiBGaWxlOiBVbmd1YXJkZWRCdWls
dGluQnVpbHRpbnNXcmFwcGVyLmgKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ2Fub24gSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQg
VEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQg
ZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaWZuZGVmIFVuZ3VhcmRlZEJ1
aWx0aW5CdWlsdGluc1dyYXBwZXJfaAorI2RlZmluZSBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNX
cmFwcGVyX2gKKworI2luY2x1ZGUgIlVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5oIgorI2luY2x1
ZGUgPGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oPgorI2luY2x1ZGUgPGJ5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmg+CisjaW5jbHVkZSA8cnVudGltZS9JZGVudGlmaWVyLmg+Cisj
aW5jbHVkZSA8cnVudGltZS9KU0Z1bmN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlciA6IHByaXZhdGUgSlNDOjpXZWFr
SGFuZGxlT3duZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFVuZ3VhcmRlZEJ1aWx0aW5CdWls
dGluc1dyYXBwZXIoSlNDOjpWTSogdm0pCisgICAgICAgIDogbV92bSgqdm0pCisgICAgICAgIFdF
QkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklU
SUFMSVpFX0JVSUxUSU5fTkFNRVMpCisjZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0Vf
TUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKEpT
Qzo6bWFrZVNvdXJjZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFtZSwgbGVu
Z3RoKSkpCisgICAgICAgIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5f
Q09ERShJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgSU5JVElBTEla
RV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCisgICAgeworICAgIH0KKworI2RlZmluZSBFWFBPU0Vf
QlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorICAgIEpT
Qzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXAorICAg
IGNvbnN0IEpTQzo6U291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV8j
I25hbWUjI1NvdXJjZTsgfQorICAgIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JV
SUxUSU5fQ09ERShFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBFWFBPU0VfQlVJ
TFRJTl9FWEVDVVRBQkxFUworCisgICAgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5f
QlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09S
KQorCisgICAgdm9pZCBleHBvcnROYW1lcygpOworCitwcml2YXRlOgorICAgIEpTQzo6Vk0mIG1f
dm07CisKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNU
SU9OX05BTUUoREVDTEFSRV9CVUlMVElOX05BTUVTKQorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJ
Tl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorICAgIEpTQzo6
U291cmNlQ29kZSBtXyMjbmFtZSMjU291cmNlO1wKKyAgICBKU0M6OldlYWs8SlNDOjpVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZT4gbV8jI25hbWUjI0V4ZWN1dGFibGU7CisgICAgV0VCQ09SRV9G
T1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9TT1VS
Q0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKKworfTsK
KworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUs
IGxlbmd0aCkgXAoraW5saW5lIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIFVuZ3Vh
cmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4ZWN1dGFibGUoKSBcCit7XAorICAg
IGlmICghbV8jI25hbWUjI0V4ZWN1dGFibGUpXAorICAgICAgICBtXyMjbmFtZSMjRXhlY3V0YWJs
ZSA9IEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPihKU0M6OmNyZWF0
ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fdm0sIG1fIyNuYW1lIyNTb3VyY2UsIGZ1bmN0aW9uTmFtZSMj
UHVibGljTmFtZSgpLCBzXyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0eSksIHRoaXMsICZtXyMjbmFt
ZSMjRXhlY3V0YWJsZSk7XAorICAgIHJldHVybiBtXyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtc
Cit9CitXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVGSU5F
X0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMK
KworaW5saW5lIHZvaWQgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcjo6ZXhwb3J0TmFt
ZXMoKQoreworI2RlZmluZSBFWFBPUlRfRlVOQ1RJT05fTkFNRShuYW1lKSBtX3ZtLnByb3BlcnR5
TmFtZXMtPmFwcGVuZEV4dGVybmFsTmFtZShuYW1lIyNQdWJsaWNOYW1lKCksIG5hbWUjI1ByaXZh
dGVOYW1lKCkpOworICAgIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5f
RlVOQ1RJT05fTkFNRShFWFBPUlRfRlVOQ1RJT05fTkFNRSkKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJ
T05fTkFNRQorfQorCitjbGFzcyBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9ucyB7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnMoSlND
OjpWTSYgdm0pIDogbV92bSh2bSkgeyB9CisKKyAgICB2b2lkIGluaXQoSlNDOjpKU0dsb2JhbE9i
amVjdCYpOworICAgIHZvaWQgdmlzaXQoSlNDOjpTbG90VmlzaXRvciYpOworCitwdWJsaWM6Cisg
ICAgSlNDOjpWTSYgbV92bTsKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJF
UlMoZnVuY3Rpb25OYW1lKSBcCisgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU0Z1bmN0aW9u
PiBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbjsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFS
REVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9N
RU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworfTsKKworaW5s
aW5lIHZvaWQgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnM6OmluaXQoSlNDOjpKU0ds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworI2RlZmluZSBFWFBPUlRfRlVOQ1RJT04oY29k
ZU5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKVwKKyAgICBtXyMjZnVuY3Rpb25OYW1lIyNGdW5j
dGlvbi5zZXQobV92bSwgJmdsb2JhbE9iamVjdCwgSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVCdWls
dGluRnVuY3Rpb24obV92bSwgY29kZU5hbWUjI0dlbmVyYXRvcihtX3ZtKSwgJmdsb2JhbE9iamVj
dCkpOworICAgIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShF
WFBPUlRfRlVOQ1RJT04pCisjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OCit9CisKK2lubGluZSB2b2lk
IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zOjp2aXNpdChKU0M6OlNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworI2RlZmluZSBWSVNJVF9GVU5DVElPTihuYW1lKSB2aXNpdG9yLmFwcGVu
ZCgmbV8jI25hbWUjI0Z1bmN0aW9uKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJ
TFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoVklTSVRfRlVOQ1RJT04pCisjdW5kZWYgVklTSVRf
RlVOQ1RJT04KK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVbmd1
YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyX2gKKworIyMjIEVuZCBGaWxlOiBVbmd1YXJkZWRC
dWlsdGluQnVpbHRpbnNXcmFwcGVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1T
ZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQxOWNmOWJhNTEyMDlmNjE5YjYzMTJkNDhiNzQzNzUyMTE5ZmYzZTQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWls
dGlucy9leHBlY3RlZC9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0CkBA
IC0wLDAgKzEsMzE4IEBACisjIyMgQmVnaW4gRmlsZTogeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zLmgK
Ky8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRv
bWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlu
cyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1q
cy1idWlsdGlucy5weQorCisjaWZuZGVmIHhtbENhc2luZ1Rlc3RCdWlsdGluc19oCisjZGVmaW5l
IHhtbENhc2luZ1Rlc3RCdWlsdGluc19oCisKKyNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRp
bHMuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Cit9CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworLyogeG1sQ2FzaW5nVGVzdCAqLworZXh0ZXJuIGNvbnN0
IGNoYXIqIHNfeG1sQ2FzaW5nVGVzdFhNTENhc2luZ1Rlc3RDb2RlOworZXh0ZXJuIGNvbnN0IGlu
dCBzX3htbENhc2luZ1Rlc3RYTUxDYXNpbmdUZXN0Q29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBK
U0M6OkNvbnN0cnVjdEFiaWxpdHkgc194bWxDYXNpbmdUZXN0WE1MQ2FzaW5nVGVzdENvZGVDb25z
dHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfeG1sQ2FzaW5nVGVzdENzc0Nhc2lu
Z1Rlc3RDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX3htbENhc2luZ1Rlc3RDc3NDYXNpbmdUZXN0
Q29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc194bWxDYXNp
bmdUZXN0Q3NzQ2FzaW5nVGVzdENvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNo
YXIqIHNfeG1sQ2FzaW5nVGVzdFVybENhc2luZ1Rlc3RDb2RlOworZXh0ZXJuIGNvbnN0IGludCBz
X3htbENhc2luZ1Rlc3RVcmxDYXNpbmdUZXN0Q29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6
OkNvbnN0cnVjdEFiaWxpdHkgc194bWxDYXNpbmdUZXN0VXJsQ2FzaW5nVGVzdENvZGVDb25zdHJ1
Y3RBYmlsaXR5OworCisjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxU
SU5fREFUQShtYWNybykgXAorICAgIG1hY3JvKHhtbENhc2luZ1Rlc3QsIHhtbENhc2luZ1Rlc3RY
TUxDYXNpbmdUZXN0LCAxKSBcCisgICAgbWFjcm8oY3NzQ2FzaW5nVGVzdCwgeG1sQ2FzaW5nVGVz
dENzc0Nhc2luZ1Rlc3QsIDIpIFwKKyAgICBtYWNybyh1cmxDYXNpbmdUZXN0LCB4bWxDYXNpbmdU
ZXN0VXJsQ2FzaW5nVGVzdCwgMykgXAorCisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9YTUxDQVNJ
TkdURVNUX1hNTENBU0lOR1RFU1QgMQorI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fWE1MQ0FTSU5H
VEVTVF9DU1NDQVNJTkdURVNUIDEKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX1hNTENBU0lOR1RF
U1RfVVJMQ0FTSU5HVEVTVCAxCisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RF
U1RfQlVJTFRJTl9DT0RFKG1hY3JvKSBcCisgICAgbWFjcm8oeG1sQ2FzaW5nVGVzdFhNTENhc2lu
Z1Rlc3RDb2RlLCB4bWxDYXNpbmdUZXN0LCBzX3htbENhc2luZ1Rlc3RYTUxDYXNpbmdUZXN0Q29k
ZUxlbmd0aCkgXAorICAgIG1hY3JvKHhtbENhc2luZ1Rlc3RDc3NDYXNpbmdUZXN0Q29kZSwgY3Nz
Q2FzaW5nVGVzdCwgc194bWxDYXNpbmdUZXN0Q3NzQ2FzaW5nVGVzdENvZGVMZW5ndGgpIFwKKyAg
ICBtYWNybyh4bWxDYXNpbmdUZXN0VXJsQ2FzaW5nVGVzdENvZGUsIHVybENhc2luZ1Rlc3QsIHNf
eG1sQ2FzaW5nVGVzdFVybENhc2luZ1Rlc3RDb2RlTGVuZ3RoKSBcCisKKyNkZWZpbmUgV0VCQ09S
RV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcCisg
ICAgbWFjcm8oY3NzQ2FzaW5nVGVzdCkgXAorICAgIG1hY3JvKHVybENhc2luZ1Rlc3QpIFwKKyAg
ICBtYWNybyh4bWxDYXNpbmdUZXN0KSBcCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVS
QVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCisgICAgSlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCitXRUJD
T1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dF
TkVSQVRPUikKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgV0VC
Q09SRV9CVUlMVElOX1hNTENBU0lOR1RFU1RfRVhJU1RTKG9iamVjdCwgZnVuYykgZGVmaW5lZCBX
RUJDT1JFX0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8geG1sQ2FzaW5nVGVzdEJ1aWx0aW5zX2gKKworIyMjIEVuZCBG
aWxlOiB4bWxDYXNpbmdUZXN0QnVpbHRpbnMuaAorCisjIyMgQmVnaW4gRmlsZTogeG1sQ2FzaW5n
VGVzdEJ1aWx0aW5zLmNwcAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElT
IEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxl
cyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJ4bWxDYXNpbmdUZXN0QnVpbHRpbnMuaCIKKworI2luY2x1ZGUgIldlYkNvcmVKU0Ns
aWVudERhdGEuaCIKKyNpbmNsdWRlIDxydW50aW1lL0V4ZWN1dGFibGUuaD4KKyNpbmNsdWRlIDxy
dW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NlbGxJbmxp
bmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CisjaW5jbHVkZSA8
cnVudGltZS9WTS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IEpTQzo6Q29uc3Ry
dWN0QWJpbGl0eSBzX3htbENhc2luZ1Rlc3RYTUxDYXNpbmdUZXN0Q29kZUNvbnN0cnVjdEFiaWxp
dHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBz
X3htbENhc2luZ1Rlc3RYTUxDYXNpbmdUZXN0Q29kZUxlbmd0aCA9IDEyNzsKK2NvbnN0IGNoYXIq
IHNfeG1sQ2FzaW5nVGVzdFhNTENhc2luZ1Rlc3RDb2RlID0KKyAgICIoZnVuY3Rpb24gKHN0cmVh
bSlcbiIgXAorICAgIntcbiIgXAorICAgIiAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4i
IFwKKyAgICIgICAgcmV0dXJuICEhc3RyZWFtLkByZWFkZXI7XG4iIFwKKyAgICJ9KVxuIiBcCis7
CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3htbENhc2luZ1Rlc3RDc3NDYXNpbmdU
ZXN0Q29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENv
bnN0cnVjdDsKK2NvbnN0IGludCBzX3htbENhc2luZ1Rlc3RDc3NDYXNpbmdUZXN0Q29kZUxlbmd0
aCA9IDUxNDsKK2NvbnN0IGNoYXIqIHNfeG1sQ2FzaW5nVGVzdENzc0Nhc2luZ1Rlc3RDb2RlID0K
KyAgICIoZnVuY3Rpb24gKHN0cmVhbSwgcmVhc29uKVxuIiBcCisgICAie1xuIiBcCisgICAiICAg
IFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgaWYgKHN0cmVhbS5Ac3Rh
dGUgPT09IEByZWFkYWJsZVN0cmVhbUNsb3NlZClcbiIgXAorICAgIiAgICAgICAgcmV0dXJuIFBy
b21pc2UucmVzb2x2ZSgpO1xuIiBcCisgICAiICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVh
ZGFibGVTdHJlYW1FcnJvcmVkKVxuIiBcCisgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWpl
Y3Qoc3RyZWFtLkBzdG9yZWRFcnJvcik7XG4iIFwKKyAgICIgICAgc3RyZWFtLkBxdWV1ZSA9IFtd
O1xuIiBcCisgICAiICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTtcbiIg
XAorICAgIiAgICByZXR1cm4gQHByb21pc2VJbnZva2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5n
U291cmNlLCBcImNhbmNlbFwiLCBbcmVhc29uXSkudGhlbihmdW5jdGlvbigpIHsgfSk7XG4iIFwK
KyAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3htbENhc2lu
Z1Rlc3RVcmxDYXNpbmdUZXN0Q29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFi
aWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX3htbENhc2luZ1Rlc3RVcmxDYXNp
bmdUZXN0Q29kZUxlbmd0aCA9IDQ3NzsKK2NvbnN0IGNoYXIqIHNfeG1sQ2FzaW5nVGVzdFVybENh
c2luZ1Rlc3RDb2RlID0KKyAgICIoZnVuY3Rpb24gKG9iamVjdCwga2V5LCBhcmdzKVxuIiBcCisg
ICAie1xuIiBcCisgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIg
ICAgdHJ5IHtcbiIgXAorICAgIiAgICAgICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldO1xuIiBc
CisgICAiICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gXCJ1bmRlZmluZWRcIilcbiIgXAor
ICAgIiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiIgXAorICAgIiAgICAg
ICAgdmFyIHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBhcmdzKTtcbiIgXAorICAgIiAg
ICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xuIiBcCisgICAiICAgIH1cbiIg
XAorICAgIiAgICBjYXRjaChlcnJvcikge1xuIiBcCisgICAiICAgICAgICByZXR1cm4gUHJvbWlz
ZS5yZWplY3QoZXJyb3IpO1xuIiBcCisgICAiICAgIH1cbiIgXAorICAgIn0pXG4iIFwKKzsKKwor
CisjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1l
LCBhcmd1bWVudENvdW50KSBcCitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dl
bmVyYXRvcihKU0M6OlZNJiB2bSkgXAore1wKKyAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0
YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFwKKyAgICBy
ZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLnhtbENhc2luZ1Rlc3RCdWlsdGlu
cygpLmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5G
dW5jdGlvbnMoKS54bWxDYXNpbmdUZXN0QnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCkpOyBc
Cit9CitXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0NPREUoREVGSU5FX0JV
SUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgorCisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKyMjIyBFbmQgRmlsZTogeG1sQ2FzaW5nVGVzdEJ1aWx0aW5z
LmNwcAorCisjIyMgQmVnaW4gRmlsZTogeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlci5oCisv
KgorICogQ29weXJpZ2h0IChjKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21h
dGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMg
YnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMt
YnVpbHRpbnMucHkKKworI2lmbmRlZiB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyX2gKKyNk
ZWZpbmUgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcl9oCisKKyNpbmNsdWRlICJ4bWxDYXNp
bmdUZXN0QnVpbHRpbnMuaCIKKyNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4KKyNp
bmNsdWRlIDxieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgorI2luY2x1ZGUg
PHJ1bnRpbWUvSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBw
ZXIgOiBwcml2YXRlIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNp
dCB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyKEpTQzo6Vk0qIHZtKQorICAgICAgICA6IG1f
dm0oKnZtKQorICAgICAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0ZV
TkNUSU9OX05BTUUoSU5JVElBTElaRV9CVUlMVElOX05BTUVTKQorI2RlZmluZSBJTklUSUFMSVpF
X0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpICwgbV8j
I25hbWUjI1NvdXJjZShKU0M6Om1ha2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVy
YWwoc18jI25hbWUsIGxlbmd0aCkpKQorICAgICAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5H
VEVTVF9CVUlMVElOX0NPREUoSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3Vu
ZGVmIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworICAgIHsKKyAgICB9CisKKyNk
ZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5n
dGgpIFwKKyAgICBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRh
YmxlKCk7IFwKKyAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIGNvbnN0
IHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KKyAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FT
SU5HVEVTVF9CVUlMVElOX0NPREUoRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYg
RVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMKKworICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJ
TkdURVNUX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9B
Q0NFU1NPUikKKworICAgIHZvaWQgZXhwb3J0TmFtZXMoKTsKKworcHJpdmF0ZToKKyAgICBKU0M6
OlZNJiBtX3ZtOworCisgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9G
VU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FUykKKworI2RlZmluZSBERUNMQVJFX0JV
SUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKKyAgICBK
U0M6OlNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJjZTtcCisgICAgSlNDOjpXZWFrPEpTQzo6VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVjdXRhYmxlOworICAgIFdFQkNP
UkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fU09V
UkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCisKK307
CisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1l
LCBsZW5ndGgpIFwKK2lubGluZSBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB4bWxD
YXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAore1wKKyAgICBp
ZiAoIW1fIyNuYW1lIyNFeGVjdXRhYmxlKVwKKyAgICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUg
PSBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4oSlNDOjpjcmVhdGVC
dWlsdGluRXhlY3V0YWJsZShtX3ZtLCBtXyMjbmFtZSMjU291cmNlLCBmdW5jdGlvbk5hbWUjI1B1
YmxpY05hbWUoKSwgc18jI25hbWUjI0NvbnN0cnVjdEFiaWxpdHkpLCB0aGlzLCAmbV8jI25hbWUj
I0V4ZWN1dGFibGUpO1wKKyAgICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7XAor
fQorV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKERFRklORV9CVUlM
VElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTCisKK2lu
bGluZSB2b2lkIHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXI6OmV4cG9ydE5hbWVzKCkKK3sK
KyNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9OX05BTUUobmFtZSkgbV92bS5wcm9wZXJ0eU5hbWVzLT5h
cHBlbmRFeHRlcm5hbE5hbWUobmFtZSMjUHVibGljTmFtZSgpLCBuYW1lIyNQcml2YXRlTmFtZSgp
KTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0ZVTkNUSU9OX05B
TUUoRVhQT1JUX0ZVTkNUSU9OX05BTUUpCisjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OX05BTUUKK30K
KworY2xhc3MgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5GdW5jdGlvbnMgeworcHVibGljOgorICAgIGV4
cGxpY2l0IHhtbENhc2luZ1Rlc3RCdWlsdGluRnVuY3Rpb25zKEpTQzo6Vk0mIHZtKSA6IG1fdm0o
dm0pIHsgfQorCisgICAgdm9pZCBpbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKKyAgICB2b2lk
IHZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImKTsKKworcHVibGljOgorICAgIEpTQzo6Vk0mIG1fdm07
CisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKGZ1bmN0aW9uTmFtZSkg
XAorICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNGdW5jdGlvbj4gbV8jI2Z1bmN0aW9uTmFt
ZSMjRnVuY3Rpb247CisgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9G
VU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNM
QVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKK307CisKK2lubGluZSB2b2lkIHhtbENhc2luZ1Rl
c3RCdWlsdGluRnVuY3Rpb25zOjppbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKK3sKKyNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9OKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGxl
bmd0aClcCisgICAgbV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb24uc2V0KG1fdm0sICZnbG9iYWxP
YmplY3QsIEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKG1fdm0sIGNvZGVO
YW1lIyNHZW5lcmF0b3IobV92bSksICZnbG9iYWxPYmplY3QpKTsKKyAgICBXRUJDT1JFX0ZPUkVB
Q0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0NPREUoRVhQT1JUX0ZVTkNUSU9OKQorI3VuZGVmIEVY
UE9SVF9GVU5DVElPTgorfQorCitpbmxpbmUgdm9pZCB4bWxDYXNpbmdUZXN0QnVpbHRpbkZ1bmN0
aW9uczo6dmlzaXQoSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyNkZWZpbmUgVklTSVRf
RlVOQ1RJT04obmFtZSkgdmlzaXRvci5hcHBlbmQoJm1fIyNuYW1lIyNGdW5jdGlvbik7CisgICAg
V0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9GVU5DVElPTl9OQU1FKFZJU0lU
X0ZVTkNUSU9OKQorI3VuZGVmIFZJU0lUX0ZVTkNUSU9OCit9CisKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8geG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcl9oCisKKyMj
IyBFbmQgRmlsZTogeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlci5oCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvVXBkYXRlQ29udGVudHMucHkgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvVXBkYXRlQ29udGVudHMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUy
Zjk1MzJjYjZmYjBhYmFmNTIwZGFlMDQ4NThhYzkyYTRmYzYyNDEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1VwZGF0
ZUNvbnRlbnRzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotIyEvdXNyL2Jpbi9w
eXRob24KLQotIyBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotIyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBwdXRlciwgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotIyAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotIyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7Ci0jIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKLSMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHN5cwotaW1wb3J0IG9zCi0KLWFz
c2VydChsZW4oc3lzLmFyZ3YpID09IDMpCi0KLWNvbXAgPSBzeXMuYXJndlsxXQotZmlsZW5hbWUg
PSBzeXMuYXJndlsyXQotCi10ID0gRmFsc2UKLQotaWYgb3MucGF0aC5pc2ZpbGUoZmlsZW5hbWUp
OgotICAgIGYgPSBvcGVuKGZpbGVuYW1lLCAncicpCi0gICAgY29tcGFyYXRvciA9IGYucmVhZCgp
Ci0gICAgZi5jbG9zZSgpCi0gICAgdCA9IFRydWUKLQotaWYgKG5vdCB0IG9yIGNvbXAgIT0gY29t
cGFyYXRvcik6Ci0gICAgZiA9IG9wZW4oZmlsZW5hbWUsICd3JykKLSAgICBmLndyaXRlKGNvbXAp
Ci0gICAgZi5jbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IDczZWJlNDc5OTM1ZmNhNzQwOWZkOTMyZjg4
OWI2NTg0YmU1OGI2MTQuLjgxNmI0YTVkMzBiNTIwYjVkMWRmZWFlYWIyZjkzOTRjNjhiZGMwYTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0
YWJsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogY3JlYXRlRXhlY3V0YWJsZUludGVybmFsKFZNJiwgY29uc3QgU291cmNlQ29kCiBC
dWlsdGluRXhlY3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyhWTSYgdm0pCiAgICAgOiBtX3Zt
KHZtKQogI2RlZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVu
Y3Rpb25OYW1lLCBsZW5ndGgpICwgbV8jI25hbWUjI1NvdXJjZShtYWtlU291cmNlKFN0cmluZ0lt
cGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpKSkKLSAgICBKU0NfRk9SRUFD
SF9CVUlMVElOKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyAgICBKU0NfRk9S
RUFDSF9CVUlMVElOX0NPREUoSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQogI3Vu
ZGVmIEVYUE9TRV9CVUlMVElOX1NUUklOR1MKIHsKIH0KQEAgLTEzMiw3ICsxMzIsNyBAQCBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpuYW1lIyNFeGVjdXRh
YmxlKCkgXAogICAgICAgICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9IFdlYWs8VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU+KGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fIyNuYW1lIyNTb3VyY2Us
IG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZnVuY3Rpb25OYW1lIyNQdWJsaWNO
YW1lKCksIHNfIyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVj
dXRhYmxlKTtcCiAgICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKIH0KLUpT
Q19GT1JFQUNIX0JVSUxUSU4oREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCitKU0NfRk9SRUFD
SF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCiAjdW5kZWYgRVhQT1NF
X0JVSUxUSU5fU09VUkNFUwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKaW5kZXggNmE5ODMyMTdhMGE4ODQ1N2VmMDk4ZmJj
Yjk1MTIzZDU5YTUyNTE3NS4uZWM4ZDU3NzA0Yjg3YzU4NGE5MzZkZGU0MTdkNjI5Zjg1N2IzNjU3
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCiBjb25zdCBTb3VyY2VDb2RlJiBuYW1lIyNT
b3VyY2UoKSB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CiAgICAgCi0gICAgSlNDX0ZPUkVB
Q0hfQlVJTFRJTihFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyAgICBKU0NfRk9SRUFDSF9C
VUlMVElOX0NPREUoRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCiAjdW5kZWYgRVhQT1NFX0JV
SUxUSU5fU09VUkNFUwogCiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZURl
ZmF1bHRDb25zdHJ1Y3RvcihDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUp
OwpAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09V
UkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXAogICAgIFNvdXJjZUNvZGUg
bV8jI25hbWUjI1NvdXJjZTsgXAogICAgIFdlYWs8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+
IG1fIyNuYW1lIyNFeGVjdXRhYmxlOwotICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oREVDTEFSRV9C
VUlMVElOX1NPVVJDRV9NRU1CRVJTKQorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShERUNM
QVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCiAjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJD
RV9NRU1CRVJTCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRl
X2hhc2hfdGFibGUgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKaW5k
ZXggNmZhNzhjZWEyODczOGMwZjE3NDUxNDdmMDQ5NzNhY2I2Y2E4MzZkOC4uYTIyNWNiZTY3ZDgw
ZGFhMmZkM2U5OGYxOTA1MmVjMDk4MThkMjNmOCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVh
dGVfaGFzaF90YWJsZQpAQCAtMzE5LDcgKzMxOSw3IEBAIHN1YiBvdXRwdXQoKSB7CiAgICAgICAg
IGlmICgkdmFsdWVzWyRpXXsidHlwZSJ9IGVxICJGdW5jdGlvbiIpICB7CiAgICAgICAgICAgICBt
eSAkdGFibGVIZWFkID0gJG5hbWU7CiAgICAgICAgICAgICAkdGFibGVIZWFkID1+IHMvVGFibGUk
Ly87Ci0gICAgICAgICAgICBwcmludCAiICNpZiBKU0NfQlVJTFRJTl9FWElTVFMoIiAuIHVjKCR0
YWJsZUhlYWQgLiAka2V5KSAuIilcbiI7CisgICAgICAgICAgICBwcmludCAiICNpZiBKU0NfQlVJ
TFRJTl9FWElTVFMoIiAuIHVjKCR0YWJsZUhlYWQpIC4gIiwgIiAuIHVjKCRrZXkpIC4iKVxuIjsK
ICAgICAgICAgICAgIHByaW50ICIgICB7IFwiJGtleVwiLCAoKCRhdHRyc1skaV0pICYgfkZ1bmN0
aW9uKSB8IEJ1aWx0aW4sICRpbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PEJ1aWx0
aW5HZW5lcmF0b3I+KCIgLiAkdGFibGVIZWFkIC4gdWNmaXJzdCgka2V5KSAuICJDb2RlR2VuZXJh
dG9yKSwgKGludHB0cl90KSRzZWNvbmRWYWx1ZSB9IH0sXG4iOwogICAgICAgICAgICAgcHJpbnQg
IiAjZWxzZVxuIgogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Z2VuZXJhdGUtanMtYnVpbHRpbnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMt
YnVpbHRpbnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmZjQxODczZGEyYjY1YTc3
MTE0Y2Y1ZDQxZTg3YTRjMGQzMDYzN2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5z
CisrKyAvZGV2L251bGwKQEAgLTEsMzQzICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCi0jIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
IyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0jIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0jIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSMgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi1pbXBvcnQgYXJncGFyc2UKLWltcG9ydCBmaWxlY21wCi1pbXBvcnQgZm5tYXRj
aAotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzaHV0aWwKLWltcG9ydCBzeXMKLWltcG9y
dCBkYXRldGltZQotaW1wb3J0IGpzb24KLQotcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJz
ZXIoKQotcGFyc2VyLmFkZF9hcmd1bWVudCgnaW5wdXRfZmlsZScsIG5hcmdzPScqJywgaGVscD0n
SW5wdXQgSlMgZmlsZXMgd2hpY2ggYnVpbHRpbnMgZ2VuZXJhdGVkIGZyb20nKQotcGFyc2VyLmFk
ZF9hcmd1bWVudCgnLS1pbnB1dC1kaXJlY3RvcnknLCBoZWxwPSdBbGwgSlMgZmlsZXMgd2lsbCBi
ZSB1c2VkIGFzIGlucHV0IGZyb20gdGhpcyBkaXJlY3RvcnkuJykKLXBhcnNlci5hZGRfYXJndW1l
bnQoJy0tb3V0cHV0JywgaGVscD0ncGF0aCB0byBvdXRwdXQgY3BwIG9yIGggZmlsZScpCi1wYXJz
ZXIuYWRkX2FyZ3VtZW50KCctLXByZWZpeCcsIGRlZmF1bHQ9J0pTQycsIGhlbHA9J3ByZWZpeCB1
c2VkIGZvciBwdWJsaWMgbWFjcm9zJykKLXBhcnNlci5hZGRfYXJndW1lbnQoJy0tbmFtZXNwYWNl
JywgZGVmYXVsdD0nSlNDJywgaGVscD0nQysrIG5hbWVzcGFjZScpCi1hcmdzID0gcGFyc2VyLnBh
cnNlX2FyZ3MoKQotCi1jb3B5cmlnaHRUZXh0ID0gIiIiICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi9cbgotIiIiCi0KLWdlbmVyYXRvclN0cmluZyA9ICIvKiBHZW5lcmF0
ZWQgYnkgJXMgZG8gbm90IGhhbmQgZWRpdC4gKi9cbiIgJSBvcy5wYXRoLmJhc2VuYW1lKF9fZmls
ZV9fKQotCi1mdW5jdGlvbkhlYWRSZWdFeHAgPSByZS5jb21waWxlKHIiKD86ZnVuY3Rpb258Y29u
c3RydWN0b3IpXHMrXHcrXHMqXCguKj9cKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCi1mdW5jdGlv
bk5hbWVSZWdFeHAgPSByZS5jb21waWxlKHIiKD86ZnVuY3Rpb258Y29uc3RydWN0b3IpXHMrKFx3
KylccypcKCIsIHJlLk1VTFRJTElORSB8IHJlLlMpCi1mdW5jdGlvbklzQ29uc3RydWN0b3JSZWdF
eHAgPSByZS5jb21waWxlKHIiXmNvbnN0cnVjdG9yIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKLWZ1
bmN0aW9uUGFyYW1ldGVyRmluZGVyID0gcmUuY29tcGlsZShyIl4oPzpmdW5jdGlvbnxjb25zdHJ1
Y3RvcilccysoPzpcdyspXHMqXCgoKD86XHMqXHcrKT9ccyooPzpccyosXHMqXHcrKSopP1xzKlwp
IiwgcmUuTVVMVElMSU5FIHwgcmUuUykKLQotbXVsdGlsaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNv
bXBpbGUociJcL1wqLio/XCpcLyIsIHJlLk1VTFRJTElORSB8IHJlLlMpCi1zaW5nbGVMaW5lQ29t
bWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wvLio/XG4iLCByZS5NVUxUSUxJTkUgfCByZS5T
KQotCi1kZWYgZ2V0Q29weXJpZ2h0KHNvdXJjZSk6Ci0gICAgY29weXJpZ2h0QmxvY2sgPSBtdWx0
aWxpbmVDb21tZW50UmVnRXhwLmZpbmRhbGwoc291cmNlKVswXQotICAgIGNvcHlyaWdodEJsb2Nr
ID0gY29weXJpZ2h0QmxvY2tbOmNvcHlyaWdodEJsb2NrLmluZGV4KCJSZWRpc3RyaWJ1dGlvbiIp
XQotICAgIGNvcHlSaWdodExpbmVzID0gW10KLQotICAgIGZvciBsaW5lIGluIGNvcHlyaWdodEJs
b2NrLnNwbGl0KCJcbiIpOgotICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIvKiIsICIiKQot
ICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIqLyIsICIiKQotICAgICAgICBsaW5lID0gbGlu
ZS5yZXBsYWNlKCIqIiwgIiIpCi0gICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIkNvcHlyaWdo
dCIsICIiKQotICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJjb3B5cmlnaHQiLCAiIikKLSAg
ICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKEMpIiwgIiIpCi0gICAgICAgIGxpbmUgPSBsaW5l
LnJlcGxhY2UoIihjKSIsICIiKQotICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCi0gICAgICAg
IGlmIGxlbihsaW5lKSA9PSAwOgotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBjb3B5
UmlnaHRMaW5lcy5hcHBlbmQobGluZSkKLSAgICAKLSAgICByZXR1cm4gbGlzdChzZXQoY29weVJp
Z2h0TGluZXMpKQotCi1jbGFzcyBGdW5jdGlvbihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBuYW1lLCBzb3VyY2UsIGlzQ29uc3RydWN0b3IsIHBhcmFtZXRlcnMpOgotICAgICAgICBz
ZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYuc291cmNlID0gc291cmNlCi0gICAgICAgIHNl
bGYuaXNDb25zdHJ1Y3RvciA9IGlzQ29uc3RydWN0b3IKLSAgICAgICAgc2VsZi5wYXJhbWV0ZXJz
ID0gcGFyYW1ldGVycwotCi0gICAgZGVmIG1hbmdsZU5hbWUoc2VsZiwgb2JqZWN0KToKLSAgICAg
ICAgcU5hbWUgPSBvYmplY3QgKyAiLiIgKyBzZWxmLm5hbWUKLSAgICAgICAgbWFuZ2xlZE5hbWUg
PSAiIgotICAgICAgICBpID0gMAotICAgICAgICB3aGlsZSBpIDwgbGVuKHFOYW1lKToKLSAgICAg
ICAgICAgIGlmIHFOYW1lW2ldID09ICcuJzoKLSAgICAgICAgICAgICAgICBtYW5nbGVkTmFtZSA9
IG1hbmdsZWROYW1lICsgcU5hbWVbaSArIDFdLnVwcGVyKCkKLSAgICAgICAgICAgICAgICBpID0g
aSArIDEKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBt
YW5nbGVkTmFtZSArIHFOYW1lW2ldCi0gICAgICAgICAgICBpID0gaSArIDEKLSAgICAgICAgaWYg
c2VsZi5pc0NvbnN0cnVjdG9yOgotICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFt
ZSArICJDb25zdHJ1Y3RvciIKLSAgICAgICAgcmV0dXJuIG1hbmdsZWROYW1lCi0KLWRlZiBnZXRG
dW5jdGlvbnMoc291cmNlKToKLQotICAgIHNvdXJjZSA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAu
c3ViKCIvKiovIiwgc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAuc3ViKCIvL1xuIiwgc291cmNlKSkK
LQotICAgIG1hdGNoZXMgPSBbIGYgZm9yIGYgaW4gZnVuY3Rpb25IZWFkUmVnRXhwLmZpbmRpdGVy
KHNvdXJjZSldCi0gICAgZnVuY3Rpb25Cb3VuZHMgPSBbXQotICAgIHN0YXJ0ID0gMAotICAgIGVu
ZCA9IDAKLSAgICBmb3IgbWF0Y2ggaW4gbWF0Y2hlczoKLSAgICAgICAgc3RhcnQgPSBtYXRjaC5z
dGFydCgpCi0gICAgICAgIGlmIHN0YXJ0IDwgZW5kOgotICAgICAgICAgICAgY29udGludWUKLSAg
ICAgICAgZW5kID0gbWF0Y2guZW5kKCkKLSAgICAgICAgd2hpbGUgc291cmNlW2VuZF0gIT0gJ3sn
OgotICAgICAgICAgICAgZW5kID0gZW5kICsgMQotICAgICAgICBkZXB0aCA9IDEKLSAgICAgICAg
ZW5kID0gZW5kICsgMQotICAgICAgICB3aGlsZSBkZXB0aCA+IDA6Ci0gICAgICAgICAgICBpZiBz
b3VyY2VbZW5kXSA9PSAneyc6Ci0gICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCArIDEKLSAg
ICAgICAgICAgIGVsaWYgc291cmNlW2VuZF0gPT0gJ30nOgotICAgICAgICAgICAgICAgIGRlcHRo
ID0gZGVwdGggLSAxCi0gICAgICAgICAgICBlbmQgPSBlbmQgKyAxCi0gICAgICAgIGZ1bmN0aW9u
Qm91bmRzLmFwcGVuZCgoc3RhcnQsIGVuZCkpCi0KLSAgICBmdW5jdGlvbnMgPSBbc291cmNlW3N0
YXJ0OmVuZF0uc3RyaXAoKSBmb3IgKHN0YXJ0LCBlbmQpIGluIGZ1bmN0aW9uQm91bmRzXQotICAg
IHJlc3VsdCA9IFtdCi0gICAgZm9yIGZ1bmN0aW9uIGluIGZ1bmN0aW9uczoKLSAgICAgICAgZnVu
Y3Rpb24gPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiIiwgZnVuY3Rpb24pCi0gICAgICAg
IGZ1bmN0aW9uTmFtZSA9IGZ1bmN0aW9uTmFtZVJlZ0V4cC5maW5kYWxsKGZ1bmN0aW9uKVswXQot
ICAgICAgICBmdW5jdGlvbklzQ29uc3RydWN0b3IgPSBmdW5jdGlvbklzQ29uc3RydWN0b3JSZWdF
eHAubWF0Y2goZnVuY3Rpb24pICE9IE5vbmUKLSAgICAgICAgZnVuY3Rpb25QYXJhbWV0ZXJzID0g
ZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlvbilbMF0uc3BsaXQoJywnKQot
ICAgICAgICBpZiBsZW4oZnVuY3Rpb25QYXJhbWV0ZXJzWzBdKSA9PSAwOgotICAgICAgICAgICAg
ZnVuY3Rpb25QYXJhbWV0ZXJzID0gW10KLQotICAgICAgICByZXN1bHQuYXBwZW5kKEZ1bmN0aW9u
KGZ1bmN0aW9uTmFtZSwgZnVuY3Rpb24sIGZ1bmN0aW9uSXNDb25zdHJ1Y3RvciwgZnVuY3Rpb25Q
YXJhbWV0ZXJzKSkKLSAgICByZXR1cm4gcmVzdWx0Ci0KLWRlZiB3cml0ZUluY2x1ZGVEaXJlY3Rp
dmVzKHdyaXRlciwgaGVhZGVyTmFtZXMpOgotICAgIGZvciBoZWFkZXJOYW1lIGluIGhlYWRlck5h
bWVzOgotICAgICAgICB3cml0ZXIud3JpdGUoIiNpbmNsdWRlICIgKyBoZWFkZXJOYW1lICsgIlxu
IikKLQotZGVmIGdlbmVyYXRlQ29kZShzb3VyY2UpOgotICAgIGlucHV0RmlsZSA9IG9wZW4oc291
cmNlLCAiciIpCi0gICAgYmFzZU5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHNvdXJjZSkucmVwbGFj
ZSgiLmpzIiwgIiIpCi0gICAgCi0gICAgc291cmNlID0gIiIKLSAgICBmb3IgbGluZSBpbiBpbnB1
dEZpbGU6Ci0gICAgICAgIHNvdXJjZSA9IHNvdXJjZSArIGxpbmUKLSAgICAKLSAgICBpZiBzeXMu
cGxhdGZvcm0gPT0gImN5Z3dpbiI6Ci0gICAgICAgIHNvdXJjZSA9IHNvdXJjZS5yZXBsYWNlKCJc
clxuIiwgIlxuIikKLSAgICByZXR1cm4gKGJhc2VOYW1lLCBnZXRGdW5jdGlvbnMoc291cmNlKSwg
Z2V0Q29weXJpZ2h0KHNvdXJjZSkpCi0KLWJ1aWx0aW5zID0gW10KLWNvcHlyaWdodHMgPSBbXQot
KG91dHB1dF9iYXNlLCBfKSA9IG9zLnBhdGguc3BsaXRleHQoYXJncy5vdXRwdXQpCi0KLWlmIGFy
Z3MuaW5wdXRfZGlyZWN0b3J5OgotICAgIGZvciBmaWxlIGluIG9zLmxpc3RkaXIoYXJncy5pbnB1
dF9kaXJlY3RvcnkpOgotICAgICAgICBhcmdzLmlucHV0X2ZpbGUuYXBwZW5kKG9zLnBhdGguam9p
bihhcmdzLmlucHV0X2RpcmVjdG9yeSwgZmlsZSkpCi0KLWZvciBmaWxlIGluIGFyZ3MuaW5wdXRf
ZmlsZToKLSAgICBpZiBmbm1hdGNoLmZubWF0Y2goZmlsZSwgJyouanMnKToKLSAgICAgICAgKGJh
c2VOYW1lLCBmdW5jdGlvbnMsIG9iamVjdENvcHlyaWdodHMpID0gZ2VuZXJhdGVDb2RlKGZpbGUp
Ci0gICAgICAgIGNvcHlyaWdodHMuZXh0ZW5kKG9iamVjdENvcHlyaWdodHMpCi0gICAgICAgIGJ1
aWx0aW5zLmFwcGVuZCgoYmFzZU5hbWUsIGZ1bmN0aW9ucykpCi1uYW1lc3BhY2UgPSBhcmdzLm5h
bWVzcGFjZQotbWFjcm9QcmVmaXggPSBhcmdzLnByZWZpeAotc2NvcGVOYW1lID0gb3MucGF0aC5z
cGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKGFyZ3Mub3V0cHV0KSlbMF0KLWluY2x1ZGVHdWFyZCA9
IHNjb3BlTmFtZSArICJfSCIKLWhlYWRlck5hbWUgPSBzY29wZU5hbWUgKyAiLmgiCi0KLWhlYWRl
ckluY2x1ZGVzID0gWyJcIkJ1aWx0aW5VdGlscy5oXCIiXSBpZiBuYW1lc3BhY2UgPT0gIkpTQyIg
ZWxzZSBbIjxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4iXQotY29udGVudEluY2x1ZGVzID0gWyJc
IkJ1aWx0aW5FeGVjdXRhYmxlcy5oXCIiLCAiXCJFeGVjdXRhYmxlLmhcIiIsICJcIkpTQ2VsbElu
bGluZXMuaFwiIiwgIlwiVk0uaFwiIl0gaWYgbmFtZXNwYWNlID09ICJKU0MiIGVsc2UgWyI8cnVu
dGltZS9FeGVjdXRhYmxlLmg+IiwgIjxydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaD4iLCAiPHJ1
bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4iLCAiPHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oPiIs
ICI8cnVudGltZS9WTS5oPiIsICJcIldlYkNvcmVKU0NsaWVudERhdGEuaFwiIl0KLQotY29weXJp
Z2h0cyA9IGxpc3Qoc2V0KGNvcHlyaWdodHMpKQotCi1jb3B5cmlnaHRCb2R5ID0gIiIKLWZvciBj
b3B5cmlnaHQgaW4gY29weXJpZ2h0czoKLSAgICBjb3B5cmlnaHRCb2R5ID0gY29weXJpZ2h0Qm9k
eSArIiAqIENvcHlyaWdodCAoQykgIiArIGNvcHlyaWdodCArICJcbiIKLQotYnVpbHRpbnNIZWFk
ZXIgPSBvcGVuKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsICJ3IikKLWJ1aWx0aW5zSW1wbGVtZW50
YXRpb24gPSBvcGVuKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIiwgInciKQotY29weXJpZ2h0VGV4
dCA9ICIvKlxuIiArIGNvcHlyaWdodEJvZHkgKyBjb3B5cmlnaHRUZXh0Ci1idWlsdGluc0hlYWRl
ci53cml0ZSgiIiIlcwotJXMKLQotI2lmbmRlZiAlcwotI2RlZmluZSAlcwotCi0iIiIgJSAoZ2Vu
ZXJhdG9yU3RyaW5nLCBjb3B5cmlnaHRUZXh0LCBpbmNsdWRlR3VhcmQsIGluY2x1ZGVHdWFyZCkp
Ci0KLXdyaXRlSW5jbHVkZURpcmVjdGl2ZXMoYnVpbHRpbnNIZWFkZXIsIGhlYWRlckluY2x1ZGVz
KQotCi1idWlsdGluc0hlYWRlci53cml0ZSgiIiIKLW5hbWVzcGFjZSBKU0MgewotICAgIGNsYXNz
IEZ1bmN0aW9uRXhlY3V0YWJsZTsKLX0KLQotbmFtZXNwYWNlICVzIHsKLQotIiIiICUgbmFtZXNw
YWNlKQotCi1jb2RlUmVmZXJlbmNlcyA9IFtdCi0KLWZvciAob2JqZWN0TmFtZSwgZnVuY3Rpb25z
KSBpbiBidWlsdGluczoKLSAgICBwcmludCgiR2VuZXJhdGluZyBiaW5kaW5ncyBmb3IgdGhlICVz
IGJ1aWx0aW4uIiAlIG9iamVjdE5hbWUpCi0gICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIi8qICVz
IGZ1bmN0aW9ucyAqL1xuIiAlIG9iamVjdE5hbWUpCi0gICAgZm9yIGZ1bmN0aW9uIGluIGZ1bmN0
aW9uczoKLSAgICAgICAgbmFtZSA9IGZ1bmN0aW9uLm5hbWUKLSAgICAgICAgbWFuZ2xlZE5hbWUg
PSBmdW5jdGlvbi5tYW5nbGVOYW1lKG9iamVjdE5hbWUpCi0gICAgICAgIG1hbmdsZWROYW1lID0g
bWFuZ2xlZE5hbWVbMF0ubG93ZXIoKSArIG1hbmdsZWROYW1lWzE6XSArICJDb2RlIgotICAgICAg
ICBjb2RlUmVmZXJlbmNlcy5hcHBlbmQoKG1hbmdsZWROYW1lLCBmdW5jdGlvbikpCi0gICAgICAg
IGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJleHRlcm4gY29uc3QgY2hhciogc18lcztcbiIgJSBtYW5n
bGVkTmFtZSkKLSAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoImV4dGVybiBjb25zdCBpbnQg
c18lc0xlbmd0aDtcbiIgJSBtYW5nbGVkTmFtZSkKLSAgICAgICAgYnVpbHRpbnNIZWFkZXIud3Jp
dGUoImV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc18lc0NvbnN0cnVjdEFiaWxp
dHk7XG4iICUgbWFuZ2xlZE5hbWUpCi0gICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuIikKLSAg
ICBidWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSAlc19GT1JFQUNIXyVzX0JVSUxUSU4obWFj
cm8pIFxcXG4iICUgKG1hY3JvUHJlZml4LCBvYmplY3ROYW1lLnJlcGxhY2UoIi4iLCAiXyIpLnVw
cGVyKCkpKQotICAgIGZvciBmdW5jdGlvbiBpbiBmdW5jdGlvbnM6Ci0gICAgICAgIG1hbmdsZWRO
YW1lID0gZnVuY3Rpb24ubWFuZ2xlTmFtZShvYmplY3ROYW1lKQotICAgICAgICBidWlsdGluc0hl
YWRlci53cml0ZSgiICAgIG1hY3JvKCVzLCAlcywgJWQpIFxcXG4iICUgKGZ1bmN0aW9uLm5hbWUs
IG1hbmdsZWROYW1lLCBsZW4oZnVuY3Rpb24ucGFyYW1ldGVycykpKQotICAgIGJ1aWx0aW5zSGVh
ZGVyLndyaXRlKCJcbiIpCi0gICAgZm9yIGZ1bmN0aW9uIGluIGZ1bmN0aW9uczoKLSAgICAgICAg
YnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgJXNfQlVJTFRJTl8lcyAxXG4iICUgKG1hY3Jv
UHJlZml4LCBmdW5jdGlvbi5tYW5nbGVOYW1lKG9iamVjdE5hbWUpLnVwcGVyKCkpKQotICAgIGJ1
aWx0aW5zSGVhZGVyLndyaXRlKCJcblxuIikKLW5hbWVzID0gW10KLWJ1aWx0aW5zSGVhZGVyLndy
aXRlKCIjZGVmaW5lICVzX0ZPUkVBQ0hfQlVJTFRJTihtYWNybylcXFxuIiAlIG1hY3JvUHJlZml4
KQotZm9yIChjb2RlUmVmZXJlbmNlLCBmdW5jdGlvbikgaW4gY29kZVJlZmVyZW5jZXM6Ci0gICAg
YnVpbHRpbnNIZWFkZXIud3JpdGUoIiAgICBtYWNybyglcywgJXMsIHNfJXNMZW5ndGgpIFxcXG4i
ICUgKGNvZGVSZWZlcmVuY2UsIGZ1bmN0aW9uLm5hbWUsIGNvZGVSZWZlcmVuY2UpKQotICAgIG5h
bWVzLmFwcGVuZChmdW5jdGlvbi5uYW1lKQotCi1idWlsdGluc0hlYWRlci53cml0ZSgiXG5cbiIp
Ci1idWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSAlc19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJ
T05fTkFNRShtYWNybykgXFxcbiIgJSBtYWNyb1ByZWZpeCkKLWZvciBuYW1lIGluIHNvcnRlZChz
ZXQobmFtZXMpKToKLSAgICBidWlsdGluc0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzKSBcXFxu
IiAlIG5hbWUpCi1idWlsdGluc0hlYWRlci53cml0ZSgiIiIKLQotI2RlZmluZSBERUNMQVJFX0JV
SUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxc
Ci0gICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpW
TSYpOwotCi0lc19GT1JFQUNIX0JVSUxUSU4oREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKLSN1
bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCi0KLSNkZWZpbmUgJXNfQlVJTFRJTl9FWElT
VFMobmFtZSkgZGVmaW5lZCAlc19CVUlMVElOXyAjIyBuYW1lCi0KLX0KLQotI2VuZGlmIC8vICVz
Ci0KLSIiIiAlIChtYWNyb1ByZWZpeCwgbWFjcm9QcmVmaXgsIG1hY3JvUHJlZml4LCBpbmNsdWRl
R3VhcmQpKQotCi1idWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIiVzCi0lcwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICIlcyIKLQotIiIiICAlIChnZW5lcmF0b3JTdHJp
bmcsIGNvcHlyaWdodFRleHQsIGhlYWRlck5hbWUpKQotCi13cml0ZUluY2x1ZGVEaXJlY3RpdmVz
KGJ1aWx0aW5zSW1wbGVtZW50YXRpb24sIGNvbnRlbnRJbmNsdWRlcykKLQotYnVpbHRpbnNJbXBs
ZW1lbnRhdGlvbi53cml0ZSgiIiIKLW5hbWVzcGFjZSAlcyB7Ci0KLSIiIiAgJSAobmFtZXNwYWNl
KSkKLQotCi0KLWZvciAoY29kZVJlZmVyZW5jZSwgZnVuY3Rpb24pIGluIGNvZGVSZWZlcmVuY2Vz
OgotICAgIHNvdXJjZSA9IGZ1bmN0aW9uLnNvdXJjZQotICAgIHNvdXJjZSA9ICIoZnVuY3Rpb24g
IiArIHNvdXJjZVtzb3VyY2UuaW5kZXgoIigiKTpdICsgIikiCi0gICAgbGluZXMgPSBqc29uLmR1
bXBzKHNvdXJjZSlbMTotMV0uc3BsaXQoIlxcbiIpCi0gICAgc291cmNlTGVuZ3RoID0gbGVuKHNv
dXJjZSkKLSAgICBzb3VyY2UgPSAiIgotICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICBz
b3VyY2UgPSBzb3VyY2UgKyAoIiAgICBcIiVzXFxuXCIgXFxcbiIgJSBsaW5lKQotICAgIGJ1aWx0
aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoImNvbnN0IGNoYXIqIHNfJXMgPVxuJXM7XG5cbiIgJSAo
Y29kZVJlZmVyZW5jZSwgc291cmNlKSkKLSAgICBidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRl
KCJjb25zdCBpbnQgc18lc0xlbmd0aCA9ICVkO1xuXG4iICUgKGNvZGVSZWZlcmVuY2UsIHNvdXJj
ZUxlbmd0aCArIDEpKSAjICsgMSBmb3IgXG4KLSAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gIkpTQzo6
Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0IgotICAgIGlmIGZ1bmN0aW9uLmlzQ29u
c3RydWN0b3I6Ci0gICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSAiSlNDOjpDb25zdHJ1Y3RBYmls
aXR5OjpDYW5Db25zdHJ1Y3QiCi0gICAgYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiY29u
c3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfJXNDb25zdHJ1Y3RBYmlsaXR5ID0gJXM7XG5cbiIg
JSAoY29kZVJlZmVyZW5jZSwgY29uc3RydWN0QWJpbGl0eSkpICMgKyAxIGZvciBcbgotCi1idWls
dGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIgotI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5F
UkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKLUpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAotIiIi
KTsKLQotaWYgKG5hbWVzcGFjZSA9PSAiSlNDIik6Ci0gICAgYnVpbHRpbnNJbXBsZW1lbnRhdGlv
bi53cml0ZSgiIiJ7XFwKLSAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVO
YW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2Rl
TmFtZSMjU291cmNlKCkpOyBcXAotIiIiKQotZWxzZToKLSAgICBidWlsdGluTmFtZSA9IHNjb3Bl
TmFtZVswXS5sb3dlcigpICsgc2NvcGVOYW1lWzE6XQotICAgIGJ1aWx0aW5zSW1wbGVtZW50YXRp
b24ud3JpdGUoIiIie1xcCi0gICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNf
Y2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcXAotICAgIHJldHVybiBjbGll
bnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJXMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5s
aW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJXMoKS5jb2RlTmFtZSMjU291
cmNlKCkpOyBcXAotIiIiJSAoYnVpbHRpbk5hbWUsIGJ1aWx0aW5OYW1lKSkKLQotYnVpbHRpbnNJ
bXBsZW1lbnRhdGlvbi53cml0ZSgiIiJ9Ci0lc19GT1JFQUNIX0JVSUxUSU4oREVGSU5FX0JVSUxU
SU5fR0VORVJBVE9SKQotI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgotfQotCi0iIiIl
IChtYWNyb1ByZWZpeCkpCi0KLWJ1aWx0aW5zSGVhZGVyLmNsb3NlKCkKLWJ1aWx0aW5zSW1wbGVt
ZW50YXRpb24uY2xvc2UoKQotCi1pZiAobm90IG9zLnBhdGguZXhpc3RzKG91dHB1dF9iYXNlICsg
Ii5oIikpIG9yIChub3QgZmlsZWNtcC5jbXAob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0cHV0
X2Jhc2UgKyAiLmgiLCBzaGFsbG93PUZhbHNlKSk6Ci0gICAgaWYgKG9zLnBhdGguZXhpc3RzKG91
dHB1dF9iYXNlICsgIi5oIikpOgotICAgICAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmgi
KQotICAgIG9zLnJlbmFtZShvdXRwdXRfYmFzZSArICIuaC50bXAiLCBvdXRwdXRfYmFzZSArICIu
aCIpCi1lbHNlOgotICAgIG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIuaC50bXAiKQotCi1pZiAo
bm90IG9zLnBhdGguZXhpc3RzKG91dHB1dF9iYXNlICsgIi5jcHAiKSkgb3IgKG5vdCBmaWxlY21w
LmNtcChvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIsIG91dHB1dF9iYXNlICsgIi5jcHAiLCBzaGFs
bG93PUZhbHNlKSk6Ci0gICAgaWYgKG9zLnBhdGguZXhpc3RzKG91dHB1dF9iYXNlICsgIi5jcHAi
KSk6Ci0gICAgICAgIG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIuY3BwIikKLSAgICBvcy5yZW5h
bWUob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCBvdXRwdXRfYmFzZSArICIuY3BwIikKLWVsc2U6
Ci0gICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggNWNmMWJjMWVjMjA2MzZiNzY2ODk4MTdjZGExN2QzZDc4NDhjZDhkOS4uMGYwYzhj
MmExZGNmOTU4MWQ5ODFmMjAzYjcwYjk1MDdiN2UxOGJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
QEAgLTgyMSwxNCArODIxLDE0IEBAIHNldChXZWJDb3JlX0lETF9GSUxFUwogaWYgKFdJTjMyKQog
ICAgIGlmIChJTlRFUk5BTF9CVUlMRCkKICAgICAgICAgc2V0KFdlYkNvcmVfSU5TUEVDVE9SX1ND
UklQVFNfRElSICIke0NNQUtFX0JJTkFSWV9ESVJ9Ly4uL2luY2x1ZGUvcHJpdmF0ZS9KYXZhU2Ny
aXB0Q29yZSIpCi0gICAgICAgIHNldChXZWJDb3JlX0dFTkVSQVRFX0pTX0JVSUxUSU5TX1NDUklQ
VFNfRElSICIke0NNQUtFX0JJTkFSWV9ESVJ9Ly4uL2luY2x1ZGUvcHJpdmF0ZS9KYXZhU2NyaXB0
Q29yZSIpCisgICAgICAgIHNldChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUiAiJHtDTUFLRV9C
SU5BUllfRElSfS8uLi9pbmNsdWRlL3ByaXZhdGUvSmF2YVNjcmlwdENvcmUiKQogICAgIGVsc2Ug
KCkKICAgICAgICAgc2V0KFdlYkNvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSICIke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vaW5zcGVjdG9yL3NjcmlwdHMiKQotICAgICAgICBzZXQoV2ViQ29yZV9HRU5F
UkFURV9KU19CVUlMVElOU19TQ1JJUFRTX0RJUiAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9IikKKyAg
ICAgICAgc2V0KEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSICIke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0iKQogICAgIGVuZGlmICgpCiBlbHNlICgpCiAgICAgc2V0KFdlYkNvcmVfSU5TUEVDVE9SX1ND
UklQVFNfRElSICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3NjcmlwdHMiKQotICAg
IHNldChXZWJDb3JlX0dFTkVSQVRFX0pTX0JVSUxUSU5TX1NDUklQVFNfRElSICIke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0iKQorICAgIHNldChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUiAiJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9IikKIGVuZGlmICgpCiAKIHNldChXZWJDb3JlX1NPVVJDRVMKQEAgLTMz
NTMsNyArMzM1MywxMSBAQCBzZXQoV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUg
JHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1dvcmtlckdsbwogc2V0KERFRElDQVRFRFdP
UktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNP
UkVfRElSfS9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwpCiBzZXQo
SURMX0FUVFJJQlVURVNfRklMRSAke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0
dHJpYnV0ZXMudHh0KQogCi1zZXQoV0VCQ09SRV9KU19CVUlMVElOUworV0VCS0lUX0lOQ0xVREVf
Q09ORklHX0ZJTEVTX0lGX0VYSVNUUygpCisKKyMgV2ViQ29yZSBKUyBCdWlsdGlucworCitzZXQo
V2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zdHJl
YW1zL0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kuanMKICAgICAke1dFQkNPUkVfRElSfS9Nb2R1
bGVzL3N0cmVhbXMvQ291bnRRdWV1aW5nU3RyYXRlZ3kuanMKICAgICAke1dFQkNPUkVfRElSfS9N
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMKQEAgLTMzNjIsNyArMzM2NiwzNSBAQCBz
ZXQoV0VCQ09SRV9KU19CVUlMVElOUwogICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbVJlYWRlci5qcwogKQogCi1XRUJLSVRfSU5DTFVERV9DT05GSUdfRklM
RVNfSUZfRVhJU1RTKCkKK3NldChCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUworICAgICQoSmF2
YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zX2dlbmVyYXRvci5weQorICAgICQoSmF2
YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zX21vZGVsLnB5CisgICAgJChKYXZhU2Ny
aXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnNfdGVtcGxhdGVzLnB5CisgICAgJChKYXZhU2Ny
aXB0Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKyAgICAkKEphdmFT
Y3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9oZWFkZXIu
cHkKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZV9idWlsdGluc19j
b21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weQorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVIpL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2hlYWRlci5weQorICAgICQoSmF2YVNjcmlw
dENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2ltcGxlbWVudGF0
aW9uLnB5CisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGVfYnVpbHRp
bnNfc2VwYXJhdGVfd3JhcHBlci5weQorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIp
L2xhenl3cml0ZXIucHkKKworZm9yZWFjaCAoX2J1aWx0aW5Tb3VyY2UgJHtXZWJDb3JlX0JVSUxU
SU5TX1NPVVJDRVN9KQorICAgIGdldF9maWxlbmFtZV9jb21wb25lbnQoX29iamVjdE5hbWUgJHtf
YnVpbHRpblNvdXJjZX0gTkFNRV9XRSkKKyAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCisgICAgICAg
IE9VVFBVVCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vJHtfb2JqZWN0TmFtZX1CdWls
dGlucy5jcHAKKyAgICAgICAgICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS8k
e19vYmplY3ROYW1lfUJ1aWx0aW5zLmgKKyAgICAgICAgICAgICAgICR7REVSSVZFRF9TT1VSQ0VT
X1dFQkNPUkVfRElSfS8ke19vYmplY3ROYW1lfUJ1aWx0aW5zV3JhcHBlci5oIAorICAgICAgICBN
QUlOX0RFUEVOREVOQ1kgJHtCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUU30vZ2VuZXJhdGUtanMt
YnVpbHRpbnMucHkKKyAgICAgICAgREVQRU5EUyAke19idWlsdGluU291cmNlfSAke0JVSUxUSU5T
X0dFTkVSQVRPUl9TQ1JJUFRTfQorICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9
ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5IC0t
ZnJhbWV3b3JrIFdlYkNvcmUgLS1vdXRwdXQtZGlyZWN0b3J5ICR7REVSSVZFRF9TT1VSQ0VTX1dF
QkNPUkVfRElSfSAke19idWlsdGluU291cmNlfQorICAgICAgICBWRVJCQVRJTSkKKyAgICBsaXN0
KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9LyR7X29iamVjdE5hbWV9QnVpbHRpbnMuaAorICAgICAgICAke0RFUklWRURfU09VUkNF
U19XRUJDT1JFX0RJUn0vJHtfb2JqZWN0TmFtZX1CdWlsdGluc1dyYXBwZXIuaAorICAgICkKKyAg
ICBBRERfU09VUkNFX1dFQkNPUkVfREVSSVZFRF9ERVBFTkRFTkNJRVMoJHtXRUJDT1JFX0RJUn0v
YmluZGluZ3MvanMvV2ViQ29yZUpTQnVpbHRpbnMuY3BwICR7X29iamVjdE5hbWV9QnVpbHRpbnMu
Y3BwKQorZW5kZm9yZWFjaCAoKQorCiAKICMgR2VuZXJhdGUgSW5zcGVjdG9yT3ZlcmxheVBhZ2Uu
aAogYWRkX2N1c3RvbV9jb21tYW5kKApAQCAtMzM3Miw3ICszNDA0LDggQEAgYWRkX2N1c3RvbV9j
b21tYW5kKAogICAgIERFUEVORFMgaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlQYWdlLmNzcyBp
bnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheVBhZ2UuanMKICAgICBDT01NQU5EICR7UFlUSE9OX0VY
RUNVVEFCTEV9ICR7V2ViQ29yZV9JTlNQRUNUT1JfU0NSSVBUU19ESVJ9L2lubGluZS1hbmQtbWlu
aWZ5LXN0eWxlc2hlZXRzLWFuZC1zY3JpcHRzLnB5ICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9J
bnNwZWN0b3JPdmVybGF5UGFnZS5odG1sICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9J
bnNwZWN0b3JPdmVybGF5UGFnZS5jb21iaW5lZC5odG1sCiAgICAgQ09NTUFORCAke1BFUkxfRVhF
Q1VUQUJMRX0gJHtXZWJDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0veHhkLnBsIEluc3BlY3Rv
ck92ZXJsYXlQYWdlX2h0bWwgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3Rv
ck92ZXJsYXlQYWdlLmNvbWJpbmVkLmh0bWwgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9
L0luc3BlY3Rvck92ZXJsYXlQYWdlLmgKLSAgICBWRVJCQVRJTSkKKyAgICBWRVJCQVRJTQorKQog
bGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElS
fS9JbnNwZWN0b3JPdmVybGF5UGFnZS5oKQogCiAKQEAgLTMzODQsNyArMzQxNyw4IEBAIGFkZF9j
dXN0b21fY29tbWFuZCgKICAgICBDT01NQU5EIGVjaG8gIi8vIyBzb3VyY2VVUkw9X19XZWJJbnNw
ZWN0b3JDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZV9fIiA+ICR7REVSSVZFRF9TT1VSQ0VTX1dF
QkNPUkVfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMKICAgICBDT01NQU5E
ICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7V2ViQ29yZV9JTlNQRUNUT1JfU0NSSVBUU19ESVJ9L2pz
bWluLnB5IDwgJHtXRUJDT1JFX0RJUn0vaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJTW9kdWxlU291
cmNlLmpzID4+ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9Db21tYW5kTGluZUFQSU1v
ZHVsZVNvdXJjZS5taW4uanMKICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke1dlYkNv
cmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS94eGQucGwgQ29tbWFuZExpbmVBUElNb2R1bGVTb3Vy
Y2VfanMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlLm1pbi5qcyAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vQ29tbWFuZExpbmVB
UElNb2R1bGVTb3VyY2UuaAotICAgIFZFUkJBVElNKQorICAgIFZFUkJBVElNCispCiBsaXN0KEFQ
UEVORCBXZWJDb3JlX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0NvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlLmgpCiAKIApAQCAtMzU4NSwyMyArMzYxOSw2IEBAIEdFTkVS
QVRFX0JJTkRJTkdTKFdlYkNvcmVUZXN0U3VwcG9ydF9TT1VSQ0VTCiAgICAgJHtTVVBQTEVNRU5U
QUxfREVQRU5ERU5DWV9GSUxFfQogICAgICR7QURESVRJT05BTF9CSU5ESU5HU19ERVBFTkRFTkNJ
RVN9KQogCi0jIFdlYkNvcmUgSlMgQnVpbHRpbnMKLWZvcmVhY2ggKF9idWlsdGluanMgJHtXRUJD
T1JFX0pTX0JVSUxUSU5TfSkKLSAgICBnZXRfZmlsZW5hbWVfY29tcG9uZW50KF9uYW1lICR7X2J1
aWx0aW5qc30gTkFNRV9XRSkKLSAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCi0gICAgICAgIE9VVFBV
VCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vJHtfbmFtZX1CdWlsdGluc1dyYXBwZXIu
aCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vJHtfbmFtZX1CdWlsdGlucy5oICR7REVS
SVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS8ke19uYW1lfUJ1aWx0aW5zLmNwcAotICAgICAgICBN
QUlOX0RFUEVOREVOQ1kgJHtXRUJDT1JFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMKLSAgICAg
ICAgREVQRU5EUyAke1dlYkNvcmVfR0VORVJBVEVfSlNfQlVJTFRJTlNfU0NSSVBUU19ESVJ9L2dl
bmVyYXRlLWpzLWJ1aWx0aW5zCi0gICAgICAgIERFUEVORFMgJHtfYnVpbHRpbmpzfQotICAgICAg
ICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElS
fS9nZW5lcmF0ZS1qcy1idWlsdGlucyAtLWlucHV0ICR7X2J1aWx0aW5qc30gLS1vdXRwdXRfZGly
ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfSAtLWdlbmVyYXRlX2pzX2J1aWx0aW5zX3Bh
dGggJHtXZWJDb3JlX0dFTkVSQVRFX0pTX0JVSUxUSU5TX1NDUklQVFNfRElSfQotICAgICAgICBW
RVJCQVRJTSkKLSAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKLSAgICAgICAgJHtERVJJ
VkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9LyR7X25hbWV9QnVpbHRpbnMuaAotICAgICAgICAke0RF
UklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vJHtfbmFtZX1CdWlsdGluc1dyYXBwZXIuaAotICAg
ICkKLSAgICBBRERfU09VUkNFX1dFQkNPUkVfREVSSVZFRF9ERVBFTkRFTkNJRVMoJHtXRUJDT1JF
X0RJUn0vYmluZGluZ3MvanMvV2ViQ29yZUpTQnVpbHRpbnMuY3BwICR7X25hbWV9QnVpbHRpbnMu
Y3BwKQotZW5kZm9yZWFjaCAoKQotCiBBRERfU09VUkNFX1dFQkNPUkVfREVSSVZFRF9ERVBFTkRF
TkNJRVMoJHtXRUJDT1JFX0RJUn0vaHRtbC9IVE1MVHJlZUJ1aWxkZXIuY3BwIE1hdGhNTE5hbWVz
LmNwcCkKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA0NjY1NGYyYWQzMTg4
OWRiMzQyNTdiZmQ4YzhmYWM5M2UyZGYwNGI1Li40YWUyOGQ4MjU3ODUzY2FiZTkzZTgxOGNiMWJl
MTlhZmI5Zjc1MjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTc5Miw3ICs3
OTIsNiBAQCBhbGwgOiBcCiAgICAgJChXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklM
RSkgXAogICAgICQoSlNfRE9NX0hFQURFUlMpIFwKICAgICAkKFdFQl9ET01fSEVBREVSUykgXAot
ICAgICQoV0VCQ09SRV9KU19CVUlMVElOUykgXAogICAgIFwKICAgICBDU1NHcmFtbWFyLmNwcCBc
CiAgICAgQ1NTUHJvcGVydHlOYW1lcy5jcHAgXApAQCAtMTI1MSw3ICsxMjUwLDcgQEAgV2ViUmVw
bGF5SW5wdXRzLmggOiAkKElOUFVUX0dFTkVSQVRPUl9TUEVDSUZJQ0FUSU9OUykgJChJTlBVVF9H
RU5FUkFUT1JfU0NSSVBUUykKIAogIyBXZWJDb3JlIEpTIEJ1aWx0aW5zCiAKLVdFQkNPUkVfSlNf
QlVJTFRJTlMgPSBcCitXZWJDb3JlX0JVSUxUSU5TX1NPVVJDRVMgPSBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3N0cmVhbXMvQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5qcyBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvQ291bnRRdWV1aW5nU3RyYXRlZ3kuanMgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmpzIFwKQEAgLTEyNjAsMTAg
KzEyNTksMzEgQEAgV0VCQ09SRV9KU19CVUlMVElOUyA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5qcyBcCiAjCiAKLWFsbCA6ICQoV0VCQ09S
RV9KU19CVUlMVElOUzolLmpzPSVCdWlsdGlucy5jcHApCitCVUlMVElOU19HRU5FUkFUT1JfU0NS
SVBUUyA9IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGluc19nZW5l
cmF0b3IucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zX21v
ZGVsLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGluc190ZW1w
bGF0ZXMucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlX2J1
aWx0aW5zX2NvbWJpbmVkX2hlYWRlci5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRT
X0RJUikvZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkgXAorICAg
ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRl
X2hlYWRlci5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGVf
YnVpbHRpbnNfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkgXAorICAgICQoSmF2YVNjcmlwdENv
cmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX3dyYXBwZXIucHkgXAor
ICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5
IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9sYXp5d3JpdGVyLnB5IFwKKyMK
KworIyBBZGRpbmcvcmVtb3Zpbmcgc2NyaXB0cyBzaG91bGQgdHJpZ2dlciByZWdlbmVyYXRpb24s
IGJ1dCBjaGFuZ2luZyB3aGljaCBidWlsdGlucyBhcmUKKyMgZ2VuZXJhdGVkIHNob3VsZCBub3Qg
YWZmZWN0IG90aGVyIGJ1aWx0aW5zIHdoZW4gbm90IHBhc3NpbmcgJy0tY29tYmluZWQnIHRvIHRo
ZSBnZW5lcmF0b3IuCisKKy5QSE9OWTogZm9yY2UKK1dlYkNvcmVfQlVJTFRJTlNfREVQRU5ERU5D
SUVTX0xJU1QgOiAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9VcGRhdGVDb250ZW50cy5w
eSBmb3JjZQorCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9VcGRhdGVD
b250ZW50cy5weSAnJChCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUyknICRACisKKyVCdWlsdGlu
cy5oOiAlLmpzICQoQlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMpIFdlYkNvcmVfQlVJTFRJTlNf
REVQRU5ERU5DSUVTX0xJU1QKKwkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJ
UikvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgLS1vdXRwdXQtZGlyZWN0b3J5IC4gLS1mcmFtZXdv
cmsgV2ViQ29yZSAkPAogCi0lQnVpbHRpbnMuY3BwOiAlLmpzCi0JJChQWVRIT04pICQoV2ViQ29y
ZSkvZ2VuZXJhdGUtanMtYnVpbHRpbnMgLS1pbnB1dCAkPCAtLWdlbmVyYXRlX2pzX2J1aWx0aW5z
X3BhdGggJChHZW5lcmF0ZUpTQnVpbHRpbnNTY3JpcHRzKQorYWxsIDogJChub3RkaXIgJChXZWJD
b3JlX0JVSUxUSU5TX1NPVVJDRVM6JS5qcz0lQnVpbHRpbnMuaCkpCisJCiAKICMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA5ZGNiYWVjMDhhYTRiNDY5Nzc4ZDU4ZDY2NjM3ZmEzMWJk
ZGJlMTg2Li4yMzBkNWI5MzQxZDNmNDU0MDYyNWJkNmI0NzI2ZGI1N2UyMTBlOTMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
NDkyLDcgKzE0OTIsNyBAQAogCQk0MTI5REY4NjFCQjVCODBDMDAzMjJBMTYgLyogSlNSZWFkYWJs
ZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjlERjg0MUJCNUI3RjcwMDMyMkExNiAvKiBKU1JlYWRhYmxl
U3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQxMzhEMzM1MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENv
bnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
MzhEMzMzMTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuaCAqLzsgfTsKIAkJNDEzOEQz
MzYxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM4RDMzNDEyNDQwNTQ4MDAzMjNEMzMgLyog
RXZlbnRDb250ZXh0LmNwcCAqLzsgfTsKLQkJNDEzQzJDMzQxQkMyOUE4RjAwNzUyMDRDIC8qIEpT
RE9NQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxM0MyQzMzMUJDMjlBN0IwMDc1MjA0QyAvKiBKU0RPTUNvbnN0cnVjdG9yLmggKi87
IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJNDEzQzJDMzQxQkMyOUE4RjAw
NzUyMDRDIC8qIEpTRE9NQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0MyQzMzMUJDMjlBN0IwMDc1MjA0QyAvKiBKU0RPTUNvbnN0
cnVjdG9yLmggKi87IH07CiAJCTQxNTA3MTU3MTY4NTA2NzMwMEMzQzdCMyAvKiBTZWxlY3RvckZp
bHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTUwNzE1NTE2ODUwNjczMDBDM0M3QjMgLyogU2VsZWN0b3JGaWx0ZXIuY3BwICovOyB9OwogCQk0
MTUwNzE1ODE2ODUwNjczMDBDM0M3QjMgLyogU2VsZWN0b3JGaWx0ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNTA3MTU2MTY4NTA2NzMwMEMzQzdC
MyAvKiBTZWxlY3RvckZpbHRlci5oICovOyB9OwogCQk0MTUwRjlGMTEyQjZFMEU3MDAwOEM4NjAg
LyogU2xpZGVyVGh1bWJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTUwRjlFRjEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJFbGVt
ZW50LmggKi87IH07CkBAIC0xNTI1LDkgKzE1MjUsOSBAQAogCQk0MTlCQzJERTE2ODUzMjk5MDBE
NjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTlCQzJEQzE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExp
bmtTdGF0ZS5jcHAgKi87IH07CiAJCTQxOUJDMkRGMTY4NTMyOTkwMEQ2NEQ2RCAvKiBWaXNpdGVk
TGlua1N0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTlCQzJERDE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5oICovOyB9Owog
CQk0MTlCRTc1NjFCQzdGNDFCMDBFMUM4NUIgLyogV2ViQ29yZUpTQnVpbHRpbkludGVybmFscy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QkU3NTMx
QkM3RjNEQjAwRTFDODVCIC8qIFdlYkNvcmVKU0J1aWx0aW5JbnRlcm5hbHMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0MTlCRTc1NzFCQzdGNDIx
MDBFMUM4NUIgLyogV2ViQ29yZUpTQnVpbHRpbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QkU3NTQxQkM3RjNEQjAwRTFDODVCIC8qIFdlYkNv
cmVKU0J1aWx0aW5zLmNwcCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9Owot
CQk0MTlCRTc1ODFCQzdGNDI3MDBFMUM4NUIgLyogV2ViQ29yZUpTQnVpbHRpbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUJFNzU1MUJDN0YzREIw
MEUxQzg1QiAvKiBXZWJDb3JlSlNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdT
ID0gKCk7IH07IH07Ci0JCTQxOUJFNzU5MUJDN0Y0MkIwMEUxQzg1QiAvKiBXZWJDb3JlQnVpbHRp
bk5hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTlCRTc1MjFCQzdGM0RCMDBFMUM4NUIgLyogV2ViQ29yZUJ1aWx0aW5OYW1lcy5oICovOyBzZXR0
aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCTQxOUJFNzU3MUJDN0Y0MjEwMEUxQzg1
QiAvKiBXZWJDb3JlSlNCdWlsdGlucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTlCRTc1NDFCQzdGM0RCMDBFMUM4NUIgLyogV2ViQ29yZUpTQnVp
bHRpbnMuY3BwICovOyB9OworCQk0MTlCRTc1ODFCQzdGNDI3MDBFMUM4NUIgLyogV2ViQ29yZUpT
QnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxOUJFNzU1MUJDN0YzREIwMEUxQzg1QiAvKiBXZWJDb3JlSlNCdWlsdGlucy5oICovOyB9Owor
CQk0MTlCRTc1OTFCQzdGNDJCMDBFMUM4NUIgLyogV2ViQ29yZUJ1aWx0aW5OYW1lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QkU3NTIxQkM3RjNE
QjAwRTFDODVCIC8qIFdlYkNvcmVCdWlsdGluTmFtZXMuaCAqLzsgfTsKIAkJNDFBM0Q1OEUxMDFD
MTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEzRDU4QzEwMUMxNTJEMDAzMTZEMDcg
LyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCAqLzsgfTsKIAkJNDFBM0Q1OEYxMDFDMTUyRDAw
MzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBM0Q1OEQxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGlj
YXRlZFdvcmtlclRocmVhZC5oICovOyB9OwogCQk0MUJGNzAwQzBGRTg2RjQ5MDA1RThERUMgLyog
TWVzc2FnZVBvcnRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUJGNzAwQTBGRTg2RjQ5MDA1RThERUMgLyogTWVzc2FnZVBvcnRDaGFubmVs
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTYz
NzIsOCArNjM3Miw4IEBACiAJCUUxRkY4RjY4MTgwNzQ2MDgwMDEzMjY3NCAvKiBKU1N1YnRsZUNy
eXB0b0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMUZGOEY2NjE4MDc0NjA4MDAxMzI2NzQgLyogSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3Bw
ICovOyB9OwogCQlFMUZGOEY2QzE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVn
aXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTFGRjhGNkExODBEQjVCRTAwMTMyNjc0IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcCAq
LzsgfTsKIAkJRTFGRjhGNkQxODBEQjVCRTAwMTMyNjc0IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lz
dHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZG
OEY2QjE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCAqLzsgfTsK
LQkJRTM4ODM4OTgxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxlTG9hZGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODgzODk0MUJBRDE0NUYw
MEQ2MkVFMyAvKiBKU01vZHVsZUxvYWRlci5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1Mg
PSAoKTsgfTsgfTsKLQkJRTM4ODM4OTkxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxlTG9hZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5
NTFCQUQxNDVGMDBENjJFRTMgLyogSlNNb2R1bGVMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVNT
RVRfVEFHUyA9ICgpOyB9OyB9OworCQlFMzg4Mzg5ODFCQUQxNDVGMDBENjJFRTMgLyogSlNNb2R1
bGVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxlTG9hZGVyLmNwcCAqLzsgfTsK
KwkJRTM4ODM4OTkxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxlTG9hZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NTFCQUQxNDVGMDBE
NjJFRTMgLyogSlNNb2R1bGVMb2FkZXIuaCAqLzsgfTsKIAkJRTQwMUMyNzUxN0NFNTNFQzAwQzQx
QTM1IC8qIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MDFDMjc0MTdDRTUzRUMwMEM0MUEzNSAvKiBFbGVt
ZW50SXRlcmF0b3JBc3NlcnRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTQyNEEzOUUxMzMwREYwMTAwQ0Y2REM5IC8qIExlZ2FjeVRpbGVH
cmlkVGlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTQyNEEzOUQxMzMwREYwMTAwQ0Y2REM5IC8qIExlZ2FjeVRpbGVHcmlkVGlsZS5oICovOyB9Owog
CQlFNDI0QTNBMDEzMzBERjFFMDBDRjZEQzkgLyogTGVnYWN5VGlsZUdyaWRUaWxlLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQyNEEzOUYxMzMwREYx
RTAwQ0Y2REM5IC8qIExlZ2FjeVRpbGVHcmlkVGlsZS5tbSAqLzsgfTsKQEAgLTY0MjIsOCArNjQy
Miw4IEBACiAJCUU0NEI0QkIzMTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxlY3RvckNoZWNrZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ0QjRCQjEx
NDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9yQ2hlY2tlci5jcHAgKi87IH07CiAJCUU0NEI0QkI0
MTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxlY3RvckNoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NEI0QkIyMTQxNjUwRDcwMDJCMUQ4QiAvKiBT
ZWxlY3RvckNoZWNrZXIuaCAqLzsgfTsKIAkJRTQ0RUUzQTgxNzU3N0VCRDAwRUVFOENGIC8qIEZv
bnRHZW5lcmljRmFtaWxpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTQ0RUUzQTYxNzU3NkU1NTAwRUVFOENGIC8qIEZvbnRHZW5lcmljRmFtaWxp
ZXMuY3BwICovOyB9OwotCQlFNDRGQTE4NTFCQ0E2QjVBMDA5MUI2RUYgLyogQ29tcG9zZWRUcmVl
SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0NEZBMTg0MUJDQTZCNUEwMDkxQjZFRiAvKiBDb21wb3NlZFRyZWVJdGVyYXRvci5oICovOyBz
ZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07Ci0JCUU0NEZBMTg3MUJDQTkxNTYwMDkx
QjZFRiAvKiBDb21wb3NlZFRyZWVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDRGQTE4NjFCQ0E5MTU2MDA5MUI2RUYgLyogQ29tcG9z
ZWRUcmVlSXRlcmF0b3IuY3BwICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07
CisJCUU0NEZBMTg1MUJDQTZCNUEwMDkxQjZFRiAvKiBDb21wb3NlZFRyZWVJdGVyYXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ0RkExODQxQkNB
NkI1QTAwOTFCNkVGIC8qIENvbXBvc2VkVHJlZUl0ZXJhdG9yLmggKi87IH07CisJCUU0NEZBMTg3
MUJDQTkxNTYwMDkxQjZFRiAvKiBDb21wb3NlZFRyZWVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDRGQTE4NjFCQ0E5MTU2MDA5MUI2
RUYgLyogQ29tcG9zZWRUcmVlSXRlcmF0b3IuY3BwICovOyB9OwogCQlFNDUzMjJBQjE0MENFMjY3
MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNDUzMjJBOTE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JR
dWVyeS5jcHAgKi87IH07CiAJCUU0NTMyMkFDMTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1
ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDUz
MjJBQTE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oICovOyB9OwogCQlFNDUzOTAx
RDBFQUZDQUNBMDAzNjk1QzggLyogTUlNRVR5cGVSZWdpc3RyeUlPUy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NTM5MDE4MEVBRkNBQ0EwMDM2OTVD
OCAvKiBNSU1FVHlwZVJlZ2lzdHJ5SU9TLm1tICovOyB9OwpAQCAtMTEzMTAsNyArMTEzMTAsNiBA
QAogCQk5OENFNDMyNTEyOUUwMEJEMDA1ODIxREMgLyogTGlua0xvYWRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMaW5rTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOThDRTQzMjkxMjlFMDBFNTAwNTgyMURDIC8qIExpbmtMb2FkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlua0xvYWRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5OEVCMUY5NDEzMTNGRTA1MDBEMEUxRUEgLyogTm90SW1w
bGVtZW50ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm90SW1wbGVtZW50
ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTkwOEIwRUMxQkNBQ0YxRjAwRUQw
RjY1IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9u
OyBwYXRoID0gImdlbmVyYXRlLWpzLWJ1aWx0aW5zIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTkwOEIwRUQxQkNBQ0Y5MTAwRUQwRjY1IC8qIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRl
Z3kuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBCeXRlTGVuZ3Ro
UXVldWluZ1N0cmF0ZWd5LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBF
RTFCQ0FDRjkxMDBFRDBGNjUgLyogQ291bnRRdWV1aW5nU3RyYXRlZ3kuanMgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBDb3VudFF1ZXVpbmdTdHJhdGVneS5qczsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRUYxQkNBQ0Y5MTAwRUQwRjY1IC8qIFJl
YWRhYmxlU3RyZWFtLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0g
UmVhZGFibGVTdHJlYW0uanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTI4Nyw3
ICsxNTI4Niw2IEBACiAJCTA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBXZWJLaXQgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTk5MDhCMEVDMUJDQUNG
MUYwMEVEMEY2NSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLywKIAkJCQk2NUM5N0FGMjA4RUE5
MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggKi8sCiAJCQkJRURFQzk4MDIwQUVEN0UxNzAwNTkxMzdG
IC8qIFdlYkNvcmVQcmVmaXguaCAqLywKIAkJCQk5MzA3MDYxMzA5RTBDQTgyMDBCMTdGRTQgLyog
RGVyaXZlZFNvdXJjZXMubWFrZSAqLywKQEAgLTI4MTQzLDcgKzI4MTQxLDcgQEAKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJCXNoZWxsUGF0aCA9
IC9iaW4vc2g7Ci0JCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNf
RElSfS9EZXJpdmVkU291cmNlcy9XZWJDb3JlXCJcbmNkIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmVcIlxuXG4vYmluL2xuIC1zZmggXCIke1NSQ1JPT1R9XCIg
V2ViQ29yZVxuZXhwb3J0IFdlYkNvcmU9XCJXZWJDb3JlXCJcbmV4cG9ydCBJbnNwZWN0b3JTY3Jp
cHRzPVwiJHtKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSfVwiXG5leHBvcnQgV2Vi
UmVwbGF5U2NyaXB0cz1cIiR7SkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUn1cIlxu
ZXhwb3J0IEdlbmVyYXRlSlNCdWlsdGluc1NjcmlwdHM9XCIke0pBVkFTQ1JJUFRDT1JFX1BSSVZB
VEVfSEVBREVSU19ESVJ9XCJcblxuaWYgWyAhICRDQyBdOyB0aGVuXG4gICAgZXhwb3J0IENDPVwi
YHhjcnVuIC1maW5kIGNsYW5nYFwiXG5maVxuXG5pZiBbICEgJEdQRVJGIF07IHRoZW5cbiAgICBl
eHBvcnQgR1BFUkY9XCJgeGNydW4gLWZpbmQgZ3BlcmZgXCJcbmZpXG5cbmlmIFsgXCIke0FDVElP
Tn1cIiA9IFwiYnVpbGRcIiAtbyBcIiR7QUNUSU9OfVwiID0gXCJpbnN0YWxsXCIgLW8gXCIke0FD
VElPTn1cIiA9IFwiaW5zdGFsbGhkcnNcIiBdOyB0aGVuXG4gICAgbWFrZSAgLS1uby1idWlsdGlu
LXJ1bGVzIC1mIFwiV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlXCIgLWogYC91c3Ivc2Jpbi9z
eXNjdGwgLW4gaHcuYWN0aXZlY3B1YCBTREtST09UPVwiJHtTREtST09UfVwiXG5maVxuIjsKKwkJ
CXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmVcIlxuY2QgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZVwiXG5cbi9iaW4vbG4gLXNmaCBcIiR7U1JDUk9PVH1cIiBXZWJDb3JlXG5leHBv
cnQgV2ViQ29yZT1cIldlYkNvcmVcIlxuZXhwb3J0IEluc3BlY3RvclNjcmlwdHM9XCIke0pBVkFT
Q1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVJ9XCJcbmV4cG9ydCBXZWJSZXBsYXlTY3JpcHRz
PVwiJHtKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSfVwiXG5leHBvcnQgSmF2YVNj
cmlwdENvcmVfU0NSSVBUU19ESVI9XCIke0pBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19E
SVJ9XCJcblxuaWYgWyAhICRDQyBdOyB0aGVuXG4gICAgZXhwb3J0IENDPVwiYHhjcnVuIC1maW5k
IGNsYW5nYFwiXG5maVxuXG5pZiBbICEgJEdQRVJGIF07IHRoZW5cbiAgICBleHBvcnQgR1BFUkY9
XCJgeGNydW4gLWZpbmQgZ3BlcmZgXCJcbmZpXG5cbmlmIFsgXCIke0FDVElPTn1cIiA9IFwiYnVp
bGRcIiAtbyBcIiR7QUNUSU9OfVwiID0gXCJpbnN0YWxsXCIgLW8gXCIke0FDVElPTn1cIiA9IFwi
aW5zdGFsbGhkcnNcIiBdOyB0aGVuXG4gICAgbWFrZSAgLS1uby1idWlsdGluLXJ1bGVzIC1mIFwi
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlXCIgLWogYC91c3Ivc2Jpbi9zeXNjdGwgLW4gaHcu
YWN0aXZlY3B1YCBTREtST09UPVwiJHtTREtST09UfVwiXG5maVxuIjsKIAkJfTsKIC8qIEVuZCBQ
QlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCAyYWY5Nzk5ZWQxZWJlZDRmYjlj
YjhkOTRmNjc2OGFjOTU2MmNmYzAyLi5lMzhkMzUzMDkxOGNjMGFmNjkzMzlmYTcyMTk1YTc0NDZj
YWNlOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNET01XaW5kb3dTaGVsbCogc2hlbGwpCiAgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyhcCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNs
aWVudERhdGEpLT5idWlsdGluRnVuY3Rpb25zKCkucmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWls
dGlucygpLm5hbWUjI1ByaXZhdGVOYW1lKCksIFwKICAgICAgICAgICAgIG1fcHJpdmF0ZUZ1bmN0
aW9ucy5yZWFkYWJsZVN0cmVhbUludGVybmFscygpLm1fIyNuYW1lIyNGdW5jdGlvbi5nZXQoKSAs
IERvbnREZWxldGUgfCBSZWFkT25seSksCi0gICAgICAgIFdFQkNPUkVSRUFEQUJMRVNUUkVBTUlO
VEVSTkFMU19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0dMT0JBTF9TVEFU
SUMpCisgICAgICAgIFdFQkNPUkVfRk9SRUFDSF9SRUFEQUJMRVNUUkVBTUlOVEVSTkFMU19CVUlM
VElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9HTE9CQUxfU1RBVElDKQogI3VuZGVmIERFQ0xBUkVf
R0xPQkFMX1NUQVRJQwogI2VuZGlmCiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2dlbmVyYXRlLWpzLWJ1aWx0aW5zIGIvU291cmNlL1dlYkNvcmUvZ2VuZXJhdGUtanMtYnVpbHRp
bnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxZGQ2NDJlN2NhMmY4OWE3OGUxZDFh
NTAzZDhiOTc4MmI0MDQ0ODAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMKKysrIC9kZXYvbnVs
bApAQCAtMSwxODEgKzAsMCBAQAotIyEvdXNyL2Jpbi9weXRob24KLSMgQ29weXJpZ2h0IChDKSAy
MDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0jIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0j
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotIyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIyBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotIyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQot
aW1wb3J0IGFyZ3BhcnNlCi1pbXBvcnQgZmlsZWNtcAotaW1wb3J0IG9zCi1pbXBvcnQgc3VicHJv
Y2VzcwotCi1mcm9tIHN0cmluZyBpbXBvcnQgVGVtcGxhdGUKLQotCi1wYXJzZXIgPSBhcmdwYXJz
ZS5Bcmd1bWVudFBhcnNlcigpCi1wYXJzZXIuYWRkX2FyZ3VtZW50KCctLW91dHB1dF9kaXInLCBk
ZWZhdWx0PScnLCBoZWxwPSdvdXRwdXQgZGlyZWN0b3J5JykKLXBhcnNlci5hZGRfYXJndW1lbnQo
Jy0taW5wdXQnLCBoZWxwPSdwYXRoIHRvIGlucHV0IEpTIGZpbGUnKQotcGFyc2VyLmFkZF9hcmd1
bWVudCgnLS1nZW5lcmF0ZV9qc19idWlsdGluc19wYXRoJywgaGVscD0ncGF0aCB0byBkaXJlY3Rv
cnkgY29udGFpbmluZyBKYXZhU2NyaXB0Q29yZVwncyBnZW5lcmF0ZS1qcy1idWlsdGlucycpCi0K
LWFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCi1maWxlbmFtZSA9IG9zLnBhdGguc3BsaXRleHQo
b3MucGF0aC5iYXNlbmFtZShhcmdzLmlucHV0KSlbMF0KLQotIyBnZW5lcmF0ZSBKUyBidWlsdGlu
cwotbmFtZXNwYWNlID0gIldlYkNvcmUiCi1wcmVmaXggPSAiV0VCQ09SRSIgKyBmaWxlbmFtZS51
cHBlcigpCi1vdXRwdXQgPSBvcy5wYXRoLmpvaW4oYXJncy5vdXRwdXRfZGlyLCBmaWxlbmFtZSAr
ICJCdWlsdGlucyIpCi1qc2NfZ2VuZXJhdGVfYnVpbHRpbl9zY3JpcHQgPSBvcy5wYXRoLmpvaW4o
YXJncy5nZW5lcmF0ZV9qc19idWlsdGluc19wYXRoLCAiZ2VuZXJhdGUtanMtYnVpbHRpbnMiKQot
Ci1zdWJwcm9jZXNzLmNhbGwoWyJweXRob24iLCBqc2NfZ2VuZXJhdGVfYnVpbHRpbl9zY3JpcHQs
ICItLW91dHB1dCIsIG91dHB1dCwgIi0tbmFtZXNwYWNlIiwgbmFtZXNwYWNlLCAiLS1wcmVmaXgi
LCBwcmVmaXgsIGFyZ3MuaW5wdXRdLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCi0KLSMgZ2Vu
ZXJhdGUgSlMgYnVpbHRpbnMgd3JhcHBlcgotb3V0cHV0X2Jhc2UgPSBvdXRwdXQgKyAiV3JhcHBl
ciIKLQotYnVpbHRpbnNXcmFwcGVySGVhZGVyID0gb3BlbihvdXRwdXRfYmFzZSArICIuaC50bXAi
LCAidyIpCi0KLWJ1aWx0aW5zV3JhcHBlckhlYWRlci53cml0ZShUZW1wbGF0ZSgKLSIiIgotLyog
R2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWpzLWJ1aWx0aW5zIGRvIG5vdCBoYW5kIGVkaXQuICovCi0K
LS8qCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGVzc2VyIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2Ug
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh
cmUKLSAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqLwotCi0jaWZuZGVmICR7RmlsZW5hbWV9
QnVpbHRpbnNXcmFwcGVyX2gKLSNkZWZpbmUgJHtGaWxlbmFtZX1CdWlsdGluc1dyYXBwZXJfaAot
Ci0jaW5jbHVkZSAiJHtGaWxlbmFtZX1CdWlsdGlucy5oIgotI2luY2x1ZGUgPGJ5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg+Ci0jaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0
aWxzLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9JZGVudGlmaWVyLmg+Ci0jaW5jbHVkZSA8cnVudGlt
ZS9KU0Z1bmN0aW9uLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgJHtGaWxlbmFt
ZX1CdWlsdGluc1dyYXBwZXIgOiBwcml2YXRlIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKLXB1Ymxp
YzoKLSAgICBleHBsaWNpdCAke0ZpbGVuYW1lfUJ1aWx0aW5zV3JhcHBlcihKU0M6OlZNKiB2bSkK
LSAgICAgICAgOiBtX3ZtKCp2bSkKLSAgICAgICAgJHtQcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9G
VU5DVElPTl9OQU1FKElOSVRJQUxJWkVfQlVJTFRJTl9OQU1FUykKLSNkZWZpbmUgSU5JVElBTEla
RV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1f
IyNuYW1lIyNTb3VyY2UoSlNDOjptYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRl
cmFsKHNfIyNuYW1lLCBsZW5ndGgpKSkKLSAgICAgICAgJHtQcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJ
TihJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCi0jdW5kZWYgSU5JVElBTElaRV9C
VUlMVElOX1NPVVJDRV9NRU1CRVJTCi0gICAgewotICAgIH0KLQotI2RlZmluZSBFWFBPU0VfQlVJ
TFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXFwKLSAgICBKU0M6
OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFxcCi0gICAg
Y29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMj
bmFtZSMjU291cmNlOyB9Ci0gICAgJHtQcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTihFWFBPU0VfQlVJ
TFRJTl9FWEVDVVRBQkxFUykKLSN1bmRlZiBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUwotCi0g
ICAgJHtQcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJ
Tl9JREVOVElGSUVSX0FDQ0VTU09SKQotCi0gICAgdm9pZCBleHBvcnROYW1lcygpOwotCi1wcml2
YXRlOgotICAgIEpTQzo6Vk0mIG1fdm07Ci0KLSAgICAke1ByZWZpeH1fRk9SRUFDSF9CVUlMVElO
X0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX05BTUVTKQotCi0jZGVmaW5lIERFQ0xBUkVf
QlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXFwKLSAg
ICBKU0M6OlNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJjZTtcXAotICAgIEpTQzo6V2VhazxKU0M6
OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKLSAgICAk
e1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykK
LSN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKLQotfTsKLQotI2RlZmluZSBE
RUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXFwK
LWlubGluZSBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiAke0ZpbGVuYW1lfUJ1aWx0
aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFxcCi17XFwKLSAgICBpZiAoIW1fIyNuYW1l
IyNFeGVjdXRhYmxlKVxcCi0gICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gSlNDOjpXZWFr
PEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6Y3JlYXRlQnVpbHRpbkV4ZWN1
dGFibGUobV92bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCks
IHNfIyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRhYmxl
KTtcXAotICAgIHJldHVybiBtXyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtcXAotfQotJHtQcmVm
aXh9X0ZPUkVBQ0hfQlVJTFRJTihERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKLSN1bmRlZiBE
RUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUwotCi1pbmxpbmUgdm9pZCAke0ZpbGVuYW1lfUJ1aWx0
aW5zV3JhcHBlcjo6ZXhwb3J0TmFtZXMoKQotewotI2RlZmluZSBFWFBPUlRfRlVOQ1RJT05fTkFN
RShuYW1lKSBtX3ZtLnByb3BlcnR5TmFtZXMtPmFwcGVuZEV4dGVybmFsTmFtZShuYW1lIyNQdWJs
aWNOYW1lKCksIG5hbWUjI1ByaXZhdGVOYW1lKCkpOwotICAgICR7UHJlZml4fV9GT1JFQUNIX0JV
SUxUSU5fRlVOQ1RJT05fTkFNRShFWFBPUlRfRlVOQ1RJT05fTkFNRSkKLSN1bmRlZiBFWFBPUlRf
RlVOQ1RJT05fTkFNRQotfQotCi1jbGFzcyAke0ZpbGVuYW1lfUJ1aWx0aW5GdW5jdGlvbnMgewot
cHVibGljOgotICAgIGV4cGxpY2l0ICR7RmlsZW5hbWV9QnVpbHRpbkZ1bmN0aW9ucyhKU0M6OlZN
JiB2bSkgOiBtX3ZtKHZtKSB7IH0KLQotICAgIHZvaWQgaW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0
Jik7Ci0gICAgdm9pZCB2aXNpdChKU0M6OlNsb3RWaXNpdG9yJik7Ci0KLXB1YmxpYzoKLSAgICBK
U0M6OlZNJiBtX3ZtOwotCi0jZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhm
dW5jdGlvbk5hbWUpIFxcCi0gICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU0Z1bmN0aW9uPiBt
XyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbjsKLSAgICAke1ByZWZpeH1fRk9SRUFDSF9CVUlMVElO
X0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQotI3VuZGVmIERF
Q0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUwotfTsKLQotaW5saW5lIHZvaWQgJHtGaWxlbmFt
ZX1CdWlsdGluRnVuY3Rpb25zOjppbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKLXsKLSNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9OKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGxl
bmd0aClcXAotICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihtX3ZtLCBjb2Rl
TmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7Ci0gICAgJHtQcmVmaXh9X0ZP
UkVBQ0hfQlVJTFRJTihFWFBPUlRfRlVOQ1RJT04pCi0jdW5kZWYgRVhQT1JUX0ZVTkNUSU9OCi19
Ci0KLWlubGluZSB2b2lkICR7RmlsZW5hbWV9QnVpbHRpbkZ1bmN0aW9uczo6dmlzaXQoSlNDOjpT
bG90VmlzaXRvciYgdmlzaXRvcikKLXsKLSNkZWZpbmUgVklTSVRfRlVOQ1RJT04obmFtZSkgdmlz
aXRvci5hcHBlbmQoJm1fIyNuYW1lIyNGdW5jdGlvbik7Ci0gICAgJHtQcmVmaXh9X0ZPUkVBQ0hf
QlVJTFRJTl9GVU5DVElPTl9OQU1FKFZJU0lUX0ZVTkNUSU9OKQotI3VuZGVmIFZJU0lUX0ZVTkNU
SU9OCi19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vICR7RmlsZW5hbWV9
QnVpbHRpbnNXcmFwcGVyX2gKLSIiIikuc3Vic3RpdHV0ZShkaWN0KEZpbGVuYW1lPWZpbGVuYW1l
LCBQcmVmaXg9cHJlZml4KSkpCi0KLWJ1aWx0aW5zV3JhcHBlckhlYWRlci5jbG9zZSgpCi0KLWlm
IChub3Qgb3MucGF0aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmgiKSkgb3IgKG5vdCBmaWxlY21w
LmNtcChvdXRwdXRfYmFzZSArICIuaC50bXAiLCBvdXRwdXRfYmFzZSArICIuaCIsIHNoYWxsb3c9
RmFsc2UpKToKLSAgICBpZiAob3MucGF0aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmgiKSk6Ci0g
ICAgICAgIG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIuaCIpCi0gICAgb3MucmVuYW1lKG91dHB1
dF9iYXNlICsgIi5oLnRtcCIsIG91dHB1dF9iYXNlICsgIi5oIikKLWVsc2U6Ci0gICAgb3MucmVt
b3ZlKG91dHB1dF9iYXNlICsgIi5oLnRtcCIpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjdmZTIyZTY2MzIwOGIyNTg4MTczYWQxM2M0NzMzMTli
YjZjZjgwZi4uYzlkNzBkY2NkMmYxMjQ3MDg2YmE0ZTRiNTIwMjZjOTdlYWQ2YWFjYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMw
IEBACisyMDE1LTEwLTEzICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAg
IFJlc3RydWN0dXJlIGdlbmVyYXRlLWpzLWJpbmRpbmdzIHNjcmlwdCB0byBiZSBtb2R1bGFyIGFu
ZCB0ZXN0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ5OTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGEgc3R1YiBzaGVsbCBzY3JpcHQgYW5kIGJhc2ljIHdlYmtpdHB5IHN1cHBvcnQgZm9y
IHJ1bm5pbmcgYnVpbHRpbnMKKyAgICAgICAgZ2VuZXJhdG9yIHRlc3RzLgorCisgICAgICAgICog
U2NyaXB0cy9ydW4tYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzOiBBZGRlZC4KKyAgICAgICAgKG1h
aW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29kZWdlbi9fX2luaXRfXy5weTogQWRk
ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb2RlZ2VuL21haW4ucHk6IEFkZGVkLgor
CisgICAgICAgICAgICBUaGUgb25seSBpbnRlcmVzdGluZyBkaWZmZXJlbmNlIGhlcmUgZnJvbSB0
aGUgaW5zcGVjdG9yIHByb3RvY29sCisgICAgICAgICAgICBnZW5lcmF0b3IgZXF1aXZhbGVudCBp
cyB0aGF0IHRoaXMgaW1wbGVtZW50YXRpb24gZGVjb2RlcyB0aGUgdGFyZ2V0CisgICAgICAgICAg
ICBmcmFtZXdvcmsgYW5kIG91dHB1dCBtb2RlIChjb21iaW5lZCBvciBzZXBhcmF0ZSkgZnJvbSB0
aGUgdGVzdCdzIGZpbGUgbmFtZS4KKworICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3JUZXN0cyk6
CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvclRlc3RzLl9faW5pdF9fKToKKyAgICAgICAgKEJ1
aWx0aW5zR2VuZXJhdG9yVGVzdHMuZ2VuZXJhdGVfZnJvbV9qc19idWlsdGlucyk6CisgICAgICAg
IChCdWlsdGluc0dlbmVyYXRvclRlc3RzLndyaXRlX2Vycm9yX2ZpbGUpOgorICAgICAgICAoQnVp
bHRpbnNHZW5lcmF0b3JUZXN0cy5kZXRlY3RfY2hhbmdlcyk6CisgICAgICAgIChCdWlsdGluc0dl
bmVyYXRvclRlc3RzLnJ1bl90ZXN0cyk6CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvclRlc3Rz
Lm1haW4pOgorCiAyMDE1LTEwLTEzICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgogCiAgICAgICAgIE1hYyBEZWJ1ZyBhbmQgMzItYml0IHF1ZXVlcyBzaG91bGQgYmUgc2VwYXJh
dGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWJ1aWx0aW5zLWdlbmVyYXRvci10ZXN0
cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWJ1aWx0aW5zLWdlbmVyYXRvci10ZXN0cwpuZXcgZmlsZSBt
b2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yMzk4Yzc4Y2ExMGVjNTk3NjI2NjEyYzg1NTUzYWJkMWE0ZTZmYmQ0Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzCkBAIC0wLDAg
KzEsNDIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworaW1wb3J0IHN5cworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGlt
cG9ydCBleGVjdXRpdmUKKworZGVmIG1haW4oYXJndik6CisgICAgIiIiUnVucyB0aGUgSlMgYnVp
bHRpbnMgY29kZSBnZW5lcmF0b3Igb24gdGVzdCBpbnB1dCBmaWxlcyBhbmQgY29tcGFyZXMKKyAg
ICB0aGUgcmVzdWx0cyB3aXRoIHJlZmVyZW5jZSBmaWxlcy4KKworICAgIE9wdGlvbnM6CisgICAg
ICAgLS1yZXNldC1yZXN1bHRzOiBPdmVyd3JpdGVzIHRoZSByZWZlcmVuY2UgZmlsZXMgd2l0aCB0
aGUgZ2VuZXJhdGVkIHJlc3VsdHMuCisKKyAgICAiIiIKKyAgICByZXNldF9yZXN1bHRzID0gIi0t
cmVzZXQtcmVzdWx0cyIgaW4gYXJndgorCisgICAgZnJvbSB3ZWJraXRweS5jb2RlZ2VuLm1haW4g
aW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHMKKyAgICByZXR1cm4gQnVpbHRpbnNHZW5lcmF0
b3JUZXN0cyhyZXNldF9yZXN1bHRzLCBleGVjdXRpdmUuRXhlY3V0aXZlKCkpLm1haW4oKQorCitp
ZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHN5cy5leGl0KG1haW4oc3lzLmFyZ3YpKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb2RlZ2VuL19faW5pdF9fLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb2RlZ2VuL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVm
NjViZWU1YmI3N2U5NmViYzdjZDljNDc2NDA2OTBmYmRhOGFjMTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvZGVnZW4vX19pbml0X18ucHkKQEAgLTAsMCArMSBA
QAorIyBSZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9k
dWxlIGZpbGVzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvZGVnZW4vbWFp
bi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29kZWdlbi9tYWluLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjAwMzk2ZGI5YTM4YmUwZjA3YmUxODYzYjg4YWVkNDFlZGY5N2Q5NjkKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvZGVnZW4vbWFpbi5weQpAQCAtMCwwICsxLDE0
NCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUworIyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyMgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCisj
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorIyBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisj
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitpbXBvcnQgb3MKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3lz
CitpbXBvcnQgdGVtcGZpbGUKK2Zyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5kZXRl
Y3Rpb24gaW1wb3J0IGRldGVjdF9zY21fc3lzdGVtCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgorCisKK2NsYXNzIEJ1aWx0aW5zR2VuZXJh
dG9yVGVzdHM6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVzZXRfcmVzdWx0cywgZXhlY3V0
aXZlKToKKyAgICAgICAgc2VsZi5yZXNldF9yZXN1bHRzID0gcmVzZXRfcmVzdWx0cworICAgICAg
ICBzZWxmLmV4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZQorCisgICAgZGVmIGdlbmVyYXRlX2Zyb21fanNf
YnVpbHRpbnMoc2VsZiwgYnVpbHRpbnNfZmlsZSwgb3V0cHV0X2RpcmVjdG9yeSwgZnJhbWV3b3Jr
X25hbWU9IiIsIGNvbWJpbmVkX291dHB1dHM9RmFsc2UpOgorICAgICAgICBjbWQgPSBbJ3B5dGhv
bicsCisgICAgICAgICAgICAgICAnSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1i
dWlsdGlucy5weScsCisgICAgICAgICAgICAgICAnLS1vdXRwdXQtZGlyZWN0b3J5Jywgb3V0cHV0
X2RpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICctLWZvcmNlJywKKyAgICAgICAgICAgICAgICct
LWZyYW1ld29yaycsIGZyYW1ld29ya19uYW1lLAorICAgICAgICAgICAgICAgJy0tdGVzdCddCisK
KyAgICAgICAgaWYgY29tYmluZWRfb3V0cHV0czoKKyAgICAgICAgICAgIGNtZC5hcHBlbmQoJy0t
Y29tYmluZWQnKQorCisgICAgICAgIGNtZC5hcHBlbmQoYnVpbHRpbnNfZmlsZSkKKworICAgICAg
ICBleGl0X2NvZGUgPSAwCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN0ZGVycl9vdXRwdXQg
PSBzZWxmLmV4ZWN1dGl2ZS5ydW5fY29tbWFuZChjbWQpCisgICAgICAgICAgICBpZiBzdGRlcnJf
b3V0cHV0OgorICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfZXJyb3JfZmlsZShidWlsdGluc19m
aWxlLCBvdXRwdXRfZGlyZWN0b3J5LCBzdGRlcnJfb3V0cHV0KQorICAgICAgICBleGNlcHQgU2Ny
aXB0RXJyb3IsIGU6CisgICAgICAgICAgICBwcmludCBlLm91dHB1dAorICAgICAgICAgICAgZXhp
dF9jb2RlID0gZS5leGl0X2NvZGUKKyAgICAgICAgcmV0dXJuIGV4aXRfY29kZQorCisgICAgZGVm
IHdyaXRlX2Vycm9yX2ZpbGUoc2VsZiwgaW5wdXRfZmlsZXBhdGgsIG91dHB1dF9kaXJlY3Rvcnks
IGVycm9yX291dHB1dCk6CisgICAgICAgIG91dHB1dF9maWxlcGF0aCA9IG9zLnBhdGguam9pbihv
dXRwdXRfZGlyZWN0b3J5LCBvcy5wYXRoLmJhc2VuYW1lKGlucHV0X2ZpbGVwYXRoKSArICctZXJy
b3InKQorCisgICAgICAgIHdpdGggb3BlbihvdXRwdXRfZmlsZXBhdGgsICJ3IikgYXMgb3V0cHV0
X2ZpbGU6CisgICAgICAgICAgICBvdXRwdXRfZmlsZS53cml0ZShlcnJvcl9vdXRwdXQpCisKKyAg
ICBkZWYgZGV0ZWN0X2NoYW5nZXMoc2VsZiwgd29ya19kaXJlY3RvcnksIHJlZmVyZW5jZV9kaXJl
Y3RvcnkpOgorICAgICAgICBjaGFuZ2VzX2ZvdW5kID0gRmFsc2UKKyAgICAgICAgZm9yIG91dHB1
dF9maWxlIGluIG9zLmxpc3RkaXIod29ya19kaXJlY3RvcnkpOgorICAgICAgICAgICAgY21kID0g
WydkaWZmJywKKyAgICAgICAgICAgICAgICAgICAnLXUnLAorICAgICAgICAgICAgICAgICAgICct
TicsCisgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHJlZmVyZW5jZV9kaXJlY3Rvcnks
IG91dHB1dF9maWxlKSwKKyAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4od29ya19kaXJl
Y3RvcnksIG91dHB1dF9maWxlKV0KKworICAgICAgICAgICAgZXhpdF9jb2RlID0gMAorICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG91dHB1dCA9IHNlbGYuZXhlY3V0aXZlLnJ1bl9j
b21tYW5kKGNtZCkKKyAgICAgICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciwgZToKKyAgICAgICAg
ICAgICAgICBvdXRwdXQgPSBlLm91dHB1dAorICAgICAgICAgICAgICAgIGV4aXRfY29kZSA9IGUu
ZXhpdF9jb2RlCisKKyAgICAgICAgICAgIGlmIGV4aXRfY29kZSBvciBvdXRwdXQ6CisgICAgICAg
ICAgICAgICAgcHJpbnQgJ0ZBSUw6ICVzJyAlIG91dHB1dF9maWxlCisgICAgICAgICAgICAgICAg
cHJpbnQgb3V0cHV0CisgICAgICAgICAgICAgICAgY2hhbmdlc19mb3VuZCA9IFRydWUKKyAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcHJpbnQgJ1BBU1M6ICVzJyAlIG91dHB1dF9m
aWxlCisgICAgICAgIHJldHVybiBjaGFuZ2VzX2ZvdW5kCisKKyAgICBkZWYgcnVuX3Rlc3RzKHNl
bGYsIGlucHV0X2RpcmVjdG9yeSwgcmVmZXJlbmNlX2RpcmVjdG9yeSk6CisgICAgICAgIHdvcmtf
ZGlyZWN0b3J5ID0gcmVmZXJlbmNlX2RpcmVjdG9yeQorCisgICAgICAgIHBhc3NlZCA9IFRydWUK
KyAgICAgICAgZm9yIGlucHV0X2ZpbGUgaW4gb3MubGlzdGRpcihpbnB1dF9kaXJlY3RvcnkpOgor
ICAgICAgICAgICAgKHRlc3RfbmFtZSwgZXh0ZW5zaW9uKSA9IG9zLnBhdGguc3BsaXRleHQoaW5w
dXRfZmlsZSkKKyAgICAgICAgICAgIGlmIGV4dGVuc2lvbiAhPSAnLmpzJzoKKyAgICAgICAgICAg
ICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBHZW5lcmF0ZSBvdXRwdXQgaW50byB0aGUgd29y
ayBkaXJlY3RvcnkgKGVpdGhlciB0aGUgZ2l2ZW4gb25lIG9yIGEKKyAgICAgICAgICAgICMgdGVt
cCBvbmUgaWYgbm90IHJlc2V0X3Jlc3VsdHMgaXMgcGVyZm9ybWVkKQorICAgICAgICAgICAgaWYg
bm90IHNlbGYucmVzZXRfcmVzdWx0czoKKyAgICAgICAgICAgICAgICB3b3JrX2RpcmVjdG9yeSA9
IHRlbXBmaWxlLm1rZHRlbXAoKQorCisgICAgICAgICAgICAoZnJhbWV3b3JrX25hbWUsIHRlc3Rf
Y2FzZSwgb3V0cHV0X21vZGUpID0gdGVzdF9uYW1lLnNwbGl0KCctJykKKyAgICAgICAgICAgIGlm
IG5vdCBmcmFtZXdvcmtfbmFtZSBvciBub3Qgb3V0cHV0X21vZGUgb3Igbm90IHRlc3RfY2FzZToK
KyAgICAgICAgICAgICAgICBwcmludCAiSW52YWxpZCB0ZXN0IGNhc2UgbmFtZTogc2hvdWxkIGJl
IEZyYW1ld29yay1UZXN0Q2FzZU5hbWUtT3V0cHV0TW9kZS5qcyIKKyAgICAgICAgICAgICAgICBj
b250aW51ZQorCisgICAgICAgICAgICBjb21iaW5lZF9vdXRwdXRzID0gb3V0cHV0X21vZGUgPT0g
IkNvbWJpbmVkIgorICAgICAgICAgICAgaWYgc2VsZi5nZW5lcmF0ZV9mcm9tX2pzX2J1aWx0aW5z
KG9zLnBhdGguam9pbihpbnB1dF9kaXJlY3RvcnksIGlucHV0X2ZpbGUpLCB3b3JrX2RpcmVjdG9y
eSwgZnJhbWV3b3JrX25hbWU9ZnJhbWV3b3JrX25hbWUsIGNvbWJpbmVkX291dHB1dHM9Y29tYmlu
ZWRfb3V0cHV0cyk6CisgICAgICAgICAgICAgICAgcGFzc2VkID0gRmFsc2UKKworICAgICAgICAg
ICAgaWYgc2VsZi5yZXNldF9yZXN1bHRzOgorICAgICAgICAgICAgICAgIHByaW50ICJSZXNldCBy
ZXN1bHRzIGZvciB0ZXN0OiAlcyIgJSAoaW5wdXRfZmlsZSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZQorCisgICAgICAgICAgICAjIERldGVjdCBjaGFuZ2VzCisgICAgICAgICAgICBpZiBzZWxm
LmRldGVjdF9jaGFuZ2VzKHdvcmtfZGlyZWN0b3J5LCByZWZlcmVuY2VfZGlyZWN0b3J5KToKKyAg
ICAgICAgICAgICAgICBwYXNzZWQgPSBGYWxzZQorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZSh3
b3JrX2RpcmVjdG9yeSkKKworICAgICAgICByZXR1cm4gcGFzc2VkCisKKyAgICBkZWYgbWFpbihz
ZWxmKToKKyAgICAgICAgY3VycmVudF9zY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShvcy5jdXJkaXIp
CisgICAgICAgIG9zLmNoZGlyKG9zLnBhdGguam9pbihjdXJyZW50X3NjbS5jaGVja291dF9yb290
LCAnU291cmNlJykpCisKKyAgICAgICAgYWxsX3Rlc3RzX3Bhc3NlZCA9IFRydWUKKworICAgICAg
ICBpbnB1dF9kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oJ0phdmFTY3JpcHRDb3JlJywgJ1Njcmlw
dHMnLCAndGVzdHMnLCAnYnVpbHRpbnMnKQorICAgICAgICByZWZlcmVuY2VfZGlyZWN0b3J5ID0g
b3MucGF0aC5qb2luKCdKYXZhU2NyaXB0Q29yZScsICdTY3JpcHRzJywgJ3Rlc3RzJywgJ2J1aWx0
aW5zJywgJ2V4cGVjdGVkJykKKyAgICAgICAgaWYgbm90IHNlbGYucnVuX3Rlc3RzKGlucHV0X2Rp
cmVjdG9yeSwgcmVmZXJlbmNlX2RpcmVjdG9yeSk6CisgICAgICAgICAgICBhbGxfdGVzdHNfcGFz
c2VkID0gRmFsc2UKKworICAgICAgICBwcmludCAnJworICAgICAgICBpZiBhbGxfdGVzdHNfcGFz
c2VkOgorICAgICAgICAgICAgcHJpbnQgJ0FsbCB0ZXN0cyBQQVNTIScKKyAgICAgICAgICAgIHJl
dHVybiAwCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcmludCAnU29tZSB0ZXN0cyBGQUlM
ISAoVG8gdXBkYXRlIHRoZSByZWZlcmVuY2UgZmlsZXMsIGV4ZWN1dGUgInJ1bi1idWlsdGlucy1n
ZW5lcmF0b3ItdGVzdHMgLS1yZXNldC1yZXN1bHRzIiknCisgICAgICAgICAgICByZXR1cm4gLTEK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263109</attachid>
            <date>2015-10-14 14:36:44 -0700</date>
            <delta_ts>2015-10-14 16:32:23 -0700</delta_ts>
            <desc>Fix Mac</desc>
            <filename>bug-149929-20151014143607.patch</filename>
            <type>text/plain</type>
            <size>269910</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
ZWYxZDMwNTFmN2MxZDdiZTc4MDU4YjhiY2VjYTE4M2M3N2RiYjg2Li5jN2I2NTY5ZWRjYjVmZWJh
ZDUzMzQyYmE0Yzc5ZTNkYTg1Mzc3OGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODYgQEAKKzIwMTUtMTAtMTMgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmVzdHJ1Y3R1cmUgZ2VuZXJhdGUtanMtYmluZGluZ3Mgc2NyaXB0IHRvIGJlIG1v
ZHVsYXIgYW5kIHRlc3RhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDk5MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGlzIGEgbmV3IGNvZGUgZ2VuZXJhdG9yLCBiYXNlZCBvbiB0aGUgcmVw
bGF5IGlucHV0cyBjb2RlIGdlbmVyYXRvciBhbmQKKyAgICAgICAgdGhlIGluc3BlY3RvciBwcm90
b2NvbCBjb2RlIGdlbmVyYXRvciwgd2hpY2ggcHJvZHVjZXMgdmFyaW91cyBmaWxlcyBmb3IgSlMK
KyAgICAgICAgYnVpbHRpbnMuCisKKyAgICAgICAgUmVsYXRpdmUgdG8gdGhlIGdlbmVyYXRvciBp
dCByZXBsYWNlcywgdGhpcyBvbmUgY29uc29saWRhdGVzIHR3byBzY3JpcHRzIGluCisgICAgICAg
IEphdmFTY3JpcHRDb3JlIGFuZCBXZWJDb3JlIGludG8gYSBzaW5nbGUgc2NyaXB0IHdpdGggbXVs
dGlwbGUgZmlsZXMuIFBhcnNlZAorICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnVpbHRp
bnMgZmlsZSBpcyBzdG9yZWQgaW4gYmFja2VuZC1pbmRlcGVuZGVudCBtb2RlbAorICAgICAgICBv
YmplY3RzLiBFYWNoIG91dHB1dCBmaWxlIGhhcyBpdHMgb3duIGNvZGUgZ2VuZXJhdG9yIHRoYXQg
dXNlcyB0aGUgbW9kZWwgdG8KKyAgICAgICAgcHJvZHVjZSByZXN1bHRpbmcgY29kZS4gR2VuZXJh
dG9ycyBhcmUgYWRkaXRpb25hbGx5IHBhcmFtZXRlcml6ZWQgYnkgdGhlIHRhcmdldAorICAgICAg
ICBmcmFtZXdvcmsgKHRvIGNob29zZSBjb3JyZWN0IG1hY3JvcyBhbmQgaW5jbHVkZXMpIGFuZCBv
dXRwdXQgbW9kZSAob25lCisgICAgICAgIGhlYWRlci9pbXBsZW1lbnRhdGlvbiBmaWxlIHBlciBi
dWlsdGluIG9yIHBlciBmcmFtZXdvcmspLgorCisgICAgICAgIEl0IGluY2x1ZGVzIGEgZmV3IHNp
bXBsZSB0ZXN0cyBvZiB0aGUgZ2VuZXJhdG9yJ3MgZnVuY3Rpb25hbGl0eS4gVGhlc2UgcmVzdWx0
LQorICAgICAgICBiYXNlZCB0ZXN0cyB3aWxsIGJlY29tZSBpbmNyZWFzaW5nbHkgbW9yZSBpbXBv
cnRhbnQgYXMgd2Ugc3RhcnQgdG8gYWRkIHN1cHBvcnQKKyAgICAgICAgZm9yIGJ1aWx0aW5zIGFu
bm90YXRpb24gc3VjaCBhcyBAb3B0aW9uYWwsIEBpbnRlcm5hbCwgZXRjLiB0byB0aGUgY29kZSBn
ZW5lcmF0b3IuCisKKyAgICAgICAgU29tZSBvZiB0aGVzZSBjb21wbGV4aXRpZXMsIHN1Y2ggYXMg
aGF2aW5nIHR3byBvdXRwdXQgbW9kZXMsIHdpbGwgYmUgcmVtb3ZlZCBpbgorICAgICAgICBzdWJz
ZXF1ZW50IHBhdGNoZXMuIFRoaXMgcGF0Y2ggaXMgaW50ZW5kZWQgdG8gZXhhY3RseSByZXBsYWNl
IHRoZSBleGlzdGluZworICAgICAgICBmdW5jdGlvbmFsaXR5IHdpdGggYSB1bmlmaWVkIHNjcmlw
dCB0aGF0IG1ha2VzIGFkZGl0aW9uYWwgY2xlYW51cHMgc3RyYWlnaHRmb3J3YXJkLgorCisgICAg
ICAgIEFkZGl0aW9uYWwgY2xlYW51cCBhbmQgY29uc29saWRhdGlvbiBiZXR3ZWVuIGluc3BlY3Rv
ciBjb2RlIGdlbmVyYXRvciBzY3JpcHRzCisgICAgICAgIGFuZCB0aGlzIHNjcmlwdCB3aWxsIGJl
IHB1cnN1ZWQgaW4gZm9sbG93dXAgcGF0Y2hlcy4KKworICAgICAgICBOZXcgdGVzdHM6CisKKyAg
ICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21p
c2UtQ29tYmluZWQuanMKKyAgICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0
Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5qcworICAgICAgICBTY3JpcHRzL3Rlc3Rz
L2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qcwor
ICAgICAgICBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2Vw
YXJhdGUuanMKKyAgICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUd1YXJkZWRJ
bnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMKKyAgICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlu
cy9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMKKyAgICAgICAgU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMKKworCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisKKyAgICAgICAgICAgIERlZmluZSBKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTX0RJUiBleHBsaWNpdGx5IHNvIHRoZSBhZGRfY3VzdG9tX2NvbW1hbmQgYW5kCisg
ICAgICAgICAgICBzaGFyZWQgZmlsZSBsaXN0cyBhcmUgaWRlbnRpY2FsIGJldHdlZW4gSmF2YVNj
cmlwdENvcmUgYW5kIFdlYkNvcmUuCisKKyAgICAgICAgICAgIFRoZSBvdXRwdXQgZmlsZXMgYWRk
aXRpb25hbGx5IGRlcGVuZCBvbiBhbGwgYnVpbHRpbiBnZW5lcmF0b3Igc2NyaXB0IGZpbGVzCisg
ICAgICAgICAgICBhbmQgaW5wdXQgZmlsZXMgdGhhdCBhcmUgY29tYmluZWQgaW50byB0aGUgc2lu
Z2xlIGhlYWRlci9pbXBsZW1lbnRhdGlvbiBmaWxlLgorCisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKworICAgICAgICAgICAgRGVmaW5lIEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
IGV4cGxpY2l0bHkgc28gdGhlIHJ1bGUgZm9yIGNvZGUgZ2VuZXJhdGlvbiBhbmQKKyAgICAgICAg
ICAgIHNoYXJlZCBmaWxlIGxpc3RzIGFyZSBpZGVudGljYWwgYmV0d2VlbiBKYXZhU2NyaXB0Q29y
ZSBhbmQgV2ViQ29yZS4KKworICAgICAgICAgICAgVGhlIG91dHB1dCBmaWxlcyBhZGRpdGlvbmFs
bHkgZGVwZW5kIG9uIGFsbCBidWlsdGluIGdlbmVyYXRvciBzY3JpcHQgZmlsZXMKKyAgICAgICAg
ICAgIGFuZCBpbnB1dCBmaWxlcyB0aGF0IGFyZSBjb21iaW5lZCBpbnRvIHRoZSBzaW5nbGUgaGVh
ZGVyL2ltcGxlbWVudGF0aW9uIGZpbGUuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICAgICBNYXJrIHRoZSBuZXcgYnVpbHRp
bnMgZ2VuZXJhdG9yIGZpbGVzIGFzIHByaXZhdGUgaGVhZGVycyBzbyB3ZSBjYW4gdXNlIHRoZW0g
ZnJvbQorICAgICAgICAgICAgV2ViQ29yZS4KKworICAgICAgICAqIFNjcmlwdHMvVXBkYXRlQ29u
dGVudHMucHk6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVXBkYXRlQ29udGVu
dHMucHkuCisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9fX2luaXRfXy5weTogQWRkZWQuCisg
ICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGlucy5weTogQWRkZWQuCisgICAgICAgICog
U2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0b3IucHk6IEFkZGVkLiBUaGlzIGZpbGUg
Y29udGFpbnMgdGhlIGJhc2UgZ2VuZXJhdG9yLgorICAgICAgICAoV0tfbGNmaXJzdCk6CisgICAg
ICAgIChXS191Y2ZpcnN0KToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yKToKKyAgICAgICAg
KEJ1aWx0aW5zR2VuZXJhdG9yLl9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9y
Lm1vZGVsKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yLmdlbmVyYXRlX2xpY2Vuc2UpOgor
ICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3IuZ2VuZXJhdGVfaW5jbHVkZXNfZnJvbV9lbnRyaWVz
KToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAgICAg
IChCdWlsdGluc0dlbmVyYXRvci5vdXRwdXRfZmlsZW5hbWUpOgorICAgICAgICAoQnVpbHRpbnNH
ZW5lcmF0b3IubWFuZ2xlZE5hbWVGb3JGdW5jdGlvbik6CisgICAgICAgIChCdWlsdGluc0dlbmVy
YXRvci5tYW5nbGVkTmFtZUZvckZ1bmN0aW9uLnRvQ2FtZWwpOgorICAgICAgICAoQnVpbHRpbnNH
ZW5lcmF0b3IuZ2VuZXJhdGVfZW1iZWRkZWRfY29kZV9zdHJpbmdfc2VjdGlvbl9mb3JfZnVuY3Rp
b24pOgorICAgICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHk6IEFkZGVk
LiBUaGlzIGZpbGUgY29udGFpbnMgYnVpbHRpbnMgbW9kZWwgb2JqZWN0cy4KKyAgICAgICAgKFBh
cnNlRXhjZXB0aW9uKToKKyAgICAgICAgKEZyYW1ld29yayk6CisgICAgICAgIChGcmFtZXdvcmsu
X19pbml0X18pOgorICAgICAgICAoRnJhbWV3b3JrLnNldHRpbmcpOgorICAgICAgICAoRnJhbWV3
b3JrLmZyb21TdHJpbmcpOgorICAgICAgICAoRnJhbWV3b3Jrcyk6CisgICAgICAgIChCdWlsdGlu
T2JqZWN0KToKKyAgICAgICAgKEJ1aWx0aW5PYmplY3QuX19pbml0X18pOgorICAgICAgICAoQnVp
bHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKEJ1aWx0aW5GdW5jdGlvbi5fX2luaXRfXyk6CisgICAg
ICAgIChCdWlsdGluRnVuY3Rpb24uZnJvbVN0cmluZyk6CisgICAgICAgIChCdWlsdGluRnVuY3Rp
b24uX19zdHJfXyk6CisgICAgICAgIChCdWlsdGluc0NvbGxlY3Rpb24pOgorICAgICAgICAoQnVp
bHRpbnNDb2xsZWN0aW9uLl9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5w
YXJzZV9idWlsdGluc19maWxlKToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5jb3B5cmln
aHRzKToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5hbGxfZnVuY3Rpb25zKToKKyAgICAg
ICAgKEJ1aWx0aW5zQ29sbGVjdGlvbi5fcGFyc2VfY29weXJpZ2h0X2xpbmVzKToKKyAgICAgICAg
KEJ1aWx0aW5zQ29sbGVjdGlvbi5fcGFyc2VfZnVuY3Rpb25zKToKKyAgICAgICAgKiBTY3JpcHRz
L2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weTogQWRkZWQuCisgICAgICAgIChCdWlsdGlu
c0dlbmVyYXRvclRlbXBsYXRlcyk6CisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0
ZV9idWlsdGluc19jb21iaW5lZF9oZWFkZXIucHk6IEFkZGVkLgorICAgICAgICAoQnVpbHRpbnND
b21iaW5lZEhlYWRlckdlbmVyYXRvcik6CisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSGVhZGVy
R2VuZXJhdG9yLl9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJHZW5l
cmF0b3Iub3V0cHV0X2ZpbGVuYW1lKToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJH
ZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFk
ZXJHZW5lcmF0b3IuZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlvbnMpOgorICAgICAgICAoRnVu
Y3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKFZNKToKKyAgICAgICAgKENvbnN0cnVjdEFiaWxp
dHkpOgorICAgICAgICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3Jfb2JqZWN0KToKKyAgICAgICAgKGdl
bmVyYXRlX2V4dGVybnNfZm9yX29iamVjdCk6CisgICAgICAgIChnZW5lcmF0ZV9tYWNyb3NfZm9y
X29iamVjdCk6CisgICAgICAgIChnZW5lcmF0ZV9kZWZpbmVzX2Zvcl9vYmplY3QpOgorICAgICAg
ICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV90YWJsZV9tYWNybyk6CisgICAgICAgIChnZW5l
cmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX25hbWVfbWFjcm8pOgorICAgICAgICAqIFNjcmlwdHMvYnVp
bHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHk6IEFkZGVk
LgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yKToKKyAg
ICAgICAgKEJ1aWx0aW5zQ29tYmluZWRJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fX2luaXRfXyk6
CisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSW1wbGVtZW50YXRpb25HZW5lcmF0b3Iub3V0cHV0
X2ZpbGVuYW1lKToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRJbXBsZW1lbnRhdGlvbkdlbmVy
YXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEltcGxlbWVu
dGF0aW9uR2VuZXJhdG9yLmdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcyk6CisgICAgICAgICogU2Ny
aXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9oZWFkZXIucHk6IEFkZGVk
LgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvcik6CisgICAgICAgIChC
dWlsdGluc1NlcGFyYXRlSGVhZGVyR2VuZXJhdG9yLl9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0
aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0b3Iub3V0cHV0X2ZpbGVuYW1lKToKKyAgICAgICAgKEJ1
aWx0aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0b3IubWFjcm9fcHJlZml4KToKKyAgICAgICAgKEJ1
aWx0aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAgICAg
KEJ1aWx0aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0b3IuZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJh
dGlvbnMpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKGdlbmVyYXRl
X2hlYWRlcl9pbmNsdWRlcyk6CisgICAgICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9vYmplY3Qp
OgorICAgICAgICAoZ2VuZXJhdGVfZXh0ZXJuc19mb3Jfb2JqZWN0KToKKyAgICAgICAgKGdlbmVy
YXRlX21hY3Jvc19mb3Jfb2JqZWN0KToKKyAgICAgICAgKGdlbmVyYXRlX2RlZmluZXNfZm9yX29i
amVjdCk6CisgICAgICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX3RhYmxlX21hY3JvKToK
KyAgICAgICAgKGdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfbmFtZV9tYWNybyk6CisgICAgICAg
ICogU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9pbXBsZW1lbnRh
dGlvbi5weTogQWRkZWQuCisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlSW1wbGVtZW50YXRpb25H
ZW5lcmF0b3IpOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZXJh
dG9yLl9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlvbkdl
bmVyYXRvci5vdXRwdXRfZmlsZW5hbWUpOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUltcGxl
bWVudGF0aW9uR2VuZXJhdG9yLm1hY3JvX3ByZWZpeCk6CisgICAgICAgIChCdWlsdGluc1NlcGFy
YXRlSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAgICAgKEJ1
aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5nZW5lcmF0ZV9oZWFkZXJfaW5j
bHVkZXMpOgorICAgICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfc2Vw
YXJhdGVfd3JhcHBlci5weTogQWRkZWQuCisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlV3JhcHBl
ckdlbmVyYXRvcik6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlV3JhcHBlckdlbmVyYXRvci5f
X2luaXRfXyk6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlV3JhcHBlckdlbmVyYXRvci5vdXRw
dXRfZmlsZW5hbWUpOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZVdyYXBwZXJHZW5lcmF0b3Iu
bWFjcm9fcHJlZml4KToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9y
LmdlbmVyYXRlX291dHB1dCk6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlV3JhcHBlckdlbmVy
YXRvci5nZW5lcmF0ZV9oZWFkZXJfaW5jbHVkZXMpOgorICAgICAgICAqIFNjcmlwdHMvZ2VuZXJh
dGUtanMtYnVpbHRpbnMucHk6IEFkZGVkLgorCisgICAgICAgICAgICBQYXJzZSBjb21tYW5kIGxp
bmUgb3B0aW9ucywgZGVjaWRlIHdoaWNoIGdlbmVyYXRvcnMgYW5kIG91dHB1dCBtb2RlcyB0byB1
c2UuCisKKyAgICAgICAgKGdlbmVyYXRlX2JpbmRpbmdzX2Zvcl9idWlsdGluc19maWxlcyk6Cisg
ICAgICAgICogU2NyaXB0cy9sYXp5d3JpdGVyLnB5OiBDb3BpZWQgZnJvbSB0aGUgaW5zcGVjdG9y
IHByb3RvY29sIGdlbmVyYXRvci4KKyAgICAgICAgKExhenlGaWxlV3JpdGVyKToKKyAgICAgICAg
KExhenlGaWxlV3JpdGVyLl9faW5pdF9fKToKKyAgICAgICAgKExhenlGaWxlV3JpdGVyLndyaXRl
KToKKyAgICAgICAgKExhenlGaWxlV3JpdGVyLmNsb3NlKToKKyAgICAgICAgKiBTY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1Db21iaW5lZC5qczog
QWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1C
dWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5qczogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmluZWQu
anM6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFy
ZGVkQnVpbHRpbi1TZXBhcmF0ZS5qczogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9XZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanM6IEFkZGVk
LgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1Vbmd1YXJkZWRCdWls
dGluLVNlcGFyYXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5z
L1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qczogQWRkZWQuCisgICAgICAgICogU2Ny
aXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21p
c2UtQ29tYmluZWQuanMtcmVzdWx0OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1
aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVk
LmpzLXJlc3VsdDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBl
Y3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmluZWQuanMtcmVzdWx0
OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNv
cmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0OiBBZGRlZC4KKyAgICAgICAgKiBT
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVp
bHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQ6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMv
YnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJl
c3VsdDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9X
ZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0OiBBZGRlZC4KKyAgICAgICAg
KiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwOgorICAgICAgICAoSlNDOjpCdWlsdGlu
RXhlY3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyk6CisgICAgICAgICogYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgICogY3JlYXRlX2hhc2hfdGFibGU6CisKKyAgICAg
ICAgICAgIFVwZGF0ZSB0aGUgZ2VuZXJhdGVkIGJ1aWx0aW4gbWFjcm8gbmFtZXMuCisKKyAgICAg
ICAgKiBnZW5lcmF0ZS1qcy1idWlsdGluczogUmVtb3ZlZC4KKwogMjAxNS0xMC0xNCAgS2VpdGgg
TWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBFUzYgRml4IFR5cGVk
QXJyYXkgY29uc3RydWN0b3JzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU2OTAxMmYwZDgyZjU5NTY0MzQyYjY4
ODEyMDc3MzZhYTc2Yzk4NDcuLmMxYzMyNWY3NWYzMDQzMjE2ZTJjZWU5NmJiOTcyYTJiNzJiZDMy
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxNS0xMC0xMyAgQnJpYW4gQnVyZyAg
PGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBSZXN0cnVjdHVyZSBnZW5lcmF0ZS1qcy1iaW5k
aW5ncyBzY3JpcHQgdG8gYmUgbW9kdWxhciBhbmQgdGVzdGFibGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTkyOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKKyAgICAg
ICAgICAgIERlZmluZSBKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUiBleHBsaWNpdGx5IHNvIHRo
ZSBhZGRfY3VzdG9tX2NvbW1hbmQgYW5kCisgICAgICAgICAgICBzaGFyZWQgZmlsZSBsaXN0cyBh
cmUgaWRlbnRpY2FsIGJldHdlZW4gSmF2YVNjcmlwdENvcmUgYW5kIFdlYkNvcmUuCisKKyAgICAg
ICAgICAgIFRoZSBvdXRwdXQgZmlsZXMgYWRkaXRpb25hbGx5IGRlcGVuZCBvbiBhbGwgYnVpbHRp
biBnZW5lcmF0b3Igc2NyaXB0IGZpbGVzLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFr
ZToKKworICAgICAgICAgICAgVXNlIEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSIHNvIHRoYXQg
dGhlIHJ1bGUgZm9yIGNvZGUgZ2VuZXJhdGlvbiBhbmQKKyAgICAgICAgICAgIHNoYXJlZCBmaWxl
IGxpc3RzIGFyZSBpZGVudGljYWwgYmV0d2VlbiBKYXZhU2NyaXB0Q29yZSBhbmQgV2ViQ29yZS4K
KworICAgICAgICAgICAgVGhlIG91dHB1dCBmaWxlcyBhZGRpdGlvbmFsbHkgZGVwZW5kIG9uIGFs
bCBidWlsdGluIGdlbmVyYXRvciBzY3JpcHQgZmlsZXMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgICAgIERlZmluZSBKYXZhU2NyaXB0
Q29yZV9TQ1JJUFRTX0RJUiBiZWZvcmUgY2FsbGluZyBEZXJpdmVkU291cmNlcy5tYWtlLgorICAg
ICAgICAgICAgVGhpcyB3aWxsIGV2ZW50dWFsbHkgYmUgbWVyZ2VkIHdpdGggdGhlIG90aGVyIHNp
bWlsYXIgc2NyaXB0IHBhdGhzLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6ZmluaXNoQ3JlYXRp
b24pOgorCisgICAgICAgICAgICBVcGRhdGUgdGhlIGdlbmVyYXRlZCBidWlsdGluIG1hY3JvIG5h
bWVzLgorCisgICAgICAgICogZ2VuZXJhdGUtanMtYnVpbHRpbnM6IFJlbW92ZWQuCisKIDIwMTUt
MTAtMTQgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBQb3N0
cG9uZSBtdXRhdGlvbiBldmVudHMgYmVmb3JlIGludm9rZSBFZGl0b3I6OkNvbW1hbmQgY29tbWFu
ZChEb2N1bWVudCosIGNvbnN0IFN0cmluZyYsIGJvb2wpLgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IGZlNzljYTdiOWM1Njc5MDIxNDkwOGZmM2FlNjUyMGY4NjQ2NWQwYmIu
LjZjMGQ5M2I0NTEyMDYyOTY0OGMyZDE0NTkzNDUzOWYwNjkwZDZiMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTcwMyw2ICs3MDMsOCBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfTElCUkFSSUVTCiAgICAgJHtJQ1VfSTE4Tl9MSUJSQVJJRVN9CiApCiAKK3NldChKYXZhU2Ny
aXB0Q29yZV9TQ1JJUFRTX0RJUiAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L1NjcmlwdHMiKQorCiBp
ZiAoVVNFX1VESVM4NikKICAgICBzZXQoVURJU19HRU5fREVQCiAgICAgICAgIGRpc2Fzc2VtYmxl
ci91ZGlzODYvdWRfb3Bjb2RlLnB5CkBAIC0xMDc1LDYgKzEwNzcsMTkgQEAgYWRkX2N1c3RvbV9j
b21tYW5kKAogICAgIFZFUkJBVElNKQogCiAjIEpTQ0J1aWx0aW5zCisKK3NldChCVUlMVElOU19H
RU5FUkFUT1JfU0NSSVBUUworICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0
aW5zX2dlbmVyYXRvci5weQorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0
aW5zX21vZGVsLnB5CisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnNf
dGVtcGxhdGVzLnB5CisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGUt
anMtYnVpbHRpbnMucHkKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0
ZV9idWlsdGluc19jb21iaW5lZF9oZWFkZXIucHkKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQ
VFNfRElSKS9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weQorICAg
ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRl
X2hlYWRlci5weQorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlX2J1
aWx0aW5zX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5CisgICAgJChKYXZhU2NyaXB0Q29yZV9T
Q1JJUFRTX0RJUikvZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfd3JhcHBlci5weQorICAgICQo
SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2xhenl3cml0ZXIucHkKKwogc2V0KEphdmFTY3Jp
cHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRp
bnMvQXJyYXlDb25zdHJ1Y3Rvci5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlu
cy9BcnJheUl0ZXJhdG9yLnByb3RvdHlwZS5qcwpAQCAtMTA5NywxMCArMTExMiwxMSBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUwogKQogCiBhZGRfY3VzdG9tX2NvbW1hbmQo
Ci0gICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWls
dGlucy5jcHAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlu
cy5oCi0gICBNQUlOX0RFUEVOREVOQ1kgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2dlbmVy
YXRlLWpzLWJ1aWx0aW5zCi0gICBERVBFTkRTICR7SmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09V
UkNFU30KLSAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9DVVJSRU5UX1NP
VVJDRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zIC0taW5wdXQtZGlyZWN0b3J5ICR7Q01BS0Vf
Q1VSUkVOVF9TT1VSQ0VfRElSfS9idWlsdGlucyAtLW91dHB1dCAke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcAorICAgT1VUUFVUICR7REVSSVZFRF9T
T1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuY3BwCisgICAgICAgICAgJHtE
RVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5oCisgICBNQUlO
X0RFUEVOREVOQ1kgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vZ2VuZXJhdGUtanMtYnVp
bHRpbnMucHkKKyAgIERFUEVORFMgJHtKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTfSAk
e0JVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTfQorICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRB
QkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucy5w
eSAtLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtLWlucHV0LWRpcmVjdG9yeSAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vYnVpbHRpbnMgLS1vdXRwdXQtZGlyZWN0b3J5ICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0KICAgIFZFUkJBVElNKQogCiBsaXN0KEFQUEVORCBKYXZhU2Ny
aXB0Q29yZV9TT1VSQ0VTCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CmluZGV4IDEwMTVkZGM3Nzk4NzgwZWU5NzI2MjNmNGM4ZThkM2M3NWE5ZTRiNzEuLjZlYzRkODlj
YjUwOTZhYmRjMTM0MTg0ODg3NGU1MTdmNGRmMjdkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC03MSwxMiArNzEsMTIgQEAgYWxsIDogXAogICAgIHVk
aXM4Nl9pdGFiLmggXAogICAgIEJ5dGVjb2Rlcy5oIFwKICAgICBJbml0Qnl0ZWNvZGVzLmFzbSBc
Ci0gICAgSlNDQnVpbHRpbnMgXAorICAgIEpTQ0J1aWx0aW5zLmggXAogIwogCi0jIGJ1aWx0aW4g
ZnVuY3Rpb25zCiBQWVRIT04gPSBweXRob24KIFBFUkwgPSBwZXJsCitKYXZhU2NyaXB0Q29yZV9T
Q1JJUFRTX0RJUiA9ICQoSmF2YVNjcmlwdENvcmUpL1NjcmlwdHMKIAogaWZlcSAoJChPUyksV2lu
ZG93c19OVCkKICAgICBERUxFVEUgPSBjbWQgLy9DIGRlbApAQCAtODUsMTUgKzg1LDIzIEBAIGVs
c2UKIGVuZGlmCiAjIC0tLS0tLS0tCiAKLS5QSE9OWTogSlNDQnVpbHRpbnMKLUpTQ0J1aWx0aW5z
OiAkKEphdmFTY3JpcHRDb3JlKS9nZW5lcmF0ZS1qcy1idWlsdGlucyBKU0NCdWlsdGlucy5oIEpT
Q0J1aWx0aW5zLmNwcAotSlNDQnVpbHRpbnMuaDogJChKYXZhU2NyaXB0Q29yZSkvZ2VuZXJhdGUt
anMtYnVpbHRpbnMgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMgSlNDQnVpbHRpbnNTb3VyY2Vz
Ci0JJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmUpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zIC0taW5w
dXQtZGlyZWN0b3J5ICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zIC0tb3V0cHV0ICRACi0KLUpT
Q0J1aWx0aW5zLmNwcDogSlNDQnVpbHRpbnMuaAorIyBKYXZhU2NyaXB0IGJ1aWx0aW5zLgorCitC
VUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUyA9IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQ
VFNfRElSKS9idWlsdGlucy9fX2luaXRfXy5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJ
UFRTX0RJUikvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5IFwKKyAgICAkKEphdmFTY3Jp
cHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGlucy9idWlsdGluc19tb2RlbC5weSBcCisgICAgJChK
YXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5
IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGlucy9nZW5lcmF0ZV9i
dWlsdGluc19jb21iaW5lZF9oZWFkZXIucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBU
U19ESVIpL2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9u
LnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGlucy9nZW5lcmF0
ZV9idWlsdGluc19zZXBhcmF0ZV9oZWFkZXIucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NS
SVBUU19ESVIpL2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2ltcGxlbWVudGF0
aW9uLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGlucy9nZW5l
cmF0ZV9idWlsdGluc19zZXBhcmF0ZV93cmFwcGVyLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3Jl
X1NDUklQVFNfRElSKS9nZW5lcmF0ZS1qcy1idWlsdGlucy5weSBcCisgICAgJChKYXZhU2NyaXB0
Q29yZV9TQ1JJUFRTX0RJUikvbGF6eXdyaXRlci5weSBcCisjCiAKLS5QSE9OWTogSlNDQnVpbHRp
bnNTb3VyY2VzCi1KU0NCdWlsdGluc1NvdXJjZXM6IFwKK0phdmFTY3JpcHRDb3JlX0JVSUxUSU5T
X1NPVVJDRVMgPSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXJyYXlDb25zdHJ1
Y3Rvci5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXJyYXlJdGVyYXRvci5w
cm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0FycmF5LnByb3Rv
dHlwZS5qcyBcCkBAIC0xMTAsOCArMTE4LDIwIEBAIEpTQ0J1aWx0aW5zU291cmNlczogXAogICAg
ICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1JlZmxlY3RPYmplY3QuanMgXAogICAgICQoSmF2
YVNjcmlwdENvcmUpL2J1aWx0aW5zL1N0cmluZ0NvbnN0cnVjdG9yLmpzIFwKICAgICAkKEphdmFT
Y3JpcHRDb3JlKS9idWlsdGlucy9TdHJpbmdJdGVyYXRvci5wcm90b3R5cGUuanMgXAorICAgICQo
SmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1R5cGVkQXJyYXlDb25zdHJ1Y3Rvci5qcyBcCisgICAg
JChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvVHlwZWRBcnJheS5wcm90b3R5cGUuanMgXAogIwog
CisjIFRoZSBjb21iaW5lZCBvdXRwdXQgZmlsZSBkZXBlbmRzIG9uIHRoZSBjb250ZW50cyBvZiBi
dWlsdGlucyBhbmQgZ2VuZXJhdG9yIHNjcmlwdHMsIHNvCisjIGFkZGluZywgbW9kaWZ5aW5nLCBv
ciByZW1vdmluZyBidWlsdGlucyBvciBzY3JpcHRzIHdpbGwgdHJpZ2dlciByZWdlbmVyYXRpb24g
b2YgZmlsZXMuCisKKy5QSE9OWTogZm9yY2UKK0phdmFTY3JpcHRDb3JlX0JVSUxUSU5TX0RFUEVO
REVOQ0lFU19MSVNUIDogJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvVXBkYXRlQ29udGVu
dHMucHkgZm9yY2UKKwkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvVXBk
YXRlQ29udGVudHMucHkgJyQoSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUykgJChCVUlM
VElOU19HRU5FUkFUT1JfU0NSSVBUUyknICRACisKK0pTQ0J1aWx0aW5zLmg6ICQoQlVJTFRJTlNf
R0VORVJBVE9SX1NDUklQVFMpICQoSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUykgSmF2
YVNjcmlwdENvcmVfQlVJTFRJTlNfREVQRU5ERU5DSUVTX0xJU1QKKwkkKFBZVEhPTikgJChKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgLS1jb21iaW5l
ZCAtLW91dHB1dC1kaXJlY3RvcnkgLiAtLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAkKEphdmFT
Y3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMpCisKICMgbG9va3VwIHRhYmxlcyBmb3IgY2xhc3Nl
cwogCiAlLmx1dC5oOiBjcmVhdGVfaGFzaF90YWJsZSAlLmNwcApAQCAtMTk4LDggKzIxOCw4IEBA
IGFsbCA6IFwKICMgYWRkaW5nLCBtb2RpZnlpbmcsIG9yIHJlbW92aW5nIGRvbWFpbnMgd2lsbCB0
cmlnZ2VyIHJlZ2VuZXJhdGlvbiBvZiBpbnNwZWN0b3IgZmlsZXMuCiAKIC5QSE9OWTogZm9yY2UK
LUVuYWJsZWRJbnNwZWN0b3JEb21haW5zIDogJChKYXZhU2NyaXB0Q29yZSkvVXBkYXRlQ29udGVu
dHMucHkgZm9yY2UKLQkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZSkvVXBkYXRlQ29udGVudHMu
cHkgJyQoSU5TUEVDVE9SX0RPTUFJTlMpJyAkQAorRW5hYmxlZEluc3BlY3RvckRvbWFpbnMgOiAk
KEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9VcGRhdGVDb250ZW50cy5weSBmb3JjZQorCSQo
UFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9VcGRhdGVDb250ZW50cy5weSAn
JChJTlNQRUNUT1JfRE9NQUlOUyknICRACiAKIENvbWJpbmVkRG9tYWlucy5qc29uIDogaW5zcGVj
dG9yL3NjcmlwdHMvZ2VuZXJhdGUtY29tYmluZWQtaW5zcGVjdG9yLWpzb24ucHkgJChJTlNQRUNU
T1JfRE9NQUlOUykgRW5hYmxlZEluc3BlY3RvckRvbWFpbnMKIAkkKFBZVEhPTikgJChKYXZhU2Ny
aXB0Q29yZSkvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtY29tYmluZWQtaW5zcGVjdG9yLWpz
b24ucHkgJChJTlNQRUNUT1JfRE9NQUlOUykgPiAuL0NvbWJpbmVkRG9tYWlucy5qc29uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQ1MTQzNzFiZDc1MGRmYmMyNDBjM2U0ZTA4ZmY4
Nzc1ZGRmMWM3OGEuLjhkNzBkYTM0OTViZWY1Njc2MWRkN2FlYWU4Y2QyNzUxNzk5ZWI2ZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NTYsNyArOTU2LDYgQEAKIAkJMkFERkEy
NjMxOEVGMzU0MDAwNEY5RkNDIC8qIEdDTG9nZ2luZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQURGQTI2MjE4RUYzNTQwMDA0RjlGQ0MgLyogR0NM
b2dnaW5nLmNwcCAqLzsgfTsKIAkJMkFGNzM4MkMxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVy
ZUlEVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkFGNzM4MkExOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwICovOyB9
OwogCQkyQUY3MzgyRDE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFGNzM4MkIxOEJCQkY5
MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkyREZCOEFGRTFCQjMyM0JEMDA5M0QyMzcgLyogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnMgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNzFEQTgwRDE4ODBENzFGMDBEMUYyOTkgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzcxRDg0
MkQxN0M5OEI2RTAwRUNGOTk0IC8qIGxpYnouZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFEODQyQzE3Qzk4QjZFMDBFQ0Y5OTQgLyogbGli
ei5keWxpYiAqLzsgfTsKIAkJNDEzNTlDRjMwRkREODlBRDAwMjA2MTgwIC8qIERhdGVDb252ZXJz
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMjEy
MDIyOTBBRDQzMTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uaCAqLzsgfTsKIAkJNDFERUEx
MzIxQjlGMzE2MzAwNkQ2NUREIC8qIEJ1aWx0aW5VdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFERUExMzExQjlGMzE1NDAwNkQ2NUREIC8qIEJ1
aWx0aW5VdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0xMjEzLDYgKzEyMTIsMTggQEAKIAkJOTY5QTA3OUIwRUQxRDNBRTAwRjFGNjgxIC8q
IE9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTY5QTA3OTUwRUQxRDNBRTAwRjFGNjgxIC8qIE9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3ODgwMTQwMTQ3MUFEOTIwMDQxQjAxNiAv
KiBKU0RhdGVNYXRoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk3ODhGQzIyMTQ3MUFEMEMwMDY4Q0UyRCAvKiBKU0RhdGVNYXRoLmNwcCAqLzsgfTsK
IAkJOTc4ODAxNDExNDcxQUQ5MjAwNDFCMDE2IC8qIEpTRGF0ZU1hdGguaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3ODhGQzIzMTQ3MUFEMEMwMDY4Q0Uy
RCAvKiBKU0RhdGVNYXRoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJOTkxRDVFRDQxQkNDMzVBQTAwRTRDMjVEIC8qIGdlbmVyYXRlLWpzLWJ1aWx0
aW5zLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkw
NDRCMzExQkNDMjNEQzAwN0MyNTBEIC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5ICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5MUQ1RUQ1MUJDQzM1
QjEwMEU0QzI1RCAvKiBidWlsdGluc19nZW5lcmF0b3IucHkgaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTA0NEIzQjFCQ0MyNDkxMDA3QzI1MEQgLyogYnVp
bHRpbnNfZ2VuZXJhdG9yLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTk5MUQ1RUQ2MUJDQzM1QjEwMEU0QzI1RCAvKiBidWlsdGluc19tb2RlbC5w
eSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MDQ0QjND
MUJDQzI0OTEwMDdDMjUwRCAvKiBidWlsdGluc19tb2RlbC5weSAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OTFENUVENzFCQ0MzNUIxMDBFNEMyNUQg
LyogYnVpbHRpbnNfdGVtcGxhdGVzLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTkwNDRCM0QxQkNDMjQ5MTAwN0MyNTBEIC8qIGJ1aWx0aW5zX3RlbXBs
YXRlcy5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk5OTFENUVEODFCQ0MzNUIxMDBFNEMyNUQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRf
aGVhZGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTkwNDRCM0UxQkNDMjQ5MTAwN0MyNTBEIC8qIGdlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2hl
YWRlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk5OTFENUVEOTFCQ0MzNUIxMDBFNEMyNUQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRf
aW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5OTA0NEIzRjFCQ0MyNDkxMDA3QzI1MEQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfY29t
YmluZWRfaW1wbGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJOTkxRDVFREExQkNDMzVCMTAwRTRDMjVEIC8qIGdlbmVyYXRlX2J1
aWx0aW5zX3NlcGFyYXRlX2hlYWRlci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk5MDQ0QjQxMUJDQzJCMDUwMDdDMjUwRCAvKiBnZW5lcmF0ZV9idWls
dGluc19zZXBhcmF0ZV9oZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJOTkxRDVFREIxQkNDMzVCMTAwRTRDMjVEIC8qIGdlbmVyYXRlX2J1
aWx0aW5zX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkwNDRCNDIxQkNDMkIwNTAwN0MyNTBEIC8qIGdlbmVy
YXRlX2J1aWx0aW5zX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5ICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5MUQ1RURDMUJDQzM1QjEwMEU0QzI1
RCAvKiBnZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV93cmFwcGVyLnB5IGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkwNDRCNDMxQkNDMkIwNTAwN0MyNTBE
IC8qIGdlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX3dyYXBwZXIucHkgKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTkxRDVFREQxQkNDMzVCMzAwRTRD
MjVEIC8qIGxhenl3cml0ZXIucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5OTA0NEI0MDFCQ0MyNDkxMDA3QzI1MEQgLyogbGF6eXdyaXRlci5weSAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OTFENUVERjFC
Q0M2MzBDMDBFNEMyNUQgLyogVXBkYXRlQ29udGVudHMucHkgaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTFENUVERTFCQ0M2MkVBMDBFNEMyNUQgLyogVXBk
YXRlQ29udGVudHMucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJOTkxRDVFRTExQkNDNjQ2OTAwRTRDMjVEIC8qIGJ1aWx0aW5zLnB5IGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkxRDVFRTAxQkNDNjQxNTAw
RTRDMjVEIC8qIGJ1aWx0aW5zLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTk5MjhGRjNCMThBQzRBRUMwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTI4
RkYzOTE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuY3BwICovOyB9OwogCQk5OTI4
RkYzQzE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MjhGRjNBMThBQzRBRUMwMEI4Q0YxMiAv
KiBKU1JlcGxheUlucHV0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTk5NjIzMUU5MThEMTgwNDIwMEMwM0ZEQSAvKiBJbnNwZWN0b3JCYWNrZW5k
Q29tbWFuZHMuanMgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTMyNDM5NjE4NTZBNDc1MDAyRUQ2OTIgLyogSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpz
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zMTE2
LDYgKzMxMjcsMTkgQEAKIAkJOTY5QTA5MjIwRUQxRTA5QzAwRjFGNjgxIC8qIENvbXBsZXRpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29tcGxldGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3ODhGQzIyMTQ3MUFEMEMwMDY4Q0UyRCAv
KiBKU0RhdGVNYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RGF0ZU1hdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Nzg4RkMyMzE0NzFB
RDBDMDA2OENFMkQgLyogSlNEYXRlTWF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0RhdGVNYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MDQ0QjMx
MUJDQzIzREMwMDdDMjUwRCAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucy5weSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1qcy1idWlsdGlucy5weSI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MDQ0QjNBMUJDQzI0OTEwMDdDMjUwRCAvKiBfX2lu
aXRfXy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IF9faW5pdF9fLnB5
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTA0NEIzQjFCQ0MyNDkxMDA3QzI1MEQg
LyogYnVpbHRpbnNfZ2VuZXJhdG9yLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBw
YXRoID0gYnVpbHRpbnNfZ2VuZXJhdG9yLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5OTA0NEIzQzFCQ0MyNDkxMDA3QzI1MEQgLyogYnVpbHRpbnNfbW9kZWwucHkgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBidWlsdGluc19tb2RlbC5weTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTkwNDRCM0QxQkNDMjQ5MTAwN0MyNTBEIC8qIGJ1aWx0aW5z
X3RlbXBsYXRlcy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGJ1aWx0
aW5zX3RlbXBsYXRlcy5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTkwNDRCM0Ux
QkNDMjQ5MTAwN0MyNTBEIC8qIGdlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2hlYWRlci5weSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGdlbmVyYXRlX2J1aWx0aW5zX2Nv
bWJpbmVkX2hlYWRlci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTkwNDRCM0Yx
QkNDMjQ5MTAwN0MyNTBEIC8qIGdlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2ltcGxlbWVudGF0
aW9uLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gZ2VuZXJhdGVfYnVp
bHRpbnNfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk5MDQ0QjQwMUJDQzI0OTEwMDdDMjUwRCAvKiBsYXp5d3JpdGVyLnB5ICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gbGF6eXdyaXRlci5weTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTkwNDRCNDExQkNDMkIwNTAwN0MyNTBEIC8qIGdlbmVyYXRlX2J1
aWx0aW5zX3NlcGFyYXRlX2hlYWRlci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsg
cGF0aCA9IGdlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2hlYWRlci5weTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTkwNDRCNDIxQkNDMkIwNTAwN0MyNTBEIC8qIGdlbmVyYXRlX2J1
aWx0aW5zX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQu
cHl0aG9uOyBwYXRoID0gZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24u
cHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MDQ0QjQzMUJDQzJCMDUwMDdDMjUw
RCAvKiBnZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV93cmFwcGVyLnB5ICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfd3JhcHBl
ci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTkxRDVFREUxQkNDNjJFQTAwRTRD
MjVEIC8qIFVwZGF0ZUNvbnRlbnRzLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBw
YXRoID0gVXBkYXRlQ29udGVudHMucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5
MUQ1RUUwMUJDQzY0MTUwMEU0QzI1RCAvKiBidWlsdGlucy5weSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2Ny
aXB0LnB5dGhvbjsgcGF0aCA9IGJ1aWx0aW5zLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5OTI4RkYzOTE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZXBsYXlJbnB1dHMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTI4RkYzQTE4QUM0QUVDMDBCOENGMTIgLyogSlNS
ZXBsYXlJbnB1dHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSZXBsYXlJ
bnB1dHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkyOEZGM0QxOEFDNEIxQzAw
QjhDRjEyIC8qIEpTSW5wdXRzLmpzb24gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmpzb247IHBhdGggPSBKU0lu
cHV0cy5qc29uOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzMxMSw3ICszMzM1LDYg
QEAKIAkJQTcxMjM2RTQxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRPcGNvZGVzMzJfNjQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE4RjYxQTExNzU0QTIxMDAyNDY1QTcgLyog
UmVnRXhwSml0VGFibGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4
cEppdFRhYmxlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE4RjgyMTExNzhF
QjRCMDAyNDY1QTcgLyogY3JlYXRlX3JlZ2V4X3RhYmxlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBmaWxlRW5jb2Rp
bmcgPSA0OyBwYXRoID0gY3JlYXRlX3JlZ2V4X3RhYmxlczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQTcxREE4MEQxODgwRDcxRjAwRDFGMjk5IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5z
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gImdlbmVyYXRlLWpzLWJ1aWx0
aW5zIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcyMDI4QjQxNzk3NjAxRTAwOTgw
MjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0NUZXN0UnVubmVyVXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNzIwMjhCNTE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ1Rlc3RSdW5uZXJVdGlscy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzIwMjhCOTE3OTc2MDNEMDA5ODAyOEMgLyog
SlNGdW5jdGlvbklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNG
dW5jdGlvbklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM4MzIsNyAr
Mzg1NSw2IEBACiAJCQkJODYwNEY0RjIxNDNBNkM0NDAwQjI5NUY1IC8qIENoYW5nZUxvZyAqLywK
IAkJCQlGNjkyQTg1NDAyNTU1OTdEMDFGRjYwRjcgLyogY3JlYXRlX2hhc2hfdGFibGUgKi8sCiAJ
CQkJQTcxOEY4MjExMTc4RUI0QjAwMjQ2NUE3IC8qIGNyZWF0ZV9yZWdleF90YWJsZXMgKi8sCi0J
CQkJQTcxREE4MEQxODgwRDcxRjAwRDFGMjk5IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zICovLAog
CQkJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovLAogCQkJCUY2OEVCQjhD
MDI1NUQ0QzYwMUZGNjBGNyAvKiBjb25maWcuaCAqLywKIAkJCQlGNUMyOTBFNjAyODRGOThFMDE4
NjM1Q0EgLyogSmF2YVNjcmlwdENvcmVQcmVmaXguaCAqLywKQEAgLTM4NDQsMTIgKzM4NjYsOSBA
QAogCQkJCUE3RDgwMTlGMTg4MEQ2NkUwMDI2QzM5QiAvKiBidWlsdGlucyAqLywKIAkJCQk5NjlB
MDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8sCiAJCQkJN0UzOUQ4MUQwRUMzOEVG
QTAwM0FGMTFBIC8qIGJ5dGVjb21waWxlciAqLywKLQkJCQkxQzkwNTEzRTBCQTlFODgzMDA4MUU5
RDAgLyogQ29uZmlndXJhdGlvbnMgKi8sCiAJCQkJMTQ4MERCOUEwRERDMjIzMTAwM0NGREYyIC8q
IGRlYnVnZ2VyICovLAotCQkJCTY1MEZERjhEMDlEMEZDQTcwMDc2OUU1NCAvKiBEZXJpdmVkIFNv
dXJjZXMgKi8sCiAJCQkJODZFQzlEQjMxMzI4REY0NDAwMkIyQUQ3IC8qIGRmZyAqLywKIAkJCQkw
RkY0MjcyRTE1OEVCQ0NFMDA0Q0I5RkYgLyogZGlzYXNzZW1ibGVyICovLAotCQkJCTA4NjdENjlB
RkU4NDAyOEZDMDJBQUMwNyAvKiBGcmFtZXdvcmtzICovLAogCQkJCTBGRUEwOUZDMTcwNTEzN0Yw
MEJCNzIyQyAvKiBmdGwgKi8sCiAJCQkJMTQyRTMxMkExMzRGRjBBNjAwQUZBREI1IC8qIGhlYXAg
Ki8sCiAJCQkJQTVCQTE1REYxODIzNDA5MjAwQTgyRTY5IC8qIGluc3BlY3RvciAqLywKQEAgLTM4
NTgsMTUgKzM4NzcsMTkgQEAKIAkJCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQg
Ki8sCiAJCQkJMEZDRUZBQUQxODA1Q0E0NDAwNDcyQ0U0IC8qIGxsdm0gKi8sCiAJCQkJN0UzOUQ4
MzcwRUMzQTM4ODAwM0FGMTFBIC8qIHBhcnNlciAqLywKLQkJCQkwMzQ3NjhERkZGMzhBNTA0MTFE
QjlDOEIgLyogUHJvZHVjdHMgKi8sCiAJCQkJOTVBQjgzMUEwREE0MkM2OTAwQkM4M0YzIC8qIHBy
b2ZpbGVyICovLAogCQkJCTk5RTQ1QTBDMThBMDFFOTMwMDI2RDg4RiAvKiByZXBsYXkgKi8sCi0J
CQkJOTMyRkMzQzIwODI0QkI3MDAwNUIzQzc1IC8qIFJlc291cmNlcyAqLywKIAkJCQk3RUY2RTBC
QjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLywKIAkJCQkxNDEyMTEwMDBBNDg3NzI2MDA0
ODAyNTUgLyogdGVzdHMgKi8sCiAJCQkJODYwM0NFRjAxNEM3NTNFRjAwQUU1OUUzIC8qIHRvb2xz
ICovLAogCQkJCTdCOThEMTMzMUI2MENEMUUwMDIzQjFBNCAvKiB3YXNtICovLAogCQkJCTg2RUFD
NDhDMEY5M0U4QjkwMDhFQzk0OCAvKiB5YXJyICovLAorCQkJCTY1MEZERjhEMDlEMEZDQTcwMDc2
OUU1NCAvKiBEZXJpdmVkIFNvdXJjZXMgKi8sCisJCQkJOTkwNDRCMzAxQkNDMjNCMjAwN0MyNTBE
IC8qIFNjcmlwdHMgKi8sCisJCQkJOTMyRkMzQzIwODI0QkI3MDAwNUIzQzc1IC8qIFJlc291cmNl
cyAqLywKKwkJCQkwODY3RDY5QUZFODQwMjhGQzAyQUFDMDcgLyogRnJhbWV3b3JrcyAqLywKKwkJ
CQkwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyogUHJvZHVjdHMgKi8sCisJCQkJMUM5MDUxM0Uw
QkE5RTg4MzAwODFFOUQwIC8qIENvbmZpZ3VyYXRpb25zICovLAogCQkJKTsKIAkJCW5hbWUgPSBK
YXZhU2NyaXB0Q29yZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC01NzM0LDYgKzU3
NTcsMzQgQEAKIAkJCXBhdGggPSBieXRlY29kZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CiAJCX07CisJCTk5MDQ0QjMwMUJDQzIzQjIwMDdDMjUwRCAvKiBTY3JpcHRzICovID0geworCQkJ
aXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk5OTA0NEIzOTFCQ0MyM0ZGMDA3
QzI1MEQgLyogYnVpbHRpbnMgKi8sCisJCQkJOTkwNDRCMzExQkNDMjNEQzAwN0MyNTBEIC8qIGdl
bmVyYXRlLWpzLWJ1aWx0aW5zLnB5ICovLAorCQkJCTk5MDQ0QjQwMUJDQzI0OTEwMDdDMjUwRCAv
KiBsYXp5d3JpdGVyLnB5ICovLAorCQkJCTk5MUQ1RURFMUJDQzYyRUEwMEU0QzI1RCAvKiBVcGRh
dGVDb250ZW50cy5weSAqLywKKwkJCSk7CisJCQlwYXRoID0gU2NyaXB0czsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTk5MDQ0QjM5MUJDQzIzRkYwMDdDMjUwRCAvKiBidWls
dGlucyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJOTkw
NDRCM0ExQkNDMjQ5MTAwN0MyNTBEIC8qIF9faW5pdF9fLnB5ICovLAorCQkJCTk5MUQ1RUUwMUJD
QzY0MTUwMEU0QzI1RCAvKiBidWlsdGlucy5weSAqLywKKwkJCQk5OTA0NEIzQjFCQ0MyNDkxMDA3
QzI1MEQgLyogYnVpbHRpbnNfZ2VuZXJhdG9yLnB5ICovLAorCQkJCTk5MDQ0QjNDMUJDQzI0OTEw
MDdDMjUwRCAvKiBidWlsdGluc19tb2RlbC5weSAqLywKKwkJCQk5OTA0NEIzRDFCQ0MyNDkxMDA3
QzI1MEQgLyogYnVpbHRpbnNfdGVtcGxhdGVzLnB5ICovLAorCQkJCTk5MDQ0QjNFMUJDQzI0OTEw
MDdDMjUwRCAvKiBnZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9oZWFkZXIucHkgKi8sCisJCQkJ
OTkwNDRCM0YxQkNDMjQ5MTAwN0MyNTBEIC8qIGdlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2lt
cGxlbWVudGF0aW9uLnB5ICovLAorCQkJCTk5MDQ0QjQxMUJDQzJCMDUwMDdDMjUwRCAvKiBnZW5l
cmF0ZV9idWlsdGluc19zZXBhcmF0ZV9oZWFkZXIucHkgKi8sCisJCQkJOTkwNDRCNDIxQkNDMkIw
NTAwN0MyNTBEIC8qIGdlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5
ICovLAorCQkJCTk5MDQ0QjQzMUJDQzJCMDUwMDdDMjUwRCAvKiBnZW5lcmF0ZV9idWlsdGluc19z
ZXBhcmF0ZV93cmFwcGVyLnB5ICovLAorCQkJKTsKKwkJCXBhdGggPSBidWlsdGluczsKKwkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTk5RTQ1QTBDMThBMDFFOTMwMDI2RDg4RiAv
KiByZXBsYXkgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAt
NjAzMiw2ICs2MDgzLDEwIEBACiAJCQkJRkVBMDg2MjAxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFr
cG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDgwMUE1MTg4MEQ2NkUwMDI2QzM5QiAvKiBC
dWlsdGluRXhlY3V0YWJsZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NUVFOUIyMThBQUI3RTIw
MEFBRDA0MyAvKiBCdWlsdGluTmFtZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5MUQ1RUUxMUJD
QzY0NjkwMEU0QzI1RCAvKiBidWlsdGlucy5weSBpbiBIZWFkZXJzICovLAorCQkJCTk5MUQ1RUQ1
MUJDQzM1QjEwMEU0QzI1RCAvKiBidWlsdGluc19nZW5lcmF0b3IucHkgaW4gSGVhZGVycyAqLywK
KwkJCQk5OTFENUVENjFCQ0MzNUIxMDBFNEMyNUQgLyogYnVpbHRpbnNfbW9kZWwucHkgaW4gSGVh
ZGVycyAqLywKKwkJCQk5OTFENUVENzFCQ0MzNUIxMDBFNEMyNUQgLyogYnVpbHRpbnNfdGVtcGxh
dGVzLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJNDFERUExMzIxQjlGMzE2MzAwNkQ2NUREIC8qIEJ1
aWx0aW5VdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUU3Mjk0MEIxOTBGMDUxNDAwMUE5MUI1
IC8qIEJ1bmRsZVBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk3MTVFRDhFNDYwMEYx
NjdCMiAvKiBCdXR0ZXJmbHkuaCBpbiBIZWFkZXJzICovLApAQCAtNjA1OSw2ICs2MTE0LDcgQEAK
IAkJCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNv
ZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGM0I3RTJCMTlBMTFCODAwMEQ5QkM1NiAv
KiBDYWxsVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NDIxN0VBOUY1OTAwQUJC
MjE3IC8qIENDYWxsSGVscGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYxQzNEREExQkJDRTA5
RTAwRTUyM0U0IC8qIENlbGxTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2QUFBRTUwRTFG
NDI2NTAwQUQ4N0Q4IC8qIENsYXNzSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMjYx
QUE5MDk1NjAwRDMzQjMzIC8qIENsb25lZEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTY5QTA3OTcwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCkBA
IC02MTkwLDEwICs2MjQ2LDggQEAKIAkJCQlBNzhBOTc3NTE3OTczOEI4MDA5REY3NDQgLyogREZH
RmFpbGVkRmluYWxpemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0JGRjNDMDE3OTg2ODk0MDAw
MkY0NjIgLyogREZHRmlsdHJhdGlvblJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4QTk3
NzcxNzk3MzhCODAwOURGNzQ0IC8qIERGR0ZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
N0I4MzI5QkYxQkIyMUZFMzAwNjQ5QTZFIC8qIFdBU01GdW5jdGlvbkxMVk1JUkdlbmVyYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQkRDMTYxNTFDNUQ0RjAwQ0Q4OTEwIC8qIERGR0ZpeHVw
UGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUQzMzk3MTdGRkM0RTYwMDczQzJCQyAvKiBE
RkdGbHVzaGVkQXQuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGMzJCRDExMUJCMzRGMTkwMDkzQTU3
RiAvKiBIZWFwSGVscGVyUG9vbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODlDRjgxN0EwQjhD
QzAwNzczQUQ4IC8qIERGR0ZsdXNoRm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJERDgx
NTFBQjNEOEJFMDBCQkI4RTggLyogREZHRm9yQWxsS2lsbHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNjlDQzg5MTkzQUM2MEEwMDQ1NzU5RSAvKiBERkdGcm96ZW5WYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC02MjYyLDcgKzYzMTYsNiBAQAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAv
KiBERkdQdXJlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGM0ExQkZBMUE5RUNCN0QwMDBE
RTAxQSAvKiBERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZF
QzlERDExMzI4REY4MjAwMkIyQUQ3IC8qIERGR1JlZ2lzdGVyQmFuay5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJREVBN0UyNDUxQkJDNjc3RjAwRDc4NDQwIC8qIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkZDQ0ZDMThBNjAwNzAwMDFBMjdGOCAvKiBERkdT
YWZlcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3N0E0MjQzMTdBMEJCRkQwMEE4REI4MSAv
KiBERkdTYWZlVG9FeGVjdXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzQxMDE3RjE3OURBRjgw
MDAyRUI4QkEgLyogREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBI
ZWFkZXJzICovLApAQCAtNjQwNiw3ICs2NDU5LDEyIEBACiAJCQkJQTU0RThFQjExOEJGRkJCRTAw
NTU2RDI4IC8qIEdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTMyNDM5NDE4NTY5NzA5MDAyRUQ2OTIgLyogZ2VuZXJhdGUtY29tYmluZWQtaW5zcGVjdG9yLWpz
b24ucHkgaW4gSGVhZGVycyAqLywKIAkJCQlDNDcwM0NDMDE5Mjg0NDk2MDAxM0ZCRUEgLyogZ2Vu
ZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5IGluIEhlYWRlcnMgKi8sCi0JCQkJ
MkRGQjhBRkUxQkIzMjNCRDAwOTNEMjM3IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zIGluIEhlYWRl
cnMgKi8sCisJCQkJOTkxRDVFRDQxQkNDMzVBQTAwRTRDMjVEIC8qIGdlbmVyYXRlLWpzLWJ1aWx0
aW5zLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJOTkxRDVFRDgxQkNDMzVCMTAwRTRDMjVEIC8qIGdl
bmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2hlYWRlci5weSBpbiBIZWFkZXJzICovLAorCQkJCTk5
MUQ1RUQ5MUJDQzM1QjEwMEU0QzI1RCAvKiBnZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBs
ZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovLAorCQkJCTk5MUQ1RURBMUJDQzM1QjEwMEU0QzI1
RCAvKiBnZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9oZWFkZXIucHkgaW4gSGVhZGVycyAqLywK
KwkJCQk5OTFENUVEQjFCQ0MzNUIxMDBFNEMyNUQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJh
dGVfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKKwkJCQk5OTFENUVEQzFCQ0MzNUIx
MDBFNEMyNUQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfd3JhcHBlci5weSBpbiBIZWFk
ZXJzICovLAogCQkJCUE1RUE3MEVDMTlGNUIzRUEwMDk4RjVFQyAvKiBnZW5lcmF0ZV9jcHBfYWx0
ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgaW4gSGVhZGVycyAqLywKIAkJCQlB
NUVGOUIxNDFBMUQ0M0Y2MDA3MDJFOTAgLyogZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hl
cl9oZWFkZXIucHkgaW4gSGVhZGVycyAqLywKIAkJCQlBNUVGOUIxNTFBMUQ0M0ZBMDA3MDJFOTAg
LyogZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBpbiBI
ZWFkZXJzICovLApAQCAtNjQ0Myw2ICs2NTAxLDcgQEAKIAkJCQkxNDJFMzEzODEzNEZGMEE2MDBB
RkFEQjUgLyogSGFuZGxlU3RhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzgyOTdCMTM3OUU4
QTgwMEE3QzJBMyAvKiBIYW5kbGVUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRCQTdBOTgx
M0FBREZGODAwNUI3QzJDIC8qIEhlYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMzJCRDExMUJC
MzRGMTkwMDkzQTU3RiAvKiBIZWFwSGVscGVyUG9vbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJE
QTc3ODMxOEUyNTk5OTAwNjZGQ0I2IC8qIEhlYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyQUQ4OTMyQjE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyQTZGNDYyNjE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCkBAIC02NTg3LDcgKzY2NDYsNiBAQAogCQkJCTg2RTNDNjE0MTY3QkFC
RDcwMDZENzYwQSAvKiBKU0V4cG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCNEFDQUYxNDg0
QzlDRTAwQjM4QTM2IC8qIEpTRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJC
NjZFRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAot
CQkJCTUzOTE3RTdCMUI3OTA2RkEwMDBFQkQzMyAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1By
b3RvdHlwZUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjAxN0I2QjVBQjAw
QTdBRTNGIC8qIEpTRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxRjBF
MTZGNUNEMDBCMzQ0NjAgLyogSlNGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyMDI4
QkExNzk3NjAzRDAwOTgwMjhDIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
QEAgLTY1OTYsNiArNjY1NCw3IEBACiAJCQkJMEYyQjY2RjMxN0I2QjVBQjAwQTdBRTNGIC8qIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJCNjZGNDE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGNTE3QjZCNUFCMDBBN0FFM0YgLyog
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTUz
OTE3RTdCMUI3OTA2RkEwMDBFQkQzMyAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlw
ZUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjYxN0I2QjVBQjAwQTdBRTNG
IC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNzk3RTA3QUExQjhGQ0ZCOTAwODQwMEJBIC8qIEpTR2xvYmFsTGV4aWNhbEVudmly
b25tZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyMTBFMTZGNUNEMDBCMzQ0NjAgLyog
SlNHbG9iYWxPYmplY3QuaCBpbiBIZWFkZXJzICovLApAQCAtNjY3MCw2ICs2NzI5LDcgQEAKIAkJ
CQkwRjJCNjZGQjE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGRDE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFy
cmF5UHJvdG90eXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RkYxN0I2QjVBQjAwQTdB
RTNGIC8qIEpTVHlwZWRBcnJheXMuaCBpbiBIZWFkZXJzICovLAorCQkJCURFQTdFMjQ1MUJCQzY3
N0YwMEQ3ODQ0MCAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk2NTA3RDI5RTBFODcxRTVFMDBEN0Q4OTYgLyogSlNUeXBlSW5mby5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYyQjY3MDIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVWludDE2QXJyYXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMkI2NzAzMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1VpbnQzMkFycmF5
LmggaW4gSGVhZGVycyAqLywKQEAgLTY2OTMsNiArNjc1Myw3IEBACiAJCQkJOTY5QTA3MkEwRUQx
Q0U2OTAwRjFGNjgxIC8qIExhYmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjAwOTdBNjBFQkFC
QjU4MDA3QTcyOTcgLyogTGFiZWxTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCNTQ2Nzcx
NEY1OUI1QzAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAq
LywKKwkJCQk5OTFENUVERDFCQ0MzNUIzMDBFNEMyNUQgLyogbGF6eXdyaXRlci5weSBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMThDNDUyMEUxNkY1Q0QwMEIzNDQ2MCAvKiBMZWdhY3lQcm9maWxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MzEwRTE2RjVDRDAwQjM0NDYwIC8qIExleGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzUyRTBFMTZGQ0UxMDBCMzQ0NjAgLyogTGV4ZXIubHV0
LmggaW4gSGVhZGVycyAqLywKQEAgLTY5NDgsOCArNzAwOSw4IEBACiAJCQkJQTdCNjAxODIxNjM5
RkQyQTAwMzcyQkEzIC8qIFVubGlua2VkQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NDE0MkU1MTFCNzk2RUNFMDBGNEJGNEIgLyogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMkU4OTJDMTZEMDI4QUQwMDlFNEZEMiAvKiBVbnVzZWRQb2lu
dGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTFENUVERjFCQ0M2MzBDMDBFNEMyNUQgLyogVXBk
YXRlQ29udGVudHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2M0IzODEzRkM2RkU5MDAwMkQ5
QjIgLyogVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjFDM0REQTFCQkNFMDlF
MDBFNTIzRTQgLyogQ2VsbFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQyNkE0ODE0NjBD
QkIzMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlFRTBD
MDAxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNkM3MzUxMUFDOUY5OUYwMEJFMTY4MiAvKiBWYXJpYWJsZVdyaXRlRmlyZURldGFp
bC5oIGluIEhlYWRlcnMgKi8sCkBAIC02OTYxLDYgKzcwMjIsNyBAQAogCQkJCTdCMDI0NzU1MUI4
NjgyREQwMDU0MjQ0MCAvKiBXQVNNQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QkM1
NDdEMzFCNjk1OUExMDA5NTlCNTggLyogV0FTTUZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0IyRTAxMEUxQjk3QUE2OTAwRUY1RDVDIC8qIFdBU01GdW5jdGlvbkNvbXBpbGVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3QjgzMjlCRjFCQjIxRkUzMDA2NDlBNkUgLyogV0FTTUZ1bmN0aW9uTExW
TUlSR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QjAyNDc1NzFCODY4MkU0MDA1NDI0
NDAgLyogV0FTTUZ1bmN0aW9uUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QjAyNDc1OTFC
ODY4RUI3MDA1NDI0NDAgLyogV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0IzOUY3NkUxQjYyREUzMjAwMzYwRkI0IC8qIFdBU01Nb2R1bGVQYXJzZXIuaCBp
biBIZWFkZXJzICovLApAQCAtNzc3Miw2ICs3ODM0LDcgQEAKIAkJCQkxNDJFMzEzNTEzNEZGMEE2
MDBBRkFEQjUgLyogSGFuZGxlU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MkUzMTM3MTM0
RkYwQTYwMEFGQURCNSAvKiBIYW5kbGVTdGFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEJB
N0E5NzEzQUFERkY4MDA1QjdDMkMgLyogSGVhcC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjMy
QkQxMDFCQjM0RjE5MDA5M0E1N0YgLyogSGVhcEhlbHBlclBvb2wuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQzI0RDMxRTIxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUMyRTUyNkJEMTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkU3QkE2MEYxQTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJp
Zmllci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc5MjgsNiArNzk5MSw3IEBACiAJCQkJMEYyQjY2
RkExN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjJCNjZGQzE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5UHJv
dG90eXBlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjZGRTE3QjZCNUFCMDBBN0FFM0Yg
LyogSlNUeXBlZEFycmF5cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERUE3RTI0NDFCQkM2Nzcy
MDBENzg0NDAgLyogSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4NkUzQzYxQTE2N0JBQkVFMDA2RDc2MEEgLyogSlNWYWx1ZS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTE0QkQ1QTMyMEEzRTkxRjYwMEJBRjU5QyAvKiBKU1ZhbHVlUmVmLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTg2RTNDNjFDMTY3QkFCRUUwMDZENzYwQSAvKiBKU1ZpcnR1YWxNYWNoaW5l
Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC04MDAxLDcgKzgwNjUsNiBAQAogCQkJCTBGOTgyMDYwMTZC
RkUzODEwMDI0MEQwMiAvKiBQcmVjaXNlSnVtcFRhcmdldHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTU3NDJGNjUwREQxMUY1QTAwMDkxN0ZCIC8qIFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTVDRDQ1NzYwRTFDNEZERDAwODUzNThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJREVBN0UyNDQxQkJDNjc3MjAwRDc4NDQwIC8qIEpTVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTVBQjgzNTYwREE0M0MzMDAw
QkM4M0YzIC8qIFByb2ZpbGVOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjcyOUFEMTY2
QUQzNUMwMDBGNUJBMyAvKiBQcm9maWxlckJ5dGVjb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRjcyOUFFMTY2QUQzNUMwMDBGNUJBMyAvKiBQcm9maWxlckJ5dGVjb2Rlcy5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTgxMTAsNyArODE3Myw2IEBACiAJCQkJMEZGNDI3NDAxNThFQkU4QjAwNENC
OUZGIC8qIHVkaXM4Nl9kZWNvZGUuYyBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzQzMTU4RUJF
OTEwMDRDQjlGRiAvKiB1ZGlzODZfaW5wdXQuYyBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzRE
MTU4RUJGRTYwMDRDQjlGRiAvKiB1ZGlzODZfaXRhYl9ob2xkZXIuYyBpbiBTb3VyY2VzICovLAot
CQkJCTBGMzJCRDEwMUJCMzRGMTkwMDkzQTU3RiAvKiBIZWFwSGVscGVyUG9vbC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkY0Mjc0NTE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2X3N5bi1hdHQu
YyBpbiBTb3VyY2VzICovLAogCQkJCTBGRjQyNzQ2MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZf
c3luLWludGVsLmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0NzE1OEVCRTkxMDA0Q0I5RkYg
LyogdWRpczg2X3N5bi5jIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9VcGRhdGVDb250ZW50cy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL1VwZGF0ZUNvbnRlbnRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3NmQ0NmZiNGM0MjMwMmI4
NWZmMTBjODUxZWIzNGMxZTI3ODk0YzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9VcGRhdGVDb250ZW50cy5weQpAQCAtMCwwICsxLDQ4IEBACisjIS91
c3IvYmluL3B5dGhvbgorCisjIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlLCBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisjICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisjICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgc3lzCitpbXBvcnQgb3MKKwor
YXNzZXJ0KGxlbihzeXMuYXJndikgPT0gMykKKworY29tcCA9IHN5cy5hcmd2WzFdCitmaWxlbmFt
ZSA9IHN5cy5hcmd2WzJdCisKK3QgPSBGYWxzZQorCitpZiBvcy5wYXRoLmlzZmlsZShmaWxlbmFt
ZSk6CisgICAgZiA9IG9wZW4oZmlsZW5hbWUsICdyJykKKyAgICBjb21wYXJhdG9yID0gZi5yZWFk
KCkKKyAgICBmLmNsb3NlKCkKKyAgICB0ID0gVHJ1ZQorCitpZiAobm90IHQgb3IgY29tcCAhPSBj
b21wYXJhdG9yKToKKyAgICBmID0gb3BlbihmaWxlbmFtZSwgJ3cnKQorICAgIGYud3JpdGUoY29t
cCkKKyAgICBmLmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL2J1aWx0aW5zL19faW5pdF9fLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
YnVpbHRpbnMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmRmY2JhOTgxZDhmOGRhMDc4MTM1OGNm
ZTY0ZmExYzc4MDc0YTE2MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL2J1aWx0aW5zL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMyBAQAorIyBSZXF1aXJl
ZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlIGZpbGVzCisK
K2Zyb20gYnVpbHRpbnMgaW1wb3J0ICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvYnVpbHRpbnMvYnVpbHRpbnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2RmZWQ3NjZhZjE1MGJkYWU0
ZDFiMmNlNzU5MWY4M2YwNTlmNDE2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zLnB5CkBAIC0wLDAgKzEsMTIgQEAKKyMg
VGhpcyBmaWxlIGlzIHVzZWQgdG8gc2ltdWxhdGUgdGhlIGJ1aWx0aW5zLyBkaXJlY3Rvcnkgd2hl
biBnZW5lcmF0ZS1qcy1idWlsdGlucy5weQorIyBpcyBydW4gZnJvbSBKYXZhU2NyaXB0Q29yZSBm
cmFtZXdvcmsncyBwcml2YXRlIGhlYWRlcnMgZGlyZWN0b3J5LCB3aGljaCBpcyBmbGF0dGVuZWQu
CisKK2Zyb20gYnVpbHRpbnNfbW9kZWwgaW1wb3J0ICoKK2Zyb20gYnVpbHRpbnNfdGVtcGxhdGVz
IGltcG9ydCAqCisKK2Zyb20gYnVpbHRpbnNfZ2VuZXJhdG9yIGltcG9ydCAqCitmcm9tIGdlbmVy
YXRlX2J1aWx0aW5zX2NvbWJpbmVkX2hlYWRlciBpbXBvcnQgKgorZnJvbSBnZW5lcmF0ZV9idWls
dGluc19jb21iaW5lZF9pbXBsZW1lbnRhdGlvbiBpbXBvcnQgKgorZnJvbSBnZW5lcmF0ZV9idWls
dGluc19zZXBhcmF0ZV9oZWFkZXIgaW1wb3J0ICoKK2Zyb20gZ2VuZXJhdGVfYnVpbHRpbnNfc2Vw
YXJhdGVfaW1wbGVtZW50YXRpb24gaW1wb3J0ICoKK2Zyb20gZ2VuZXJhdGVfYnVpbHRpbnNfc2Vw
YXJhdGVfd3JhcHBlciBpbXBvcnQgKgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjAxNjJjYWZjZDUwY2FiZmU4OTIxMTJiNmI3NjgyMDZhZTM3ZjRlNGMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5l
cmF0b3IucHkKQEAgLTAsMCArMSwxNTkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBD
b3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IyBDb3B5cmlnaHQgKGMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1w
b3J0IGxvZ2dpbmcKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgcmUKK2Zyb20gc3RyaW5nIGltcG9y
dCBUZW1wbGF0ZQoraW1wb3J0IGpzb24KKworZnJvbSBidWlsdGluc19tb2RlbCBpbXBvcnQgQnVp
bHRpbkZ1bmN0aW9uCitmcm9tIGJ1aWx0aW5zX3RlbXBsYXRlcyBpbXBvcnQgQnVpbHRpbnNHZW5l
cmF0b3JUZW1wbGF0ZXMgYXMgVGVtcGxhdGVzCisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdn
bG9iYWwnKQorCisjIFRoZXNlIG1hdGNoIFdLX2xjZmlyc3QgYW5kIFdLX3VjZmlyc3QgZGVmaW5l
ZCBpbiBDb2RlR2VuZXJhdG9yLnBtLgorZGVmIFdLX2xjZmlyc3Qoc3RyKToKKyAgICBzdHIgPSBz
dHJbOjFdLmxvd2VyKCkgKyBzdHJbMTpdCisgICAgc3RyID0gc3RyLnJlcGxhY2UoJ2hUTUwnLCAn
aHRtbCcpCisgICAgc3RyID0gc3RyLnJlcGxhY2UoJ3VSTCcsICd1cmwnKQorICAgIHN0ciA9IHN0
ci5yZXBsYWNlKCdqUycsICdqcycpCisgICAgc3RyID0gc3RyLnJlcGxhY2UoJ3hNTCcsICd4bWwn
KQorICAgIHN0ciA9IHN0ci5yZXBsYWNlKCd4U0xUJywgJ3hzbHQnKQorICAgIHN0ciA9IHN0ci5y
ZXBsYWNlKCdjU1MnLCAnY3NzJykKKyAgICByZXR1cm4gc3RyCisKK2RlZiBXS191Y2ZpcnN0KHN0
cik6CisgICAgc3RyID0gc3RyWzoxXS51cHBlcigpICsgc3RyWzE6XQorICAgIHN0ciA9IHN0ci5y
ZXBsYWNlKCdYbWwnLCAnWE1MJykKKyAgICBzdHIgPSBzdHIucmVwbGFjZSgnU3ZnJywgJ1NWRycp
CisgICAgcmV0dXJuIHN0cgorCitjbGFzcyBCdWlsdGluc0dlbmVyYXRvcjoKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgbW9kZWwpOgorICAgICAgICBzZWxmLl9tb2RlbCA9IG1vZGVsCisKKyAgICBk
ZWYgbW9kZWwoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9tb2RlbAorCisgICAgIyBUaGVz
ZSBtZXRob2RzIGFyZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMuCisKKyAgICBkZWYgZ2VuZXJh
dGVfb3V0cHV0KHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgb3V0cHV0X2ZpbGVuYW1l
KHNlbGYpOgorICAgICAgICBwYXNzCisKKworICAgICMgU2hhcmVkIGNvZGUgZ2VuZXJhdGlvbiBt
ZXRob2RzLgorICAgIGRlZiBnZW5lcmF0ZV9saWNlbnNlKHNlbGYpOgorICAgICAgICByYXdfbGlj
ZW5zZSA9IFRlbXBsYXRlKFRlbXBsYXRlcy5MaWNlbnNlVGV4dCkuc3Vic3RpdHV0ZShOb25lKQor
ICAgICAgICBjb3B5cmlnaHRzID0gc2VsZi5fbW9kZWwuY29weXJpZ2h0cygpCisgICAgICAgIGNv
cHlyaWdodHMuc29ydCgpCisKKyAgICAgICAgbGljZW5zZV9ibG9jayA9IFtdCisgICAgICAgIGxp
Y2Vuc2VfYmxvY2suYXBwZW5kKCIvKiIpCisgICAgICAgIGZvciBjb3B5cmlnaHQgaW4gY29weXJp
Z2h0czoKKyAgICAgICAgICAgIGxpY2Vuc2VfYmxvY2suYXBwZW5kKCIgKiBDb3B5cmlnaHQgKGMp
ICVzIiAlIGNvcHlyaWdodCkKKyAgICAgICAgaWYgbGVuKGNvcHlyaWdodHMpID4gMDoKKyAgICAg
ICAgICAgIGxpY2Vuc2VfYmxvY2suYXBwZW5kKCIgKiAiKQorCisgICAgICAgIGZvciBsaW5lIGlu
IHJhd19saWNlbnNlLnNwbGl0KCdcbicpOgorICAgICAgICAgICAgbGljZW5zZV9ibG9jay5hcHBl
bmQoIiAqICIgKyBsaW5lKQorCisgICAgICAgIGxpY2Vuc2VfYmxvY2suYXBwZW5kKCIgKi8iKQor
CisgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGljZW5zZV9ibG9jaykKKworICAgIGRlZiBnZW5l
cmF0ZV9pbmNsdWRlc19mcm9tX2VudHJpZXMoc2VsZiwgZW50cmllcyk6CisgICAgICAgIGluY2x1
ZGVzID0gc2V0KCkKKyAgICAgICAgZm9yIGVudHJ5IGluIGVudHJpZXM6CisgICAgICAgICAgICAo
YWxsb3dlZF9mcmFtZXdvcmtfbmFtZXMsIGRhdGEpID0gZW50cnkKKyAgICAgICAgICAgIChmcmFt
ZXdvcmtfbmFtZSwgaGVhZGVyX3BhdGgpID0gZGF0YQorCisgICAgICAgICAgICBpZiBzZWxmLm1v
ZGVsKCkuZnJhbWV3b3JrLm5hbWUgbm90IGluIGFsbG93ZWRfZnJhbWV3b3JrX25hbWVzOgorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBzZWxmLm1vZGVsKCkuZnJhbWV3
b3JrLm5hbWUgIT0gZnJhbWV3b3JrX25hbWU6CisgICAgICAgICAgICAgICAgaW5jbHVkZXMuYWRk
KCIjaW5jbHVkZSA8JXM+IiAlIGhlYWRlcl9wYXRoKQorICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICBpbmNsdWRlcy5hZGQoIiNpbmNsdWRlIFwiJXNcIiIgJSBvcy5wYXRoLmJhc2Vu
YW1lKGhlYWRlcl9wYXRoKSkKKworICAgICAgICBzb3J0ZWRfaW5jbHVkZXMgPSBzb3J0ZWQobGlz
dChpbmNsdWRlcykpCisgICAgICAgICMgQWx3YXlzIGluY2x1ZGUgY29uZmlnLmggYW5kIHRoZSBj
b3VudGVycGFydCBoZWFkZXIgYmVmb3JlIG90aGVyIGhlYWRlcnMuCisgICAgICAgIG5hbWUsIGV4
dCA9IG9zLnBhdGguc3BsaXRleHQoc2VsZi5vdXRwdXRfZmlsZW5hbWUoKSkKKyAgICAgICAgaWYg
ZXh0ICE9ICcuaCc6CisgICAgICAgICAgICBzb3J0ZWRfaW5jbHVkZXNbOjBdID0gWworICAgICAg
ICAgICAgICAgICIjaW5jbHVkZSBcImNvbmZpZy5oXCIiLAorICAgICAgICAgICAgICAgICIjaW5j
bHVkZSBcIiVzLmhcIiIgJSBuYW1lLAorICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAg
XQorCisgICAgICAgIHJldHVybiBzb3J0ZWRfaW5jbHVkZXMKKworICAgIGRlZiBnZW5lcmF0ZV9l
bWJlZGRlZF9jb2RlX3N0cmluZ19zZWN0aW9uX2Zvcl9mdW5jdGlvbihzZWxmLCBmdW5jdGlvbik6
CisgICAgICAgIHRleHQgPSBmdW5jdGlvbi5mdW5jdGlvbl9zb3VyY2UKKyAgICAgICAgIyBXcmFw
IGl0IGluIHBhcmVucyB0byBhdm9pZCBhZGRpbmcgdG8gZ2xvYmFsIHNjb3BlLgorICAgICAgICB0
ZXh0ID0gIihmdW5jdGlvbiAiICsgdGV4dFt0ZXh0LmluZGV4KCIoIik6XSArICIpIgorICAgICAg
ICBlbWJlZGRlZFNvdXJjZUxlbmd0aCA9IGxlbih0ZXh0KSArIDEgICMgRm9yIGV4dHJhIFxuLgor
ICAgICAgICAjIExhenkgd2F5IHRvIGVzY2FwZSBxdW90ZXMsIEkgdGhpbms/CisgICAgICAgIHRl
eHRMaW5lcyA9IGpzb24uZHVtcHModGV4dClbMTotMV0uc3BsaXQoIlxcbiIpCisgICAgICAgICMg
VGhpcyBsb29rcyBzY2FyeSBiZWNhdXNlIHdlIG5lZWQgdGhlIEpTIHNvdXJjZSBpdHNlbGYgdG8g
aGF2ZSBuZXdsaW5lcy4KKyAgICAgICAgZW1iZWRkZWRTb3VyY2UgPSAnXG4nLmpvaW4oWycgICAg
IiVzXFxuIiBcXCcgJSBsaW5lIGZvciBsaW5lIGluIHRleHRMaW5lc10pCisKKyAgICAgICAgY29u
c3RydWN0QWJpbGl0eSA9ICJDYW5ub3RDb25zdHJ1Y3QiCisgICAgICAgIGlmIGZ1bmN0aW9uLmlz
X2NvbnN0cnVjdG9yOgorICAgICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9ICJDYW5Db25zdHJ1
Y3QiCisKKyAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICdjb2RlTmFtZSc6IEJ1aWx0aW5z
R2VuZXJhdG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rpb24oZnVuY3Rpb24pICsgJ0NvZGUnLAorICAg
ICAgICAgICAgJ2VtYmVkZGVkU291cmNlJzogZW1iZWRkZWRTb3VyY2UsCisgICAgICAgICAgICAn
ZW1iZWRkZWRTb3VyY2VMZW5ndGgnOiBlbWJlZGRlZFNvdXJjZUxlbmd0aCwKKyAgICAgICAgICAg
ICdjYW5Db25zdHJ1Y3QnOiBjb25zdHJ1Y3RBYmlsaXR5CisgICAgICAgIH0KKworICAgICAgICBs
aW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZCgiY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmls
aXR5IHNfJShjb2RlTmFtZSlzQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0
eTo6JShjYW5Db25zdHJ1Y3QpczsiICUgYXJncyk7CisgICAgICAgIGxpbmVzLmFwcGVuZCgiY29u
c3QgaW50IHNfJShjb2RlTmFtZSlzTGVuZ3RoID0gJShlbWJlZGRlZFNvdXJjZUxlbmd0aClkOyIg
JSBhcmdzKTsKKyAgICAgICAgbGluZXMuYXBwZW5kKCJjb25zdCBjaGFyKiBzXyUoY29kZU5hbWUp
cyA9XG4lKGVtYmVkZGVkU291cmNlKXNcbjsiICUgYXJncyk7CisgICAgICAgIHJldHVybiAnXG4n
LmpvaW4obGluZXMpCisKKyAgICAjIEhlbHBlciBtZXRob2RzLgorCisgICAgQHN0YXRpY21ldGhv
ZAorICAgIGRlZiBtYW5nbGVkTmFtZUZvckZ1bmN0aW9uKGZ1bmN0aW9uKToKKyAgICAgICAgaWYg
bm90IGlzaW5zdGFuY2UoZnVuY3Rpb24sIEJ1aWx0aW5GdW5jdGlvbik6CisgICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oIkludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIG1hbmdsZWROYW1lRm9y
RnVuY3Rpb24oKSIpCisKKyAgICAgICAgb2JqZWN0X25hbWUgPSBmdW5jdGlvbi5vYmplY3Qub2Jq
ZWN0X25hbWUKKyAgICAgICAgbWFuZ2xlZF9uYW1lID0gIiVzJXMiICUgKFdLX2xjZmlyc3Qob2Jq
ZWN0X25hbWUpLCBXS191Y2ZpcnN0KGZ1bmN0aW9uLmZ1bmN0aW9uX25hbWUpKQorCisgICAgICAg
IGRlZiB0b0NhbWVsKG1hdGNoKToKKyAgICAgICAgICAgIHN0ciA9IG1hdGNoLmdyb3VwKDApCisg
ICAgICAgICAgICByZXR1cm4gc3RyWzFdLnVwcGVyKCkKKyAgICAgICAgbWFuZ2xlZF9uYW1lID0g
cmUuc3ViKHInXC5bYS16XScsIHRvQ2FtZWwsIG1hbmdsZWRfbmFtZSwgZmxhZ3M9cmUuSUdOT1JF
Q0FTRSkKKyAgICAgICAgaWYgZnVuY3Rpb24uaXNfY29uc3RydWN0b3I6CisgICAgICAgICAgICBt
YW5nbGVkX25hbWUgPSBtYW5nbGVkX25hbWUgKyAiQ29uc3RydWN0b3IiCisgICAgICAgIHJldHVy
biBtYW5nbGVkX25hbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjVkNGJkZTY0ZDZiYTZj
ZDFkMDczNTNkNGYyYmQ1ZWExNDUwYWEzZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CkBAIC0wLDAgKzEs
MjMzIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgcmUKK2ltcG9ydCBvcworCits
b2cgPSBsb2dnaW5nLmdldExvZ2dlcignZ2xvYmFsJykKKworX0ZSQU1FV09SS19DT05GSUdfTUFQ
ID0geworICAgICJKYXZhU2NyaXB0Q29yZSI6IHsKKyAgICAgICAgIm1hY3JvX3ByZWZpeCI6ICJK
U0MiLAorICAgICAgICAibmFtZXNwYWNlIjogIkpTQyIsCisgICAgfSwKKyAgICAiV2ViQ29yZSI6
IHsKKyAgICAgICAgIm1hY3JvX3ByZWZpeCI6ICJXRUJDT1JFIiwKKyAgICAgICAgIm5hbWVzcGFj
ZSI6ICJXZWJDb3JlIiwKKyAgICB9LAorfQorCitmdW5jdGlvbkhlYWRSZWdFeHAgPSByZS5jb21w
aWxlKHIiKD86ZnVuY3Rpb258Y29uc3RydWN0b3IpXHMrXHcrXHMqXCguKj9cKSIsIHJlLk1VTFRJ
TElORSB8IHJlLlMpCitmdW5jdGlvbk5hbWVSZWdFeHAgPSByZS5jb21waWxlKHIiKD86ZnVuY3Rp
b258Y29uc3RydWN0b3IpXHMrKFx3KylccypcKCIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitmdW5j
dGlvbklzQ29uc3RydWN0b3JSZWdFeHAgPSByZS5jb21waWxlKHIiXmNvbnN0cnVjdG9yIiwgcmUu
TVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uUGFyYW1ldGVyRmluZGVyID0gcmUuY29tcGlsZShy
Il4oPzpmdW5jdGlvbnxjb25zdHJ1Y3RvcilccysoPzpcdyspXHMqXCgoKD86XHMqXHcrKT9ccyoo
PzpccyosXHMqXHcrKSopP1xzKlwpIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKKworbXVsdGlsaW5l
Q29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wqLio/XCpcLyIsIHJlLk1VTFRJTElORSB8
IHJlLlMpCitzaW5nbGVMaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wvLio/XG4i
LCByZS5NVUxUSUxJTkUgfCByZS5TKQorCisKK2NsYXNzIFBhcnNlRXhjZXB0aW9uKEV4Y2VwdGlv
bik6CisgICAgcGFzcworCisKK2NsYXNzIEZyYW1ld29yazoKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbmFtZSk6CisgICAgICAgIHNlbGYuX3NldHRpbmdzID0gX0ZSQU1FV09SS19DT05GSUdfTUFQ
W25hbWVdCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgIGRlZiBzZXR0aW5nKHNlbGYs
IGtleSwgZGVmYXVsdD0nJyk6CisgICAgICAgIHJldHVybiBzZWxmLl9zZXR0aW5ncy5nZXQoa2V5
LCBkZWZhdWx0KQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBmcm9tU3RyaW5nKGZyYW1l
d29ya1N0cmluZyk6CisgICAgICAgIGlmIGZyYW1ld29ya1N0cmluZyA9PSAiSmF2YVNjcmlwdENv
cmUiOgorICAgICAgICAgICAgcmV0dXJuIEZyYW1ld29ya3MuSmF2YVNjcmlwdENvcmUKKworICAg
ICAgICBpZiBmcmFtZXdvcmtTdHJpbmcgPT0gIldlYkNvcmUiOgorICAgICAgICAgICAgcmV0dXJu
IEZyYW1ld29ya3MuV2ViQ29yZQorCisgICAgICAgIHJhaXNlIFBhcnNlRXhjZXB0aW9uKCJVbmtu
b3duIGZyYW1ld29yazogJXMiICUgZnJhbWV3b3JrU3RyaW5nKQorCisKK2NsYXNzIEZyYW1ld29y
a3M6CisgICAgSmF2YVNjcmlwdENvcmUgPSBGcmFtZXdvcmsoIkphdmFTY3JpcHRDb3JlIikKKyAg
ICBXZWJDb3JlID0gRnJhbWV3b3JrKCJXZWJDb3JlIikKKworCitjbGFzcyBCdWlsdGluT2JqZWN0
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvYmplY3RfbmFtZSwgZnVuY3Rpb25zKToKKyAgICAg
ICAgc2VsZi5vYmplY3RfbmFtZSA9IG9iamVjdF9uYW1lCisgICAgICAgIHNlbGYuZnVuY3Rpb25z
ID0gZnVuY3Rpb25zCisgICAgICAgIHNlbGYuY29sbGVjdGlvbiA9IE5vbmUgICMgU2V0IGJ5IHRo
ZSBvd25pbmcgQnVpbHRpbnNDb2xsZWN0aW9uCisKKyAgICAgICAgZm9yIGZ1bmN0aW9uIGluIHNl
bGYuZnVuY3Rpb25zOgorICAgICAgICAgICAgZnVuY3Rpb24ub2JqZWN0ID0gc2VsZgorCisKK2Ns
YXNzIEJ1aWx0aW5GdW5jdGlvbjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuY3Rpb25fbmFt
ZSwgZnVuY3Rpb25fc291cmNlLCBpc19jb25zdHJ1Y3RvciwgcGFyYW1ldGVycyk6CisgICAgICAg
IHNlbGYuZnVuY3Rpb25fbmFtZSA9IGZ1bmN0aW9uX25hbWUKKyAgICAgICAgc2VsZi5mdW5jdGlv
bl9zb3VyY2UgPSBmdW5jdGlvbl9zb3VyY2UKKyAgICAgICAgc2VsZi5pc19jb25zdHJ1Y3RvciA9
IGlzX2NvbnN0cnVjdG9yCisgICAgICAgIHNlbGYucGFyYW1ldGVycyA9IHBhcmFtZXRlcnMKKyAg
ICAgICAgc2VsZi5vYmplY3QgPSBOb25lICAjIFNldCBieSB0aGUgb3duaW5nIEJ1aWx0aW5PYmpl
Y3QKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZnJvbVN0cmluZyhmdW5jdGlvbl9zdHJp
bmcpOgorICAgICAgICBmdW5jdGlvbl9zb3VyY2UgPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1
YigiIiwgZnVuY3Rpb25fc3RyaW5nKQorICAgICAgICBmdW5jdGlvbl9uYW1lID0gZnVuY3Rpb25O
YW1lUmVnRXhwLmZpbmRhbGwoZnVuY3Rpb25fc291cmNlKVswXQorICAgICAgICBpc19jb25zdHJ1
Y3RvciA9IGZ1bmN0aW9uSXNDb25zdHJ1Y3RvclJlZ0V4cC5tYXRjaChmdW5jdGlvbl9zb3VyY2Up
ICE9IE5vbmUKKyAgICAgICAgcGFyYW1ldGVycyA9IFtzLnN0cmlwKCkgZm9yIHMgaW4gZnVuY3Rp
b25QYXJhbWV0ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlvbl9zb3VyY2UpWzBdLnNwbGl0KCcsJyld
CisgICAgICAgIGlmIGxlbihwYXJhbWV0ZXJzWzBdKSA9PSAwOgorICAgICAgICAgICAgcGFyYW1l
dGVycyA9IFtdCisKKyAgICAgICAgcmV0dXJuIEJ1aWx0aW5GdW5jdGlvbihmdW5jdGlvbl9uYW1l
LCBmdW5jdGlvbl9zb3VyY2UsIGlzX2NvbnN0cnVjdG9yLCBwYXJhbWV0ZXJzKQorCisgICAgZGVm
IF9fc3RyX18oc2VsZik6CisgICAgICAgIGludGVyZmFjZSA9ICIlcyglcykiICUgKHNlbGYuZnVu
Y3Rpb25fbmFtZSwgJywgJy5qb2luKHNlbGYucGFyYW1ldGVycykpCisgICAgICAgIGlmIHNlbGYu
aXNfY29uc3RydWN0b3I6CisgICAgICAgICAgICBpbnRlcmZhY2UgPSBpbnRlcmZhY2UgKyAiIFtD
b25zdHJ1Y3Rvcl0iCisKKyAgICAgICAgcmV0dXJuIGludGVyZmFjZQorCisKK2NsYXNzIEJ1aWx0
aW5zQ29sbGVjdGlvbjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnJhbWV3b3JrX25hbWUpOgor
ICAgICAgICBzZWxmLl9jb3B5cmlnaHRfbGluZXMgPSBzZXQoKQorICAgICAgICBzZWxmLm9iamVj
dHMgPSBbXQorICAgICAgICBzZWxmLmZyYW1ld29yayA9IEZyYW1ld29yay5mcm9tU3RyaW5nKGZy
YW1ld29ya19uYW1lKQorICAgICAgICBsb2cuZGVidWcoIkNyZWF0ZWQgbmV3IEJ1aWx0aW5zIGNv
bGxlY3Rpb24uIikKKworICAgIGRlZiBwYXJzZV9idWlsdGluc19maWxlKHNlbGYsIGZpbGVuYW1l
LCB0ZXh0KToKKyAgICAgICAgbG9nLmRlYnVnKCJQYXJzaW5nIGJ1aWx0aW5zIGZpbGU6ICVzIiAl
IGZpbGVuYW1lKQorCisgICAgICAgIHBhcnNlZF9jb3B5cmlnaHRzID0gc2V0KHNlbGYuX3BhcnNl
X2NvcHlyaWdodF9saW5lcyh0ZXh0KSkKKyAgICAgICAgc2VsZi5fY29weXJpZ2h0X2xpbmVzID0g
c2VsZi5fY29weXJpZ2h0X2xpbmVzLnVuaW9uKHBhcnNlZF9jb3B5cmlnaHRzKQorCisgICAgICAg
IGxvZy5kZWJ1ZygiRm91bmQgY29weXJpZ2h0IGxpbmVzOiIpCisgICAgICAgIGZvciBsaW5lIGlu
IHNlbGYuX2NvcHlyaWdodF9saW5lczoKKyAgICAgICAgICAgIGxvZy5kZWJ1ZyhsaW5lKQorICAg
ICAgICBsb2cuZGVidWcoIiIpCisKKyAgICAgICAgb2JqZWN0X25hbWUsIGV4dCA9IG9zLnBhdGgu
c3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSkpCisgICAgICAgIGxvZy5kZWJ1Zygi
UGFyc2luZyBvYmplY3Q6ICVzIiAlIG9iamVjdF9uYW1lKQorCisgICAgICAgIHBhcnNlZF9mdW5j
dGlvbnMgPSBzZWxmLl9wYXJzZV9mdW5jdGlvbnModGV4dCkKKyAgICAgICAgZm9yIGZ1bmN0aW9u
IGluIHBhcnNlZF9mdW5jdGlvbnM6CisgICAgICAgICAgICBmdW5jdGlvbi5vYmplY3QgPSBvYmpl
Y3RfbmFtZQorCisgICAgICAgIGxvZy5kZWJ1ZygiUGFyc2VkIGZ1bmN0aW9uczoiKQorICAgICAg
ICBmb3IgZnVuYyBpbiBwYXJzZWRfZnVuY3Rpb25zOgorICAgICAgICAgICAgbG9nLmRlYnVnKGZ1
bmMpCisgICAgICAgIGxvZy5kZWJ1ZygiIikKKworICAgICAgICBuZXdfb2JqZWN0ID0gQnVpbHRp
bk9iamVjdChvYmplY3RfbmFtZSwgcGFyc2VkX2Z1bmN0aW9ucykKKyAgICAgICAgbmV3X29iamVj
dC5jb2xsZWN0aW9uID0gc2VsZgorICAgICAgICBzZWxmLm9iamVjdHMuYXBwZW5kKG5ld19vYmpl
Y3QpCisKKyAgICBkZWYgY29weXJpZ2h0cyhzZWxmKToKKyAgICAgICAgb3duZXJfdG9feWVhcnMg
PSBkaWN0KCkKKyAgICAgICAgY29weXJpZ2h0WWVhclJlZ0V4cCA9IHJlLmNvbXBpbGUociIoXGR7
NH0pWywgXXswLDJ9IikKKyAgICAgICAgb3duZXJTdGFydFJlZ0V4cCA9IHJlLmNvbXBpbGUociJb
XlxkLCBdIikKKworICAgICAgICAjIFJldHVybnMgZGVkdXBsaWNhdGVkIGNvcHlyaWdodHMga2V5
ZWQgb24gdGhlIG93bmVyLgorICAgICAgICBmb3IgbGluZSBpbiBzZWxmLl9jb3B5cmlnaHRfbGlu
ZXM6CisgICAgICAgICAgICB5ZWFycyA9IHNldChjb3B5cmlnaHRZZWFyUmVnRXhwLmZpbmRhbGwo
bGluZSkpCisgICAgICAgICAgICBvd25lckluZGV4ID0gb3duZXJTdGFydFJlZ0V4cC5zZWFyY2go
bGluZSkuc3RhcnQoKQorICAgICAgICAgICAgb3duZXIgPSBsaW5lW293bmVySW5kZXg6XQorICAg
ICAgICAgICAgbG9nLmRlYnVnKCJGb3VuZCB5ZWFyczogJXMgYW5kIG93bmVyOiAlcyIgJSAoeWVh
cnMsIG93bmVyKSkKKyAgICAgICAgICAgIGlmIG93bmVyIG5vdCBpbiBvd25lcl90b195ZWFyczoK
KyAgICAgICAgICAgICAgICBvd25lcl90b195ZWFyc1tvd25lcl0gPSBzZXQoKQorCisgICAgICAg
ICAgICBvd25lcl90b195ZWFyc1tvd25lcl0gPSBvd25lcl90b195ZWFyc1tvd25lcl0udW5pb24o
eWVhcnMpCisKKyAgICAgICAgcmVzdWx0ID0gW10KKworICAgICAgICBmb3Igb3duZXIsIHllYXJz
IGluIG93bmVyX3RvX3llYXJzLml0ZW1zKCk6CisgICAgICAgICAgICBzb3J0ZWRfeWVhcnMgPSBs
aXN0KHllYXJzKQorICAgICAgICAgICAgc29ydGVkX3llYXJzLnNvcnQoKQorICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgiJXMgJXMiICUgKCcsICcuam9pbihzb3J0ZWRfeWVhcnMpLCBvd25lcikp
CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIGFsbF9mdW5jdGlvbnMoc2VsZik6
CisgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgIGZvciBvYmplY3QgaW4gc2VsZi5vYmplY3Rz
OgorICAgICAgICAgICAgcmVzdWx0LmV4dGVuZChvYmplY3QuZnVuY3Rpb25zKQorCisgICAgICAg
IHJlc3VsdC5zb3J0KCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgIyBQcml2YXRlIG1l
dGhvZHMuCisKKyAgICBkZWYgX3BhcnNlX2NvcHlyaWdodF9saW5lcyhzZWxmLCB0ZXh0KToKKyAg
ICAgICAgbGljZW5zZUJsb2NrID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5maW5kYWxsKHRleHQp
WzBdCisgICAgICAgIGxpY2Vuc2VCbG9jayA9IGxpY2Vuc2VCbG9ja1s6bGljZW5zZUJsb2NrLmlu
ZGV4KCJSZWRpc3RyaWJ1dGlvbiIpXQorCisgICAgICAgIGNvcHlyaWdodExpbmVzID0gW10KKyAg
ICAgICAgZm9yIGxpbmUgaW4gbGljZW5zZUJsb2NrLnNwbGl0KCJcbiIpOgorICAgICAgICAgICAg
bGluZSA9IGxpbmUucmVwbGFjZSgiLyoiLCAiIikKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJl
cGxhY2UoIiovIiwgIiIpCisgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIqIiwgIiIp
CisgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJDb3B5cmlnaHQiLCAiIikKKyAgICAg
ICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoImNvcHlyaWdodCIsICIiKQorICAgICAgICAgICAg
bGluZSA9IGxpbmUucmVwbGFjZSgiKEMpIiwgIiIpCisgICAgICAgICAgICBsaW5lID0gbGluZS5y
ZXBsYWNlKCIoYykiLCAiIikKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKworICAg
ICAgICAgICAgaWYgbGVuKGxpbmUpID09IDA6CisgICAgICAgICAgICAgICAgY29udGludWUKKwor
ICAgICAgICAgICAgY29weXJpZ2h0TGluZXMuYXBwZW5kKGxpbmUpCisKKyAgICAgICAgcmV0dXJu
IGNvcHlyaWdodExpbmVzCisKKyAgICBkZWYgX3BhcnNlX2Z1bmN0aW9ucyhzZWxmLCB0ZXh0KToK
KyAgICAgICAgdGV4dCA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuc3ViKCIvKiovIiwgc2luZ2xl
TGluZUNvbW1lbnRSZWdFeHAuc3ViKCIvL1xuIiwgdGV4dCkpCisKKyAgICAgICAgbWF0Y2hlcyA9
IFtmdW5jIGZvciBmdW5jIGluIGZ1bmN0aW9uSGVhZFJlZ0V4cC5maW5kaXRlcih0ZXh0KV0KKyAg
ICAgICAgZnVuY3Rpb25Cb3VuZHMgPSBbXQorICAgICAgICBzdGFydCA9IDAKKyAgICAgICAgZW5k
ID0gMAorICAgICAgICBmb3IgbWF0Y2ggaW4gbWF0Y2hlczoKKyAgICAgICAgICAgIHN0YXJ0ID0g
bWF0Y2guc3RhcnQoKQorICAgICAgICAgICAgaWYgc3RhcnQgPCBlbmQ6CisgICAgICAgICAgICAg
ICAgY29udGludWUKKyAgICAgICAgICAgIGVuZCA9IG1hdGNoLmVuZCgpCisgICAgICAgICAgICB3
aGlsZSB0ZXh0W2VuZF0gIT0gJ3snOgorICAgICAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAg
ICAgICAgICAgIGRlcHRoID0gMQorICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICAg
ICAgd2hpbGUgZGVwdGggPiAwOgorICAgICAgICAgICAgICAgIGlmIHRleHRbZW5kXSA9PSAneyc6
CisgICAgICAgICAgICAgICAgICAgIGRlcHRoID0gZGVwdGggKyAxCisgICAgICAgICAgICAgICAg
ZWxpZiB0ZXh0W2VuZF0gPT0gJ30nOgorICAgICAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRo
IC0gMQorICAgICAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgICAgIGZ1bmN0aW9u
Qm91bmRzLmFwcGVuZCgoc3RhcnQsIGVuZCkpCisKKyAgICAgICAgZnVuY3Rpb25TdHJpbmdzID0g
W3RleHRbc3RhcnQ6ZW5kXS5zdHJpcCgpIGZvciAoc3RhcnQsIGVuZCkgaW4gZnVuY3Rpb25Cb3Vu
ZHNdCisgICAgICAgIHJldHVybiBtYXAoQnVpbHRpbkZ1bmN0aW9uLmZyb21TdHJpbmcsIGZ1bmN0
aW9uU3RyaW5ncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1
aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNWVkZjY1NmVh
MmNlYTRkMGQ0ZjFmNjkyNWQzNGE4ZTEwYWYzZDgzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5CkBA
IC0wLDAgKzEsMjE5IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IChj
KSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0
IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgQnVpbHRpbnMgZ2VuZXJhdG9yIHRlbXBsYXRl
cywgd2hpY2ggY2FuIGJlIGZpbGxlZCB3aXRoIHN0cmluZy5UZW1wbGF0ZS4KKworCitjbGFzcyBC
dWlsdGluc0dlbmVyYXRvclRlbXBsYXRlczoKKworICAgIExpY2Vuc2VUZXh0ID0gKAorICAgICIi
IlJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCithcmUgbWV0OgorMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKzIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCitUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCitB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKK1RIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKK1BVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKK1NVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KK0NPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCitBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCitUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisi
IiIpCisKKyAgICBEb05vdEVkaXRXYXJuaW5nID0gKAorICAgICIiIi8vIERPIE5PVCBFRElUIFRI
SVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZp
bGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkiIiIpCisKKyAgICBIZWFkZXJJbmNsdWRl
R3VhcmRUb3AgPSAoCisgICAgIiIiI2lmbmRlZiAke2hlYWRlckd1YXJkfQorI2RlZmluZSAke2hl
YWRlckd1YXJkfSIiIikKKworICAgIEhlYWRlckluY2x1ZGVHdWFyZEJvdHRvbSA9ICgKKyAgICAi
IiIjZW5kaWYgLy8gJHtoZWFkZXJHdWFyZH0KKyIiIikKKworICAgIE5hbWVzcGFjZVRvcCA9ICgK
KyAgICAiIiJuYW1lc3BhY2UgJHtuYW1lc3BhY2V9IHsiIiIpCisKKyAgICBOYW1lc3BhY2VCb3R0
b20gPSAoCisgICAgIiIifSAvLyBuYW1lc3BhY2UgJHtuYW1lc3BhY2V9IiIiKQorCisgICAgQ29t
YmluZWRIZWFkZXJTdGF0aWNNYWNyb3MgPSAoCisgICAgIiIiI2RlZmluZSBERUNMQVJFX0JVSUxU
SU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCisg
ICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYp
OworCiske21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5f
R0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKKworI2RlZmluZSAk
e21hY3JvUHJlZml4fV9CVUlMVElOX0VYSVNUUyhvYmplY3QsIGZ1bmMpIGRlZmluZWQgJHttYWNy
b1ByZWZpeH1fQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVuYyIiIikKKworICAgIFNlcGFy
YXRlSGVhZGVyU3RhdGljTWFjcm9zID0gKAorICAgICIiIiNkZWZpbmUgREVDTEFSRV9CVUlMVElO
X0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAorICAg
IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsK
KworJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE5hbWV9X0JVSUxUSU5fQ09ERShERUNM
QVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IK
KworI2RlZmluZSAke21hY3JvUHJlZml4fV9CVUlMVElOXyR7b2JqZWN0TmFtZX1fRVhJU1RTKG9i
amVjdCwgZnVuYykgZGVmaW5lZCAke21hY3JvUHJlZml4fV9CVUlMVElOXyAjIyBvYmplY3QgIyMg
XyAjIyBmdW5jIiIiKQorCisgICAgQ29tYmluZWRKU0NJbXBsZW1lbnRhdGlvblN0YXRpY01hY3Jv
cyA9ICgKKyAgICAiIiIKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1l
LCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJs
ZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKK3tcXAorICAgIHJldHVybiB2
bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwg
dm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IFwKK30KKyR7bWFj
cm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikK
KyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKyIiIikKKworICAgIFNlcGFyYXRlSlND
SW1wbGVtZW50YXRpb25TdGF0aWNNYWNyb3MgPSAoCisgICAgIiIiCisjZGVmaW5lIERFRklORV9C
VUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBc
XAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYg
dm0pIFxcCit7XFwKKyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1l
IyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFt
ZSMjU291cmNlKCkpOyBcCit9Ciske21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99
X0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JV
SUxUSU5fR0VORVJBVE9SCisiIiIpCisKKyAgICBDb21iaW5lZFdlYkNvcmVJbXBsZW1lbnRhdGlv
blN0YXRpY01hY3JvcyA9ICgKKyAgICAgICAgIiIiCisjZGVmaW5lIERFRklORV9CVUlMVElOX0dF
TkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAorSlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCit7
XFwKKyAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGll
bnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFxcCisgICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0
aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNFeGVjdXRh
YmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5h
bWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCit9Ciske21hY3JvUHJlZml4
fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYg
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCisiIiIpCisKKyAgICBTZXBhcmF0ZVdlYkNvcmVJbXBs
ZW1lbnRhdGlvblN0YXRpY01hY3JvcyA9ICgKKyAgICAgICAgIiIiCisjZGVmaW5lIERFRklORV9C
VUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBc
XAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYg
dm0pIFxcCit7XFwKKyAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0
PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFxcCisgICAgcmV0dXJuIGNsaWVudERh
dGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1l
IyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4k
e29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCit9Ciske21h
Y3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShERUZJTkVfQlVJ
TFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCisiIiIpCisK
KyAgICBTZXBhcmF0ZVdyYXBwZXJIZWFkZXJCb2lsZXJwbGF0ZSA9ICgKKyAgICAiIiJjbGFzcyAk
e29iamVjdE5hbWV9QnVpbHRpbnNXcmFwcGVyIDogcHJpdmF0ZSBKU0M6OldlYWtIYW5kbGVPd25l
ciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgJHtvYmplY3ROYW1lfUJ1aWx0aW5zV3JhcHBlcihK
U0M6OlZNKiB2bSkKKyAgICAgICAgOiBtX3ZtKCp2bSkKKyAgICAgICAgJHttYWNyb1ByZWZpeH1f
Rk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElaRV9C
VUlMVElOX05BTUVTKQorI2RlZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMo
bmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpICwgbV8jI25hbWUjI1NvdXJjZShKU0M6Om1ha2VT
b3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc18jI25hbWUsIGxlbmd0aCkpKQor
ICAgICAgICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09E
RShJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgSU5JVElBTElaRV9C
VUlMVElOX1NPVVJDRV9NRU1CRVJTCisgICAgeworICAgIH0KKworI2RlZmluZSBFWFBPU0VfQlVJ
TFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXFwKKyAgICBKU0M6
OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFxcCisgICAg
Y29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMj
bmFtZSMjU291cmNlOyB9CisgICAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3Jv
fV9CVUlMVElOX0NPREUoRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgRVhQT1NF
X0JVSUxUSU5fRVhFQ1VUQUJMRVMKKworICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmpl
Y3RNYWNyb31fQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVS
X0FDQ0VTU09SKQorCisgICAgdm9pZCBleHBvcnROYW1lcygpOworCitwcml2YXRlOgorICAgIEpT
Qzo6Vk0mIG1fdm07CisKKyAgICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99
X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fTkFNRVMpCisKKyNkZWZpbmUg
REVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3Ro
KSBcXAorICAgIEpTQzo6U291cmNlQ29kZSBtXyMjbmFtZSMjU291cmNlO1xcCisgICAgSlNDOjpX
ZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVjdXRhYmxl
OworICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RF
KERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5f
U09VUkNFX01FTUJFUlMKKworfTsKKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxF
UyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXFwKK2lubGluZSBKU0M6OlVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiAke29iamVjdE5hbWV9QnVpbHRpbnNXcmFwcGVyOjpuYW1lIyNFeGVj
dXRhYmxlKCkgXFwKK3tcXAorICAgIGlmICghbV8jI25hbWUjI0V4ZWN1dGFibGUpXFwKKyAgICAg
ICAgbV8jI25hbWUjI0V4ZWN1dGFibGUgPSBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZT4oSlNDOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShtX3ZtLCBtXyMjbmFtZSMj
U291cmNlLCBmdW5jdGlvbk5hbWUjI1B1YmxpY05hbWUoKSwgc18jI25hbWUjI0NvbnN0cnVjdEFi
aWxpdHkpLCB0aGlzLCAmbV8jI25hbWUjI0V4ZWN1dGFibGUpO1xcCisgICAgcmV0dXJuIG1fIyNu
YW1lIyNFeGVjdXRhYmxlLmdldCgpO1xcCit9Ciske21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2Jq
ZWN0TWFjcm99X0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRl
ZiBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUworCitpbmxpbmUgdm9pZCAke29iamVjdE5hbWV9
QnVpbHRpbnNXcmFwcGVyOjpleHBvcnROYW1lcygpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElP
Tl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+YXBwZW5kRXh0ZXJuYWxOYW1lKG5hbWUj
I1B1YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUoKSk7CisgICAgJHttYWNyb1ByZWZpeH1f
Rk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0ZVTkNUSU9OX05BTUUoRVhQT1JUX0ZVTkNU
SU9OX05BTUUpCisjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OX05BTUUKK30KKworY2xhc3MgJHtvYmpl
Y3ROYW1lfUJ1aWx0aW5GdW5jdGlvbnMgeworcHVibGljOgorICAgIGV4cGxpY2l0ICR7b2JqZWN0
TmFtZX1CdWlsdGluRnVuY3Rpb25zKEpTQzo6Vk0mIHZtKSA6IG1fdm0odm0pIHsgfQorCisgICAg
dm9pZCBpbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKKyAgICB2b2lkIHZpc2l0KEpTQzo6U2xv
dFZpc2l0b3ImKTsKKworcHVibGljOgorICAgIEpTQzo6Vk0mIG1fdm07CisKKyNkZWZpbmUgREVD
TEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKGZ1bmN0aW9uTmFtZSkgXFwKKyAgICBKU0M6Oldy
aXRlQmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uOwor
ICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9GVU5DVElP
Tl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JV
SUxUSU5fU09VUkNFX01FTUJFUlMKK307CisKK2lubGluZSB2b2lkICR7b2JqZWN0TmFtZX1CdWls
dGluRnVuY3Rpb25zOjppbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sK
KyNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9OKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aClc
XAorICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihtX3ZtLCBjb2RlTmFtZSMj
R2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7CisgICAgJHttYWNyb1ByZWZpeH1fRk9S
RUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoRVhQT1JUX0ZVTkNUSU9OKQorI3VuZGVm
IEVYUE9SVF9GVU5DVElPTgorfQorCitpbmxpbmUgdm9pZCAke29iamVjdE5hbWV9QnVpbHRpbkZ1
bmN0aW9uczo6dmlzaXQoSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyNkZWZpbmUgVklT
SVRfRlVOQ1RJT04obmFtZSkgdmlzaXRvci5hcHBlbmQoJm1fIyNuYW1lIyNGdW5jdGlvbik7Cisg
ICAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0ZVTkNUSU9O
X05BTUUoVklTSVRfRlVOQ1RJT04pCisjdW5kZWYgVklTSVRfRlVOQ1RJT04KK30KKyIiIikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2dlbmVyYXRl
X2J1aWx0aW5zX2NvbWJpbmVkX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2hlYWRlci5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41MDg5ZmRmNTlhMmJhZTk2MTVlOThhOGE2ZTJjYzI5ODA0OTNlNjEwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvZ2VuZXJhdGVf
YnVpbHRpbnNfY29tYmluZWRfaGVhZGVyLnB5CkBAIC0wLDAgKzEsMTYyIEBACisjIS91c3IvYmlu
L2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2Fz
aGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCByZQoraW1wb3J0IHN0cmlu
ZworZnJvbSBzdHJpbmcgaW1wb3J0IFRlbXBsYXRlCisKK2Zyb20gYnVpbHRpbnNfZ2VuZXJhdG9y
IGltcG9ydCBCdWlsdGluc0dlbmVyYXRvcgorZnJvbSBidWlsdGluc190ZW1wbGF0ZXMgaW1wb3J0
IEJ1aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVzIGFzIFRlbXBsYXRlcworCitsb2cgPSBsb2dnaW5n
LmdldExvZ2dlcignZ2xvYmFsJykKKworCitjbGFzcyBCdWlsdGluc0NvbWJpbmVkSGVhZGVyR2Vu
ZXJhdG9yKEJ1aWx0aW5zR2VuZXJhdG9yKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZWwp
OgorICAgICAgICBCdWlsdGluc0dlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBtb2RlbCkKKworICAg
IGRlZiBvdXRwdXRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiAiJXNCdWlsdGlucy5o
IiAlIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNlJykKKworICAgIGRl
ZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAn
bmFtZXNwYWNlJzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCduYW1lc3BhY2UnKSwK
KyAgICAgICAgICAgICdoZWFkZXJHdWFyZCc6IHNlbGYub3V0cHV0X2ZpbGVuYW1lKCkucmVwbGFj
ZSgnLicsICdfJyksCisgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1vZGVsKCkuZnJh
bWV3b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZpeCcpLAorICAgICAgICB9CisKKyAgICAgICAgc2Vj
dGlvbnMgPSBbXQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9saWNlbnNl
KCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuRG9Ob3RFZGl0
V2FybmluZykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBs
YXRlKFRlbXBsYXRlcy5IZWFkZXJJbmNsdWRlR3VhcmRUb3ApLnN1YnN0aXR1dGUoYXJncykpCisg
ICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25z
KCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNl
VG9wKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBmb3Igb2JqZWN0IGluIHNlbGYubW9kZWwo
KS5vYmplY3RzOgorICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfc2Vj
dGlvbl9mb3Jfb2JqZWN0KG9iamVjdCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdl
bmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfdGFibGVfbWFjcm8oKSkKKyAgICAgICAgc2VjdGlvbnMu
YXBwZW5kKHNlbGYuZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV9uYW1lX21hY3JvKCkpCisgICAg
ICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuQ29tYmluZWRIZWFkZXJTdGF0
aWNNYWNyb3MpLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1w
bGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlQm90dG9tKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAg
ICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkhlYWRlckluY2x1ZGVHdWFyZEJv
dHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkKKworICAgICAgICByZXR1cm4gIlxuXG4iLmpvaW4oc2Vj
dGlvbnMpCisKKyAgICBkZWYgZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlvbnMoc2VsZik6Cisg
ICAgICAgIHJldHVybiAiIiJuYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJs
ZTsKK2NsYXNzIFZNOworCitlbnVtIGNsYXNzIENvbnN0cnVjdEFiaWxpdHkgOiB1bnNpZ25lZDsK
K30iIiIKKworICAgIGRlZiBnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9vYmplY3Qoc2VsZiwgb2JqZWN0
KToKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoJy8qICVzICovJyAl
IG9iamVjdC5vYmplY3RfbmFtZSkKKyAgICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2VuZXJhdGVf
ZXh0ZXJuc19mb3Jfb2JqZWN0KG9iamVjdCkpCisgICAgICAgIGxpbmVzLmFwcGVuZCgiIikKKyAg
ICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2VuZXJhdGVfbWFjcm9zX2Zvcl9vYmplY3Qob2JqZWN0
KSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCIiKQorICAgICAgICBsaW5lcy5leHRlbmQoc2VsZi5n
ZW5lcmF0ZV9kZWZpbmVzX2Zvcl9vYmplY3Qob2JqZWN0KSkKKyAgICAgICAgcmV0dXJuICdcbicu
am9pbihsaW5lcykKKworICAgIGRlZiBnZW5lcmF0ZV9leHRlcm5zX2Zvcl9vYmplY3Qoc2VsZiwg
b2JqZWN0KToKKyAgICAgICAgbGluZXMgPSBbXQorCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBv
YmplY3QuZnVuY3Rpb25zOgorICAgICAgICAgICAgZnVuY3Rpb25fYXJncyA9IHsKKyAgICAgICAg
ICAgICAgICAnY29kZU5hbWUnOiBCdWlsdGluc0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvckZ1bmN0
aW9uKGZ1bmN0aW9uKSArICdDb2RlJywKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGlu
ZXMuYXBwZW5kKCIiImV4dGVybiBjb25zdCBjaGFyKiBzXyUoY29kZU5hbWUpczsKK2V4dGVybiBj
b25zdCBpbnQgc18lKGNvZGVOYW1lKXNMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5IHNfJShjb2RlTmFtZSlzQ29uc3RydWN0QWJpbGl0eTsiIiIgJSBmdW5jdGlvbl9h
cmdzKQorCisgICAgICAgIHJldHVybiBsaW5lcworCisgICAgZGVmIGdlbmVyYXRlX21hY3Jvc19m
b3Jfb2JqZWN0KHNlbGYsIG9iamVjdCk6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAn
bWFjcm9QcmVmaXgnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZp
eCcpLAorICAgICAgICAgICAgJ29iamVjdE1hY3JvJzogb2JqZWN0Lm9iamVjdF9uYW1lLnJlcGxh
Y2UoJy4nLCAnJykudXBwZXIoKSwKKyAgICAgICAgfQorCisgICAgICAgIGxpbmVzID0gW10KKyAg
ICAgICAgbGluZXMuYXBwZW5kKCIjZGVmaW5lICUobWFjcm9QcmVmaXgpc19GT1JFQUNIXyUob2Jq
ZWN0TWFjcm8pc19CVUlMVElOX0RBVEEobWFjcm8pIFxcIiAlIGFyZ3MpCisgICAgICAgIGZvciBm
dW5jdGlvbiBpbiBvYmplY3QuZnVuY3Rpb25zOgorICAgICAgICAgICAgZnVuY3Rpb25fYXJncyA9
IHsKKyAgICAgICAgICAgICAgICAnZnVuY05hbWUnOiBmdW5jdGlvbi5mdW5jdGlvbl9uYW1lLAor
ICAgICAgICAgICAgICAgICdtYW5nbGVkTmFtZSc6IEJ1aWx0aW5zR2VuZXJhdG9yLm1hbmdsZWRO
YW1lRm9yRnVuY3Rpb24oZnVuY3Rpb24pLAorICAgICAgICAgICAgICAgICdwYXJhbUNvdW50Jzog
bGVuKGZ1bmN0aW9uLnBhcmFtZXRlcnMpLAorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBs
aW5lcy5hcHBlbmQoIiAgICBtYWNybyglKGZ1bmNOYW1lKXMsICUobWFuZ2xlZE5hbWUpcywgJShw
YXJhbUNvdW50KWQpIFxcIiAlIGZ1bmN0aW9uX2FyZ3MpCisgICAgICAgIHJldHVybiBsaW5lcwor
CisgICAgZGVmIGdlbmVyYXRlX2RlZmluZXNfZm9yX29iamVjdChzZWxmLCBvYmplY3QpOgorICAg
ICAgICBsaW5lcyA9IFtdCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBvYmplY3QuZnVuY3Rpb25z
OgorICAgICAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBz
ZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZpeCcpLAorICAgICAgICAg
ICAgICAgICdvYmplY3RNYWNybyc6IG9iamVjdC5vYmplY3RfbmFtZS5yZXBsYWNlKCcuJywgJycp
LnVwcGVyKCksCisgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uTWFjcm8nOiBmdW5jdGlvbi5mdW5j
dGlvbl9uYW1lLnVwcGVyKCksCisgICAgICAgICAgICB9CisgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoIiNkZWZpbmUgJShtYWNyb1ByZWZpeClzX0JVSUxUSU5fJShvYmplY3RNYWNybylzXyUoZnVu
Y3Rpb25NYWNybylzIDEiICUgYXJncykKKworICAgICAgICByZXR1cm4gbGluZXMKKworICAgIGRl
ZiBnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX3RhYmxlX21hY3JvKHNlbGYpOgorICAgICAgICBh
cmdzID0geworICAgICAgICAgICAgJ21hY3JvUHJlZml4Jzogc2VsZi5tb2RlbCgpLmZyYW1ld29y
ay5zZXR0aW5nKCdtYWNyb19wcmVmaXgnKSwKKyAgICAgICAgfQorCisgICAgICAgIGxpbmVzID0g
W10KKyAgICAgICAgbGluZXMuYXBwZW5kKCIjZGVmaW5lICUobWFjcm9QcmVmaXgpc19GT1JFQUNI
X0JVSUxUSU5fQ09ERShtYWNybykgXFwiICUgYXJncykKKyAgICAgICAgZm9yIGZ1bmN0aW9uIGlu
IHNlbGYubW9kZWwoKS5hbGxfZnVuY3Rpb25zKCk6CisgICAgICAgICAgICBmdW5jdGlvbl9hcmdz
ID0geworICAgICAgICAgICAgICAgICdmdW5jTmFtZSc6IGZ1bmN0aW9uLmZ1bmN0aW9uX25hbWUs
CisgICAgICAgICAgICAgICAgJ2NvZGVOYW1lJzogQnVpbHRpbnNHZW5lcmF0b3IubWFuZ2xlZE5h
bWVGb3JGdW5jdGlvbihmdW5jdGlvbikgKyAnQ29kZScsCisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGxpbmVzLmFwcGVuZCgiICAgIG1hY3JvKCUoY29kZU5hbWUpcywgJShmdW5jTmFtZSlz
LCBzXyUoY29kZU5hbWUpc0xlbmd0aCkgXFwiICUgZnVuY3Rpb25fYXJncykKKyAgICAgICAgcmV0
dXJuICdcbicuam9pbihsaW5lcykKKworICAgIGRlZiBnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2Rl
X25hbWVfbWFjcm8oc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbWFjcm9Q
cmVmaXgnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZpeCcpLAor
ICAgICAgICB9CisKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoIiNk
ZWZpbmUgJShtYWNyb1ByZWZpeClzX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3Jv
KSBcXCIgJSBhcmdzKQorICAgICAgICB1bmlxdWVfbmFtZXMgPSBsaXN0KHNldChbZnVuY3Rpb24u
ZnVuY3Rpb25fbmFtZSBmb3IgZnVuY3Rpb24gaW4gc2VsZi5tb2RlbCgpLmFsbF9mdW5jdGlvbnMo
KV0pKQorICAgICAgICB1bmlxdWVfbmFtZXMuc29ydCgpCisgICAgICAgIGZvciBmdW5jdGlvbl9u
YW1lIGluIHVuaXF1ZV9uYW1lczoKKyAgICAgICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSB7CisgICAg
ICAgICAgICAgICAgJ2Z1bmNOYW1lJzogZnVuY3Rpb25fbmFtZSwKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIgICAgbWFjcm8oJShmdW5jTmFtZSlzKSBcXCIgJSBm
dW5jdGlvbl9hcmdzKQorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRp
bnNfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iMjg3OGQzNjEwYmMzZDEzOTdkYzExNTgzYjRkMzliODJmNDI2ZDg4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMv
Z2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkKQEAgLTAsMCArMSw5
MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxNCwgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNCBV
bml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisj
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQg
cmUKK2ltcG9ydCBzdHJpbmcKK2Zyb20gc3RyaW5nIGltcG9ydCBUZW1wbGF0ZQorCitmcm9tIGJ1
aWx0aW5zX2dlbmVyYXRvciBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3IKK2Zyb20gYnVpbHRpbnNf
bW9kZWwgaW1wb3J0IEZyYW1ld29yaywgRnJhbWV3b3JrcworZnJvbSBidWlsdGluc190ZW1wbGF0
ZXMgaW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVzIGFzIFRlbXBsYXRlcworCitsb2cg
PSBsb2dnaW5nLmdldExvZ2dlcignZ2xvYmFsJykKKworCitjbGFzcyBCdWlsdGluc0NvbWJpbmVk
SW1wbGVtZW50YXRpb25HZW5lcmF0b3IoQnVpbHRpbnNHZW5lcmF0b3IpOgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBtb2RlbCk6CisgICAgICAgIEJ1aWx0aW5zR2VuZXJhdG9yLl9faW5pdF9fKHNl
bGYsIG1vZGVsKQorCisgICAgZGVmIG91dHB1dF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgcmV0
dXJuICIlc0J1aWx0aW5zLmNwcCIgJSBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ25h
bWVzcGFjZScpCisKKyAgICBkZWYgZ2VuZXJhdGVfb3V0cHV0KHNlbGYpOgorICAgICAgICBhcmdz
ID0geworICAgICAgICAgICAgJ25hbWVzcGFjZSc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0
dGluZygnbmFtZXNwYWNlJyksCisgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1vZGVs
KCkuZnJhbWV3b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZpeCcpLAorICAgICAgICB9CisKKyAgICAg
ICAgc2VjdGlvbnMgPSBbXQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9s
aWNlbnNlKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuRG9O
b3RFZGl0V2FybmluZykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5k
KHNlbGYuZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVu
ZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlVG9wKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAg
ICAgICBmb3IgZnVuY3Rpb24gaW4gc2VsZi5tb2RlbCgpLmFsbF9mdW5jdGlvbnMoKToKKyAgICAg
ICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2VtYmVkZGVkX2NvZGVfc3RyaW5n
X3NlY3Rpb25fZm9yX2Z1bmN0aW9uKGZ1bmN0aW9uKSkKKyAgICAgICAgaWYgc2VsZi5tb2RlbCgp
LmZyYW1ld29yayBpcyBGcmFtZXdvcmtzLkphdmFTY3JpcHRDb3JlOgorICAgICAgICAgICAgc2Vj
dGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5Db21iaW5lZEpTQ0ltcGxlbWVudGF0aW9u
U3RhdGljTWFjcm9zKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBlbGlmIHNlbGYubW9kZWwo
KS5mcmFtZXdvcmsgaXMgRnJhbWV3b3Jrcy5XZWJDb3JlOgorICAgICAgICAgICAgc2VjdGlvbnMu
YXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5Db21iaW5lZFdlYkNvcmVJbXBsZW1lbnRhdGlvblN0
YXRpY01hY3Jvcykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRl
bXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VCb3R0b20pLnN1YnN0aXR1dGUoYXJncykpCisKKyAg
ICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNlY3Rpb25zKQorCisgICAgZGVmIGdlbmVyYXRlX2hl
YWRlcl9pbmNsdWRlcyhzZWxmKToKKyAgICAgICAgaGVhZGVyX2luY2x1ZGVzID0gWworICAgICAg
ICAgICAgKFsiSmF2YVNjcmlwdENvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRD
b3JlIiwgImJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIiksCisgICAgICAgICAgICApLAor
ICAgICAgICAgICAgKFsiSmF2YVNjcmlwdENvcmUiLCAiV2ViQ29yZSJdLAorICAgICAgICAgICAg
ICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9FeGVjdXRhYmxlLmgiKSwKKyAgICAgICAg
ICAgICksCisgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZSIsICJXZWJDb3JlIl0sCisgICAg
ICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL0pTQ2VsbElubGluZXMuaCIp
LAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAg
ICAgICAoIkphdmFTY3JpcHRDb3JlIiwgInJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIiksCisg
ICAgICAgICAgICApLAorICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAg
ICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIiksCisgICAg
ICAgICAgICApLAorICAgICAgICAgICAgKFsiSmF2YVNjcmlwdENvcmUiLCAiV2ViQ29yZSJdLAor
ICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9WTS5oIiksCisgICAg
ICAgICAgICApLAorICAgICAgICBdCisKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihzZWxmLmdl
bmVyYXRlX2luY2x1ZGVzX2Zyb21fZW50cmllcyhoZWFkZXJfaW5jbHVkZXMpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRp
bnNfc2VwYXJhdGVfaGVhZGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVp
bHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaGVhZGVyLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2
M2YzNmIyMzViNTRiN2E1YjA2Mjk0NWNjZTlhNTkyMzQ2YzJmZjcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGlu
c19zZXBhcmF0ZV9oZWFkZXIucHkKQEAgLTAsMCArMSwxNzUgQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisj
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHJlCitpbXBvcnQgc3RyaW5nCitmcm9t
IHN0cmluZyBpbXBvcnQgVGVtcGxhdGUKKworZnJvbSBidWlsdGluc19nZW5lcmF0b3IgaW1wb3J0
IEJ1aWx0aW5zR2VuZXJhdG9yCitmcm9tIGJ1aWx0aW5zX3RlbXBsYXRlcyBpbXBvcnQgQnVpbHRp
bnNHZW5lcmF0b3JUZW1wbGF0ZXMgYXMgVGVtcGxhdGVzCisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9n
Z2VyKCdnbG9iYWwnKQorCisKK2NsYXNzIEJ1aWx0aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0b3Io
QnVpbHRpbnNHZW5lcmF0b3IpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCwgb2JqZWN0
KToKKyAgICAgICAgQnVpbHRpbnNHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWwpCisgICAg
ICAgIHNlbGYub2JqZWN0ID0gb2JqZWN0CisKKyAgICBkZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYp
OgorICAgICAgICByZXR1cm4gIiVzQnVpbHRpbnMuaCIgJSBzZWxmLm9iamVjdC5vYmplY3RfbmFt
ZQorCisgICAgZGVmIG1hY3JvX3ByZWZpeChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYubW9k
ZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbWFjcm9fcHJlZml4JykKKworICAgIGRlZiBnZW5lcmF0
ZV9vdXRwdXQoc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbmFtZXNwYWNl
Jzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCduYW1lc3BhY2UnKSwKKyAgICAgICAg
ICAgICdoZWFkZXJHdWFyZCc6IHNlbGYub3V0cHV0X2ZpbGVuYW1lKCkucmVwbGFjZSgnLicsICdf
JyksCisgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1hY3JvX3ByZWZpeCgpLAorICAg
ICAgICAgICAgJ29iamVjdE5hbWUnOiBzZWxmLm9iamVjdC5vYmplY3RfbmFtZS51cHBlcigpLAor
ICAgICAgICB9CisKKyAgICAgICAgc2VjdGlvbnMgPSBbXQorICAgICAgICBzZWN0aW9ucy5hcHBl
bmQoc2VsZi5nZW5lcmF0ZV9saWNlbnNlKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1w
bGF0ZShUZW1wbGF0ZXMuRG9Ob3RFZGl0V2FybmluZykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAg
ICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5IZWFkZXJJbmNsdWRlR3VhcmRU
b3ApLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVy
YXRlX2hlYWRlcl9pbmNsdWRlcygpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5l
cmF0ZV9mb3J3YXJkX2RlY2xhcmF0aW9ucygpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVt
cGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZVRvcCkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAg
c2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfc2VjdGlvbl9mb3Jfb2JqZWN0KHNlbGYub2Jq
ZWN0KSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfc2VjdGlvbl9mb3Jf
Y29kZV90YWJsZV9tYWNybygpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0
ZV9zZWN0aW9uX2Zvcl9jb2RlX25hbWVfbWFjcm8oKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5k
KFRlbXBsYXRlKFRlbXBsYXRlcy5TZXBhcmF0ZUhlYWRlclN0YXRpY01hY3Jvcykuc3Vic3RpdHV0
ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1l
c3BhY2VCb3R0b20pLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChU
ZW1wbGF0ZShUZW1wbGF0ZXMuSGVhZGVySW5jbHVkZUd1YXJkQm90dG9tKS5zdWJzdGl0dXRlKGFy
Z3MpKQorCisgICAgICAgIHJldHVybiAiXG5cbiIuam9pbihzZWN0aW9ucykKKworICAgIGRlZiBn
ZW5lcmF0ZV9mb3J3YXJkX2RlY2xhcmF0aW9ucyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIiIm5h
bWVzcGFjZSBKU0MgeworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOworfSIiIgorCisgICAgZGVm
IGdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcyhzZWxmKToKKyAgICAgICAgaGVhZGVyX2luY2x1ZGVz
ID0gWworICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNj
cmlwdENvcmUiLCAiYnVpbHRpbnMvQnVpbHRpblV0aWxzLmgiKSwKKyAgICAgICAgICAgICksCisg
ICAgICAgIF0KKworICAgICAgICByZXR1cm4gJ1xuJy5qb2luKHNlbGYuZ2VuZXJhdGVfaW5jbHVk
ZXNfZnJvbV9lbnRyaWVzKGhlYWRlcl9pbmNsdWRlcykpCisKKyAgICBkZWYgZ2VuZXJhdGVfc2Vj
dGlvbl9mb3Jfb2JqZWN0KHNlbGYsIG9iamVjdCk6CisgICAgICAgIGxpbmVzID0gW10KKyAgICAg
ICAgbGluZXMuYXBwZW5kKCcvKiAlcyAqLycgJSBvYmplY3Qub2JqZWN0X25hbWUpCisgICAgICAg
IGxpbmVzLmV4dGVuZChzZWxmLmdlbmVyYXRlX2V4dGVybnNfZm9yX29iamVjdChvYmplY3QpKQor
ICAgICAgICBsaW5lcy5hcHBlbmQoIiIpCisgICAgICAgIGxpbmVzLmV4dGVuZChzZWxmLmdlbmVy
YXRlX21hY3Jvc19mb3Jfb2JqZWN0KG9iamVjdCkpCisgICAgICAgIGxpbmVzLmFwcGVuZCgiIikK
KyAgICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2VuZXJhdGVfZGVmaW5lc19mb3Jfb2JqZWN0KG9i
amVjdCkpCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCisKKyAgICBkZWYgZ2VuZXJh
dGVfZXh0ZXJuc19mb3Jfb2JqZWN0KHNlbGYsIG9iamVjdCk6CisgICAgICAgIGxpbmVzID0gW10K
KworICAgICAgICBmb3IgZnVuY3Rpb24gaW4gb2JqZWN0LmZ1bmN0aW9uczoKKyAgICAgICAgICAg
IGZ1bmN0aW9uX2FyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ2NvZGVOYW1lJzogQnVpbHRpbnNH
ZW5lcmF0b3IubWFuZ2xlZE5hbWVGb3JGdW5jdGlvbihmdW5jdGlvbikgKyAnQ29kZScsCisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiIiJleHRlcm4gY29uc3QgY2hh
ciogc18lKGNvZGVOYW1lKXM7CitleHRlcm4gY29uc3QgaW50IHNfJShjb2RlTmFtZSlzTGVuZ3Ro
OworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzXyUoY29kZU5hbWUpc0NvbnN0
cnVjdEFiaWxpdHk7IiIiICUgZnVuY3Rpb25fYXJncykKKworICAgICAgICByZXR1cm4gbGluZXMK
KworICAgIGRlZiBnZW5lcmF0ZV9tYWNyb3NfZm9yX29iamVjdChzZWxmLCBvYmplY3QpOgorICAg
ICAgICBhcmdzID0geworICAgICAgICAgICAgJ21hY3JvUHJlZml4Jzogc2VsZi5tYWNyb19wcmVm
aXgoKSwKKyAgICAgICAgICAgICdvYmplY3RNYWNybyc6IG9iamVjdC5vYmplY3RfbmFtZS5yZXBs
YWNlKCcuJywgJ18nKS51cHBlcigpLAorICAgICAgICB9CisKKyAgICAgICAgbGluZXMgPSBbXQor
ICAgICAgICBsaW5lcy5hcHBlbmQoIiNkZWZpbmUgJShtYWNyb1ByZWZpeClzX0ZPUkVBQ0hfJShv
YmplY3RNYWNybylzX0JVSUxUSU5fREFUQShtYWNybykgXFwiICUgYXJncykKKyAgICAgICAgZm9y
IGZ1bmN0aW9uIGluIG9iamVjdC5mdW5jdGlvbnM6CisgICAgICAgICAgICBmdW5jdGlvbl9hcmdz
ID0geworICAgICAgICAgICAgICAgICdmdW5jTmFtZSc6IGZ1bmN0aW9uLmZ1bmN0aW9uX25hbWUs
CisgICAgICAgICAgICAgICAgJ21hbmdsZWROYW1lJzogQnVpbHRpbnNHZW5lcmF0b3IubWFuZ2xl
ZE5hbWVGb3JGdW5jdGlvbihmdW5jdGlvbiksCisgICAgICAgICAgICAgICAgJ3BhcmFtQ291bnQn
OiBsZW4oZnVuY3Rpb24ucGFyYW1ldGVycyksCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGxpbmVzLmFwcGVuZCgiICAgIG1hY3JvKCUoZnVuY05hbWUpcywgJShtYW5nbGVkTmFtZSlzLCAl
KHBhcmFtQ291bnQpZCkgXFwiICUgZnVuY3Rpb25fYXJncykKKyAgICAgICAgcmV0dXJuIGxpbmVz
CisKKyAgICBkZWYgZ2VuZXJhdGVfZGVmaW5lc19mb3Jfb2JqZWN0KHNlbGYsIG9iamVjdCk6Cisg
ICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgZm9yIGZ1bmN0aW9uIGluIG9iamVjdC5mdW5jdGlv
bnM6CisgICAgICAgICAgICBhcmdzID0geworICAgICAgICAgICAgICAgICdtYWNyb1ByZWZpeCc6
IHNlbGYubWFjcm9fcHJlZml4KCksCisgICAgICAgICAgICAgICAgJ29iamVjdE1hY3JvJzogb2Jq
ZWN0Lm9iamVjdF9uYW1lLnJlcGxhY2UoJy4nLCAnXycpLnVwcGVyKCksCisgICAgICAgICAgICAg
ICAgJ2Z1bmN0aW9uTWFjcm8nOiBmdW5jdGlvbi5mdW5jdGlvbl9uYW1lLnVwcGVyKCksCisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiNkZWZpbmUgJShtYWNyb1ByZWZp
eClzX0JVSUxUSU5fJShvYmplY3RNYWNybylzXyUoZnVuY3Rpb25NYWNybylzIDEiICUgYXJncykK
KworICAgICAgICByZXR1cm4gbGluZXMKKworICAgIGRlZiBnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9j
b2RlX3RhYmxlX21hY3JvKHNlbGYpOgorICAgICAgICBhcmdzID0geworICAgICAgICAgICAgJ21h
Y3JvUHJlZml4Jzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdtYWNyb19wcmVmaXgn
KSwKKyAgICAgICAgICAgICdvYmplY3RNYWNybyc6IHNlbGYub2JqZWN0Lm9iamVjdF9uYW1lLnVw
cGVyKCksCisgICAgICAgIH0KKworICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFw
cGVuZCgiI2RlZmluZSAlKG1hY3JvUHJlZml4KXNfRk9SRUFDSF8lKG9iamVjdE1hY3JvKXNfQlVJ
TFRJTl9DT0RFKG1hY3JvKSBcXCIgJSBhcmdzKQorICAgICAgICBmb3IgZnVuY3Rpb24gaW4gc2Vs
Zi5vYmplY3QuZnVuY3Rpb25zOgorICAgICAgICAgICAgZnVuY3Rpb25fYXJncyA9IHsKKyAgICAg
ICAgICAgICAgICAnZnVuY05hbWUnOiBmdW5jdGlvbi5mdW5jdGlvbl9uYW1lLAorICAgICAgICAg
ICAgICAgICdjb2RlTmFtZSc6IEJ1aWx0aW5zR2VuZXJhdG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rp
b24oZnVuY3Rpb24pICsgJ0NvZGUnLAorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsaW5l
cy5hcHBlbmQoIiAgICBtYWNybyglKGNvZGVOYW1lKXMsICUoZnVuY05hbWUpcywgc18lKGNvZGVO
YW1lKXNMZW5ndGgpIFxcIiAlIGZ1bmN0aW9uX2FyZ3MpCisgICAgICAgIHJldHVybiAnXG4nLmpv
aW4obGluZXMpCisKKyAgICBkZWYgZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV9uYW1lX21hY3Jv
KHNlbGYpOgorICAgICAgICBhcmdzID0geworICAgICAgICAgICAgJ21hY3JvUHJlZml4Jzogc2Vs
Zi5tYWNyb19wcmVmaXgoKSwKKyAgICAgICAgICAgICdvYmplY3RNYWNybyc6IHNlbGYub2JqZWN0
Lm9iamVjdF9uYW1lLnVwcGVyKCksCisgICAgICAgIH0KKworICAgICAgICBsaW5lcyA9IFtdCisg
ICAgICAgIGxpbmVzLmFwcGVuZCgiI2RlZmluZSAlKG1hY3JvUHJlZml4KXNfRk9SRUFDSF8lKG9i
amVjdE1hY3JvKXNfQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcXCIgJSBhcmdzKQorICAg
ICAgICB1bmlxdWVfbmFtZXMgPSBsaXN0KHNldChbZnVuY3Rpb24uZnVuY3Rpb25fbmFtZSBmb3Ig
ZnVuY3Rpb24gaW4gc2VsZi5vYmplY3QuZnVuY3Rpb25zXSkpCisgICAgICAgIHVuaXF1ZV9uYW1l
cy5zb3J0KCkKKyAgICAgICAgZm9yIGZ1bmN0aW9uX25hbWUgaW4gdW5pcXVlX25hbWVzOgorICAg
ICAgICAgICAgZnVuY3Rpb25fYXJncyA9IHsKKyAgICAgICAgICAgICAgICAnZnVuY05hbWUnOiBm
dW5jdGlvbl9uYW1lLAorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQo
IiAgICBtYWNybyglKGZ1bmNOYW1lKXMpIFxcIiAlIGZ1bmN0aW9uX2FyZ3MpCisgICAgICAgIHJl
dHVybiAnXG4nLmpvaW4obGluZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9pbXBsZW1lbnRhdGlv
bi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2dlbmVyYXRlX2J1
aWx0aW5zX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3N2QxMmUzNzg1
ZTMyYTg5NmIzNTFkMjFjOWM4MGQ5YzY2ZmM2ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0
ZV9pbXBsZW1lbnRhdGlvbi5weQpAQCAtMCwwICsxLDk5IEBACisjIS91c3IvYmluL2VudiBweXRo
b24KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCByZQoraW1wb3J0IHN0cmluZworZnJvbSBz
dHJpbmcgaW1wb3J0IFRlbXBsYXRlCisKK2Zyb20gYnVpbHRpbnNfZ2VuZXJhdG9yIGltcG9ydCBC
dWlsdGluc0dlbmVyYXRvciwgV0tfbGNmaXJzdAorZnJvbSBidWlsdGluc19tb2RlbCBpbXBvcnQg
RnJhbWV3b3JrLCBGcmFtZXdvcmtzCitmcm9tIGJ1aWx0aW5zX3RlbXBsYXRlcyBpbXBvcnQgQnVp
bHRpbnNHZW5lcmF0b3JUZW1wbGF0ZXMgYXMgVGVtcGxhdGVzCisKK2xvZyA9IGxvZ2dpbmcuZ2V0
TG9nZ2VyKCdnbG9iYWwnKQorCisKK2NsYXNzIEJ1aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlv
bkdlbmVyYXRvcihCdWlsdGluc0dlbmVyYXRvcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1v
ZGVsLCBvYmplY3QpOgorICAgICAgICBCdWlsdGluc0dlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBt
b2RlbCkKKyAgICAgICAgc2VsZi5vYmplY3QgPSBvYmplY3QKKworICAgIGRlZiBvdXRwdXRfZmls
ZW5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiAiJXNCdWlsdGlucy5jcHAiICUgc2VsZi5vYmpl
Y3Qub2JqZWN0X25hbWUKKworICAgIGRlZiBtYWNyb19wcmVmaXgoc2VsZik6CisgICAgICAgIHJl
dHVybiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZpeCcpCisKKyAg
ICBkZWYgZ2VuZXJhdGVfb3V0cHV0KHNlbGYpOgorICAgICAgICBhcmdzID0geworICAgICAgICAg
ICAgJ25hbWVzcGFjZSc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNl
JyksCisgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1hY3JvX3ByZWZpeCgpLAorICAg
ICAgICAgICAgJ29iamVjdE1hY3JvJzogc2VsZi5vYmplY3Qub2JqZWN0X25hbWUudXBwZXIoKSwK
KyAgICAgICAgICAgICdvYmplY3ROYW1lTEMnOiBXS19sY2ZpcnN0KHNlbGYub2JqZWN0Lm9iamVj
dF9uYW1lKSwKKyAgICAgICAgfQorCisgICAgICAgIHNlY3Rpb25zID0gW10KKyAgICAgICAgc2Vj
dGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfbGljZW5zZSgpKQorICAgICAgICBzZWN0aW9ucy5h
cHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkRvTm90RWRpdFdhcm5pbmcpLnN1YnN0aXR1dGUoYXJn
cykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2hlYWRlcl9pbmNsdWRl
cygpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFj
ZVRvcCkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgZm9yIGZ1bmN0aW9uIGluIHNlbGYub2Jq
ZWN0LmZ1bmN0aW9uczoKKyAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRl
X2VtYmVkZGVkX2NvZGVfc3RyaW5nX3NlY3Rpb25fZm9yX2Z1bmN0aW9uKGZ1bmN0aW9uKSkKKyAg
ICAgICAgaWYgc2VsZi5tb2RlbCgpLmZyYW1ld29yayBpcyBGcmFtZXdvcmtzLkphdmFTY3JpcHRD
b3JlOgorICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5TZXBh
cmF0ZUpTQ0ltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9zKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAg
ICAgICBlbGlmIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsgaXMgRnJhbWV3b3Jrcy5XZWJDb3JlOgor
ICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5TZXBhcmF0ZVdl
YkNvcmVJbXBsZW1lbnRhdGlvblN0YXRpY01hY3Jvcykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAg
ICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VCb3R0b20pLnN1
YnN0aXR1dGUoYXJncykpCisKKyAgICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNlY3Rpb25zKQor
CisgICAgZGVmIGdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcyhzZWxmKToKKyAgICAgICAgaGVhZGVy
X2luY2x1ZGVzID0gWworICAgICAgICAgICAgKFsiSmF2YVNjcmlwdENvcmUiXSwKKyAgICAgICAg
ICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgImJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5o
IiksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKFsiSmF2YVNjcmlwdENvcmUiLCAiV2Vi
Q29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9FeGVj
dXRhYmxlLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29y
ZSIsICJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50
aW1lL0pTQ2VsbElubGluZXMuaCIpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIChbIldl
YkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgInJ1bnRpbWUvU3Ry
dWN0dXJlSW5saW5lcy5oIiksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKFsiV2ViQ29y
ZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oIiksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKFsiSmF2YVNjcmlw
dENvcmUiLCAiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAi
cnVudGltZS9WTS5oIiksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKFsiV2ViQ29yZSJd
LAorICAgICAgICAgICAgICAgICgiV2ViQ29yZSIsICJiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGll
bnREYXRhLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAgIF0KKworICAgICAgICByZXR1cm4g
J1xuJy5qb2luKHNlbGYuZ2VuZXJhdGVfaW5jbHVkZXNfZnJvbV9lbnRyaWVzKGhlYWRlcl9pbmNs
dWRlcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlu
cy9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV93cmFwcGVyLnB5IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfd3JhcHBl
ci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43ODE0MWQ2Mjc3Y2ZkYjU0ODE5OGM4ZWY4NjkwNDc0ZjRhNjhiMWZj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRp
bnMvZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfd3JhcHBlci5weQpAQCAtMCwwICsxLDk0IEBA
CisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZl
cnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCByZQor
aW1wb3J0IHN0cmluZworZnJvbSBzdHJpbmcgaW1wb3J0IFRlbXBsYXRlCisKK2Zyb20gYnVpbHRp
bnNfZ2VuZXJhdG9yIGltcG9ydCBCdWlsdGluc0dlbmVyYXRvcgorZnJvbSBidWlsdGluc190ZW1w
bGF0ZXMgaW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVzIGFzIFRlbXBsYXRlcworCits
b2cgPSBsb2dnaW5nLmdldExvZ2dlcignZ2xvYmFsJykKKworCitjbGFzcyBCdWlsdGluc1NlcGFy
YXRlV3JhcHBlckdlbmVyYXRvcihCdWlsdGluc0dlbmVyYXRvcik6CisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIG1vZGVsLCBvYmplY3QpOgorICAgICAgICBCdWlsdGluc0dlbmVyYXRvci5fX2luaXRf
XyhzZWxmLCBtb2RlbCkKKyAgICAgICAgc2VsZi5vYmplY3QgPSBvYmplY3QKKworICAgIGRlZiBv
dXRwdXRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiAiJXNCdWlsdGluc1dyYXBwZXIu
aCIgJSBzZWxmLm9iamVjdC5vYmplY3RfbmFtZQorCisgICAgZGVmIG1hY3JvX3ByZWZpeChzZWxm
KToKKyAgICAgICAgcmV0dXJuIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbWFjcm9f
cHJlZml4JykKKworICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6CisgICAgICAgIGFyZ3Mg
PSB7CisgICAgICAgICAgICAnbmFtZXNwYWNlJzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0
aW5nKCduYW1lc3BhY2UnKSwKKyAgICAgICAgICAgICdoZWFkZXJHdWFyZCc6IHNlbGYub3V0cHV0
X2ZpbGVuYW1lKCkucmVwbGFjZSgnLicsICdfJyksCisgICAgICAgICAgICAnbWFjcm9QcmVmaXgn
OiBzZWxmLm1hY3JvX3ByZWZpeCgpLAorICAgICAgICAgICAgJ29iamVjdE5hbWUnOiBzZWxmLm9i
amVjdC5vYmplY3RfbmFtZSwKKyAgICAgICAgICAgICdvYmplY3RNYWNybyc6IHNlbGYub2JqZWN0
Lm9iamVjdF9uYW1lLnVwcGVyKCksCisgICAgICAgIH0KKworICAgICAgICBzZWN0aW9ucyA9IFtd
CisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2xpY2Vuc2UoKSkKKyAgICAg
ICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5Eb05vdEVkaXRXYXJuaW5nKS5z
dWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxh
dGVzLkhlYWRlckluY2x1ZGVHdWFyZFRvcCkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2Vj
dGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKCkpCisgICAgICAgIHNl
Y3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlVG9wKS5zdWJzdGl0dXRl
KGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLlNlcGFy
YXRlV3JhcHBlckhlYWRlckJvaWxlcnBsYXRlKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBz
ZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZUJvdHRvbSkuc3Vic3Rp
dHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5I
ZWFkZXJJbmNsdWRlR3VhcmRCb3R0b20pLnN1YnN0aXR1dGUoYXJncykpCisKKyAgICAgICAgcmV0
dXJuICJcblxuIi5qb2luKHNlY3Rpb25zKQorCisgICAgZGVmIGdlbmVyYXRlX2hlYWRlcl9pbmNs
dWRlcyhzZWxmKToKKyAgICAgICAgaGVhZGVyX2luY2x1ZGVzID0gWworICAgICAgICAgICAgKFsi
V2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiV2ViQ29yZSIsICIlc0J1aWx0aW5zLmgiICUg
c2VsZi5vYmplY3Qub2JqZWN0X25hbWUpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAgICAg
KFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAiYnl0ZWNv
ZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCIpLAorICAgICAgICAgICAgKSwKKworICAg
ICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUi
LCAiYnVpbHRpbnMvQnVpbHRpblV0aWxzLmgiKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAg
ICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgInJ1
bnRpbWUvSWRlbnRpZmllci5oIiksCisgICAgICAgICAgICApLAorCisgICAgICAgICAgICAoWyJX
ZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL0pT
RnVuY3Rpb24uaCIpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgXQorCisgICAgICAgIHJldHVy
biAnXG4nLmpvaW4oc2VsZi5nZW5lcmF0ZV9pbmNsdWRlc19mcm9tX2VudHJpZXMoaGVhZGVyX2lu
Y2x1ZGVzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVy
YXRlLWpzLWJ1aWx0aW5zLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJh
dGUtanMtYnVpbHRpbnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDcwNzA5YjQ4MDgzODhlNjc4ZjNkYjIzODJm
NDZhM2Q2MzMzOTA2ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CkBAIC0wLDAgKzEsMTY0IEBACisjIS91c3Iv
YmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2Yg
V2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKyMgVGhpcyBzY3JpcHQgZ2VuZXJhdGVzIEMrKyBiaW5kaW5ncyBm
b3IgSmF2YVNjcmlwdCBidWlsdGlucy4KKyMgR2VuZXJhdG9ycyBmb3IgaW5kaXZpZHVhbCBmaWxl
cyBhcmUgbG9jYXRlZCBpbiB0aGUgYnVpbHRpbnMvIGRpcmVjdG9yeS4KKworaW1wb3J0IGZubWF0
Y2gKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3B0cGFyc2UKK2ltcG9ydCBvcworCitsb2dnaW5n
LmJhc2ljQ29uZmlnKGZvcm1hdD0nJShsZXZlbG5hbWUpczogJShtZXNzYWdlKXMnLCBsZXZlbD1s
b2dnaW5nLkVSUk9SKQorbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcpCisKK2Zyb20g
bGF6eXdyaXRlciBpbXBvcnQgTGF6eUZpbGVXcml0ZXIKKworaW1wb3J0IGJ1aWx0aW5zCitmcm9t
IGJ1aWx0aW5zIGltcG9ydCAqCisKKworZGVmIGdlbmVyYXRlX2JpbmRpbmdzX2Zvcl9idWlsdGlu
c19maWxlcyhidWlsdGluc19maWxlcz1bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3V0cHV0X3BhdGg9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uY2F0ZW5hdGVfb3V0cHV0PUZhbHNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb21iaW5lZF9vdXRwdXQ9RmFsc2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1ld29ya19uYW1lPSIiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZV9vdXRwdXQ9RmFsc2Up
OgorCisgICAgZ2VuZXJhdG9ycyA9IFtdCisKKyAgICBtb2RlbCA9IEJ1aWx0aW5zQ29sbGVjdGlv
bihmcmFtZXdvcmtfbmFtZT1mcmFtZXdvcmtfbmFtZSkKKworICAgIGZvciBmaWxlcGF0aCBpbiBi
dWlsdGluc19maWxlczoKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVwYXRoLCAiciIpIGFzIGZpbGU6
CisgICAgICAgICAgICBmaWxlX3RleHQgPSBmaWxlLnJlYWQoKQorICAgICAgICAgICAgZmlsZV9u
YW1lID0gb3MucGF0aC5iYXNlbmFtZShmaWxlcGF0aCkKKworICAgICAgICAgICAgIyBJZiB0aGlz
IGlzIGEgdGVzdCBmaWxlLCB0aGVuIHJld3JpdGUgdGhlIGZpbGVuYW1lIHRvIHJlbW92ZSB0aGUK
KyAgICAgICAgICAgICMgdGVzdCBydW5uaW5nIG9wdGlvbnMgZW5jb2RlZCBpbnRvIHRoZSBmaWxl
bmFtZS4KKyAgICAgICAgICAgIGlmIGZpbGVfbmFtZS5zdGFydHN3aXRoKGZyYW1ld29ya19uYW1l
KToKKyAgICAgICAgICAgICAgICAoXywgb2JqZWN0X25hbWUsIF8pID0gZmlsZV9uYW1lLnNwbGl0
KCctJykKKyAgICAgICAgICAgICAgICBmaWxlX25hbWUgPSBvYmplY3RfbmFtZSArICcuanMnCisg
ICAgICAgICAgICBtb2RlbC5wYXJzZV9idWlsdGluc19maWxlKGZpbGVfbmFtZSwgZmlsZV90ZXh0
KQorCisgICAgaWYgY29tYmluZWRfb3V0cHV0OgorICAgICAgICBsb2cuZGVidWcoIlVzaW5nIGdl
bmVyYXRvciBzdHlsZTogY29tYmluZWQgZmlsZXMgZm9yIGFsbCBidWlsdGlucy4iKQorICAgICAg
ICBnZW5lcmF0b3JzLmFwcGVuZChCdWlsdGluc0NvbWJpbmVkSGVhZGVyR2VuZXJhdG9yKG1vZGVs
KSkKKyAgICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQoQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0
aW9uR2VuZXJhdG9yKG1vZGVsKSkKKyAgICBlbHNlOgorICAgICAgICBsb2cuZGVidWcoIlVzaW5n
IGdlbmVyYXRvciBzdHlsZTogc2luZ2xlIGZpbGVzIGZvciBlYWNoIGJ1aWx0aW4uIikKKyAgICAg
ICAgZm9yIG9iamVjdCBpbiBtb2RlbC5vYmplY3RzOgorICAgICAgICAgICAgZ2VuZXJhdG9ycy5h
cHBlbmQoQnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvcihtb2RlbCwgb2JqZWN0KSkKKyAg
ICAgICAgICAgIGdlbmVyYXRvcnMuYXBwZW5kKEJ1aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlv
bkdlbmVyYXRvcihtb2RlbCwgb2JqZWN0KSkKKworICAgICAgICAgICAgaWYgbW9kZWwuZnJhbWV3
b3JrIGlzIEZyYW1ld29ya3MuV2ViQ29yZToKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3JzLmFw
cGVuZChCdWlsdGluc1NlcGFyYXRlV3JhcHBlckdlbmVyYXRvcihtb2RlbCwgb2JqZWN0KSkKKwor
ICAgIGxvZy5kZWJ1ZygiIikKKyAgICBsb2cuZGVidWcoIkdlbmVyYXRpbmcgYmluZGluZ3MgZm9y
IGJ1aWx0aW5zLiIpCisKKyAgICB0ZXN0X3Jlc3VsdF9maWxlX2NvbnRlbnRzID0gW10KKworICAg
IGZvciBnZW5lcmF0b3IgaW4gZ2VuZXJhdG9yczoKKyAgICAgICAgb3V0cHV0X2ZpbGVwYXRoID0g
b3MucGF0aC5qb2luKG91dHB1dF9wYXRoLCBnZW5lcmF0b3Iub3V0cHV0X2ZpbGVuYW1lKCkpCisg
ICAgICAgIGxvZy5kZWJ1ZygiR2VuZXJhdGluZyBvdXRwdXQgZmlsZTogJXMiICUgZ2VuZXJhdG9y
Lm91dHB1dF9maWxlbmFtZSgpKQorICAgICAgICBvdXRwdXQgPSBnZW5lcmF0b3IuZ2VuZXJhdGVf
b3V0cHV0KCkKKworICAgICAgICBsb2cuZGVidWcoIi0tLSIpCisgICAgICAgIGxvZy5kZWJ1Zygi
XG4iICsgb3V0cHV0KQorICAgICAgICBsb2cuZGVidWcoIi0tLSIpCisgICAgICAgIGlmIGNvbmNh
dGVuYXRlX291dHB1dDoKKyAgICAgICAgICAgIHRlc3RfcmVzdWx0X2ZpbGVfY29udGVudHMuYXBw
ZW5kKCcjIyMgQmVnaW4gRmlsZTogJXMnICUgZ2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSgpKQor
ICAgICAgICAgICAgdGVzdF9yZXN1bHRfZmlsZV9jb250ZW50cy5hcHBlbmQob3V0cHV0KQorICAg
ICAgICAgICAgdGVzdF9yZXN1bHRfZmlsZV9jb250ZW50cy5hcHBlbmQoJyMjIyBFbmQgRmlsZTog
JXMnICUgZ2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSgpKQorICAgICAgICAgICAgdGVzdF9yZXN1
bHRfZmlsZV9jb250ZW50cy5hcHBlbmQoJycpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBs
b2cuZGVidWcoIldyaXRpbmcgZmlsZTogJXMiICUgb3V0cHV0X2ZpbGVwYXRoKQorICAgICAgICAg
ICAgb3V0cHV0X2ZpbGUgPSBMYXp5RmlsZVdyaXRlcihvdXRwdXRfZmlsZXBhdGgsIGZvcmNlX291
dHB1dCkKKyAgICAgICAgICAgIG91dHB1dF9maWxlLndyaXRlKG91dHB1dCkKKyAgICAgICAgICAg
IG91dHB1dF9maWxlLmNsb3NlKCkKKworICAgIGlmIGNvbmNhdGVuYXRlX291dHB1dDoKKyAgICAg
ICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5iYXNlbmFtZShidWlsdGluc19maWxl
c1swXSkgKyAnLXJlc3VsdCcpCisgICAgICAgIG91dHB1dF9maWxlcGF0aCA9IG9zLnBhdGguam9p
bihvdXRwdXRfcGF0aCwgZmlsZW5hbWUpCisgICAgICAgIGxvZy5kZWJ1ZygiV3JpdGluZyBmaWxl
OiAlcyIgJSBvdXRwdXRfZmlsZXBhdGgpIAorICAgICAgICBvdXRwdXRfZmlsZSA9IExhenlGaWxl
V3JpdGVyKG91dHB1dF9maWxlcGF0aCwgZm9yY2Vfb3V0cHV0KQorICAgICAgICBvdXRwdXRfZmls
ZS53cml0ZSgnXG4nLmpvaW4odGVzdF9yZXN1bHRfZmlsZV9jb250ZW50cykpCisgICAgICAgIG91
dHB1dF9maWxlLmNsb3NlKCkKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBhbGxv
d2VkX2ZyYW1ld29ya19uYW1lcyA9IFsnSmF2YVNjcmlwdENvcmUnLCAnV2ViQ29yZSddCisgICAg
Y2xpX3BhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZT0idXNhZ2U6ICVwcm9nIFtv
cHRpb25zXSBCdWlsdGluMS5qcyBbLCBCdWlsdGluMi5qcywgLi4uXSIpCisgICAgY2xpX3BhcnNl
ci5hZGRfb3B0aW9uKCItaSIsICItLWlucHV0LWRpcmVjdG9yeSIsIGhlbHA9IklmIHNwZWNpZmll
ZCwgZ2VuZXJhdGVzIGJ1aWx0aW5zIGZyb20gYWxsIEphdmFTY3JpcHQgZmlsZXMgaW4gdGhlIHNw
ZWNpZmllZCBkaXJlY3RvcnkgaW4gYWRkaXRpb24gdG8gc3BlY2lmaWMgZmlsZXMgcGFzc2VkIGFz
IGFyZ3VtZW50cy4iKQorICAgIGNsaV9wYXJzZXIuYWRkX29wdGlvbigiLW8iLCAiLS1vdXRwdXQt
ZGlyZWN0b3J5IiwgaGVscD0iRGlyZWN0b3J5IHdoZXJlIGdlbmVyYXRlZCBmaWxlcyBzaG91bGQg
YmUgd3JpdHRlbi4iKQorICAgIGNsaV9wYXJzZXIuYWRkX29wdGlvbigiLS1mcmFtZXdvcmsiLCB0
eXBlPSJjaG9pY2UiLCBjaG9pY2VzPWFsbG93ZWRfZnJhbWV3b3JrX25hbWVzLCBoZWxwPSJEZXN0
aW5hdGlvbiBmcmFtZXdvcmsgZm9yIGdlbmVyYXRlZCBmaWxlcy4iKQorICAgIGNsaV9wYXJzZXIu
YWRkX29wdGlvbigiLS1mb3JjZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IkZvcmNlIG91
dHB1dCBvZiBnZW5lcmF0ZWQgc2NyaXB0cywgZXZlbiBpZiBub3RoaW5nIGNoYW5nZWQuIikKKyAg
ICBjbGlfcGFyc2VyLmFkZF9vcHRpb24oIi0tY29tYmluZWQiLCBhY3Rpb249InN0b3JlX3RydWUi
LCBoZWxwPSJQcm9kdWNlIG9uZSAuaC8uY3BwIGZpbGUgaW5zdGVhZCBvZiBwcm9kdWNpbmcgb25l
IHBlciBidWlsdGluIG9iamVjdC4iKQorICAgIGNsaV9wYXJzZXIuYWRkX29wdGlvbigiLXYiLCAi
LS1kZWJ1ZyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IkxvZyBleHRyYSBvdXRwdXQgZm9y
IGRlYnVnZ2luZyB0aGUgZ2VuZXJhdG9yIGl0c2VsZi4iKQorICAgIGNsaV9wYXJzZXIuYWRkX29w
dGlvbigiLXQiLCAiLS10ZXN0IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iRW5hYmxlIHRl
c3QgbW9kZS4iKQorCisgICAgYXJnX29wdGlvbnMsIGFyZ192YWx1ZXMgPSBjbGlfcGFyc2VyLnBh
cnNlX2FyZ3MoKQorICAgIGlmIGxlbihhcmdfdmFsdWVzKSBpcyAwIGFuZCBub3QgYXJnX29wdGlv
bnMuaW5wdXRfZGlyZWN0b3J5OgorICAgICAgICByYWlzZSBQYXJzZUV4Y2VwdGlvbigiQXQgbGVh
c3Qgb25lIGlucHV0IGZpbGUgb3IgZGlyZWN0b3J5IGV4cGVjdGVkLiIpCisKKyAgICBpZiBub3Qg
YXJnX29wdGlvbnMub3V0cHV0X2RpcmVjdG9yeToKKyAgICAgICAgcmFpc2UgUGFyc2VFeGNlcHRp
b24oIk1pc3Npbmcgb3V0cHV0IGRpcmVjdG9yeS4iKQorCisgICAgaWYgYXJnX29wdGlvbnMuZGVi
dWc6CisgICAgICAgIGxvZy5zZXRMZXZlbChsb2dnaW5nLkRFQlVHKQorCisgICAgaW5wdXRfZmls
ZXBhdGhzID0gYXJnX3ZhbHVlc1s6XQorICAgIGlmIGFyZ19vcHRpb25zLmlucHV0X2RpcmVjdG9y
eToKKyAgICAgICAgZm9yIGZpbGVwYXRoIGluIG9zLmxpc3RkaXIoYXJnX29wdGlvbnMuaW5wdXRf
ZGlyZWN0b3J5KToKKyAgICAgICAgICAgIGlucHV0X2ZpbGVwYXRocy5hcHBlbmQob3MucGF0aC5q
b2luKGFyZ19vcHRpb25zLmlucHV0X2RpcmVjdG9yeSwgZmlsZXBhdGgpKQorCisgICAgaW5wdXRf
ZmlsZXBhdGhzID0gZmlsdGVyKGxhbWJkYSBuYW1lOiBmbm1hdGNoLmZubWF0Y2gobmFtZSwgJyou
anMnKSwgaW5wdXRfZmlsZXBhdGhzKQorCisgICAgb3B0aW9ucyA9IHsKKyAgICAgICAgJ291dHB1
dF9wYXRoJzogYXJnX29wdGlvbnMub3V0cHV0X2RpcmVjdG9yeSwKKyAgICAgICAgJ2ZyYW1ld29y
a19uYW1lJzogYXJnX29wdGlvbnMuZnJhbWV3b3JrLAorICAgICAgICAnY29tYmluZWRfb3V0cHV0
JzogYXJnX29wdGlvbnMuY29tYmluZWQsCisgICAgICAgICdmb3JjZV9vdXRwdXQnOiBhcmdfb3B0
aW9ucy5mb3JjZSwKKyAgICAgICAgJ2NvbmNhdGVuYXRlX291dHB1dCc6IGFyZ19vcHRpb25zLnRl
c3QsCisgICAgfQorCisgICAgbG9nLmRlYnVnKCJHZW5lcmF0aW5nIGNvZGUgZm9yIGJ1aWx0aW5z
LiIpCisgICAgbG9nLmRlYnVnKCJQYXJzZWQgb3B0aW9uczoiKQorICAgIGZvciBvcHRpb24sIHZh
bHVlIGluIG9wdGlvbnMuaXRlbXMoKToKKyAgICAgICAgbG9nLmRlYnVnKCIgICAgJXM6ICVzIiAl
IChvcHRpb24sIHZhbHVlKSkKKyAgICBsb2cuZGVidWcoIiIpCisgICAgbG9nLmRlYnVnKCJJbnB1
dCBmaWxlczoiKQorICAgIGZvciBmaWxlcGF0aCBpbiBpbnB1dF9maWxlcGF0aHM6CisgICAgICAg
IGxvZy5kZWJ1ZygiICAgICVzIiAlIGZpbGVwYXRoKQorICAgIGxvZy5kZWJ1ZygiIikKKworICAg
IHRyeToKKyAgICAgICAgZ2VuZXJhdGVfYmluZGluZ3NfZm9yX2J1aWx0aW5zX2ZpbGVzKGJ1aWx0
aW5zX2ZpbGVzPWlucHV0X2ZpbGVwYXRocywgKipvcHRpb25zKQorICAgIGV4Y2VwdCBQYXJzZUV4
Y2VwdGlvbiBhcyBlOgorICAgICAgICBpZiBhcmdfb3B0aW9ucy50ZXN0OgorICAgICAgICAgICAg
bG9nLmVycm9yKGUubWVzc2FnZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlICAj
IEZvcmNlIHRoZSBidWlsZCB0byBmYWlsLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvbGF6eXdyaXRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L2xhenl3cml0ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjkzYTJjNjk3Y2FjYmQ3NzQxZmU5OThlZjE5MGVi
MWNkNmYyNDUzOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL2xhenl3cml0ZXIucHkKQEAgLTAsMCArMSw1OCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
CisjCisjIENvcHlyaWdodCAoYykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBBIHdyaXRlciB0aGF0
IG9ubHkgdXBkYXRlcyBmaWxlIGlmIGl0IGFjdHVhbGx5IGNoYW5nZWQuCisKKworY2xhc3MgTGF6
eUZpbGVXcml0ZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVwYXRoLCBmb3JjZV9vdXRw
dXQpOgorICAgICAgICBzZWxmLl9maWxlcGF0aCA9IGZpbGVwYXRoCisgICAgICAgIHNlbGYuX291
dHB1dCA9ICIiCisgICAgICAgIHNlbGYuZm9yY2Vfb3V0cHV0ID0gZm9yY2Vfb3V0cHV0CisKKyAg
ICBkZWYgd3JpdGUoc2VsZiwgdGV4dCk6CisgICAgICAgIHNlbGYuX291dHB1dCArPSB0ZXh0CisK
KyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgIHRleHRfY2hhbmdlZCA9IFRydWUKKyAgICAg
ICAgc2VsZi5fb3V0cHV0ID0gc2VsZi5fb3V0cHV0LnJzdHJpcCgpICsgIlxuIgorCisgICAgICAg
IHRyeToKKyAgICAgICAgICAgIGlmIHNlbGYuZm9yY2Vfb3V0cHV0OgorICAgICAgICAgICAgICAg
IHJhaXNlCisKKyAgICAgICAgICAgIHJlYWRfZmlsZSA9IG9wZW4oc2VsZi5fZmlsZXBhdGgsICJy
IikKKyAgICAgICAgICAgIG9sZF90ZXh0ID0gcmVhZF9maWxlLnJlYWQoKQorICAgICAgICAgICAg
cmVhZF9maWxlLmNsb3NlKCkKKyAgICAgICAgICAgIHRleHRfY2hhbmdlZCA9IG9sZF90ZXh0ICE9
IHNlbGYuX291dHB1dAorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAjIElnbm9yZSwganVz
dCBvdmVyd3JpdGUgYnkgZGVmYXVsdAorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGlmIHRl
eHRfY2hhbmdlZCBvciBzZWxmLmZvcmNlX291dHB1dDoKKyAgICAgICAgICAgIG91dF9maWxlID0g
b3BlbihzZWxmLl9maWxlcGF0aCwgInciKQorICAgICAgICAgICAgb3V0X2ZpbGUud3JpdGUoc2Vs
Zi5fb3V0cHV0KQorICAgICAgICAgICAgb3V0X2ZpbGUuY2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUt
QnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVk
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmI0NWQ4MWNlYjllZDkwNjQyNTg0ZmEwYmI0NThkY2YwZGJhZGMzYTIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtQ29tYmluZWQuanMKQEAgLTAs
MCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitmdW5jdGlvbiByZWplY3RQcm9taXNlKHByb21pc2UsIHJlYXNvbikKK3sKKyAgICAi
dXNlIHN0cmljdCI7CisKKyAgICB2YXIgcmVhY3Rpb25zID0gcHJvbWlzZS5AcHJvbWlzZVJlamVj
dFJlYWN0aW9uczsKKyAgICBwcm9taXNlLkBwcm9taXNlUmVzdWx0ID0gcmVhc29uOworICAgIHBy
b21pc2UuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zID0gdW5kZWZpbmVkOworICAgIHByb21pc2Uu
QHByb21pc2VSZWplY3RSZWFjdGlvbnMgPSB1bmRlZmluZWQ7CisgICAgcHJvbWlzZS5AcHJvbWlz
ZVN0YXRlID0gQHByb21pc2VSZWplY3RlZDsKKworICAgIEBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24ucHJvbWlzZVJlamVjdGVkKHByb21pc2UsIHJlYXNvbiwgcmVhY3Rpb25zKTsKKworICAgIEB0
cmlnZ2VyUHJvbWlzZVJlYWN0aW9ucyhyZWFjdGlvbnMsIHJlYXNvbik7Cit9CisKK2Z1bmN0aW9u
IGZ1bGZpbGxQcm9taXNlKHByb21pc2UsIHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKwor
ICAgIHZhciByZWFjdGlvbnMgPSBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9uczsKKyAg
ICBwcm9taXNlLkBwcm9taXNlUmVzdWx0ID0gdmFsdWU7CisgICAgcHJvbWlzZS5AcHJvbWlzZUZ1
bGZpbGxSZWFjdGlvbnMgPSB1bmRlZmluZWQ7CisgICAgcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJl
YWN0aW9ucyA9IHVuZGVmaW5lZDsKKyAgICBwcm9taXNlLkBwcm9taXNlU3RhdGUgPSBAcHJvbWlz
ZUZ1bGZpbGxlZDsKKworICAgIEBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24ucHJvbWlzZUZ1bGZp
bGxlZChwcm9taXNlLCB2YWx1ZSwgcmVhY3Rpb25zKTsKKworICAgIEB0cmlnZ2VyUHJvbWlzZVJl
YWN0aW9ucyhyZWFjdGlvbnMsIHZhbHVlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJv
dG90eXBlLUNvbWJpbmVkLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMv
YnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTQ0OGI5ODMyYjY2YTRiZGYwZmUyYzRiZDg3MDEwZjYwYWQ3MmRmMAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5z
L0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzCkBAIC0wLDAgKzEs
NzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKworZnVuY3Rpb24gZXZlcnkoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCit7CisgICAg
InVzZSBzdHJpY3QiOworCisgICAgaWYgKHRoaXMgPT09IG51bGwpCisgICAgICAgIHRocm93IG5l
dyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wg
bm90IGJlIG51bGwiKTsKKyAgICAKKyAgICBpZiAodGhpcyA9PT0gdW5kZWZpbmVkKQorICAgICAg
ICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRo
YXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWQiKTsKKyAgICAKKyAgICB2YXIgYXJyYXkgPSBAT2Jq
ZWN0KHRoaXMpOworICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsKKwor
ICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlvbiIpCisgICAgICAgIHRocm93IG5l
dyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1
bmN0aW9uIik7CisgICAgCisgICAgdmFyIHRoaXNBcmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/
IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDsKKyAgICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghKGkgaW4gYXJyYXkpKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIGlmICghY2FsbGJhY2suQGNhbGwodGhpc0FyZywgYXJyYXlbaV0s
IGksIGFycmF5KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIGZvckVhY2goY2FsbGJhY2sgLyosIHRoaXNBcmcg
Ki8pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKHRoaXMgPT09IG51bGwpCisgICAg
ICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCByZXF1aXJl
cyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCIpOworICAgIAorICAgIGlmICh0aGlzID09PSB1bmRl
ZmluZWQpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZm9y
RWFjaCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkIik7CisgICAgCisgICAg
dmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTsKKyAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFy
cmF5Lmxlbmd0aCk7CisKKyAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQor
ICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmZvckVhY2ggY2Fs
bGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CisgICAgCisgICAgdmFyIHRoaXNBcmcgPSBhcmd1
bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDsKKyAgICAKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChpIGluIGFycmF5
KQorICAgICAgICAgICAgY2FsbGJhY2suQGNhbGwodGhpc0FyZywgYXJyYXlbaV0sIGksIGFycmF5
KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmluZWQu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2Ny
aXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmluZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWU4YzFi
NDQ5NmNjNTQ0ZjQwNzczOTUwNDJjZmQyNGU4YTM5NDY2MQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3Jl
LUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qcwpAQCAtMCwwICsxLDExMCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIG9mKC8qIGl0
ZW1zLi4uICovKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciBsZW5ndGggPSBhcmd1
bWVudHMubGVuZ3RoOworICAgIC8vIFRPRE86IE5lZWQgaXNDb25zdHJ1Y3Rvcih0aGlzKSBpbnN0
ZWFkIG9mIHR5cGVvZiAiZnVuY3Rpb24iIGNoZWNrLgorICAgIHZhciBhcnJheSA9IHR5cGVvZiB0
aGlzID09PSAnZnVuY3Rpb24nID8gbmV3IHRoaXMobGVuZ3RoKSA6IG5ldyBAQXJyYXkobGVuZ3Ro
KTsKKyAgICBmb3IgKHZhciBrID0gMDsgayA8IGxlbmd0aDsgKytrKQorICAgICAgICBAcHV0QnlW
YWxEaXJlY3QoYXJyYXksIGssIGFyZ3VtZW50c1trXSk7CisgICAgYXJyYXkubGVuZ3RoID0gbGVu
Z3RoOworICAgIHJldHVybiBhcnJheTsKK30KKworZnVuY3Rpb24gZnJvbShpdGVtcyAvKiwgbWFw
Rm4sIHRoaXNBcmcgKi8pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIHRoaXNPYmog
PSB0aGlzOworCisgICAgdmFyIG1hcEZuID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVu
dHNbMV0gOiB1bmRlZmluZWQ7CisKKyAgICB2YXIgdGhpc0FyZzsKKworICAgIGlmIChtYXBGbiAh
PT0gdW5kZWZpbmVkKSB7CisgICAgICAgIGlmICh0eXBlb2YgbWFwRm4gIT09ICJmdW5jdGlvbiIp
CisgICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkuZnJvbSByZXF1aXJlcyB0
aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQsIHdoZW4gcHJvdmlkZWQsIGJlIGEgZnVuY3Rpb24iKTsK
KworICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpCisgICAgICAgICAgICB0aGlzQXJn
ID0gYXJndW1lbnRzWzJdOworICAgIH0KKworICAgIGlmIChpdGVtcyA9PSBudWxsKQorICAgICAg
ICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkuZnJvbSByZXF1aXJlcyBhbiBhcnJheS1saWtl
IG9iamVjdCAtIG5vdCBudWxsIG9yIHVuZGVmaW5lZCIpOworCisgICAgdmFyIGl0ZXJhdG9yTWV0
aG9kID0gaXRlbXNbQHN5bWJvbEl0ZXJhdG9yXTsKKyAgICBpZiAoaXRlcmF0b3JNZXRob2QgIT0g
bnVsbCkgeworICAgICAgICBpZiAodHlwZW9mIGl0ZXJhdG9yTWV0aG9kICE9PSAiZnVuY3Rpb24i
KQorICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LmZyb20gcmVxdWlyZXMg
dGhhdCB0aGUgcHJvcGVydHkgb2YgdGhlIGZpcnN0IGFyZ3VtZW50LCBpdGVtc1tTeW1ib2wuaXRl
cmF0b3JdLCB3aGVuIGV4aXN0cywgYmUgYSBmdW5jdGlvbiIpOworCisgICAgICAgIC8vIFRPRE86
IE5lZWQgaXNDb25zdHJ1Y3Rvcih0aGlzT2JqKSBpbnN0ZWFkIG9mIHR5cGVvZiAiZnVuY3Rpb24i
IGNoZWNrLgorICAgICAgICB2YXIgcmVzdWx0ID0gKHR5cGVvZiB0aGlzT2JqID09PSAiZnVuY3Rp
b24iKSA/IEBPYmplY3QobmV3IHRoaXNPYmooKSkgOiBbXTsKKworICAgICAgICB2YXIgayA9IDA7
CisgICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yTWV0aG9kLkBjYWxsKGl0ZW1zKTsKKwor
ICAgICAgICAvLyBTaW5jZSBmb3Itb2YgbG9vcCBvbmNlIG1vcmUgbG9va3MgdXAgdGhlIEBAaXRl
cmF0b3IgcHJvcGVydHkgb2YgYSBnaXZlbiBpdGVyYWJsZSwKKyAgICAgICAgLy8gaXQgY291bGQg
YmUgb2JzZXJ2YWJsZSBpZiB0aGUgdXNlciBkZWZpbmVzIGEgZ2V0dGVyIGZvciBAQGl0ZXJhdG9y
LgorICAgICAgICAvLyBUbyBhdm9pZCB0aGlzIHNpdHVhdGlvbiwgd2UgZGVmaW5lIGEgd3JhcHBl
ciBvYmplY3QgdGhhdCBAQGl0ZXJhdG9yIGp1c3QgcmV0dXJucyBhIGdpdmVuIGl0ZXJhdG9yLgor
ICAgICAgICB2YXIgd3JhcHBlciA9IHsKKyAgICAgICAgICAgIFtAc3ltYm9sSXRlcmF0b3JdKCkg
eworICAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfTsKKworICAgICAgICBmb3IgKHZhciB2YWx1ZSBvZiB3cmFwcGVyKSB7CisgICAgICAgICAg
ICBpZiAobWFwRm4pCisgICAgICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywg
dGhpc0FyZyA9PT0gdW5kZWZpbmVkID8gbWFwRm4odmFsdWUsIGspIDogbWFwRm4uQGNhbGwodGhp
c0FyZywgdmFsdWUsIGspKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBAcHV0
QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB2YWx1ZSk7CisgICAgICAgICAgICBrICs9IDE7CisgICAg
ICAgIH0KKworICAgICAgICByZXN1bHQubGVuZ3RoID0gazsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CisKKyAgICB2YXIgYXJyYXlMaWtlID0gQE9iamVjdChpdGVtcyk7CisgICAgdmFy
IGFycmF5TGlrZUxlbmd0aCA9IEB0b0xlbmd0aChhcnJheUxpa2UubGVuZ3RoKTsKKworICAgIC8v
IFRPRE86IE5lZWQgaXNDb25zdHJ1Y3Rvcih0aGlzT2JqKSBpbnN0ZWFkIG9mIHR5cGVvZiAiZnVu
Y3Rpb24iIGNoZWNrLgorICAgIHZhciByZXN1bHQgPSAodHlwZW9mIHRoaXNPYmogPT09ICJmdW5j
dGlvbiIpID8gQE9iamVjdChuZXcgdGhpc09iaihhcnJheUxpa2VMZW5ndGgpKSA6IG5ldyBAQXJy
YXkoYXJyYXlMaWtlTGVuZ3RoKTsKKworICAgIHZhciBrID0gMDsKKyAgICB3aGlsZSAoayA8IGFy
cmF5TGlrZUxlbmd0aCkgeworICAgICAgICB2YXIgdmFsdWUgPSBhcnJheUxpa2Vba107CisgICAg
ICAgIGlmIChtYXBGbikKKyAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHRo
aXNBcmcgPT09IHVuZGVmaW5lZCA/IG1hcEZuKHZhbHVlLCBrKSA6IG1hcEZuLkBjYWxsKHRoaXNB
cmcsIHZhbHVlLCBrKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEBwdXRCeVZhbERpcmVj
dChyZXN1bHQsIGssIHZhbHVlKTsKKyAgICAgICAgayArPSAxOworICAgIH0KKworICAgIHJlc3Vs
dC5sZW5ndGggPSBhcnJheUxpa2VMZW5ndGg7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNv
cmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ2ODg3ZTdlZGNhZDZiMmE4N2VmNWU3ODI5ZDI5M2NlZjAxZTM3MjIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlu
cy9XZWJDb3JlLUd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzCkBAIC0wLDAgKzEsNjQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBAb3B0aW9uYWw9
U1RSRUFNU19BUEkKKworZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbUxvY2tlZChzdHJlYW0pCit7
CisgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjsKK30KKwor
CitmdW5jdGlvbiBjYW5jZWxSZWFkYWJsZVN0cmVhbShzdHJlYW0sIHJlYXNvbikKK3sKKyAgICAi
dXNlIHN0cmljdCI7CisKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFt
Q2xvc2VkKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgaWYgKHN0cmVh
bS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpCisgICAgICAgIHJldHVybiBQcm9t
aXNlLnJlamVjdChzdHJlYW0uQHN0b3JlZEVycm9yKTsKKyAgICBzdHJlYW0uQHF1ZXVlID0gW107
CisgICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pOworICAgIHJldHVybiBA
cHJvbWlzZUludm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsICJjYW5jZWwiLCBb
cmVhc29uXSkudGhlbihmdW5jdGlvbigpIHsgfSk7Cit9CisKKworZnVuY3Rpb24gcHJvbWlzZUlu
dm9rZU9yTm9vcChvYmplY3QsIGtleSwgYXJncykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAg
ICB0cnkgeworICAgICAgICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07CisgICAgICAgIGlmICh0
eXBlb2YgbWV0aG9kID09PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNl
LnJlc29sdmUoKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBh
cmdzKTsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpOworICAgIH0KKyAg
ICBjYXRjaChlcnJvcikgeworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpOwor
ICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3Rz
L2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRl
ZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZjVlN2IzYjg0MWQ1MTBh
MjlmNTc2Zjk0MzYwOTllOGUyNzYyNjU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxC
dWlsdGluLVNlcGFyYXRlLmpzCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBAb3B0aW9uYWw9U1RSRUFNU19BUEkKKy8vIEBp
bnRlcm5hbAorCitmdW5jdGlvbiBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKHN0cmVhbSkKK3sKKyAg
ICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiAhIXN0cmVhbS5AcmVhZGVyOworfQorCisKK2Z1
bmN0aW9uIGNhbmNlbFJlYWRhYmxlU3RyZWFtKHN0cmVhbSwgcmVhc29uKQoreworICAgICJ1c2Ug
c3RyaWN0IjsKKworICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1DbG9z
ZWQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAgICBpZiAoc3RyZWFtLkBz
dGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZCkKKyAgICAgICAgcmV0dXJuIFByb21pc2Uu
cmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpOworICAgIHN0cmVhbS5AcXVldWUgPSBbXTsKKyAg
ICBAZmluaXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7CisgICAgcmV0dXJuIEBwcm9t
aXNlSW52b2tlT3JOb29wKHN0cmVhbS5AdW5kZXJseWluZ1NvdXJjZSwgImNhbmNlbCIsIFtyZWFz
b25dKS50aGVuKGZ1bmN0aW9uKCkgeyB9KTsKK30KKworCitmdW5jdGlvbiBwcm9taXNlSW52b2tl
T3JOb29wKG9iamVjdCwga2V5LCBhcmdzKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHRy
eSB7CisgICAgICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTsKKyAgICAgICAgaWYgKHR5cGVv
ZiBtZXRob2QgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVz
b2x2ZSgpOworICAgICAgICB2YXIgcmVzdWx0ID0gbWV0aG9kLkBhcHBseShvYmplY3QsIGFyZ3Mp
OworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7CisgICAgfQorICAgIGNh
dGNoKGVycm9yKSB7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7CisgICAg
fQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGlu
LVNlcGFyYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliZGM4ZDNiN2U5YmUyOTgwYWZkZDZiNjEzOGMwNDg4
ZmViMjZhMGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMKQEAg
LTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKK2Z1bmN0aW9uIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQoc3RyZWFtKQoreworICAgInVzZSBz
dHJpY3QiOworCisgICAgcmV0dXJuICEhc3RyZWFtLkByZWFkZXI7Cit9CisKKworZnVuY3Rpb24g
Y2FuY2VsUmVhZGFibGVTdHJlYW0oc3RyZWFtLCByZWFzb24pCit7CisgICAgInVzZSBzdHJpY3Qi
OworCisgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUNsb3NlZCkKKyAg
ICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgIGlmIChzdHJlYW0uQHN0YXRlID09
PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qo
c3RyZWFtLkBzdG9yZWRFcnJvcik7CisgICAgc3RyZWFtLkBxdWV1ZSA9IFtdOworICAgIEBmaW5p
c2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTsKKyAgICByZXR1cm4gQHByb21pc2VJbnZv
a2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCAiY2FuY2VsIiwgW3JlYXNvbl0pLnRo
ZW4oZnVuY3Rpb24oKSB7IH0pOworfQorCisKK2Z1bmN0aW9uIHByb21pc2VJbnZva2VPck5vb3Ao
b2JqZWN0LCBrZXksIGFyZ3MpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdHJ5IHsKKyAg
ICAgICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldOworICAgICAgICBpZiAodHlwZW9mIG1ldGhv
ZCA9PT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7
CisgICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9iamVjdCwgYXJncyk7CisgICAg
ICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTsKKyAgICB9CisgICAgY2F0Y2goZXJy
b3IpIHsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTsKKyAgICB9Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9X
ZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGUzOTNiYzU5ODE0MjgyODdlMGYwNDMxOWRiNmU0MjAyYjU1ZTI2OAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcwpAQCAtMCwwICsxLDY1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gQG9wdGlvbmFs
PVNUUkVBTVNfQVBJCisvLyBAaW50ZXJuYWwKKworZnVuY3Rpb24geG1sQ2FzaW5nVGVzdChzdHJl
YW0pCit7CisgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjsK
K30KKworCitmdW5jdGlvbiBjc3NDYXNpbmdUZXN0KHN0cmVhbSwgcmVhc29uKQoreworICAgICJ1
c2Ugc3RyaWN0IjsKKworICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1D
bG9zZWQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAgICBpZiAoc3RyZWFt
LkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZCkKKyAgICAgICAgcmV0dXJuIFByb21p
c2UucmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpOworICAgIHN0cmVhbS5AcXVldWUgPSBbXTsK
KyAgICBAZmluaXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7CisgICAgcmV0dXJuIEBw
cm9taXNlSW52b2tlT3JOb29wKHN0cmVhbS5AdW5kZXJseWluZ1NvdXJjZSwgImNhbmNlbCIsIFty
ZWFzb25dKS50aGVuKGZ1bmN0aW9uKCkgeyB9KTsKK30KKworCitmdW5jdGlvbiB1cmxDYXNpbmdU
ZXN0KG9iamVjdCwga2V5LCBhcmdzKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHRyeSB7
CisgICAgICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTsKKyAgICAgICAgaWYgKHR5cGVvZiBt
ZXRob2QgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2
ZSgpOworICAgICAgICB2YXIgcmVzdWx0ID0gbWV0aG9kLkBhcHBseShvYmplY3QsIGFyZ3MpOwor
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7CisgICAgfQorICAgIGNhdGNo
KGVycm9yKSB7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7CisgICAgfQor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRp
bnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzLXJl
c3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVj
dGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1Db21iaW5lZC5qcy1yZXN1bHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uM2NjOGQ2ZWYwZmUxNmI5M2YyMmFmMWMzNWI2YmUyNTljNGZkNzA0NQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5z
L2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1Db21iaW5lZC5qcy1yZXN1
bHQKQEAgLTAsMCArMSwxNjggQEAKKyMjIyBCZWdpbiBGaWxlOiBKU0NCdWlsdGlucy5oCisvKgor
ICogQ29weXJpZ2h0IChjKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4uCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1
dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0
aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRl
LWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgSlNDQnVpbHRpbnNfaAorI2RlZmluZSBKU0NCdWls
dGluc19oCisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOworY2xh
c3MgVk07CisKK2VudW0gY2xhc3MgQ29uc3RydWN0QWJpbGl0eSA6IHVuc2lnbmVkOworfQorCitu
YW1lc3BhY2UgSlNDIHsKKworLyogQnVpbHRpbi5Qcm9taXNlICovCitleHRlcm4gY29uc3QgY2hh
ciogc19idWlsdGluUHJvbWlzZVJlamVjdFByb21pc2VDb2RlOworZXh0ZXJuIGNvbnN0IGludCBz
X2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlND
OjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNlQ29kZUNvbnN0
cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQ
cm9taXNlQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9t
aXNlQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWls
dGluUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHk7CisKKyNkZWZpbmUg
SlNDX0ZPUkVBQ0hfQlVJTFRJTlBST01JU0VfQlVJTFRJTl9EQVRBKG1hY3JvKSBcCisgICAgbWFj
cm8ocmVqZWN0UHJvbWlzZSwgYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNlLCAyKSBcCisgICAg
bWFjcm8oZnVsZmlsbFByb21pc2UsIGJ1aWx0aW5Qcm9taXNlRnVsZmlsbFByb21pc2UsIDIpIFwK
KworI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOUFJPTUlTRV9SRUpFQ1RQUk9NSVNFIDEKKyNk
ZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTlBST01JU0VfRlVMRklMTFBST01JU0UgMQorCisjZGVm
aW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShtYWNybykgXAorICAgIG1hY3JvKGJ1aWx0aW5Q
cm9taXNlUmVqZWN0UHJvbWlzZUNvZGUsIHJlamVjdFByb21pc2UsIHNfYnVpbHRpblByb21pc2VS
ZWplY3RQcm9taXNlQ29kZUxlbmd0aCkgXAorICAgIG1hY3JvKGJ1aWx0aW5Qcm9taXNlRnVsZmls
bFByb21pc2VDb2RlLCBmdWxmaWxsUHJvbWlzZSwgc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9t
aXNlQ29kZUxlbmd0aCkgXAorCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05f
TkFNRShtYWNybykgXAorICAgIG1hY3JvKGZ1bGZpbGxQcm9taXNlKSBcCisgICAgbWFjcm8ocmVq
ZWN0UHJvbWlzZSkgXAorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5h
bWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorICAgIEpTQzo6RnVuY3Rpb25FeGVj
dXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKworSlNDX0ZPUkVBQ0hfQlVJ
TFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlM
VElOX0dFTkVSQVRPUgorCisjZGVmaW5lIEpTQ19CVUlMVElOX0VYSVNUUyhvYmplY3QsIGZ1bmMp
IGRlZmluZWQgSlNDX0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMKKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0NCdWlsdGluc19oCisKKyMjIyBFbmQgRmlsZTogSlND
QnVpbHRpbnMuaAorCisjIyMgQmVnaW4gRmlsZTogSlNDQnVpbHRpbnMuY3BwCisvKgorICogQ29w
eXJpZ2h0IChjKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisg
KiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRp
Y2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5
IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1
aWx0aW5zLnB5CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5o
IgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJs
ZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb21p
c2VSZWplY3RQcm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxp
dHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJv
bWlzZUNvZGVMZW5ndGggPSA1NDE7Citjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0
UHJvbWlzZUNvZGUgPQorICAgIihmdW5jdGlvbiAocHJvbWlzZSwgcmVhc29uKVxuIiBcCisgICAi
e1xuIiBcCisgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAg
dmFyIHJlYWN0aW9ucyA9IHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnM7XG4iIFwKKyAg
ICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlc3VsdCA9IHJlYXNvbjtcbiIgXAorICAgIiAgICBwcm9t
aXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucyA9IHVuZGVmaW5lZDtcbiIgXAorICAgIiAgICBw
cm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25zID0gdW5kZWZpbmVkO1xuIiBcCisgICAiICAg
IHByb21pc2UuQHByb21pc2VTdGF0ZSA9IEBwcm9taXNlUmVqZWN0ZWQ7XG4iIFwKKyAgICJcbiIg
XAorICAgIiAgICBASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLnByb21pc2VSZWplY3RlZChwcm9t
aXNlLCByZWFzb24sIHJlYWN0aW9ucyk7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICBAdHJpZ2dl
clByb21pc2VSZWFjdGlvbnMocmVhY3Rpb25zLCByZWFzb24pO1xuIiBcCisgICAifSlcbiIgXAor
OworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQ
cm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5v
dENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0aW5Qcm9taXNlRnVsZmlsbFByb21pc2VDb2Rl
TGVuZ3RoID0gNTQwOworY29uc3QgY2hhciogc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNl
Q29kZSA9CisgICAiKGZ1bmN0aW9uIChwcm9taXNlLCB2YWx1ZSlcbiIgXAorICAgIntcbiIgXAor
ICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHZhciByZWFj
dGlvbnMgPSBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucztcbiIgXAorICAgIiAgICBw
cm9taXNlLkBwcm9taXNlUmVzdWx0ID0gdmFsdWU7XG4iIFwKKyAgICIgICAgcHJvbWlzZS5AcHJv
bWlzZUZ1bGZpbGxSZWFjdGlvbnMgPSB1bmRlZmluZWQ7XG4iIFwKKyAgICIgICAgcHJvbWlzZS5A
cHJvbWlzZVJlamVjdFJlYWN0aW9ucyA9IHVuZGVmaW5lZDtcbiIgXAorICAgIiAgICBwcm9taXNl
LkBwcm9taXNlU3RhdGUgPSBAcHJvbWlzZUZ1bGZpbGxlZDtcbiIgXAorICAgIlxuIiBcCisgICAi
ICAgIEBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24ucHJvbWlzZUZ1bGZpbGxlZChwcm9taXNlLCB2
YWx1ZSwgcmVhY3Rpb25zKTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIEB0cmlnZ2VyUHJvbWlz
ZVJlYWN0aW9ucyhyZWFjdGlvbnMsIHZhbHVlKTtcbiIgXAorICAgIn0pXG4iIFwKKzsKKworCisj
ZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBh
cmd1bWVudENvdW50KSBcCitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVy
YXRvcihKU0M6OlZNJiB2bSkgXAore1wKKyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVz
KCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxl
cygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyB9CitKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUoREVG
SU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgor
CisKK30gLy8gbmFtZXNwYWNlIEpTQworIyMjIEVuZCBGaWxlOiBKU0NCdWlsdGlucy5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4
cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzLXJlc3Vs
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVk
L0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzLXJlc3VsdApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lODlmMWU2NWMwMTU0ZDk0NTZjMmQ5ZTlkZmU1N2U5NTRlYTk1MTcwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
ZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMtcmVz
dWx0CkBAIC0wLDAgKzEsMTkyIEBACisjIyMgQmVnaW4gRmlsZTogSlNDQnVpbHRpbnMuaAorLyoK
KyAqIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPi4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQg
aXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8g
YnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2Vu
ZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lmbmRlZiBKU0NCdWlsdGluc19oCisjZGVmaW5lIEpT
Q0J1aWx0aW5zX2gKKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7
CitjbGFzcyBWTTsKKworZW51bSBjbGFzcyBDb25zdHJ1Y3RBYmlsaXR5IDogdW5zaWduZWQ7Cit9
CisKK25hbWVzcGFjZSBKU0MgeworCisvKiBCdWlsdGluLnByb3RvdHlwZSAqLworZXh0ZXJuIGNv
bnN0IGNoYXIqIHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZTsKK2V4dGVybiBjb25zdCBpbnQg
c19idWlsdGluUHJvdG90eXBlRXZlcnlDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29u
c3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGVDb25zdHJ1Y3RBYmlsaXR5
OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfYnVpbHRpblByb3RvdHlwZUZvckVhY2hDb2RlOworZXh0
ZXJuIGNvbnN0IGludCBzX2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZUxlbmd0aDsKK2V4dGVy
biBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvdG90eXBlRm9yRWFjaENv
ZGVDb25zdHJ1Y3RBYmlsaXR5OworCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5QUk9UT1RZ
UEVfQlVJTFRJTl9EQVRBKG1hY3JvKSBcCisgICAgbWFjcm8oZXZlcnksIGJ1aWx0aW5Qcm90b3R5
cGVFdmVyeSwgMSkgXAorICAgIG1hY3JvKGZvckVhY2gsIGJ1aWx0aW5Qcm90b3R5cGVGb3JFYWNo
LCAxKSBcCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTlBST1RPVFlQRV9FVkVSWSAxCisj
ZGVmaW5lIEpTQ19CVUlMVElOX0JVSUxUSU5QUk9UT1RZUEVfRk9SRUFDSCAxCisKKyNkZWZpbmUg
SlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKG1hY3JvKSBcCisgICAgbWFjcm8oYnVpbHRpblByb3Rv
dHlwZUV2ZXJ5Q29kZSwgZXZlcnksIHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZUxlbmd0aCkg
XAorICAgIG1hY3JvKGJ1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZSwgZm9yRWFjaCwgc19idWls
dGluUHJvdG90eXBlRm9yRWFjaENvZGVMZW5ndGgpIFwKKworI2RlZmluZSBKU0NfRk9SRUFDSF9C
VUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFwKKyAgICBtYWNybyhldmVyeSkgXAorICAgIG1h
Y3JvKGZvckVhY2gpIFwKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVO
YW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKKyAgICBKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisKK0pTQ19GT1JFQUNIX0JV
SUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJ
TFRJTl9HRU5FUkFUT1IKKworI2RlZmluZSBKU0NfQlVJTFRJTl9FWElTVFMob2JqZWN0LCBmdW5j
KSBkZWZpbmVkIEpTQ19CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNDQnVpbHRpbnNfaAorCisjIyMgRW5kIEZpbGU6IEpT
Q0J1aWx0aW5zLmgKKworIyMjIEJlZ2luIEZpbGU6IEpTQ0J1aWx0aW5zLmNwcAorLyoKKyAqIENv
cHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKGMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29t
Pi4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0
b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRp
bnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUt
anMtYnVpbHRpbnMucHkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQ0J1aWx0
aW5zLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJFeGVj
dXRhYmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGlu
UHJvdG90eXBlRXZlcnlDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0
eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29k
ZUxlbmd0aCA9IDEwMTU7Citjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGUg
PQorICAgIihmdW5jdGlvbiAoY2FsbGJhY2sgKVxuIiBcCisgICAie1xuIiBcCisgICAiICAgIFwi
dXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgaWYgKHRoaXMgPT09IG51bGwp
XG4iIFwKKyAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkucHJvdG90eXBl
LmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsXCIpO1xuIiBcCisgICAiICAg
IFxuIiBcCisgICAiICAgIGlmICh0aGlzID09PSB1bmRlZmluZWQpXG4iIFwKKyAgICIgICAgICAg
IHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRo
YXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWRcIik7XG4iIFwKKyAgICIgICAgXG4iIFwKKyAgICIg
ICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTtcbiIgXAorICAgIiAgICB2YXIgbGVuZ3RoID0g
QHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICBpZiAodHlw
ZW9mIGNhbGxiYWNrICE9PSBcImZ1bmN0aW9uXCIpXG4iIFwKKyAgICIgICAgICAgIHRocm93IG5l
dyBAVHlwZUVycm9yKFwiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBm
dW5jdGlvblwiKTtcbiIgXAorICAgIiAgICBcbiIgXAorICAgIiAgICB2YXIgdGhpc0FyZyA9IGFy
Z3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuIiBcCisgICAi
ICAgIFxuIiBcCisgICAiICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiIg
XAorICAgIiAgICAgICAgaWYgKCEoaSBpbiBhcnJheSkpXG4iIFwKKyAgICIgICAgICAgICAgICBj
b250aW51ZTtcbiIgXAorICAgIiAgICAgICAgaWYgKCFjYWxsYmFjay5AY2FsbCh0aGlzQXJnLCBh
cnJheVtpXSwgaSwgYXJyYXkpKVxuIiBcCisgICAiICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xu
IiBcCisgICAiICAgIH1cbiIgXAorICAgIiAgICBcbiIgXAorICAgIiAgICByZXR1cm4gdHJ1ZTtc
biIgXAorICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVp
bHRpblByb3RvdHlwZUZvckVhY2hDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0
QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfYnVpbHRpblByb3RvdHlwZUZv
ckVhY2hDb2RlTGVuZ3RoID0gOTExOworY29uc3QgY2hhciogc19idWlsdGluUHJvdG90eXBlRm9y
RWFjaENvZGUgPQorICAgIihmdW5jdGlvbiAoY2FsbGJhY2sgKVxuIiBcCisgICAie1xuIiBcCisg
ICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgaWYgKHRoaXMg
PT09IG51bGwpXG4iIFwKKyAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXku
cHJvdG90eXBlLmZvckVhY2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGxcIik7XG4i
IFwKKyAgICIgICAgXG4iIFwKKyAgICIgICAgaWYgKHRoaXMgPT09IHVuZGVmaW5lZClcbiIgXAor
ICAgIiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5wcm90b3R5cGUuZm9yRWFj
aCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkXCIpO1xuIiBcCisgICAiICAg
IFxuIiBcCisgICAiICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7XG4iIFwKKyAgICIgICAg
dmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpO1xuIiBcCisgICAiXG4iIFwKKyAg
ICIgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gXCJmdW5jdGlvblwiKVxuIiBcCisgICAiICAg
ICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LnByb3RvdHlwZS5mb3JFYWNoIGNhbGxi
YWNrIG11c3QgYmUgYSBmdW5jdGlvblwiKTtcbiIgXAorICAgIiAgICBcbiIgXAorICAgIiAgICB2
YXIgdGhpc0FyZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZp
bmVkO1xuIiBcCisgICAiICAgIFxuIiBcCisgICAiICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVu
Z3RoOyBpKyspIHtcbiIgXAorICAgIiAgICAgICAgaWYgKGkgaW4gYXJyYXkpXG4iIFwKKyAgICIg
ICAgICAgICAgICBjYWxsYmFjay5AY2FsbCh0aGlzQXJnLCBhcnJheVtpXSwgaSwgYXJyYXkpO1xu
IiBcCisgICAiICAgIH1cbiIgXAorICAgIn0pXG4iIFwKKzsKKworCisjZGVmaW5lIERFRklORV9C
VUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBc
CitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2
bSkgXAore1wKKyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNF
eGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMj
U291cmNlKCkpOyB9CitKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VO
RVJBVE9SKQorI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgorCisKK30gLy8gbmFtZXNw
YWNlIEpTQworIyMjIEVuZCBGaWxlOiBKU0NCdWlsdGlucy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3Jp
cHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29y
ZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmluZWQuanMtcmVzdWx0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhNTI5
ZWU5MWM2MGIxZWU4NjZlZDdhZTI0YjA3NmEzYTg4MjI2MDQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZh
U2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmluZWQuanMtcmVzdWx0CkBAIC0wLDAg
KzEsMjI0IEBACisjIyMgQmVnaW4gRmlsZTogSlNDQnVpbHRpbnMuaAorLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAq
LworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJh
dGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisK
KyNpZm5kZWYgSlNDQnVpbHRpbnNfaAorI2RlZmluZSBKU0NCdWlsdGluc19oCisKK25hbWVzcGFj
ZSBKU0MgeworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgVk07CisKK2VudW0gY2xh
c3MgQ29uc3RydWN0QWJpbGl0eSA6IHVuc2lnbmVkOworfQorCituYW1lc3BhY2UgSlNDIHsKKwor
LyogQnVpbHRpbkNvbnN0cnVjdG9yICovCitleHRlcm4gY29uc3QgY2hhciogc19idWlsdGluQ29u
c3RydWN0b3JPZkNvZGU7CitleHRlcm4gY29uc3QgaW50IHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZD
b2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5D
b25zdHJ1Y3Rvck9mQ29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19i
dWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19idWlsdGluQ29u
c3RydWN0b3JGcm9tQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxp
dHkgc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZUNvbnN0cnVjdEFiaWxpdHk7CisKKyNkZWZp
bmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTkNPTlNUUlVDVE9SX0JVSUxUSU5fREFUQShtYWNybykgXAor
ICAgIG1hY3JvKG9mLCBidWlsdGluQ29uc3RydWN0b3JPZiwgMCkgXAorICAgIG1hY3JvKGZyb20s
IGJ1aWx0aW5Db25zdHJ1Y3RvckZyb20sIDEpIFwKKworI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlM
VElOQ09OU1RSVUNUT1JfT0YgMQorI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOQ09OU1RSVUNU
T1JfRlJPTSAxCisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKG1hY3JvKSBcCisg
ICAgbWFjcm8oYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2RlLCBvZiwgc19idWlsdGluQ29uc3RydWN0
b3JPZkNvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhidWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZSwg
ZnJvbSwgc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZUxlbmd0aCkgXAorCisjZGVmaW5lIEpT
Q19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXAorICAgIG1hY3JvKGZyb20p
IFwKKyAgICBtYWNybyhvZikgXAorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1Io
Y29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorICAgIEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKworSlNDX0ZPUkVB
Q0hfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVDTEFS
RV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIEpTQ19CVUlMVElOX0VYSVNUUyhvYmplY3Qs
IGZ1bmMpIGRlZmluZWQgSlNDX0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMKKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0NCdWlsdGluc19oCisKKyMjIyBFbmQgRmls
ZTogSlNDQnVpbHRpbnMuaAorCisjIyMgQmVnaW4gRmlsZTogSlNDQnVpbHRpbnMuY3BwCisvKgor
ICogQ29weXJpZ2h0IChjKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGlj
YWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkg
dGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVp
bHRpbnMucHkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgi
CisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxl
LmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluQ29uc3Ry
dWN0b3JPZkNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5u
b3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19idWlsdGluQ29uc3RydWN0b3JPZkNvZGVMZW5ndGgg
PSA0MDQ7Citjb25zdCBjaGFyKiBzX2J1aWx0aW5Db25zdHJ1Y3Rvck9mQ29kZSA9CisgICAiKGZ1
bmN0aW9uICgpXG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwK
KyAgICJcbiIgXAorICAgIiAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiIgXAor
ICAgIiAgICAvL1xuIiBcCisgICAiICAgIHZhciBhcnJheSA9IHR5cGVvZiB0aGlzID09PSAnZnVu
Y3Rpb24nID8gbmV3IHRoaXMobGVuZ3RoKSA6IG5ldyBAQXJyYXkobGVuZ3RoKTtcbiIgXAorICAg
IiAgICBmb3IgKHZhciBrID0gMDsgayA8IGxlbmd0aDsgKytrKVxuIiBcCisgICAiICAgICAgICBA
cHV0QnlWYWxEaXJlY3QoYXJyYXksIGssIGFyZ3VtZW50c1trXSk7XG4iIFwKKyAgICIgICAgYXJy
YXkubGVuZ3RoID0gbGVuZ3RoO1xuIiBcCisgICAiICAgIHJldHVybiBhcnJheTtcbiIgXAorICAg
In0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpbkNvbnN0
cnVjdG9yRnJvbUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpD
YW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZUxl
bmd0aCA9IDI3MTA7Citjb25zdCBjaGFyKiBzX2J1aWx0aW5Db25zdHJ1Y3RvckZyb21Db2RlID0K
KyAgICIoZnVuY3Rpb24gKGl0ZW1zIClcbiIgXAorICAgIntcbiIgXAorICAgIiAgICBcInVzZSBz
dHJpY3RcIjtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHZhciB0aGlzT2JqID0gdGhpcztcbiIg
XAorICAgIlxuIiBcCisgICAiICAgIHZhciBtYXBGbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8g
YXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdmFyIHRo
aXNBcmc7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICBpZiAobWFwRm4gIT09IHVuZGVmaW5lZCkg
e1xuIiBcCisgICAiICAgICAgICBpZiAodHlwZW9mIG1hcEZuICE9PSBcImZ1bmN0aW9uXCIpXG4i
IFwKKyAgICIgICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LmZyb20gcmVx
dWlyZXMgdGhhdCB0aGUgc2Vjb25kIGFyZ3VtZW50LCB3aGVuIHByb3ZpZGVkLCBiZSBhIGZ1bmN0
aW9uXCIpO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3Ro
ID4gMilcbiIgXAorICAgIiAgICAgICAgICAgIHRoaXNBcmcgPSBhcmd1bWVudHNbMl07XG4iIFwK
KyAgICIgICAgfVxuIiBcCisgICAiXG4iIFwKKyAgICIgICAgaWYgKGl0ZW1zID09IG51bGwpXG4i
IFwKKyAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkuZnJvbSByZXF1aXJl
cyBhbiBhcnJheS1saWtlIG9iamVjdCAtIG5vdCBudWxsIG9yIHVuZGVmaW5lZFwiKTtcbiIgXAor
ICAgIlxuIiBcCisgICAiICAgIHZhciBpdGVyYXRvck1ldGhvZCA9IGl0ZW1zW0BzeW1ib2xJdGVy
YXRvcl07XG4iIFwKKyAgICIgICAgaWYgKGl0ZXJhdG9yTWV0aG9kICE9IG51bGwpIHtcbiIgXAor
ICAgIiAgICAgICAgaWYgKHR5cGVvZiBpdGVyYXRvck1ldGhvZCAhPT0gXCJmdW5jdGlvblwiKVxu
IiBcCisgICAiICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5mcm9tIHJl
cXVpcmVzIHRoYXQgdGhlIHByb3BlcnR5IG9mIHRoZSBmaXJzdCBhcmd1bWVudCwgaXRlbXNbU3lt
Ym9sLml0ZXJhdG9yXSwgd2hlbiBleGlzdHMsIGJlIGEgZnVuY3Rpb25cIik7XG4iIFwKKyAgICJc
biIgXAorICAgIiAgICAgICAgLy9cbiIgXAorICAgIiAgICAgICAgdmFyIHJlc3VsdCA9ICh0eXBl
b2YgdGhpc09iaiA9PT0gXCJmdW5jdGlvblwiKSA/IEBPYmplY3QobmV3IHRoaXNPYmooKSkgOiBb
XTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgICAgICB2YXIgayA9IDA7XG4iIFwKKyAgICIgICAg
ICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yTWV0aG9kLkBjYWxsKGl0ZW1zKTtcbiIgXAorICAg
IlxuIiBcCisgICAiICAgICAgICAvL1xuIiBcCisgICAiICAgICAgICAvL1xuIiBcCisgICAiICAg
ICAgICAvL1xuIiBcCisgICAiICAgICAgICB2YXIgd3JhcHBlciA9IHtcbiIgXAorICAgIiAgICAg
ICAgICAgIFtAc3ltYm9sSXRlcmF0b3JdKCkge1xuIiBcCisgICAiICAgICAgICAgICAgICAgIHJl
dHVybiBpdGVyYXRvcjtcbiIgXAorICAgIiAgICAgICAgICAgIH1cbiIgXAorICAgIiAgICAgICAg
fTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgICAgICBmb3IgKHZhciB2YWx1ZSBvZiB3cmFwcGVy
KSB7XG4iIFwKKyAgICIgICAgICAgICAgICBpZiAobWFwRm4pXG4iIFwKKyAgICIgICAgICAgICAg
ICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywgdGhpc0FyZyA9PT0gdW5kZWZpbmVkID8g
bWFwRm4odmFsdWUsIGspIDogbWFwRm4uQGNhbGwodGhpc0FyZywgdmFsdWUsIGspKTtcbiIgXAor
ICAgIiAgICAgICAgICAgIGVsc2VcbiIgXAorICAgIiAgICAgICAgICAgICAgICBAcHV0QnlWYWxE
aXJlY3QocmVzdWx0LCBrLCB2YWx1ZSk7XG4iIFwKKyAgICIgICAgICAgICAgICBrICs9IDE7XG4i
IFwKKyAgICIgICAgICAgIH1cbiIgXAorICAgIlxuIiBcCisgICAiICAgICAgICByZXN1bHQubGVu
Z3RoID0gaztcbiIgXAorICAgIiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiIgXAorICAgIiAgICB9
XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICB2YXIgYXJyYXlMaWtlID0gQE9iamVjdChpdGVtcyk7
XG4iIFwKKyAgICIgICAgdmFyIGFycmF5TGlrZUxlbmd0aCA9IEB0b0xlbmd0aChhcnJheUxpa2Uu
bGVuZ3RoKTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIC8vXG4iIFwKKyAgICIgICAgdmFyIHJl
c3VsdCA9ICh0eXBlb2YgdGhpc09iaiA9PT0gXCJmdW5jdGlvblwiKSA/IEBPYmplY3QobmV3IHRo
aXNPYmooYXJyYXlMaWtlTGVuZ3RoKSkgOiBuZXcgQEFycmF5KGFycmF5TGlrZUxlbmd0aCk7XG4i
IFwKKyAgICJcbiIgXAorICAgIiAgICB2YXIgayA9IDA7XG4iIFwKKyAgICIgICAgd2hpbGUgKGsg
PCBhcnJheUxpa2VMZW5ndGgpIHtcbiIgXAorICAgIiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlM
aWtlW2tdO1xuIiBcCisgICAiICAgICAgICBpZiAobWFwRm4pXG4iIFwKKyAgICIgICAgICAgICAg
ICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB0aGlzQXJnID09PSB1bmRlZmluZWQgPyBtYXBG
bih2YWx1ZSwgaykgOiBtYXBGbi5AY2FsbCh0aGlzQXJnLCB2YWx1ZSwgaykpO1xuIiBcCisgICAi
ICAgICAgICBlbHNlXG4iIFwKKyAgICIgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0
LCBrLCB2YWx1ZSk7XG4iIFwKKyAgICIgICAgICAgIGsgKz0gMTtcbiIgXAorICAgIiAgICB9XG4i
IFwKKyAgICJcbiIgXAorICAgIiAgICByZXN1bHQubGVuZ3RoID0gYXJyYXlMaWtlTGVuZ3RoO1xu
IiBcCisgICAiICAgIHJldHVybiByZXN1bHQ7XG4iIFwKKyAgICJ9KVxuIiBcCis7CisKKworI2Rl
ZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJn
dW1lbnRDb3VudCkgXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0
b3IoSlNDOjpWTSYgdm0pIFwKK3tcCisgICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygp
LT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMo
KS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsgfQorSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklO
RV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKwor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKyMjIyBFbmQgRmlsZTogSlNDQnVpbHRpbnMuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBl
Y3RlZC9XZWJDb3JlLUd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3Vh
cmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0MzZkMmUzNWJhZWZi
NzYwNTM4ODg3N2U4NDZhNzAwYWVmODY4MTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJk
ZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMCwwICsxLDMxOCBAQAorIyMjIEJlZ2lu
IEZpbGU6IEd1YXJkZWRCdWlsdGluQnVpbHRpbnMuaAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAx
NSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBE
TyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20g
SmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYg
R3VhcmRlZEJ1aWx0aW5CdWlsdGluc19oCisjZGVmaW5lIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNf
aAorCisjaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
Ky8qIEd1YXJkZWRCdWlsdGluICovCitleHRlcm4gY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRp
bklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2d1YXJkZWRC
dWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlND
OjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2Vk
Q29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRp
bkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19ndWFyZGVkQnVp
bHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNv
bnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUNv
bnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpblByb21p
c2VJbnZva2VPck5vb3BDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2d1YXJkZWRCdWlsdGluUHJv
bWlzZUludm9rZU9yTm9vcENvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RB
YmlsaXR5IHNfZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUNvbnN0cnVjdEFi
aWxpdHk7CisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5f
REFUQShtYWNybykgXAorICAgIG1hY3JvKGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIGd1YXJkZWRC
dWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZCwgMSkgXAorICAgIG1hY3JvKGNhbmNlbFJlYWRh
YmxlU3RyZWFtLCBndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtLCAyKSBcCisgICAg
bWFjcm8ocHJvbWlzZUludm9rZU9yTm9vcCwgZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JO
b29wLCAzKSBcCisKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX0dVQVJERURCVUlMVElOX0lTUkVB
REFCTEVTVFJFQU1MT0NLRUQgMQorI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fR1VBUkRFREJVSUxU
SU5fQ0FOQ0VMUkVBREFCTEVTVFJFQU0gMQorI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fR1VBUkRF
REJVSUxUSU5fUFJPTUlTRUlOVk9LRU9STk9PUCAxCisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNI
X0dVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShtYWNybykgXAorICAgIG1hY3JvKGd1YXJkZWRC
dWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGUsIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQs
IHNfZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUxlbmd0aCkgXAorICAg
IG1hY3JvKGd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlLCBjYW5jZWxSZWFk
YWJsZVN0cmVhbSwgc19ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUxlbmd0
aCkgXAorICAgIG1hY3JvKGd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGUsIHBy
b21pc2VJbnZva2VPck5vb3AsIHNfZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29k
ZUxlbmd0aCkgXAorCisjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlM
VElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFwKKyAgICBtYWNybyhjYW5jZWxSZWFkYWJsZVN0cmVh
bSkgXAorICAgIG1hY3JvKGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQpIFwKKyAgICBtYWNybyhwcm9t
aXNlSW52b2tlT3JOb29wKSBcCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihj
b2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCisgICAgSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCitXRUJDT1JFX0ZP
UkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFU
T1IpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIFdFQkNPUkVf
QlVJTFRJTl9HVUFSREVEQlVJTFRJTl9FWElTVFMob2JqZWN0LCBmdW5jKSBkZWZpbmVkIFdFQkNP
UkVfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVuYworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zX2gKKworIyMjIEVuZCBGaWxl
OiBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmgKKworIyMjIEJlZ2luIEZpbGU6IEd1YXJkZWRCdWls
dGluQnVpbHRpbnMuY3BwCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IENhbm9uIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMg
RklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVz
IGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkd1YXJkZWRCdWlsdGluQnVpbHRpbnMuaCIKKworI2luY2x1ZGUgIldlYkNvcmVKU0Ns
aWVudERhdGEuaCIKKyNpbmNsdWRlIDxydW50aW1lL0V4ZWN1dGFibGUuaD4KKyNpbmNsdWRlIDxy
dW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NlbGxJbmxp
bmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CisjaW5jbHVkZSA8
cnVudGltZS9WTS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IEpTQzo6Q29uc3Ry
dWN0QWJpbGl0eSBzX2d1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVDb25z
dHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citj
b25zdCBpbnQgc19ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlTGVuZ3Ro
ID0gMTI3OworY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2Nr
ZWRDb2RlID0KKyAgICIoZnVuY3Rpb24gKHN0cmVhbSlcbiIgXAorICAgIntcbiIgXAorICAgIiAg
IFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgcmV0dXJuICEhc3RyZWFt
LkByZWFkZXI7XG4iIFwKKyAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJp
bGl0eSBzX2d1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlQ29uc3RydWN0QWJp
bGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50
IHNfZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGVMZW5ndGggPSA1MTQ7Citj
b25zdCBjaGFyKiBzX2d1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlID0KKyAg
ICIoZnVuY3Rpb24gKHN0cmVhbSwgcmVhc29uKVxuIiBcCisgICAie1xuIiBcCisgICAiICAgIFwi
dXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgaWYgKHN0cmVhbS5Ac3RhdGUg
PT09IEByZWFkYWJsZVN0cmVhbUNsb3NlZClcbiIgXAorICAgIiAgICAgICAgcmV0dXJuIFByb21p
c2UucmVzb2x2ZSgpO1xuIiBcCisgICAiICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFi
bGVTdHJlYW1FcnJvcmVkKVxuIiBcCisgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qo
c3RyZWFtLkBzdG9yZWRFcnJvcik7XG4iIFwKKyAgICIgICAgc3RyZWFtLkBxdWV1ZSA9IFtdO1xu
IiBcCisgICAiICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTtcbiIgXAor
ICAgIiAgICByZXR1cm4gQHByb21pc2VJbnZva2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291
cmNlLCBcImNhbmNlbFwiLCBbcmVhc29uXSkudGhlbihmdW5jdGlvbigpIHsgfSk7XG4iIFwKKyAg
ICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRCdWls
dGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19ndWFyZGVkQnVpbHRpblBy
b21pc2VJbnZva2VPck5vb3BDb2RlTGVuZ3RoID0gNDc3OworY29uc3QgY2hhciogc19ndWFyZGVk
QnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlID0KKyAgICIoZnVuY3Rpb24gKG9iamVjdCwg
a2V5LCBhcmdzKVxuIiBcCisgICAie1xuIiBcCisgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBc
CisgICAiXG4iIFwKKyAgICIgICAgdHJ5IHtcbiIgXAorICAgIiAgICAgICAgdmFyIG1ldGhvZCA9
IG9iamVjdFtrZXldO1xuIiBcCisgICAiICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gXCJ1
bmRlZmluZWRcIilcbiIgXAorICAgIiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUo
KTtcbiIgXAorICAgIiAgICAgICAgdmFyIHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBh
cmdzKTtcbiIgXAorICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xu
IiBcCisgICAiICAgIH1cbiIgXAorICAgIiAgICBjYXRjaChlcnJvcikge1xuIiBcCisgICAiICAg
ICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuIiBcCisgICAiICAgIH1cbiIgXAor
ICAgIn0pXG4iIFwKKzsKKworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2Rl
TmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCitKU0M6OkZ1bmN0aW9uRXhlY3V0
YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAore1wKKyAgICBKU1ZNQ2xp
ZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xp
ZW50RGF0YSk7IFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmd1
YXJkZWRCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBj
bGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucygpLmNv
ZGVOYW1lIyNTb3VyY2UoKSk7IFwKK30KK1dFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9C
VUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFRklORV9CVUlM
VElOX0dFTkVSQVRPUgorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyMjIyBFbmQgRmlsZTog
R3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5jcHAKKworIyMjIEJlZ2luIEZpbGU6IEd1YXJkZWRCdWls
dGluQnVpbHRpbnNXcmFwcGVyLmgKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ2Fub24gSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQg
VEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQg
ZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaWZuZGVmIEd1YXJkZWRCdWls
dGluQnVpbHRpbnNXcmFwcGVyX2gKKyNkZWZpbmUgR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBw
ZXJfaAorCisjaW5jbHVkZSAiR3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5oIgorI2luY2x1ZGUgPGJ1
aWx0aW5zL0J1aWx0aW5VdGlscy5oPgorI2luY2x1ZGUgPGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLmg+CisjaW5jbHVkZSA8cnVudGltZS9JZGVudGlmaWVyLmg+CisjaW5jbHVk
ZSA8cnVudGltZS9KU0Z1bmN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
R3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIgOiBwcml2YXRlIEpTQzo6V2Vha0hhbmRsZU93
bmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBl
cihKU0M6OlZNKiB2bSkKKyAgICAgICAgOiBtX3ZtKCp2bSkKKyAgICAgICAgV0VCQ09SRV9GT1JF
QUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX0JVSUxU
SU5fTkFNRVMpCisjZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1l
LCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKEpTQzo6bWFrZVNvdXJj
ZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFtZSwgbGVuZ3RoKSkpCisgICAg
ICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoSU5JVElBTEla
RV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VS
Q0VfTUVNQkVSUworICAgIHsKKyAgICB9CisKKyNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VU
QUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKKyAgICBKU0M6OlVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFwKKyAgICBjb25zdCBKU0M6OlNv
dXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7
IH0KKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9T
RV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVT
CisKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9O
QU1FKERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKQorCisgICAgdm9pZCBleHBv
cnROYW1lcygpOworCitwcml2YXRlOgorICAgIEpTQzo6Vk0mIG1fdm07CisKKyAgICBXRUJDT1JF
X0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJ
TFRJTl9OQU1FUykKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFt
ZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKKyAgICBKU0M6OlNvdXJjZUNvZGUgbV8jI25hbWUj
I1NvdXJjZTtcCisgICAgSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+
IG1fIyNuYW1lIyNFeGVjdXRhYmxlOworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJ
Tl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERF
Q0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworCit9OworCisjZGVmaW5lIERFRklORV9CVUlM
VElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitpbmxpbmUgSlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBw
ZXI6Om5hbWUjI0V4ZWN1dGFibGUoKSBcCit7XAorICAgIGlmICghbV8jI25hbWUjI0V4ZWN1dGFi
bGUpXAorICAgICAgICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9IEpTQzo6V2VhazxKU0M6OlVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlPihKU0M6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fdm0s
IG1fIyNuYW1lIyNTb3VyY2UsIGZ1bmN0aW9uTmFtZSMjUHVibGljTmFtZSgpLCBzXyMjbmFtZSMj
Q29uc3RydWN0QWJpbGl0eSksIHRoaXMsICZtXyMjbmFtZSMjRXhlY3V0YWJsZSk7XAorICAgIHJl
dHVybiBtXyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtcCit9CitXRUJDT1JFX0ZPUkVBQ0hfR1VB
UkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3Vu
ZGVmIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTCisKK2lubGluZSB2b2lkIEd1YXJkZWRCdWls
dGluQnVpbHRpbnNXcmFwcGVyOjpleHBvcnROYW1lcygpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5D
VElPTl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+YXBwZW5kRXh0ZXJuYWxOYW1lKG5h
bWUjI1B1YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUoKSk7CisgICAgV0VCQ09SRV9GT1JF
QUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShFWFBPUlRfRlVOQ1RJT05f
TkFNRSkKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT05fTkFNRQorfQorCitjbGFzcyBHdWFyZGVkQnVp
bHRpbkJ1aWx0aW5GdW5jdGlvbnMgeworcHVibGljOgorICAgIGV4cGxpY2l0IEd1YXJkZWRCdWls
dGluQnVpbHRpbkZ1bmN0aW9ucyhKU0M6OlZNJiB2bSkgOiBtX3ZtKHZtKSB7IH0KKworICAgIHZv
aWQgaW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CisgICAgdm9pZCB2aXNpdChKU0M6OlNsb3RW
aXNpdG9yJik7CisKK3B1YmxpYzoKKyAgICBKU0M6OlZNJiBtX3ZtOworCisjZGVmaW5lIERFQ0xB
UkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhmdW5jdGlvbk5hbWUpIFwKKyAgICBKU0M6OldyaXRl
QmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uOworICAg
IFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVD
TEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VS
Q0VfTUVNQkVSUworfTsKKworaW5saW5lIHZvaWQgR3VhcmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rp
b25zOjppbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyNkZWZpbmUg
RVhQT1JUX0ZVTkNUSU9OKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aClcCisgICAgbV8j
I2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmplY3QsIEpTQzo6SlNG
dW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKG1fdm0sIGNvZGVOYW1lIyNHZW5lcmF0b3Io
bV92bSksICZnbG9iYWxPYmplY3QpKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxU
SU5fQlVJTFRJTl9DT0RFKEVYUE9SVF9GVU5DVElPTikKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT04K
K30KKworaW5saW5lIHZvaWQgR3VhcmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zOjp2aXNpdChK
U0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworI2RlZmluZSBWSVNJVF9GVU5DVElPTihuYW1l
KSB2aXNpdG9yLmFwcGVuZCgmbV8jI25hbWUjI0Z1bmN0aW9uKTsKKyAgICBXRUJDT1JFX0ZPUkVB
Q0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKFZJU0lUX0ZVTkNUSU9OKQor
I3VuZGVmIFZJU0lUX0ZVTkNUSU9OCit9CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAorCisjIyMgRW5kIEZpbGU6
IEd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRl
ZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRJbnRlcm5h
bEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyZWQ2N2VjYTQwMGM1MzE4
NmZjZGIzNTViNWU0YmU1MzY5Y2UzZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRJ
bnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0wLDAgKzEsMzE4IEBACisjIyMg
QmVnaW4gRmlsZTogR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zLmgKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICog
CisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdl
bmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2Ny
aXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5w
eQorCisjaWZuZGVmIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc19oCisjZGVmaW5lIEd1
YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc19oCisKKyNpbmNsdWRlIDxidWlsdGlucy9CdWls
dGluVXRpbHMuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7
Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLyogR3VhcmRlZEludGVybmFsQnVpbHRpbiAq
LworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVT
dHJlYW1Mb2NrZWRDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0
aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNv
bnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxv
Y2tlZENvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfZ3VhcmRlZElu
dGVybmFsQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZTsKK2V4dGVybiBjb25zdCBpbnQg
c19ndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlTGVuZ3RoOwor
ZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0
aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0
IGNoYXIqIHNfZ3VhcmRlZEludGVybmFsQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlOwor
ZXh0ZXJuIGNvbnN0IGludCBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JO
b29wQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19ndWFy
ZGVkSW50ZXJuYWxCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVDb25zdHJ1Y3RBYmlsaXR5
OworCisjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxU
SU5fREFUQShtYWNybykgXAorICAgIG1hY3JvKGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIGd1YXJk
ZWRJbnRlcm5hbEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkLCAxKSBcCisgICAgbWFjcm8o
Y2FuY2VsUmVhZGFibGVTdHJlYW0sIGd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFkYWJs
ZVN0cmVhbSwgMikgXAorICAgIG1hY3JvKHByb21pc2VJbnZva2VPck5vb3AsIGd1YXJkZWRJbnRl
cm5hbEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wLCAzKSBcCisKKyNkZWZpbmUgV0VCQ09SRV9C
VUlMVElOX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fSVNSRUFEQUJMRVNUUkVBTUxPQ0tFRCAxCisj
ZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9HVUFSREVESU5URVJOQUxCVUlMVElOX0NBTkNFTFJFQURB
QkxFU1RSRUFNIDEKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX0dVQVJERURJTlRFUk5BTEJVSUxU
SU5fUFJPTUlTRUlOVk9LRU9STk9PUCAxCisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX0dVQVJE
RURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKG1hY3JvKSBcCisgICAgbWFjcm8oZ3VhcmRl
ZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlLCBpc1JlYWRhYmxlU3Ry
ZWFtTG9ja2VkLCBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2Vk
Q29kZUxlbmd0aCkgXAorICAgIG1hY3JvKGd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFk
YWJsZVN0cmVhbUNvZGUsIGNhbmNlbFJlYWRhYmxlU3RyZWFtLCBzX2d1YXJkZWRJbnRlcm5hbEJ1
aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhndWFyZGVk
SW50ZXJuYWxCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGUsIHByb21pc2VJbnZva2VPck5v
b3AsIHNfZ3VhcmRlZEludGVybmFsQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlTGVuZ3Ro
KSBcCisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJ
TFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcCisgICAgbWFjcm8oY2FuY2VsUmVhZGFibGVTdHJl
YW0pIFwKKyAgICBtYWNybyhpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKSBcCisgICAgbWFjcm8ocHJv
bWlzZUludm9rZU9yTm9vcCkgXAorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1Io
Y29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorICAgIEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKworV0VCQ09SRV9G
T1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJ
Tl9HRU5FUkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5l
IFdFQkNPUkVfQlVJTFRJTl9HVUFSREVESU5URVJOQUxCVUlMVElOX0VYSVNUUyhvYmplY3QsIGZ1
bmMpIGRlZmluZWQgV0VCQ09SRV9CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5C
dWlsdGluc19oCisKKyMjIyBFbmQgRmlsZTogR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5z
LmgKKworIyMjIEJlZ2luIEZpbGU6IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucy5jcHAK
Ky8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRv
bWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlu
cyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1q
cy1idWlsdGlucy5weQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3VhcmRlZElu
dGVybmFsQnVpbHRpbkJ1aWx0aW5zLmgiCisKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRh
LmgiCisjaW5jbHVkZSA8cnVudGltZS9FeGVjdXRhYmxlLmg+CisjaW5jbHVkZSA8cnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oPgor
I2luY2x1ZGUgPHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUv
Vk0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxp
dHkgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVDb25z
dHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citj
b25zdCBpbnQgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENv
ZGVMZW5ndGggPSAxMjc7Citjb25zdCBjaGFyKiBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1Jl
YWRhYmxlU3RyZWFtTG9ja2VkQ29kZSA9CisgICAiKGZ1bmN0aW9uIChzdHJlYW0pXG4iIFwKKyAg
ICJ7XG4iIFwKKyAgICIgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBcCisgICAiICAg
IHJldHVybiAhIXN0cmVhbS5AcmVhZGVyO1xuIiBcCisgICAifSlcbiIgXAorOworCitjb25zdCBK
U0M6OkNvbnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFi
bGVTdHJlYW1Db2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fu
bm90Q29uc3RydWN0OworY29uc3QgaW50IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbkNhbmNlbFJl
YWRhYmxlU3RyZWFtQ29kZUxlbmd0aCA9IDUxNDsKK2NvbnN0IGNoYXIqIHNfZ3VhcmRlZEludGVy
bmFsQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZSA9CisgICAiKGZ1bmN0aW9uIChzdHJl
YW0sIHJlYXNvbilcbiIgXAorICAgIntcbiIgXAorICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIg
XAorICAgIlxuIiBcCisgICAiICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJl
YW1DbG9zZWQpXG4iIFwKKyAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiIg
XAorICAgIiAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZClc
biIgXAorICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJy
b3IpO1xuIiBcCisgICAiICAgIHN0cmVhbS5AcXVldWUgPSBbXTtcbiIgXAorICAgIiAgICBAZmlu
aXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7XG4iIFwKKyAgICIgICAgcmV0dXJuIEBw
cm9taXNlSW52b2tlT3JOb29wKHN0cmVhbS5AdW5kZXJseWluZ1NvdXJjZSwgXCJjYW5jZWxcIiwg
W3JlYXNvbl0pLnRoZW4oZnVuY3Rpb24oKSB7IH0pO1xuIiBcCisgICAifSlcbiIgXAorOworCitj
b25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluUHJvbWlz
ZUludm9rZU9yTm9vcENvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluUHJv
bWlzZUludm9rZU9yTm9vcENvZGVMZW5ndGggPSA0Nzc7Citjb25zdCBjaGFyKiBzX2d1YXJkZWRJ
bnRlcm5hbEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZSA9CisgICAiKGZ1bmN0aW9uIChv
YmplY3QsIGtleSwgYXJncylcbiIgXAorICAgIntcbiIgXAorICAgIiAgICBcInVzZSBzdHJpY3Rc
IjtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHRyeSB7XG4iIFwKKyAgICIgICAgICAgIHZhciBt
ZXRob2QgPSBvYmplY3Rba2V5XTtcbiIgXAorICAgIiAgICAgICAgaWYgKHR5cGVvZiBtZXRob2Qg
PT09IFwidW5kZWZpbmVkXCIpXG4iIFwKKyAgICIgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5y
ZXNvbHZlKCk7XG4iIFwKKyAgICIgICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9i
amVjdCwgYXJncyk7XG4iIFwKKyAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVz
dWx0KTtcbiIgXAorICAgIiAgICB9XG4iIFwKKyAgICIgICAgY2F0Y2goZXJyb3IpIHtcbiIgXAor
ICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiIgXAorICAgIiAgICB9
XG4iIFwKKyAgICJ9KVxuIiBcCis7CisKKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFU
T1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKK3tcCisgICAg
SlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+
KHZtLmNsaWVudERhdGEpOyBcCisgICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlv
bnMoKS5ndWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJs
ZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuZ3VhcmRlZEludGVy
bmFsQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpKTsgXAorfQorV0VCQ09SRV9G
T1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElO
X0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisjIyMgRW5kIEZpbGU6IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWls
dGlucy5jcHAKKworIyMjIEJlZ2luIEZpbGU6IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlu
c1dyYXBwZXIuaAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUu
IEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IK
Ky8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgR3VhcmRlZEludGVybmFsQnVpbHRp
bkJ1aWx0aW5zV3JhcHBlcl9oCisjZGVmaW5lIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlu
c1dyYXBwZXJfaAorCisjaW5jbHVkZSAiR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zLmgi
CisjaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+CisjaW5jbHVkZSA8Ynl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0lkZW50aWZp
ZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyIDogcHJp
dmF0ZSBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgR3VhcmRl
ZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcihKU0M6OlZNKiB2bSkKKyAgICAgICAgOiBt
X3ZtKCp2bSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5f
QlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJWkVfQlVJTFRJTl9OQU1FUykKKyNkZWZpbmUg
SU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVu
Z3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UoSlNDOjptYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0
ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpKSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNI
X0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKElOSVRJQUxJWkVfQlVJTFRJTl9T
T1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMK
KyAgICB7CisgICAgfQorCisjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUs
IGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCisgICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBu
YW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CisgICAgV0VC
Q09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9TRV9C
VUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCisK
KyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0ZVTkNU
SU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCisKKyAgICB2b2lk
IGV4cG9ydE5hbWVzKCk7CisKK3ByaXZhdGU6CisgICAgSlNDOjpWTSYgbV92bTsKKworICAgIFdF
QkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFN
RShERUNMQVJFX0JVSUxUSU5fTkFNRVMpCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJD
RV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpTb3VyY2VD
b2RlIG1fIyNuYW1lIyNTb3VyY2U7XAorICAgIEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hf
R1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJD
RV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworCit9Owor
CisjZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwg
bGVuZ3RoKSBcCitpbmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogR3VhcmRl
ZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tc
CisgICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVj
dXRhYmxlID0gSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6
Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUobV92bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25O
YW1lIyNQdWJsaWNOYW1lKCksIHNfIyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1f
IyNuYW1lIyNFeGVjdXRhYmxlKTtcCisgICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdl
dCgpO1wKK30KK1dFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5f
Q09ERShERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9F
WEVDVVRBQkxFUworCitpbmxpbmUgdm9pZCBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNX
cmFwcGVyOjpleHBvcnROYW1lcygpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTl9OQU1FKG5h
bWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+YXBwZW5kRXh0ZXJuYWxOYW1lKG5hbWUjI1B1YmxpY05h
bWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUoKSk7CisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJ
TlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKEVYUE9SVF9GVU5DVElPTl9OQU1F
KQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTl9OQU1FCit9CisKK2NsYXNzIEd1YXJkZWRJbnRlcm5h
bEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBHdWFyZGVk
SW50ZXJuYWxCdWlsdGluQnVpbHRpbkZ1bmN0aW9ucyhKU0M6OlZNJiB2bSkgOiBtX3ZtKHZtKSB7
IH0KKworICAgIHZvaWQgaW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CisgICAgdm9pZCB2aXNp
dChKU0M6OlNsb3RWaXNpdG9yJik7CisKK3B1YmxpYzoKKyAgICBKU0M6OlZNJiBtX3ZtOworCisj
ZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhmdW5jdGlvbk5hbWUpIFwKKyAg
ICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5hbWUjI0Z1
bmN0aW9uOworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxU
SU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYg
REVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCit9OworCitpbmxpbmUgdm9pZCBHdWFyZGVk
SW50ZXJuYWxCdWlsdGluQnVpbHRpbkZ1bmN0aW9uczo6aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTihjb2RlTmFtZSwgZnVu
Y3Rpb25OYW1lLCBsZW5ndGgpXAorICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldCht
X3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlv
bihtX3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7CisgICAg
V0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9S
VF9GVU5DVElPTikKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT04KK30KKworaW5saW5lIHZvaWQgR3Vh
cmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisjZGVmaW5lIFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBw
ZW5kKCZtXyMjbmFtZSMjRnVuY3Rpb24pOworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5U
RVJOQUxCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShWSVNJVF9GVU5DVElPTikKKyN1bmRl
ZiBWSVNJVF9GVU5DVElPTgorfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAorCisjIyMgRW5kIEZp
bGU6IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIuaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2Vi
Q29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtVW5ndWFyZGVk
QnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTYyNWQ1NmM3MDE2ZTJjMDAz
MDk2ZjFjNzhlYTI4NDNjNTg1ZTIwMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtVW5ndWFyZGVk
QnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTAsMCArMSwzMTggQEAKKyMjIyBCZWdpbiBG
aWxlOiBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnMuaAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAx
NSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBE
TyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20g
SmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYg
VW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zX2gKKyNkZWZpbmUgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0
aW5zX2gKKworI2luY2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oPgorCituYW1lc3BhY2Ug
SlNDIHsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisvKiBVbmd1YXJkZWRCdWlsdGluICovCitleHRlcm4gY29uc3QgY2hhciogc191bmd1YXJk
ZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGU7CitleHRlcm4gY29uc3QgaW50IHNf
dW5ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlTGVuZ3RoOworZXh0ZXJu
IGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3VuZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxl
U3RyZWFtTG9ja2VkQ29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc191
bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlOworZXh0ZXJuIGNvbnN0IGlu
dCBzX3VuZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGVMZW5ndGg7CitleHRl
cm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfdW5ndWFyZGVkQnVpbHRpbkNhbmNlbFJl
YWRhYmxlU3RyZWFtQ29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc191
bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGU7CitleHRlcm4gY29uc3QgaW50
IHNfdW5ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlTGVuZ3RoOworZXh0ZXJu
IGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52
b2tlT3JOb29wQ29kZUNvbnN0cnVjdEFiaWxpdHk7CisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNI
X1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9EQVRBKG1hY3JvKSBcCisgICAgbWFjcm8oaXNSZWFk
YWJsZVN0cmVhbUxvY2tlZCwgdW5ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWQs
IDEpIFwKKyAgICBtYWNybyhjYW5jZWxSZWFkYWJsZVN0cmVhbSwgdW5ndWFyZGVkQnVpbHRpbkNh
bmNlbFJlYWRhYmxlU3RyZWFtLCAyKSBcCisgICAgbWFjcm8ocHJvbWlzZUludm9rZU9yTm9vcCwg
dW5ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3AsIDMpIFwKKworI2RlZmluZSBXRUJD
T1JFX0JVSUxUSU5fVU5HVUFSREVEQlVJTFRJTl9JU1JFQURBQkxFU1RSRUFNTE9DS0VEIDEKKyNk
ZWZpbmUgV0VCQ09SRV9CVUlMVElOX1VOR1VBUkRFREJVSUxUSU5fQ0FOQ0VMUkVBREFCTEVTVFJF
QU0gMQorI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fVU5HVUFSREVEQlVJTFRJTl9QUk9NSVNFSU5W
T0tFT1JOT09QIDEKKworI2RlZmluZSBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9C
VUlMVElOX0NPREUobWFjcm8pIFwKKyAgICBtYWNybyh1bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJs
ZVN0cmVhbUxvY2tlZENvZGUsIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIHNfdW5ndWFyZGVkQnVp
bHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8odW5ndWFy
ZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZSwgY2FuY2VsUmVhZGFibGVTdHJlYW0s
IHNfdW5ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUxlbmd0aCkgXAorICAg
IG1hY3JvKHVuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZSwgcHJvbWlzZUlu
dm9rZU9yTm9vcCwgc191bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVMZW5n
dGgpIFwKKworI2RlZmluZSBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElO
X0ZVTkNUSU9OX05BTUUobWFjcm8pIFwKKyAgICBtYWNybyhjYW5jZWxSZWFkYWJsZVN0cmVhbSkg
XAorICAgIG1hY3JvKGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQpIFwKKyAgICBtYWNybyhwcm9taXNl
SW52b2tlT3JOb29wKSBcCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2Rl
TmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCisgICAgSlNDOjpGdW5jdGlvbkV4
ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCitXRUJDT1JFX0ZPUkVB
Q0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRP
UikKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgV0VCQ09SRV9C
VUlMVElOX1VOR1VBUkRFREJVSUxUSU5fRVhJU1RTKG9iamVjdCwgZnVuYykgZGVmaW5lZCBXRUJD
T1JFX0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zX2gKKworIyMjIEVuZCBG
aWxlOiBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnMuaAorCisjIyMgQmVnaW4gRmlsZTogVW5ndWFy
ZGVkQnVpbHRpbkJ1aWx0aW5zLmNwcAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJ
VCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlw
dCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnMuaCIKKworI2luY2x1ZGUgIldl
YkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlIDxydW50aW1lL0V4ZWN1dGFibGUuaD4KKyNp
bmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9K
U0NlbGxJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+Cisj
aW5jbHVkZSA8cnVudGltZS9WTS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IEpT
Qzo6Q29uc3RydWN0QWJpbGl0eSBzX3VuZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9j
a2VkQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENv
bnN0cnVjdDsKK2NvbnN0IGludCBzX3VuZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9j
a2VkQ29kZUxlbmd0aCA9IDEyNzsKK2NvbnN0IGNoYXIqIHNfdW5ndWFyZGVkQnVpbHRpbklzUmVh
ZGFibGVTdHJlYW1Mb2NrZWRDb2RlID0KKyAgICIoZnVuY3Rpb24gKHN0cmVhbSlcbiIgXAorICAg
IntcbiIgXAorICAgIiAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAg
cmV0dXJuICEhc3RyZWFtLkByZWFkZXI7XG4iIFwKKyAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpT
Qzo6Q29uc3RydWN0QWJpbGl0eSBzX3VuZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVh
bUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25z
dHJ1Y3Q7Citjb25zdCBpbnQgc191bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1D
b2RlTGVuZ3RoID0gNTE0OworY29uc3QgY2hhciogc191bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVh
ZGFibGVTdHJlYW1Db2RlID0KKyAgICIoZnVuY3Rpb24gKHN0cmVhbSwgcmVhc29uKVxuIiBcCisg
ICAie1xuIiBcCisgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIg
ICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUNsb3NlZClcbiIgXAorICAg
IiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuIiBcCisgICAiICAgIGlmIChzdHJl
YW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKVxuIiBcCisgICAiICAgICAgICBy
ZXR1cm4gUHJvbWlzZS5yZWplY3Qoc3RyZWFtLkBzdG9yZWRFcnJvcik7XG4iIFwKKyAgICIgICAg
c3RyZWFtLkBxdWV1ZSA9IFtdO1xuIiBcCisgICAiICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVT
dHJlYW0oc3RyZWFtKTtcbiIgXAorICAgIiAgICByZXR1cm4gQHByb21pc2VJbnZva2VPck5vb3Ao
c3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCBcImNhbmNlbFwiLCBbcmVhc29uXSkudGhlbihmdW5j
dGlvbigpIHsgfSk7XG4iIFwKKyAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0
QWJpbGl0eSBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUNvbnN0cnVj
dEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0
IGludCBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUxlbmd0aCA9IDQ3
NzsKK2NvbnN0IGNoYXIqIHNfdW5ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2Rl
ID0KKyAgICIoZnVuY3Rpb24gKG9iamVjdCwga2V5LCBhcmdzKVxuIiBcCisgICAie1xuIiBcCisg
ICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdHJ5IHtcbiIg
XAorICAgIiAgICAgICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldO1xuIiBcCisgICAiICAgICAg
ICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gXCJ1bmRlZmluZWRcIilcbiIgXAorICAgIiAgICAgICAg
ICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiIgXAorICAgIiAgICAgICAgdmFyIHJlc3Vs
dCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBhcmdzKTtcbiIgXAorICAgIiAgICAgICAgcmV0dXJu
IFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xuIiBcCisgICAiICAgIH1cbiIgXAorICAgIiAgICBj
YXRjaChlcnJvcikge1xuIiBcCisgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJy
b3IpO1xuIiBcCisgICAiICAgIH1cbiIgXAorICAgIn0pXG4iIFwKKzsKKworCisjZGVmaW5lIERF
RklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENv
dW50KSBcCitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6
OlZNJiB2bSkgXAore1wKKyAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19j
YXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFwKKyAgICByZXR1cm4gY2xpZW50
RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLnVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVO
YW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMo
KS51bmd1YXJkZWRCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCkpOyBcCit9CitX
RUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxU
SU5fR0VORVJBVE9SKQorI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgorCisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKyMjIyBFbmQgRmlsZTogVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5z
LmNwcAorCisjIyMgQmVnaW4gRmlsZTogVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlci5o
CisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0
b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRp
bnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUt
anMtYnVpbHRpbnMucHkKKworI2lmbmRlZiBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVy
X2gKKyNkZWZpbmUgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9oCisKKyNpbmNsdWRl
ICJVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnMuaCIKKyNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGlu
VXRpbHMuaD4KKyNpbmNsdWRlIDxieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5o
PgorI2luY2x1ZGUgPHJ1bnRpbWUvSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNG
dW5jdGlvbi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFVuZ3VhcmRlZEJ1aWx0
aW5CdWlsdGluc1dyYXBwZXIgOiBwcml2YXRlIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyKEpTQzo6Vk0q
IHZtKQorICAgICAgICA6IG1fdm0oKnZtKQorICAgICAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFS
REVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElaRV9CVUlMVElOX05BTUVT
KQorI2RlZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rp
b25OYW1lLCBsZW5ndGgpICwgbV8jI25hbWUjI1NvdXJjZShKU0M6Om1ha2VTb3VyY2UoU3RyaW5n
SW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc18jI25hbWUsIGxlbmd0aCkpKQorICAgICAgICBXRUJD
T1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoSU5JVElBTElaRV9CVUlM
VElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVN
QkVSUworICAgIHsKKyAgICB9CisKKyNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMo
bmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKKyAgICBKU0M6OlVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFwKKyAgICBjb25zdCBKU0M6OlNvdXJjZUNv
ZGUmIG5hbWUjI1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KKyAg
ICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoRVhQT1NFX0JV
SUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMKKwor
ICAgIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFN
RShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUikKKworICAgIHZvaWQgZXhwb3J0
TmFtZXMoKTsKKworcHJpdmF0ZToKKyAgICBKU0M6OlZNJiBtX3ZtOworCisgICAgV0VCQ09SRV9G
T1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJ
TFRJTl9OQU1FUykKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFt
ZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKKyAgICBKU0M6OlNvdXJjZUNvZGUgbV8jI25hbWUj
I1NvdXJjZTtcCisgICAgSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+
IG1fIyNuYW1lIyNFeGVjdXRhYmxlOworICAgIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlM
VElOX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYg
REVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCisKK307CisKKyNkZWZpbmUgREVGSU5FX0JV
SUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKK2lubGluZSBK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNX
cmFwcGVyOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAore1wKKyAgICBpZiAoIW1fIyNuYW1lIyNFeGVj
dXRhYmxlKVwKKyAgICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUgPSBKU0M6OldlYWs8SlNDOjpV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4oSlNDOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSht
X3ZtLCBtXyMjbmFtZSMjU291cmNlLCBmdW5jdGlvbk5hbWUjI1B1YmxpY05hbWUoKSwgc18jI25h
bWUjI0NvbnN0cnVjdEFiaWxpdHkpLCB0aGlzLCAmbV8jI25hbWUjI0V4ZWN1dGFibGUpO1wKKyAg
ICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7XAorfQorV0VCQ09SRV9GT1JFQUNI
X1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVT
KQorI3VuZGVmIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTCisKK2lubGluZSB2b2lkIFVuZ3Vh
cmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXI6OmV4cG9ydE5hbWVzKCkKK3sKKyNkZWZpbmUgRVhQ
T1JUX0ZVTkNUSU9OX05BTUUobmFtZSkgbV92bS5wcm9wZXJ0eU5hbWVzLT5hcHBlbmRFeHRlcm5h
bE5hbWUobmFtZSMjUHVibGljTmFtZSgpLCBuYW1lIyNQcml2YXRlTmFtZSgpKTsKKyAgICBXRUJD
T1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoRVhQT1JU
X0ZVTkNUSU9OX05BTUUpCisjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OX05BTUUKK30KKworY2xhc3Mg
VW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnMgeworcHVibGljOgorICAgIGV4cGxpY2l0
IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zKEpTQzo6Vk0mIHZtKSA6IG1fdm0odm0p
IHsgfQorCisgICAgdm9pZCBpbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKKyAgICB2b2lkIHZp
c2l0KEpTQzo6U2xvdFZpc2l0b3ImKTsKKworcHVibGljOgorICAgIEpTQzo6Vk0mIG1fdm07CisK
KyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKGZ1bmN0aW9uTmFtZSkgXAor
ICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNGdW5jdGlvbj4gbV8jI2Z1bmN0aW9uTmFtZSMj
RnVuY3Rpb247CisgICAgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9G
VU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNM
QVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKK307CisKK2lubGluZSB2b2lkIFVuZ3VhcmRlZEJ1
aWx0aW5CdWlsdGluRnVuY3Rpb25zOjppbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKK3sKKyNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9OKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUs
IGxlbmd0aClcCisgICAgbV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb24uc2V0KG1fdm0sICZnbG9i
YWxPYmplY3QsIEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKG1fdm0sIGNv
ZGVOYW1lIyNHZW5lcmF0b3IobV92bSksICZnbG9iYWxPYmplY3QpKTsKKyAgICBXRUJDT1JFX0ZP
UkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoRVhQT1JUX0ZVTkNUSU9OKQorI3Vu
ZGVmIEVYUE9SVF9GVU5DVElPTgorfQorCitpbmxpbmUgdm9pZCBVbmd1YXJkZWRCdWlsdGluQnVp
bHRpbkZ1bmN0aW9uczo6dmlzaXQoSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyNkZWZp
bmUgVklTSVRfRlVOQ1RJT04obmFtZSkgdmlzaXRvci5hcHBlbmQoJm1fIyNuYW1lIyNGdW5jdGlv
bik7CisgICAgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElP
Tl9OQU1FKFZJU0lUX0ZVTkNUSU9OKQorI3VuZGVmIFZJU0lUX0ZVTkNUSU9OCit9CisKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5z
V3JhcHBlcl9oCisKKyMjIyBFbmQgRmlsZTogVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBl
ci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWls
dGlucy9leHBlY3RlZC9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2Vi
Q29yZS14bWxDYXNpbmdUZXN0LVNlcGFyYXRlLmpzLXJlc3VsdApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MTljZjli
YTUxMjA5ZjYxOWI2MzEyZDQ4Yjc0Mzc1MjExOWZmM2U0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29y
ZS14bWxDYXNpbmdUZXN0LVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMCwwICsxLDMxOCBAQAorIyMj
IEJlZ2luIEZpbGU6IHhtbENhc2luZ1Rlc3RCdWlsdGlucy5oCisvKgorICogQ29weXJpZ2h0IChj
KSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisK
Ky8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQg
ZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lm
bmRlZiB4bWxDYXNpbmdUZXN0QnVpbHRpbnNfaAorI2RlZmluZSB4bWxDYXNpbmdUZXN0QnVpbHRp
bnNfaAorCisjaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+CisKK25hbWVzcGFjZSBK
U0MgeworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKKy8qIHhtbENhc2luZ1Rlc3QgKi8KK2V4dGVybiBjb25zdCBjaGFyKiBzX3htbENhc2luZ1Rl
c3RYTUxDYXNpbmdUZXN0Q29kZTsKK2V4dGVybiBjb25zdCBpbnQgc194bWxDYXNpbmdUZXN0WE1M
Q2FzaW5nVGVzdENvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
IHNfeG1sQ2FzaW5nVGVzdFhNTENhc2luZ1Rlc3RDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVy
biBjb25zdCBjaGFyKiBzX3htbENhc2luZ1Rlc3RDc3NDYXNpbmdUZXN0Q29kZTsKK2V4dGVybiBj
b25zdCBpbnQgc194bWxDYXNpbmdUZXN0Q3NzQ2FzaW5nVGVzdENvZGVMZW5ndGg7CitleHRlcm4g
Y29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfeG1sQ2FzaW5nVGVzdENzc0Nhc2luZ1Rlc3RD
b2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX3htbENhc2luZ1Rlc3RV
cmxDYXNpbmdUZXN0Q29kZTsKK2V4dGVybiBjb25zdCBpbnQgc194bWxDYXNpbmdUZXN0VXJsQ2Fz
aW5nVGVzdENvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNf
eG1sQ2FzaW5nVGVzdFVybENhc2luZ1Rlc3RDb2RlQ29uc3RydWN0QWJpbGl0eTsKKworI2RlZmlu
ZSBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0RBVEEobWFjcm8pIFwKKyAg
ICBtYWNybyh4bWxDYXNpbmdUZXN0LCB4bWxDYXNpbmdUZXN0WE1MQ2FzaW5nVGVzdCwgMSkgXAor
ICAgIG1hY3JvKGNzc0Nhc2luZ1Rlc3QsIHhtbENhc2luZ1Rlc3RDc3NDYXNpbmdUZXN0LCAyKSBc
CisgICAgbWFjcm8odXJsQ2FzaW5nVGVzdCwgeG1sQ2FzaW5nVGVzdFVybENhc2luZ1Rlc3QsIDMp
IFwKKworI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fWE1MQ0FTSU5HVEVTVF9YTUxDQVNJTkdURVNU
IDEKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX1hNTENBU0lOR1RFU1RfQ1NTQ0FTSU5HVEVTVCAx
CisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9YTUxDQVNJTkdURVNUX1VSTENBU0lOR1RFU1QgMQor
CisjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fQ09ERShtYWNy
bykgXAorICAgIG1hY3JvKHhtbENhc2luZ1Rlc3RYTUxDYXNpbmdUZXN0Q29kZSwgeG1sQ2FzaW5n
VGVzdCwgc194bWxDYXNpbmdUZXN0WE1MQ2FzaW5nVGVzdENvZGVMZW5ndGgpIFwKKyAgICBtYWNy
byh4bWxDYXNpbmdUZXN0Q3NzQ2FzaW5nVGVzdENvZGUsIGNzc0Nhc2luZ1Rlc3QsIHNfeG1sQ2Fz
aW5nVGVzdENzc0Nhc2luZ1Rlc3RDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8oeG1sQ2FzaW5nVGVz
dFVybENhc2luZ1Rlc3RDb2RlLCB1cmxDYXNpbmdUZXN0LCBzX3htbENhc2luZ1Rlc3RVcmxDYXNp
bmdUZXN0Q29kZUxlbmd0aCkgXAorCisjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdU
RVNUX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXAorICAgIG1hY3JvKGNzc0Nhc2luZ1Rl
c3QpIFwKKyAgICBtYWNybyh1cmxDYXNpbmdUZXN0KSBcCisgICAgbWFjcm8oeG1sQ2FzaW5nVGVz
dCkgXAorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0
aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBj
b2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKworV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lO
R1RFU1RfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVD
TEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9YTUxDQVNJ
TkdURVNUX0VYSVNUUyhvYmplY3QsIGZ1bmMpIGRlZmluZWQgV0VCQ09SRV9CVUlMVElOXyAjIyBv
YmplY3QgIyMgXyAjIyBmdW5jCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IHhtbENhc2luZ1Rlc3RCdWlsdGluc19oCisKKyMjIyBFbmQgRmlsZTogeG1sQ2FzaW5nVGVzdEJ1
aWx0aW5zLmgKKworIyMjIEJlZ2luIEZpbGU6IHhtbENhc2luZ1Rlc3RCdWlsdGlucy5jcHAKKy8q
CisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0
aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBi
eSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1i
dWlsdGlucy5weQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAieG1sQ2FzaW5nVGVz
dEJ1aWx0aW5zLmgiCisKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVk
ZSA8cnVudGltZS9FeGVjdXRhYmxlLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5s
aW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1
bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVk0uaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc194bWxDYXNp
bmdUZXN0WE1MQ2FzaW5nVGVzdENvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RB
YmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc194bWxDYXNpbmdUZXN0WE1MQ2Fz
aW5nVGVzdENvZGVMZW5ndGggPSAxMjc7Citjb25zdCBjaGFyKiBzX3htbENhc2luZ1Rlc3RYTUxD
YXNpbmdUZXN0Q29kZSA9CisgICAiKGZ1bmN0aW9uIChzdHJlYW0pXG4iIFwKKyAgICJ7XG4iIFwK
KyAgICIgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHJldHVybiAh
IXN0cmVhbS5AcmVhZGVyO1xuIiBcCisgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0
cnVjdEFiaWxpdHkgc194bWxDYXNpbmdUZXN0Q3NzQ2FzaW5nVGVzdENvZGVDb25zdHJ1Y3RBYmls
aXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQg
c194bWxDYXNpbmdUZXN0Q3NzQ2FzaW5nVGVzdENvZGVMZW5ndGggPSA1MTQ7Citjb25zdCBjaGFy
KiBzX3htbENhc2luZ1Rlc3RDc3NDYXNpbmdUZXN0Q29kZSA9CisgICAiKGZ1bmN0aW9uIChzdHJl
YW0sIHJlYXNvbilcbiIgXAorICAgIntcbiIgXAorICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIg
XAorICAgIlxuIiBcCisgICAiICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJl
YW1DbG9zZWQpXG4iIFwKKyAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiIg
XAorICAgIiAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZClc
biIgXAorICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJy
b3IpO1xuIiBcCisgICAiICAgIHN0cmVhbS5AcXVldWUgPSBbXTtcbiIgXAorICAgIiAgICBAZmlu
aXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7XG4iIFwKKyAgICIgICAgcmV0dXJuIEBw
cm9taXNlSW52b2tlT3JOb29wKHN0cmVhbS5AdW5kZXJseWluZ1NvdXJjZSwgXCJjYW5jZWxcIiwg
W3JlYXNvbl0pLnRoZW4oZnVuY3Rpb24oKSB7IH0pO1xuIiBcCisgICAifSlcbiIgXAorOworCitj
b25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc194bWxDYXNpbmdUZXN0VXJsQ2FzaW5nVGVzdENv
ZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1
Y3Q7Citjb25zdCBpbnQgc194bWxDYXNpbmdUZXN0VXJsQ2FzaW5nVGVzdENvZGVMZW5ndGggPSA0
Nzc7Citjb25zdCBjaGFyKiBzX3htbENhc2luZ1Rlc3RVcmxDYXNpbmdUZXN0Q29kZSA9CisgICAi
KGZ1bmN0aW9uIChvYmplY3QsIGtleSwgYXJncylcbiIgXAorICAgIntcbiIgXAorICAgIiAgICBc
InVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHRyeSB7XG4iIFwKKyAgICIg
ICAgICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTtcbiIgXAorICAgIiAgICAgICAgaWYgKHR5
cGVvZiBtZXRob2QgPT09IFwidW5kZWZpbmVkXCIpXG4iIFwKKyAgICIgICAgICAgICAgICByZXR1
cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4iIFwKKyAgICIgICAgICAgIHZhciByZXN1bHQgPSBtZXRo
b2QuQGFwcGx5KG9iamVjdCwgYXJncyk7XG4iIFwKKyAgICIgICAgICAgIHJldHVybiBQcm9taXNl
LnJlc29sdmUocmVzdWx0KTtcbiIgXAorICAgIiAgICB9XG4iIFwKKyAgICIgICAgY2F0Y2goZXJy
b3IpIHtcbiIgXAorICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiIg
XAorICAgIiAgICB9XG4iIFwKKyAgICJ9KVxuIiBcCis7CisKKworI2RlZmluZSBERUZJTkVfQlVJ
TFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAor
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0p
IFwKK3tcCisgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZN
Q2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcCisgICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1
aWx0aW5GdW5jdGlvbnMoKS54bWxDYXNpbmdUZXN0QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0
YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkueG1sQ2FzaW5n
VGVzdEJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpKTsgXAorfQorV0VCQ09SRV9GT1JFQUNI
X1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1
bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisjIyMgRW5kIEZpbGU6IHhtbENhc2luZ1Rlc3RCdWlsdGlucy5jcHAKKworIyMjIEJlZ2luIEZp
bGU6IHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXIuaAorLyoKKyAqIENvcHlyaWdodCAoYykg
MjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisv
LyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZy
b20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5k
ZWYgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcl9oCisjZGVmaW5lIHhtbENhc2luZ1Rlc3RC
dWlsdGluc1dyYXBwZXJfaAorCisjaW5jbHVkZSAieG1sQ2FzaW5nVGVzdEJ1aWx0aW5zLmgiCisj
aW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+CisjaW5jbHVkZSA8Ynl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0lkZW50aWZpZXIu
aD4KKyNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyIDogcHJpdmF0ZSBKU0M6Oldl
YWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgeG1sQ2FzaW5nVGVzdEJ1aWx0
aW5zV3JhcHBlcihKU0M6OlZNKiB2bSkKKyAgICAgICAgOiBtX3ZtKCp2bSkKKyAgICAgICAgV0VC
Q09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJ
WkVfQlVJTFRJTl9OQU1FUykKKyNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1C
RVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UoSlNDOjpt
YWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgp
KSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKElO
SVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBJTklUSUFMSVpFX0JVSUxU
SU5fU09VUkNFX01FTUJFUlMKKyAgICB7CisgICAgfQorCisjZGVmaW5lIEVYUE9TRV9CVUlMVElO
X0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCisgICAgY29uc3Qg
SlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMj
U291cmNlOyB9CisgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RF
KEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNV
VEFCTEVTCisKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0ZVTkNU
SU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCisKKyAgICB2b2lk
IGV4cG9ydE5hbWVzKCk7CisKK3ByaXZhdGU6CisgICAgSlNDOjpWTSYgbV92bTsKKworICAgIFdF
QkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJF
X0JVSUxUSU5fTkFNRVMpCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJT
KG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpTb3VyY2VDb2RlIG1fIyNu
YW1lIyNTb3VyY2U7XAorICAgIEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5H
VEVTVF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVm
IERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworCit9OworCisjZGVmaW5lIERFRklORV9C
VUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitpbmxpbmUg
SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3Jh
cHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tcCisgICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0
YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gSlNDOjpXZWFrPEpTQzo6VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUobV92
bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCksIHNfIyNuYW1l
IyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRhYmxlKTtcCisgICAg
cmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKK30KK1dFQkNPUkVfRk9SRUFDSF9Y
TUxDQVNJTkdURVNUX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1
bmRlZiBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUworCitpbmxpbmUgdm9pZCB4bWxDYXNpbmdU
ZXN0QnVpbHRpbnNXcmFwcGVyOjpleHBvcnROYW1lcygpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5D
VElPTl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+YXBwZW5kRXh0ZXJuYWxOYW1lKG5h
bWUjI1B1YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUoKSk7CisgICAgV0VCQ09SRV9GT1JF
QUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9GVU5DVElPTl9OQU1FKEVYUE9SVF9GVU5DVElPTl9O
QU1FKQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTl9OQU1FCit9CisKK2NsYXNzIHhtbENhc2luZ1Rl
c3RCdWlsdGluRnVuY3Rpb25zIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCB4bWxDYXNpbmdUZXN0
QnVpbHRpbkZ1bmN0aW9ucyhKU0M6OlZNJiB2bSkgOiBtX3ZtKHZtKSB7IH0KKworICAgIHZvaWQg
aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CisgICAgdm9pZCB2aXNpdChKU0M6OlNsb3RWaXNp
dG9yJik7CisKK3B1YmxpYzoKKyAgICBKU0M6OlZNJiBtX3ZtOworCisjZGVmaW5lIERFQ0xBUkVf
QlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhmdW5jdGlvbk5hbWUpIFwKKyAgICBKU0M6OldyaXRlQmFy
cmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uOworICAgIFdF
QkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJF
X0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9N
RU1CRVJTCit9OworCitpbmxpbmUgdm9pZCB4bWxDYXNpbmdUZXN0QnVpbHRpbkZ1bmN0aW9uczo6
aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisjZGVmaW5lIEVYUE9S
VF9GVU5DVElPTihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXAorICAgIG1fIyNmdW5j
dGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rp
b246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihtX3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0p
LCAmZ2xvYmFsT2JqZWN0KSk7CisgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJ
TFRJTl9DT0RFKEVYUE9SVF9GVU5DVElPTikKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT04KK30KKwor
aW5saW5lIHZvaWQgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5GdW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit7CisjZGVmaW5lIFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0
b3IuYXBwZW5kKCZtXyMjbmFtZSMjRnVuY3Rpb24pOworICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxD
QVNJTkdURVNUX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShWSVNJVF9GVU5DVElPTikKKyN1bmRlZiBW
SVNJVF9GVU5DVElPTgorfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXJfaAorCisjIyMgRW5kIEZpbGU6IHhtbENhc2lu
Z1Rlc3RCdWlsdGluc1dyYXBwZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1VwZGF0ZUNvbnRlbnRzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1VwZGF0ZUNvbnRlbnRz
LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MmY5NTMyY2I2ZmIwYWJhZjUyMGRh
ZTA0ODU4YWM5MmE0ZmM2MjQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9VcGRhdGVDb250ZW50cy5weQorKysgL2Rl
di9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCi0KLSMgQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKLSMgICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSMgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKLSMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotIyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKLSMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0jIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0KLWltcG9ydCBzeXMKLWltcG9ydCBvcwotCi1hc3NlcnQobGVuKHN5cy5hcmd2KSA9
PSAzKQotCi1jb21wID0gc3lzLmFyZ3ZbMV0KLWZpbGVuYW1lID0gc3lzLmFyZ3ZbMl0KLQotdCA9
IEZhbHNlCi0KLWlmIG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lKToKLSAgICBmID0gb3BlbihmaWxl
bmFtZSwgJ3InKQotICAgIGNvbXBhcmF0b3IgPSBmLnJlYWQoKQotICAgIGYuY2xvc2UoKQotICAg
IHQgPSBUcnVlCi0KLWlmIChub3QgdCBvciBjb21wICE9IGNvbXBhcmF0b3IpOgotICAgIGYgPSBv
cGVuKGZpbGVuYW1lLCAndycpCi0gICAgZi53cml0ZShjb21wKQotICAgIGYuY2xvc2UoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxl
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVz
LmNwcAppbmRleCA3M2ViZTQ3OTkzNWZjYTc0MDlmZDkzMmY4ODliNjU4NGJlNThiNjE0Li44MTZi
NGE1ZDMwYjUyMGI1ZDFkZmVhZWFiMmY5Mzk0YzY4YmRjMGEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtNDAs
NyArNDAsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1
dGFibGVJbnRlcm5hbChWTSYsIGNvbnN0IFNvdXJjZUNvZAogQnVpbHRpbkV4ZWN1dGFibGVzOjpC
dWlsdGluRXhlY3V0YWJsZXMoVk0mIHZtKQogICAgIDogbV92bSh2bSkKICNkZWZpbmUgSU5JVElB
TElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAs
IG1fIyNuYW1lIyNTb3VyY2UobWFrZVNvdXJjZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJh
bChzXyMjbmFtZSwgbGVuZ3RoKSkpCi0gICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihJTklUSUFMSVpF
X0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKElO
SVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKICN1bmRlZiBFWFBPU0VfQlVJTFRJTl9T
VFJJTkdTCiB7CiB9CkBAIC0xMzIsNyArMTMyLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKICAgICAgICAgbV8j
I25hbWUjI0V4ZWN1dGFibGUgPSBXZWFrPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPihjcmVh
dGVCdWlsdGluRXhlY3V0YWJsZShtXyMjbmFtZSMjU291cmNlLCBtX3ZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmZ1bmN0aW9uTmFtZSMjUHVibGljTmFtZSgpLCBzXyMjbmFtZSMjQ29u
c3RydWN0QWJpbGl0eSksIHRoaXMsICZtXyMjbmFtZSMjRXhlY3V0YWJsZSk7XAogICAgIHJldHVy
biBtXyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtcCiB9Ci1KU0NfRk9SRUFDSF9CVUlMVElOKERF
RklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQorSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklO
RV9CVUlMVElOX0VYRUNVVEFCTEVTKQogI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NPVVJDRVMKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRh
Ymxlcy5oCmluZGV4IDZhOTgzMjE3YTBhODg0NTdlZjA5OGZiY2I5NTEyM2Q1OWE1MjUxNzUuLmVj
OGQ1NzcwNGI4N2M1ODRhOTM2ZGRlNDE3ZDYyOWY4NTdiMzY1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKQEAgLTQ3LDcg
KzQ3LDcgQEAgcHVibGljOgogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1
dGFibGUoKTsgXAogY29uc3QgU291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgeyByZXR1cm4gbV8j
I25hbWUjI1NvdXJjZTsgfQogICAgIAotICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oRVhQT1NFX0JV
SUxUSU5fRVhFQ1VUQUJMRVMpCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKEVYUE9TRV9C
VUlMVElOX0VYRUNVVEFCTEVTKQogI3VuZGVmIEVYUE9TRV9CVUlMVElOX1NPVVJDRVMKIAogICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29u
c3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKQEAgLTYyLDcgKzYyLDcgQEAg
cHJpdmF0ZToKICNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1
bmN0aW9uTmFtZSwgbGVuZ3RoKVwKICAgICBTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7IFwK
ICAgICBXZWFrPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJs
ZTsKLSAgICBKU0NfRk9SRUFDSF9CVUlMVElOKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVS
UykKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9N
RU1CRVJTKQogI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCmluZGV4IDZmYTc4Y2VhMjg3MzhjMGYx
NzQ1MTQ3ZjA0OTczYWNiNmNhODM2ZDguLmEyMjVjYmU2N2Q4MGRhYTJmZDNlOThmMTkwNTJlYzA5
ODE4ZDIzZjggMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90
YWJsZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKQEAgLTMx
OSw3ICszMTksNyBAQCBzdWIgb3V0cHV0KCkgewogICAgICAgICBpZiAoJHZhbHVlc1skaV17InR5
cGUifSBlcSAiRnVuY3Rpb24iKSAgewogICAgICAgICAgICAgbXkgJHRhYmxlSGVhZCA9ICRuYW1l
OwogICAgICAgICAgICAgJHRhYmxlSGVhZCA9fiBzL1RhYmxlJC8vOwotICAgICAgICAgICAgcHJp
bnQgIiAjaWYgSlNDX0JVSUxUSU5fRVhJU1RTKCIgLiB1YygkdGFibGVIZWFkIC4gJGtleSkgLiIp
XG4iOworICAgICAgICAgICAgcHJpbnQgIiAjaWYgSlNDX0JVSUxUSU5fRVhJU1RTKCIgLiB1Yygk
dGFibGVIZWFkKSAuICIsICIgLiB1Yygka2V5KSAuIilcbiI7CiAgICAgICAgICAgICBwcmludCAi
ICAgeyBcIiRrZXlcIiwgKCgkYXR0cnNbJGldKSAmIH5GdW5jdGlvbikgfCBCdWlsdGluLCAkaW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxCdWlsdGluR2VuZXJhdG9yPigiIC4gJHRh
YmxlSGVhZCAuIHVjZmlyc3QoJGtleSkgLiAiQ29kZUdlbmVyYXRvciksIChpbnRwdHJfdCkkc2Vj
b25kVmFsdWUgfSB9LFxuIjsKICAgICAgICAgICAgIHByaW50ICIgI2Vsc2VcbiIKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5z
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBkZmY0MTg3M2RhMmI2NWE3NzExNGNmNWQ0MWU4N2E0YzBkMzA2
MzdjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucworKysgL2Rldi9udWxsCkBAIC0x
LDM0MyArMCwwIEBACi0jIS91c3IvYmluL3B5dGhvbgotIyBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0jIGFyZSBtZXQ6Ci0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0jIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0jIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotIyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0jIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotIyBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0jIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGFy
Z3BhcnNlCi1pbXBvcnQgZmlsZWNtcAotaW1wb3J0IGZubWF0Y2gKLWltcG9ydCBvcwotaW1wb3J0
IHJlCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgc3lzCi1pbXBvcnQgZGF0ZXRpbWUKLWltcG9ydCBq
c29uCi0KLXBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKLXBhcnNlci5hZGRfYXJn
dW1lbnQoJ2lucHV0X2ZpbGUnLCBuYXJncz0nKicsIGhlbHA9J0lucHV0IEpTIGZpbGVzIHdoaWNo
IGJ1aWx0aW5zIGdlbmVyYXRlZCBmcm9tJykKLXBhcnNlci5hZGRfYXJndW1lbnQoJy0taW5wdXQt
ZGlyZWN0b3J5JywgaGVscD0nQWxsIEpTIGZpbGVzIHdpbGwgYmUgdXNlZCBhcyBpbnB1dCBmcm9t
IHRoaXMgZGlyZWN0b3J5LicpCi1wYXJzZXIuYWRkX2FyZ3VtZW50KCctLW91dHB1dCcsIGhlbHA9
J3BhdGggdG8gb3V0cHV0IGNwcCBvciBoIGZpbGUnKQotcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1w
cmVmaXgnLCBkZWZhdWx0PSdKU0MnLCBoZWxwPSdwcmVmaXggdXNlZCBmb3IgcHVibGljIG1hY3Jv
cycpCi1wYXJzZXIuYWRkX2FyZ3VtZW50KCctLW5hbWVzcGFjZScsIGRlZmF1bHQ9J0pTQycsIGhl
bHA9J0MrKyBuYW1lc3BhY2UnKQotYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKLQotY29weXJp
Z2h0VGV4dCA9ICIiIiAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovXG4K
LSIiIgotCi1nZW5lcmF0b3JTdHJpbmcgPSAiLyogR2VuZXJhdGVkIGJ5ICVzIGRvIG5vdCBoYW5k
IGVkaXQuICovXG4iICUgb3MucGF0aC5iYXNlbmFtZShfX2ZpbGVfXykKLQotZnVuY3Rpb25IZWFk
UmVnRXhwID0gcmUuY29tcGlsZShyIig/OmZ1bmN0aW9ufGNvbnN0cnVjdG9yKVxzK1x3K1xzKlwo
Lio/XCkiLCByZS5NVUxUSUxJTkUgfCByZS5TKQotZnVuY3Rpb25OYW1lUmVnRXhwID0gcmUuY29t
cGlsZShyIig/OmZ1bmN0aW9ufGNvbnN0cnVjdG9yKVxzKyhcdyspXHMqXCgiLCByZS5NVUxUSUxJ
TkUgfCByZS5TKQotZnVuY3Rpb25Jc0NvbnN0cnVjdG9yUmVnRXhwID0gcmUuY29tcGlsZShyIl5j
b25zdHJ1Y3RvciIsIHJlLk1VTFRJTElORSB8IHJlLlMpCi1mdW5jdGlvblBhcmFtZXRlckZpbmRl
ciA9IHJlLmNvbXBpbGUociJeKD86ZnVuY3Rpb258Y29uc3RydWN0b3IpXHMrKD86XHcrKVxzKlwo
KCg/OlxzKlx3Kyk/XHMqKD86XHMqLFxzKlx3KykqKT9ccypcKSIsIHJlLk1VTFRJTElORSB8IHJl
LlMpCi0KLW11bHRpbGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cKi4qP1wqXC8i
LCByZS5NVUxUSUxJTkUgfCByZS5TKQotc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21w
aWxlKHIiXC9cLy4qP1xuIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKLQotZGVmIGdldENvcHlyaWdo
dChzb3VyY2UpOgotICAgIGNvcHlyaWdodEJsb2NrID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5m
aW5kYWxsKHNvdXJjZSlbMF0KLSAgICBjb3B5cmlnaHRCbG9jayA9IGNvcHlyaWdodEJsb2NrWzpj
b3B5cmlnaHRCbG9jay5pbmRleCgiUmVkaXN0cmlidXRpb24iKV0KLSAgICBjb3B5UmlnaHRMaW5l
cyA9IFtdCi0KLSAgICBmb3IgbGluZSBpbiBjb3B5cmlnaHRCbG9jay5zcGxpdCgiXG4iKToKLSAg
ICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiLyoiLCAiIikKLSAgICAgICAgbGluZSA9IGxpbmUu
cmVwbGFjZSgiKi8iLCAiIikKLSAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKiIsICIiKQot
ICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJDb3B5cmlnaHQiLCAiIikKLSAgICAgICAgbGlu
ZSA9IGxpbmUucmVwbGFjZSgiY29weXJpZ2h0IiwgIiIpCi0gICAgICAgIGxpbmUgPSBsaW5lLnJl
cGxhY2UoIihDKSIsICIiKQotICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIoYykiLCAiIikK
LSAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQotICAgICAgICBpZiBsZW4obGluZSkgPT0gMDoK
LSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgY29weVJpZ2h0TGluZXMuYXBwZW5kKGxp
bmUpCi0gICAgCi0gICAgcmV0dXJuIGxpc3Qoc2V0KGNvcHlSaWdodExpbmVzKSkKLQotY2xhc3Mg
RnVuY3Rpb24ob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgc291cmNlLCBp
c0NvbnN0cnVjdG9yLCBwYXJhbWV0ZXJzKToKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotICAg
ICAgICBzZWxmLnNvdXJjZSA9IHNvdXJjZQotICAgICAgICBzZWxmLmlzQ29uc3RydWN0b3IgPSBp
c0NvbnN0cnVjdG9yCi0gICAgICAgIHNlbGYucGFyYW1ldGVycyA9IHBhcmFtZXRlcnMKLQotICAg
IGRlZiBtYW5nbGVOYW1lKHNlbGYsIG9iamVjdCk6Ci0gICAgICAgIHFOYW1lID0gb2JqZWN0ICsg
Ii4iICsgc2VsZi5uYW1lCi0gICAgICAgIG1hbmdsZWROYW1lID0gIiIKLSAgICAgICAgaSA9IDAK
LSAgICAgICAgd2hpbGUgaSA8IGxlbihxTmFtZSk6Ci0gICAgICAgICAgICBpZiBxTmFtZVtpXSA9
PSAnLic6Ci0gICAgICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZSArIHFOYW1l
W2kgKyAxXS51cHBlcigpCi0gICAgICAgICAgICAgICAgaSA9IGkgKyAxCi0gICAgICAgICAgICBl
bHNlOgotICAgICAgICAgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtp
XQotICAgICAgICAgICAgaSA9IGkgKyAxCi0gICAgICAgIGlmIHNlbGYuaXNDb25zdHJ1Y3RvcjoK
LSAgICAgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWUgKyAiQ29uc3RydWN0b3IiCi0g
ICAgICAgIHJldHVybiBtYW5nbGVkTmFtZQotCi1kZWYgZ2V0RnVuY3Rpb25zKHNvdXJjZSk6Ci0K
LSAgICBzb3VyY2UgPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiLyoqLyIsIHNpbmdsZUxp
bmVDb21tZW50UmVnRXhwLnN1YigiLy9cbiIsIHNvdXJjZSkpCi0KLSAgICBtYXRjaGVzID0gWyBm
IGZvciBmIGluIGZ1bmN0aW9uSGVhZFJlZ0V4cC5maW5kaXRlcihzb3VyY2UpXQotICAgIGZ1bmN0
aW9uQm91bmRzID0gW10KLSAgICBzdGFydCA9IDAKLSAgICBlbmQgPSAwCi0gICAgZm9yIG1hdGNo
IGluIG1hdGNoZXM6Ci0gICAgICAgIHN0YXJ0ID0gbWF0Y2guc3RhcnQoKQotICAgICAgICBpZiBz
dGFydCA8IGVuZDoKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGVuZCA9IG1hdGNoLmVu
ZCgpCi0gICAgICAgIHdoaWxlIHNvdXJjZVtlbmRdICE9ICd7JzoKLSAgICAgICAgICAgIGVuZCA9
IGVuZCArIDEKLSAgICAgICAgZGVwdGggPSAxCi0gICAgICAgIGVuZCA9IGVuZCArIDEKLSAgICAg
ICAgd2hpbGUgZGVwdGggPiAwOgotICAgICAgICAgICAgaWYgc291cmNlW2VuZF0gPT0gJ3snOgot
ICAgICAgICAgICAgICAgIGRlcHRoID0gZGVwdGggKyAxCi0gICAgICAgICAgICBlbGlmIHNvdXJj
ZVtlbmRdID09ICd9JzoKLSAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRoIC0gMQotICAgICAg
ICAgICAgZW5kID0gZW5kICsgMQotICAgICAgICBmdW5jdGlvbkJvdW5kcy5hcHBlbmQoKHN0YXJ0
LCBlbmQpKQotCi0gICAgZnVuY3Rpb25zID0gW3NvdXJjZVtzdGFydDplbmRdLnN0cmlwKCkgZm9y
IChzdGFydCwgZW5kKSBpbiBmdW5jdGlvbkJvdW5kc10KLSAgICByZXN1bHQgPSBbXQotICAgIGZv
ciBmdW5jdGlvbiBpbiBmdW5jdGlvbnM6Ci0gICAgICAgIGZ1bmN0aW9uID0gbXVsdGlsaW5lQ29t
bWVudFJlZ0V4cC5zdWIoIiIsIGZ1bmN0aW9uKQotICAgICAgICBmdW5jdGlvbk5hbWUgPSBmdW5j
dGlvbk5hbWVSZWdFeHAuZmluZGFsbChmdW5jdGlvbilbMF0KLSAgICAgICAgZnVuY3Rpb25Jc0Nv
bnN0cnVjdG9yID0gZnVuY3Rpb25Jc0NvbnN0cnVjdG9yUmVnRXhwLm1hdGNoKGZ1bmN0aW9uKSAh
PSBOb25lCi0gICAgICAgIGZ1bmN0aW9uUGFyYW1ldGVycyA9IGZ1bmN0aW9uUGFyYW1ldGVyRmlu
ZGVyLmZpbmRhbGwoZnVuY3Rpb24pWzBdLnNwbGl0KCcsJykKLSAgICAgICAgaWYgbGVuKGZ1bmN0
aW9uUGFyYW1ldGVyc1swXSkgPT0gMDoKLSAgICAgICAgICAgIGZ1bmN0aW9uUGFyYW1ldGVycyA9
IFtdCi0KLSAgICAgICAgcmVzdWx0LmFwcGVuZChGdW5jdGlvbihmdW5jdGlvbk5hbWUsIGZ1bmN0
aW9uLCBmdW5jdGlvbklzQ29uc3RydWN0b3IsIGZ1bmN0aW9uUGFyYW1ldGVycykpCi0gICAgcmV0
dXJuIHJlc3VsdAotCi1kZWYgd3JpdGVJbmNsdWRlRGlyZWN0aXZlcyh3cml0ZXIsIGhlYWRlck5h
bWVzKToKLSAgICBmb3IgaGVhZGVyTmFtZSBpbiBoZWFkZXJOYW1lczoKLSAgICAgICAgd3JpdGVy
LndyaXRlKCIjaW5jbHVkZSAiICsgaGVhZGVyTmFtZSArICJcbiIpCi0KLWRlZiBnZW5lcmF0ZUNv
ZGUoc291cmNlKToKLSAgICBpbnB1dEZpbGUgPSBvcGVuKHNvdXJjZSwgInIiKQotICAgIGJhc2VO
YW1lID0gb3MucGF0aC5iYXNlbmFtZShzb3VyY2UpLnJlcGxhY2UoIi5qcyIsICIiKQotICAgIAot
ICAgIHNvdXJjZSA9ICIiCi0gICAgZm9yIGxpbmUgaW4gaW5wdXRGaWxlOgotICAgICAgICBzb3Vy
Y2UgPSBzb3VyY2UgKyBsaW5lCi0gICAgCi0gICAgaWYgc3lzLnBsYXRmb3JtID09ICJjeWd3aW4i
OgotICAgICAgICBzb3VyY2UgPSBzb3VyY2UucmVwbGFjZSgiXHJcbiIsICJcbiIpCi0gICAgcmV0
dXJuIChiYXNlTmFtZSwgZ2V0RnVuY3Rpb25zKHNvdXJjZSksIGdldENvcHlyaWdodChzb3VyY2Up
KQotCi1idWlsdGlucyA9IFtdCi1jb3B5cmlnaHRzID0gW10KLShvdXRwdXRfYmFzZSwgXykgPSBv
cy5wYXRoLnNwbGl0ZXh0KGFyZ3Mub3V0cHV0KQotCi1pZiBhcmdzLmlucHV0X2RpcmVjdG9yeToK
LSAgICBmb3IgZmlsZSBpbiBvcy5saXN0ZGlyKGFyZ3MuaW5wdXRfZGlyZWN0b3J5KToKLSAgICAg
ICAgYXJncy5pbnB1dF9maWxlLmFwcGVuZChvcy5wYXRoLmpvaW4oYXJncy5pbnB1dF9kaXJlY3Rv
cnksIGZpbGUpKQotCi1mb3IgZmlsZSBpbiBhcmdzLmlucHV0X2ZpbGU6Ci0gICAgaWYgZm5tYXRj
aC5mbm1hdGNoKGZpbGUsICcqLmpzJyk6Ci0gICAgICAgIChiYXNlTmFtZSwgZnVuY3Rpb25zLCBv
YmplY3RDb3B5cmlnaHRzKSA9IGdlbmVyYXRlQ29kZShmaWxlKQotICAgICAgICBjb3B5cmlnaHRz
LmV4dGVuZChvYmplY3RDb3B5cmlnaHRzKQotICAgICAgICBidWlsdGlucy5hcHBlbmQoKGJhc2VO
YW1lLCBmdW5jdGlvbnMpKQotbmFtZXNwYWNlID0gYXJncy5uYW1lc3BhY2UKLW1hY3JvUHJlZml4
ID0gYXJncy5wcmVmaXgKLXNjb3BlTmFtZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNl
bmFtZShhcmdzLm91dHB1dCkpWzBdCi1pbmNsdWRlR3VhcmQgPSBzY29wZU5hbWUgKyAiX0giCi1o
ZWFkZXJOYW1lID0gc2NvcGVOYW1lICsgIi5oIgotCi1oZWFkZXJJbmNsdWRlcyA9IFsiXCJCdWls
dGluVXRpbHMuaFwiIl0gaWYgbmFtZXNwYWNlID09ICJKU0MiIGVsc2UgWyI8YnVpbHRpbnMvQnVp
bHRpblV0aWxzLmg+Il0KLWNvbnRlbnRJbmNsdWRlcyA9IFsiXCJCdWlsdGluRXhlY3V0YWJsZXMu
aFwiIiwgIlwiRXhlY3V0YWJsZS5oXCIiLCAiXCJKU0NlbGxJbmxpbmVzLmhcIiIsICJcIlZNLmhc
IiJdIGlmIG5hbWVzcGFjZSA9PSAiSlNDIiBlbHNlIFsiPHJ1bnRpbWUvRXhlY3V0YWJsZS5oPiIs
ICI8cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+IiwgIjxydW50aW1lL0pTQ0pTVmFsdWVJbmxp
bmVzLmg+IiwgIjxydW50aW1lL0pTQ2VsbElubGluZXMuaD4iLCAiPHJ1bnRpbWUvVk0uaD4iLCAi
XCJXZWJDb3JlSlNDbGllbnREYXRhLmhcIiJdCi0KLWNvcHlyaWdodHMgPSBsaXN0KHNldChjb3B5
cmlnaHRzKSkKLQotY29weXJpZ2h0Qm9keSA9ICIiCi1mb3IgY29weXJpZ2h0IGluIGNvcHlyaWdo
dHM6Ci0gICAgY29weXJpZ2h0Qm9keSA9IGNvcHlyaWdodEJvZHkgKyIgKiBDb3B5cmlnaHQgKEMp
ICIgKyBjb3B5cmlnaHQgKyAiXG4iCi0KLWJ1aWx0aW5zSGVhZGVyID0gb3BlbihvdXRwdXRfYmFz
ZSArICIuaC50bXAiLCAidyIpCi1idWlsdGluc0ltcGxlbWVudGF0aW9uID0gb3BlbihvdXRwdXRf
YmFzZSArICIuY3BwLnRtcCIsICJ3IikKLWNvcHlyaWdodFRleHQgPSAiLypcbiIgKyBjb3B5cmln
aHRCb2R5ICsgY29weXJpZ2h0VGV4dAotYnVpbHRpbnNIZWFkZXIud3JpdGUoIiIiJXMKLSVzCi0K
LSNpZm5kZWYgJXMKLSNkZWZpbmUgJXMKLQotIiIiICUgKGdlbmVyYXRvclN0cmluZywgY29weXJp
Z2h0VGV4dCwgaW5jbHVkZUd1YXJkLCBpbmNsdWRlR3VhcmQpKQotCi13cml0ZUluY2x1ZGVEaXJl
Y3RpdmVzKGJ1aWx0aW5zSGVhZGVyLCBoZWFkZXJJbmNsdWRlcykKLQotYnVpbHRpbnNIZWFkZXIu
d3JpdGUoIiIiCi1uYW1lc3BhY2UgSlNDIHsKLSAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7
Ci19Ci0KLW5hbWVzcGFjZSAlcyB7Ci0KLSIiIiAlIG5hbWVzcGFjZSkKLQotY29kZVJlZmVyZW5j
ZXMgPSBbXQotCi1mb3IgKG9iamVjdE5hbWUsIGZ1bmN0aW9ucykgaW4gYnVpbHRpbnM6Ci0gICAg
cHJpbnQoIkdlbmVyYXRpbmcgYmluZGluZ3MgZm9yIHRoZSAlcyBidWlsdGluLiIgJSBvYmplY3RO
YW1lKQotICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIvKiAlcyBmdW5jdGlvbnMgKi9cbiIgJSBv
YmplY3ROYW1lKQotICAgIGZvciBmdW5jdGlvbiBpbiBmdW5jdGlvbnM6Ci0gICAgICAgIG5hbWUg
PSBmdW5jdGlvbi5uYW1lCi0gICAgICAgIG1hbmdsZWROYW1lID0gZnVuY3Rpb24ubWFuZ2xlTmFt
ZShvYmplY3ROYW1lKQotICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lWzBdLmxvd2Vy
KCkgKyBtYW5nbGVkTmFtZVsxOl0gKyAiQ29kZSIKLSAgICAgICAgY29kZVJlZmVyZW5jZXMuYXBw
ZW5kKChtYW5nbGVkTmFtZSwgZnVuY3Rpb24pKQotICAgICAgICBidWlsdGluc0hlYWRlci53cml0
ZSgiZXh0ZXJuIGNvbnN0IGNoYXIqIHNfJXM7XG4iICUgbWFuZ2xlZE5hbWUpCi0gICAgICAgIGJ1
aWx0aW5zSGVhZGVyLndyaXRlKCJleHRlcm4gY29uc3QgaW50IHNfJXNMZW5ndGg7XG4iICUgbWFu
Z2xlZE5hbWUpCi0gICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJleHRlcm4gY29uc3QgSlND
OjpDb25zdHJ1Y3RBYmlsaXR5IHNfJXNDb25zdHJ1Y3RBYmlsaXR5O1xuIiAlIG1hbmdsZWROYW1l
KQotICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJcbiIpCi0gICAgYnVpbHRpbnNIZWFkZXIud3Jp
dGUoIiNkZWZpbmUgJXNfRk9SRUFDSF8lc19CVUlMVElOKG1hY3JvKSBcXFxuIiAlIChtYWNyb1By
ZWZpeCwgb2JqZWN0TmFtZS5yZXBsYWNlKCIuIiwgIl8iKS51cHBlcigpKSkKLSAgICBmb3IgZnVu
Y3Rpb24gaW4gZnVuY3Rpb25zOgotICAgICAgICBtYW5nbGVkTmFtZSA9IGZ1bmN0aW9uLm1hbmds
ZU5hbWUob2JqZWN0TmFtZSkKLSAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiAgICBtYWNy
byglcywgJXMsICVkKSBcXFxuIiAlIChmdW5jdGlvbi5uYW1lLCBtYW5nbGVkTmFtZSwgbGVuKGZ1
bmN0aW9uLnBhcmFtZXRlcnMpKSkKLSAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG4iKQotICAg
IGZvciBmdW5jdGlvbiBpbiBmdW5jdGlvbnM6Ci0gICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRl
KCIjZGVmaW5lICVzX0JVSUxUSU5fJXMgMVxuIiAlIChtYWNyb1ByZWZpeCwgZnVuY3Rpb24ubWFu
Z2xlTmFtZShvYmplY3ROYW1lKS51cHBlcigpKSkKLSAgICBidWlsdGluc0hlYWRlci53cml0ZSgi
XG5cbiIpCi1uYW1lcyA9IFtdCi1idWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSAlc19GT1JF
QUNIX0JVSUxUSU4obWFjcm8pXFxcbiIgJSBtYWNyb1ByZWZpeCkKLWZvciAoY29kZVJlZmVyZW5j
ZSwgZnVuY3Rpb24pIGluIGNvZGVSZWZlcmVuY2VzOgotICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRl
KCIgICAgbWFjcm8oJXMsICVzLCBzXyVzTGVuZ3RoKSBcXFxuIiAlIChjb2RlUmVmZXJlbmNlLCBm
dW5jdGlvbi5uYW1lLCBjb2RlUmVmZXJlbmNlKSkKLSAgICBuYW1lcy5hcHBlbmQoZnVuY3Rpb24u
bmFtZSkKLQotYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuXG4iKQotYnVpbHRpbnNIZWFkZXIud3Jp
dGUoIiNkZWZpbmUgJXNfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFxcXG4i
ICUgbWFjcm9QcmVmaXgpCi1mb3IgbmFtZSBpbiBzb3J0ZWQoc2V0KG5hbWVzKSk6Ci0gICAgYnVp
bHRpbnNIZWFkZXIud3JpdGUoIiAgICBtYWNybyglcykgXFxcbiIgJSBuYW1lKQotYnVpbHRpbnNI
ZWFkZXIud3JpdGUoIiIiCi0KLSNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2Rl
TmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAotICAgIEpTQzo6RnVuY3Rpb25F
eGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKLQotJXNfRk9SRUFDSF9C
VUlMVElOKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCi0jdW5kZWYgREVDTEFSRV9CVUlMVElO
X0dFTkVSQVRPUgotCi0jZGVmaW5lICVzX0JVSUxUSU5fRVhJU1RTKG5hbWUpIGRlZmluZWQgJXNf
QlVJTFRJTl8gIyMgbmFtZQotCi19Ci0KLSNlbmRpZiAvLyAlcwotCi0iIiIgJSAobWFjcm9QcmVm
aXgsIG1hY3JvUHJlZml4LCBtYWNyb1ByZWZpeCwgaW5jbHVkZUd1YXJkKSkKLQotYnVpbHRpbnNJ
bXBsZW1lbnRhdGlvbi53cml0ZSgiIiIlcwotJXMKLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0j
aW5jbHVkZSAiJXMiCi0KLSIiIiAgJSAoZ2VuZXJhdG9yU3RyaW5nLCBjb3B5cmlnaHRUZXh0LCBo
ZWFkZXJOYW1lKSkKLQotd3JpdGVJbmNsdWRlRGlyZWN0aXZlcyhidWlsdGluc0ltcGxlbWVudGF0
aW9uLCBjb250ZW50SW5jbHVkZXMpCi0KLWJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIi
Ci1uYW1lc3BhY2UgJXMgewotCi0iIiIgICUgKG5hbWVzcGFjZSkpCi0KLQotCi1mb3IgKGNvZGVS
ZWZlcmVuY2UsIGZ1bmN0aW9uKSBpbiBjb2RlUmVmZXJlbmNlczoKLSAgICBzb3VyY2UgPSBmdW5j
dGlvbi5zb3VyY2UKLSAgICBzb3VyY2UgPSAiKGZ1bmN0aW9uICIgKyBzb3VyY2Vbc291cmNlLmlu
ZGV4KCIoIik6XSArICIpIgotICAgIGxpbmVzID0ganNvbi5kdW1wcyhzb3VyY2UpWzE6LTFdLnNw
bGl0KCJcXG4iKQotICAgIHNvdXJjZUxlbmd0aCA9IGxlbihzb3VyY2UpCi0gICAgc291cmNlID0g
IiIKLSAgICBmb3IgbGluZSBpbiBsaW5lczoKLSAgICAgICAgc291cmNlID0gc291cmNlICsgKCIg
ICAgXCIlc1xcblwiIFxcXG4iICUgbGluZSkKLSAgICBidWlsdGluc0ltcGxlbWVudGF0aW9uLndy
aXRlKCJjb25zdCBjaGFyKiBzXyVzID1cbiVzO1xuXG4iICUgKGNvZGVSZWZlcmVuY2UsIHNvdXJj
ZSkpCi0gICAgYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiY29uc3QgaW50IHNfJXNMZW5n
dGggPSAlZDtcblxuIiAlIChjb2RlUmVmZXJlbmNlLCBzb3VyY2VMZW5ndGggKyAxKSkgIyArIDEg
Zm9yIFxuCi0gICAgY29uc3RydWN0QWJpbGl0eSA9ICJKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNh
bm5vdENvbnN0cnVjdCIKLSAgICBpZiBmdW5jdGlvbi5pc0NvbnN0cnVjdG9yOgotICAgICAgICBj
b25zdHJ1Y3RBYmlsaXR5ID0gIkpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0Igot
ICAgIGJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoImNvbnN0IEpTQzo6Q29uc3RydWN0QWJp
bGl0eSBzXyVzQ29uc3RydWN0QWJpbGl0eSA9ICVzO1xuXG4iICUgKGNvZGVSZWZlcmVuY2UsIGNv
bnN0cnVjdEFiaWxpdHkpKSAjICsgMSBmb3IgXG4KLQotYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53
cml0ZSgiIiIKLSNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5j
dGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29k
ZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKLSIiIik7Ci0KLWlmIChuYW1lc3BhY2Ug
PT0gIkpTQyIpOgotICAgIGJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIie1xcCi0gICAg
cmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5s
aW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsgXFwK
LSIiIikKLWVsc2U6Ci0gICAgYnVpbHRpbk5hbWUgPSBzY29wZU5hbWVbMF0ubG93ZXIoKSArIHNj
b3BlTmFtZVsxOl0KLSAgICBidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIntcXAotICAg
IEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEq
Pih2bS5jbGllbnREYXRhKTsgXFwKLSAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0
aW9ucygpLiVzKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+
YnVpbHRpbkZ1bmN0aW9ucygpLiVzKCkuY29kZU5hbWUjI1NvdXJjZSgpKTsgXFwKLSIiIiUgKGJ1
aWx0aW5OYW1lLCBidWlsdGluTmFtZSkpCi0KLWJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUo
IiIifQotJXNfRk9SRUFDSF9CVUlMVElOKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKLSN1bmRl
ZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKLX0KLQotIiIiJSAobWFjcm9QcmVmaXgpKQotCi1i
dWlsdGluc0hlYWRlci5jbG9zZSgpCi1idWlsdGluc0ltcGxlbWVudGF0aW9uLmNsb3NlKCkKLQot
aWYgKG5vdCBvcy5wYXRoLmV4aXN0cyhvdXRwdXRfYmFzZSArICIuaCIpKSBvciAobm90IGZpbGVj
bXAuY21wKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsIG91dHB1dF9iYXNlICsgIi5oIiwgc2hhbGxv
dz1GYWxzZSkpOgotICAgIGlmIChvcy5wYXRoLmV4aXN0cyhvdXRwdXRfYmFzZSArICIuaCIpKToK
LSAgICAgICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5oIikKLSAgICBvcy5yZW5hbWUob3V0
cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmgiKQotZWxzZToKLSAgICBvcy5y
ZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmgudG1wIikKLQotaWYgKG5vdCBvcy5wYXRoLmV4aXN0cyhv
dXRwdXRfYmFzZSArICIuY3BwIikpIG9yIChub3QgZmlsZWNtcC5jbXAob3V0cHV0X2Jhc2UgKyAi
LmNwcC50bXAiLCBvdXRwdXRfYmFzZSArICIuY3BwIiwgc2hhbGxvdz1GYWxzZSkpOgotICAgIGlm
IChvcy5wYXRoLmV4aXN0cyhvdXRwdXRfYmFzZSArICIuY3BwIikpOgotICAgICAgICBvcy5yZW1v
dmUob3V0cHV0X2Jhc2UgKyAiLmNwcCIpCi0gICAgb3MucmVuYW1lKG91dHB1dF9iYXNlICsgIi5j
cHAudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmNwcCIpCi1lbHNlOgotICAgIG9zLnJlbW92ZShvdXRw
dXRfYmFzZSArICIuY3BwLnRtcCIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDVjZjFiYzFlYzIw
NjM2Yjc2Njg5ODE3Y2RhMTdkM2Q3ODQ4Y2Q4ZDkuLjBmMGM4YzJhMWRjZjk1ODFkOTgxZjIwM2I3
MGI5NTA3YjdlMThiYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC04MjEsMTQgKzgyMSwxNCBA
QCBzZXQoV2ViQ29yZV9JRExfRklMRVMKIGlmIChXSU4zMikKICAgICBpZiAoSU5URVJOQUxfQlVJ
TEQpCiAgICAgICAgIHNldChXZWJDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUiAiJHtDTUFLRV9C
SU5BUllfRElSfS8uLi9pbmNsdWRlL3ByaXZhdGUvSmF2YVNjcmlwdENvcmUiKQotICAgICAgICBz
ZXQoV2ViQ29yZV9HRU5FUkFURV9KU19CVUlMVElOU19TQ1JJUFRTX0RJUiAiJHtDTUFLRV9CSU5B
UllfRElSfS8uLi9pbmNsdWRlL3ByaXZhdGUvSmF2YVNjcmlwdENvcmUiKQorICAgICAgICBzZXQo
SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIgIiR7Q01BS0VfQklOQVJZX0RJUn0vLi4vaW5jbHVk
ZS9wcml2YXRlL0phdmFTY3JpcHRDb3JlIikKICAgICBlbHNlICgpCiAgICAgICAgIHNldChXZWJD
b3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUiAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rv
ci9zY3JpcHRzIikKLSAgICAgICAgc2V0KFdlYkNvcmVfR0VORVJBVEVfSlNfQlVJTFRJTlNfU0NS
SVBUU19ESVIgIiR7SkFWQVNDUklQVENPUkVfRElSfSIpCisgICAgICAgIHNldChKYXZhU2NyaXB0
Q29yZV9TQ1JJUFRTX0RJUiAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9IikKICAgICBlbmRpZiAoKQog
ZWxzZSAoKQogICAgIHNldChXZWJDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUiAiJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9zY3JpcHRzIikKLSAgICBzZXQoV2ViQ29yZV9HRU5FUkFU
RV9KU19CVUlMVElOU19TQ1JJUFRTX0RJUiAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9IikKKyAgICBz
ZXQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIgIiR7SkFWQVNDUklQVENPUkVfRElSfSIpCiBl
bmRpZiAoKQogCiBzZXQoV2ViQ29yZV9TT1VSQ0VTCkBAIC0zMzUzLDcgKzMzNTMsMTEgQEAgc2V0
KFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFICR7REVSSVZFRF9TT1VSQ0VTX1dF
QkNPUkVfRElSfS9Xb3JrZXJHbG8KIHNldChERURJQ0FURURXT1JLRVJHTE9CQUxTQ09QRV9DT05T
VFJVQ1RPUlNfRklMRSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsKQogc2V0KElETF9BVFRSSUJVVEVTX0ZJTEUg
JHtXRUJDT1JFX0RJUn0vYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dCkKIAotc2V0
KFdFQkNPUkVfSlNfQlVJTFRJTlMKK1dFQktJVF9JTkNMVURFX0NPTkZJR19GSUxFU19JRl9FWElT
VFMoKQorCisjIFdlYkNvcmUgSlMgQnVpbHRpbnMKKworc2V0KFdlYkNvcmVfQlVJTFRJTlNfU09V
UkNFUwogICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3RyZWFtcy9CeXRlTGVuZ3RoUXVldWlu
Z1N0cmF0ZWd5LmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zdHJlYW1zL0NvdW50UXVl
dWluZ1N0cmF0ZWd5LmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtLmpzCkBAIC0zMzYyLDcgKzMzNjYsMzUgQEAgc2V0KFdFQkNPUkVfSlNfQlVJTFRJ
TlMKICAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFk
ZXIuanMKICkKIAotV0VCS0lUX0lOQ0xVREVfQ09ORklHX0ZJTEVTX0lGX0VYSVNUUygpCitzZXQo
QlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNf
RElSKS9idWlsdGluc19nZW5lcmF0b3IucHkKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNf
RElSKS9idWlsdGluc19tb2RlbC5weQorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIp
L2J1aWx0aW5zX3RlbXBsYXRlcy5weQorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIp
L2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJ
UikvZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaGVhZGVyLnB5CisgICAgJChKYXZhU2NyaXB0
Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaW1wbGVtZW50YXRp
b24ucHkKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZV9idWlsdGlu
c19zZXBhcmF0ZV9oZWFkZXIucHkKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9n
ZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weQorICAgICQoSmF2YVNj
cmlwdENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX3dyYXBwZXIu
cHkKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9sYXp5d3JpdGVyLnB5CisKK2Zv
cmVhY2ggKF9idWlsdGluU291cmNlICR7V2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTfSkKKyAgICBn
ZXRfZmlsZW5hbWVfY29tcG9uZW50KF9vYmplY3ROYW1lICR7X2J1aWx0aW5Tb3VyY2V9IE5BTUVf
V0UpCisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICBPVVRQVVQgJHtERVJJVkVEX1NP
VVJDRVNfV0VCQ09SRV9ESVJ9LyR7X29iamVjdE5hbWV9QnVpbHRpbnMuY3BwCisgICAgICAgICAg
ICAgICAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vJHtfb2JqZWN0TmFtZX1CdWlsdGlu
cy5oCisgICAgICAgICAgICAgICAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vJHtfb2Jq
ZWN0TmFtZX1CdWlsdGluc1dyYXBwZXIuaCAKKyAgICAgICAgTUFJTl9ERVBFTkRFTkNZICR7QlVJ
TFRJTlNfR0VORVJBVE9SX1NDUklQVFN9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisgICAgICAg
IERFUEVORFMgJHtfYnVpbHRpblNvdXJjZX0gJHtCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUU30K
KyAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1ND
UklQVFNfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucy5weSAtLWZyYW1ld29yayBXZWJDb3JlIC0t
b3V0cHV0LWRpcmVjdG9yeSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0gJHtfYnVpbHRp
blNvdXJjZX0KKyAgICAgICAgVkVSQkFUSU0pCisgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCisgICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS8ke19vYmplY3ROYW1l
fUJ1aWx0aW5zLmgKKyAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9LyR7X29i
amVjdE5hbWV9QnVpbHRpbnNXcmFwcGVyLmgKKyAgICApCisgICAgQUREX1NPVVJDRV9XRUJDT1JF
X0RFUklWRURfREVQRU5ERU5DSUVTKCR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL2pzL1dlYkNvcmVK
U0J1aWx0aW5zLmNwcCAke19vYmplY3ROYW1lfUJ1aWx0aW5zLmNwcCkKK2VuZGZvcmVhY2ggKCkK
KwogCiAjIEdlbmVyYXRlIEluc3BlY3Rvck92ZXJsYXlQYWdlLmgKIGFkZF9jdXN0b21fY29tbWFu
ZCgKQEAgLTMzNzIsNyArMzQwNCw4IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBERVBFTkRT
IGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5UGFnZS5jc3MgaW5zcGVjdG9yL0luc3BlY3Rvck92
ZXJsYXlQYWdlLmpzCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke1dlYkNvcmVf
SU5TUEVDVE9SX1NDUklQVFNfRElSfS9pbmxpbmUtYW5kLW1pbmlmeS1zdHlsZXNoZWV0cy1hbmQt
c2NyaXB0cy5weSAke1dFQkNPUkVfRElSfS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheVBhZ2Uu
aHRtbCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yT3ZlcmxheVBhZ2Uu
Y29tYmluZWQuaHRtbAogICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7V2ViQ29yZV9J
TlNQRUNUT1JfU0NSSVBUU19ESVJ9L3h4ZC5wbCBJbnNwZWN0b3JPdmVybGF5UGFnZV9odG1sICR7
REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JPdmVybGF5UGFnZS5jb21iaW5l
ZC5odG1sICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JPdmVybGF5UGFn
ZS5oCi0gICAgVkVSQkFUSU0pCisgICAgVkVSQkFUSU0KKykKIGxpc3QoQVBQRU5EIFdlYkNvcmVf
U09VUkNFUyAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yT3ZlcmxheVBh
Z2UuaCkKIAogCkBAIC0zMzg0LDcgKzM0MTcsOCBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAg
Q09NTUFORCBlY2hvICIvLyMgc291cmNlVVJMPV9fV2ViSW5zcGVjdG9yQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2VfXyIgPiAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vQ29tbWFuZExp
bmVBUElNb2R1bGVTb3VyY2UubWluLmpzCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxF
fSAke1dlYkNvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSfS9qc21pbi5weSA8ICR7V0VCQ09SRV9E
SVJ9L2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyA+PiAke0RFUklWRURf
U09VUkNFU19XRUJDT1JFX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCiAg
ICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtXZWJDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRT
X0RJUn0veHhkLnBsIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlX2pzICR7REVSSVZFRF9TT1VS
Q0VTX1dFQkNPUkVfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMgJHtERVJJ
VkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKLSAg
ICBWRVJCQVRJTSkKKyAgICBWRVJCQVRJTQorKQogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VT
ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJj
ZS5oKQogCiAKQEAgLTM1ODUsMjMgKzM2MTksNiBAQCBHRU5FUkFURV9CSU5ESU5HUyhXZWJDb3Jl
VGVzdFN1cHBvcnRfU09VUkNFUwogICAgICR7U1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRX0K
ICAgICAke0FERElUSU9OQUxfQklORElOR1NfREVQRU5ERU5DSUVTfSkKIAotIyBXZWJDb3JlIEpT
IEJ1aWx0aW5zCi1mb3JlYWNoIChfYnVpbHRpbmpzICR7V0VCQ09SRV9KU19CVUlMVElOU30pCi0g
ICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChfbmFtZSAke19idWlsdGluanN9IE5BTUVfV0UpCi0g
ICAgYWRkX2N1c3RvbV9jb21tYW5kKAotICAgICAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNf
V0VCQ09SRV9ESVJ9LyR7X25hbWV9QnVpbHRpbnNXcmFwcGVyLmggJHtERVJJVkVEX1NPVVJDRVNf
V0VCQ09SRV9ESVJ9LyR7X25hbWV9QnVpbHRpbnMuaCAke0RFUklWRURfU09VUkNFU19XRUJDT1JF
X0RJUn0vJHtfbmFtZX1CdWlsdGlucy5jcHAKLSAgICAgICAgTUFJTl9ERVBFTkRFTkNZICR7V0VC
Q09SRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zCi0gICAgICAgIERFUEVORFMgJHtXZWJDb3Jl
X0dFTkVSQVRFX0pTX0JVSUxUSU5TX1NDUklQVFNfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucwot
ICAgICAgICBERVBFTkRTICR7X2J1aWx0aW5qc30KLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9F
WEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRp
bnMgLS1pbnB1dCAke19idWlsdGluanN9IC0tb3V0cHV0X2RpciAke0RFUklWRURfU09VUkNFU19X
RUJDT1JFX0RJUn0gLS1nZW5lcmF0ZV9qc19idWlsdGluc19wYXRoICR7V2ViQ29yZV9HRU5FUkFU
RV9KU19CVUlMVElOU19TQ1JJUFRTX0RJUn0KLSAgICAgICAgVkVSQkFUSU0pCi0gICAgbGlzdChB
UFBFTkQgV2ViQ29yZV9TT1VSQ0VTCi0gICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVf
RElSfS8ke19uYW1lfUJ1aWx0aW5zLmgKLSAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9LyR7X25hbWV9QnVpbHRpbnNXcmFwcGVyLmgKLSAgICApCi0gICAgQUREX1NPVVJDRV9X
RUJDT1JFX0RFUklWRURfREVQRU5ERU5DSUVTKCR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL2pzL1dl
YkNvcmVKU0J1aWx0aW5zLmNwcCAke19uYW1lfUJ1aWx0aW5zLmNwcCkKLWVuZGZvcmVhY2ggKCkK
LQogQUREX1NPVVJDRV9XRUJDT1JFX0RFUklWRURfREVQRU5ERU5DSUVTKCR7V0VCQ09SRV9ESVJ9
L2h0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcCBNYXRoTUxOYW1lcy5jcHApCiAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNDY2NTRmMmFkMzE4ODlkYjM0MjU3YmZkOGM4ZmFjOTNl
MmRmMDRiNS4uNGFlMjhkODI1Nzg1M2NhYmU5M2U4MThjYjFiZTE5YWZiOWY3NTIxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC03OTIsNyArNzkyLDYgQEAgYWxsIDogXAogICAg
ICQoV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIFwKICAgICAkKEpTX0RPTV9I
RUFERVJTKSBcCiAgICAgJChXRUJfRE9NX0hFQURFUlMpIFwKLSAgICAkKFdFQkNPUkVfSlNfQlVJ
TFRJTlMpIFwKICAgICBcCiAgICAgQ1NTR3JhbW1hci5jcHAgXAogICAgIENTU1Byb3BlcnR5TmFt
ZXMuY3BwIFwKQEAgLTEyNTEsNyArMTI1MCw3IEBAIFdlYlJlcGxheUlucHV0cy5oIDogJChJTlBV
VF9HRU5FUkFUT1JfU1BFQ0lGSUNBVElPTlMpICQoSU5QVVRfR0VORVJBVE9SX1NDUklQVFMpCiAK
ICMgV2ViQ29yZSBKUyBCdWlsdGlucwogCi1XRUJDT1JFX0pTX0JVSUxUSU5TID0gXAorV2ViQ29y
ZV9CVUlMVElOU19TT1VSQ0VTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL0J5
dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kuanMgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJl
YW1zL0NvdW50UXVldWluZ1N0cmF0ZWd5LmpzIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbS5qcyBcCkBAIC0xMjYwLDEwICsxMjU5LDMxIEBAIFdFQkNPUkVf
SlNfQlVJTFRJTlMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVT
dHJlYW1SZWFkZXIuanMgXAogIwogCi1hbGwgOiAkKFdFQkNPUkVfSlNfQlVJTFRJTlM6JS5qcz0l
QnVpbHRpbnMuY3BwKQorQlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMgPSBcCisgICAgJChKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5IFwKKyAgICAkKEph
dmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGluc19tb2RlbC5weSBcCisgICAgJChKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnNfdGVtcGxhdGVzLnB5IFwKKyAgICAkKEph
dmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9oZWFk
ZXIucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlX2J1aWx0
aW5zX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1ND
UklQVFNfRElSKS9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9oZWFkZXIucHkgXAorICAgICQo
SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2lt
cGxlbWVudGF0aW9uLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5l
cmF0ZV9idWlsdGluc19zZXBhcmF0ZV93cmFwcGVyLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3Jl
X1NDUklQVFNfRElSKS9nZW5lcmF0ZS1qcy1idWlsdGlucy5weSBcCisgICAgJChKYXZhU2NyaXB0
Q29yZV9TQ1JJUFRTX0RJUikvbGF6eXdyaXRlci5weSBcCisjCisKKyMgQWRkaW5nL3JlbW92aW5n
IHNjcmlwdHMgc2hvdWxkIHRyaWdnZXIgcmVnZW5lcmF0aW9uLCBidXQgY2hhbmdpbmcgd2hpY2gg
YnVpbHRpbnMgYXJlCisjIGdlbmVyYXRlZCBzaG91bGQgbm90IGFmZmVjdCBvdGhlciBidWlsdGlu
cyB3aGVuIG5vdCBwYXNzaW5nICctLWNvbWJpbmVkJyB0byB0aGUgZ2VuZXJhdG9yLgorCisuUEhP
Tlk6IGZvcmNlCitXZWJDb3JlX0JVSUxUSU5TX0RFUEVOREVOQ0lFU19MSVNUIDogJChKYXZhU2Ny
aXB0Q29yZV9TQ1JJUFRTX0RJUikvVXBkYXRlQ29udGVudHMucHkgZm9yY2UKKwkkKFBZVEhPTikg
JChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvVXBkYXRlQ29udGVudHMucHkgJyQoQlVJTFRJ
TlNfR0VORVJBVE9SX1NDUklQVFMpJyAkQAorCislQnVpbHRpbnMuaDogJS5qcyAkKEJVSUxUSU5T
X0dFTkVSQVRPUl9TQ1JJUFRTKSBXZWJDb3JlX0JVSUxUSU5TX0RFUEVOREVOQ0lFU19MSVNUCisJ
JChQWVRIT04pICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlLWpzLWJ1aWx0
aW5zLnB5IC0tb3V0cHV0LWRpcmVjdG9yeSAuIC0tZnJhbWV3b3JrIFdlYkNvcmUgJDwKIAotJUJ1
aWx0aW5zLmNwcDogJS5qcwotCSQoUFlUSE9OKSAkKFdlYkNvcmUpL2dlbmVyYXRlLWpzLWJ1aWx0
aW5zIC0taW5wdXQgJDwgLS1nZW5lcmF0ZV9qc19idWlsdGluc19wYXRoICQoR2VuZXJhdGVKU0J1
aWx0aW5zU2NyaXB0cykKK2FsbCA6ICQobm90ZGlyICQoV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VT
OiUuanM9JUJ1aWx0aW5zLmgpKQorCQogCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMDI3N2ZiODY2ODc2Y2YxOGI0Yjg4NzRhN2RjZDMyN2UxNWMxZDliZC4uYjBmNjVjNWQyN2Iw
OGJiZGZiMDBhZmIwMTU1NzBlOTViYWIxM2FlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ5MSw3ICsxNDkxLDcgQEAKIAkJ
NDEyOURGODYxQkI1QjgwQzAwMzIyQTE2IC8qIEpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3Ry
dWN0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTI5REY4NDFCQjVCN0Y3MDAzMjJBMTYgLyogSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1
Y3RvcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0MTM4RDMzNTEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM4RDMzMzEyNDQwNTQ4MDAzMjNE
MzMgLyogRXZlbnRDb250ZXh0LmggKi87IH07CiAJCTQxMzhEMzM2MTI0NDA1NDgwMDMyM0QzMyAv
KiBFdmVudENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDEzOEQzMzQxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4dC5jcHAgKi87
IH07Ci0JCTQxM0MyQzM0MUJDMjlBOEYwMDc1MjA0QyAvKiBKU0RPTUNvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNDMkMzMzFCQzI5
QTdCMDA3NTIwNEMgLyogSlNET01Db25zdHJ1Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBU1NFVF9U
QUdTID0gKCk7IH07IH07CisJCTQxM0MyQzM0MUJDMjlBOEYwMDc1MjA0QyAvKiBKU0RPTUNvbnN0
cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTNDMkMzMzFCQzI5QTdCMDA3NTIwNEMgLyogSlNET01Db25zdHJ1Y3Rvci5oICovOyB9OwogCQk0
MTUwNzE1NzE2ODUwNjczMDBDM0M3QjMgLyogU2VsZWN0b3JGaWx0ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1MDcxNTUxNjg1MDY3MzAwQzND
N0IzIC8qIFNlbGVjdG9yRmlsdGVyLmNwcCAqLzsgfTsKIAkJNDE1MDcxNTgxNjg1MDY3MzAwQzND
N0IzIC8qIFNlbGVjdG9yRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTUwNzE1NjE2ODUwNjczMDBDM0M3QjMgLyogU2VsZWN0b3JGaWx0ZXIu
aCAqLzsgfTsKIAkJNDE1MEY5RjExMkI2RTBFNzAwMDhDODYwIC8qIFNsaWRlclRodW1iRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1MEY5
RUYxMkI2RTBFNzAwMDhDODYwIC8qIFNsaWRlclRodW1iRWxlbWVudC5oICovOyB9OwpAQCAtMTUy
NCw5ICsxNTI0LDkgQEAKIAkJNDE5QkMyREUxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5r
U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDE5QkMyREMxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuY3BwICovOyB9Owog
CQk0MTlCQzJERjE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QkMyREQxNjg1MzI5OTAw
RDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuaCAqLzsgfTsKIAkJNDE5QkU3NTYxQkM3RjQxQjAw
RTFDODVCIC8qIFdlYkNvcmVKU0J1aWx0aW5JbnRlcm5hbHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUJFNzUzMUJDN0YzREIwMEUxQzg1QiAvKiBX
ZWJDb3JlSlNCdWlsdGluSW50ZXJuYWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDE5QkU3NTcxQkM3RjQyMTAwRTFDODVCIC8qIFdlYkNvcmVK
U0J1aWx0aW5zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxOUJFNzU0MUJDN0YzREIwMEUxQzg1QiAvKiBXZWJDb3JlSlNCdWlsdGlucy5jcHAgKi87
IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKLQkJNDE5QkU3NTgxQkM3RjQyNzAw
RTFDODVCIC8qIFdlYkNvcmVKU0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTlCRTc1NTFCQzdGM0RCMDBFMUM4NUIgLyogV2ViQ29yZUpT
QnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwotCQk0MTlC
RTc1OTFCQzdGNDJCMDBFMUM4NUIgLyogV2ViQ29yZUJ1aWx0aW5OYW1lcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QkU3NTIxQkM3RjNEQjAwRTFD
ODVCIC8qIFdlYkNvcmVCdWlsdGluTmFtZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9
ICgpOyB9OyB9OworCQk0MTlCRTc1NzFCQzdGNDIxMDBFMUM4NUIgLyogV2ViQ29yZUpTQnVpbHRp
bnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5
QkU3NTQxQkM3RjNEQjAwRTFDODVCIC8qIFdlYkNvcmVKU0J1aWx0aW5zLmNwcCAqLzsgfTsKKwkJ
NDE5QkU3NTgxQkM3RjQyNzAwRTFDODVCIC8qIFdlYkNvcmVKU0J1aWx0aW5zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTlCRTc1NTFCQzdGM0RCMDBF
MUM4NUIgLyogV2ViQ29yZUpTQnVpbHRpbnMuaCAqLzsgfTsKKwkJNDE5QkU3NTkxQkM3RjQyQjAw
RTFDODVCIC8qIFdlYkNvcmVCdWlsdGluTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUJFNzUyMUJDN0YzREIwMEUxQzg1QiAvKiBXZWJDb3Jl
QnVpbHRpbk5hbWVzLmggKi87IH07CiAJCTQxQTNENThFMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRp
Y2F0ZWRXb3JrZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFBM0Q1OEMxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRo
cmVhZC5jcHAgKi87IH07CiAJCTQxQTNENThGMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRX
b3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxQTNENThEMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCAq
LzsgfTsKIAkJNDFCRjcwMEMwRkU4NkY0OTAwNUU4REVDIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCRjcwMEEw
RkU4NkY0OTAwNUU4REVDIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC02MzcxLDggKzYzNzEsOCBAQAogCQlF
MUZGOEY2ODE4MDc0NjA4MDAxMzI2NzQgLyogSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRjhGNjYxODA3NDYw
ODAwMTMyNjc0IC8qIEpTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcCAqLzsgfTsKIAkJRTFGRjhGNkMx
ODBEQjVCRTAwMTMyNjc0IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkY4RjZBMTgwREI1QkUwMDEz
MjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHAgKi87IH07CiAJCUUxRkY4RjZEMTgw
REI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRjhGNkIxODBEQjVCRTAwMTMyNjc0
IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmggKi87IH07Ci0JCUUzODgzODk4MUJBRDE0NUYw
MEQ2MkVFMyAvKiBKU01vZHVsZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogSlNNb2R1bGVM
b2FkZXIuY3BwICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07Ci0JCUUzODgz
ODk5MUJBRDE0NUYwMEQ2MkVFMyAvKiBKU01vZHVsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8q
IEpTTW9kdWxlTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsK
KwkJRTM4ODM4OTgxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxlTG9hZGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODgzODk0MUJBRDE0NUYw
MEQ2MkVFMyAvKiBKU01vZHVsZUxvYWRlci5jcHAgKi87IH07CisJCUUzODgzODk5MUJBRDE0NUYw
MEQ2MkVFMyAvKiBKU01vZHVsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxlTG9h
ZGVyLmggKi87IH07CiAJCUU0MDFDMjc1MTdDRTUzRUMwMEM0MUEzNSAvKiBFbGVtZW50SXRlcmF0
b3JBc3NlcnRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNDAxQzI3NDE3Q0U1M0VDMDBDNDFBMzUgLyogRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9u
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0
MjRBMzlFMTMzMERGMDEwMENGNkRDOSAvKiBMZWdhY3lUaWxlR3JpZFRpbGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MjRBMzlEMTMzMERGMDEwMENG
NkRDOSAvKiBMZWdhY3lUaWxlR3JpZFRpbGUuaCAqLzsgfTsKIAkJRTQyNEEzQTAxMzMwREYxRTAw
Q0Y2REM5IC8qIExlZ2FjeVRpbGVHcmlkVGlsZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MjRBMzlGMTMzMERGMUUwMENGNkRDOSAvKiBMZWdhY3lU
aWxlR3JpZFRpbGUubW0gKi87IH07CkBAIC02NDIxLDggKzY0MjEsOCBAQAogCQlFNDRCNEJCMzE0
MTY1MEQ3MDAyQjFEOEIgLyogU2VsZWN0b3JDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NEI0QkIxMTQxNjUwRDcwMDJCMUQ4QiAvKiBT
ZWxlY3RvckNoZWNrZXIuY3BwICovOyB9OwogCQlFNDRCNEJCNDE0MTY1MEQ3MDAyQjFEOEIgLyog
U2VsZWN0b3JDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFNDRCNEJCMjE0MTY1MEQ3MDAyQjFEOEIgLyogU2VsZWN0b3JDaGVja2VyLmggKi87
IH07CiAJCUU0NEVFM0E4MTc1NzdFQkQwMEVFRThDRiAvKiBGb250R2VuZXJpY0ZhbWlsaWVzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NEVFM0E2
MTc1NzZFNTUwMEVFRThDRiAvKiBGb250R2VuZXJpY0ZhbWlsaWVzLmNwcCAqLzsgfTsKLQkJRTQ0
RkExODUxQkNBNkI1QTAwOTFCNkVGIC8qIENvbXBvc2VkVHJlZUl0ZXJhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDRGQTE4NDFCQ0E2QjVBMDA5
MUI2RUYgLyogQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFH
UyA9ICgpOyB9OyB9OwotCQlFNDRGQTE4NzFCQ0E5MTU2MDA5MUI2RUYgLyogQ29tcG9zZWRUcmVl
SXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTQ0RkExODYxQkNBOTE1NjAwOTFCNkVGIC8qIENvbXBvc2VkVHJlZUl0ZXJhdG9yLmNwcCAq
Lzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OworCQlFNDRGQTE4NTFCQ0E2QjVB
MDA5MUI2RUYgLyogQ29tcG9zZWRUcmVlSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NEZBMTg0MUJDQTZCNUEwMDkxQjZFRiAvKiBDb21w
b3NlZFRyZWVJdGVyYXRvci5oICovOyB9OworCQlFNDRGQTE4NzFCQ0E5MTU2MDA5MUI2RUYgLyog
Q29tcG9zZWRUcmVlSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTQ0RkExODYxQkNBOTE1NjAwOTFCNkVGIC8qIENvbXBvc2VkVHJlZUl0
ZXJhdG9yLmNwcCAqLzsgfTsKIAkJRTQ1MzIyQUIxNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9y
UXVlcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTQ1MzIyQTkxNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuY3BwICovOyB9OwogCQlF
NDUzMjJBQzE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1MzIyQUExNDBDRTI2NzAwNUEwRjky
IC8qIFNlbGVjdG9yUXVlcnkuaCAqLzsgfTsKIAkJRTQ1MzkwMUQwRUFGQ0FDQTAwMzY5NUM4IC8q
IE1JTUVUeXBlUmVnaXN0cnlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNDUzOTAxODBFQUZDQUNBMDAzNjk1QzggLyogTUlNRVR5cGVSZWdpc3Ry
eUlPUy5tbSAqLzsgfTsKQEAgLTExMzA4LDcgKzExMzA4LDYgQEAKIAkJOThDRTQzMjUxMjlFMDBC
RDAwNTgyMURDIC8qIExpbmtMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTGlua0xvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk4
Q0U0MzI5MTI5RTAwRTUwMDU4MjFEQyAvKiBMaW5rTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IExpbmtMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOThFQjFGOTQxMzEzRkUwNTAwRDBFMUVBIC8qIE5vdEltcGxlbWVudGVkLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vdEltcGxlbWVudGVkLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTk5MDhCMEVDMUJDQUNGMUYwMEVEMEY2NSAvKiBnZW5lcmF0ZS1qcy1i
dWlsdGlucyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1q
cy1idWlsdGlucyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEVEMUJDQUNG
OTEwMEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmpzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5qczsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRUUxQkNBQ0Y5MTAwRUQwRjY1IC8q
IENvdW50UXVldWluZ1N0cmF0ZWd5LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBwYXRoID0gQ291bnRRdWV1aW5nU3RyYXRlZ3kuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk5MDhCMEVGMUJDQUNGOTEwMEVEMEY2NSAvKiBSZWFkYWJsZVN0cmVhbS5qcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtLmpzOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUyODUsNyArMTUyODQsNiBAQAogCQkwODY3
RDY5MUZFODQwMjhGQzAyQUFDMDcgLyogV2ViS2l0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk5OTA4QjBFQzFCQ0FDRjFGMDBFRDBGNjUgLyogZ2VuZXJh
dGUtanMtYnVpbHRpbnMgKi8sCiAJCQkJNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZp
Zy5oICovLAogCQkJCUVERUM5ODAyMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4Lmgg
Ki8sCiAJCQkJOTMwNzA2MTMwOUUwQ0E4MjAwQjE3RkU0IC8qIERlcml2ZWRTb3VyY2VzLm1ha2Ug
Ki8sCkBAIC0yODEzOSw3ICsyODEzNyw3IEBACiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCQlzaGVsbFBhdGggPSAvYmluL3NoOwotCQkJc2hlbGxT
Y3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZVwiXG5jZCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlXCJcblxuL2Jpbi9sbiAtc2ZoIFwiJHtTUkNST09UfVwiIFdlYkNvcmVcbmV4cG9ydCBXZWJD
b3JlPVwiV2ViQ29yZVwiXG5leHBvcnQgSW5zcGVjdG9yU2NyaXB0cz1cIiR7SkFWQVNDUklQVENP
UkVfUFJJVkFURV9IRUFERVJTX0RJUn1cIlxuZXhwb3J0IFdlYlJlcGxheVNjcmlwdHM9XCIke0pB
VkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19ESVJ9XCJcbmV4cG9ydCBHZW5lcmF0ZUpTQnVp
bHRpbnNTY3JpcHRzPVwiJHtKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSfVwiXG5c
bmlmIFsgISAkQ0MgXTsgdGhlblxuICAgIGV4cG9ydCBDQz1cImB4Y3J1biAtZmluZCBjbGFuZ2Bc
IlxuZmlcblxuaWYgWyAhICRHUEVSRiBdOyB0aGVuXG4gICAgZXhwb3J0IEdQRVJGPVwiYHhjcnVu
IC1maW5kIGdwZXJmYFwiXG5maVxuXG5pZiBbIFwiJHtBQ1RJT059XCIgPSBcImJ1aWxkXCIgLW8g
XCIke0FDVElPTn1cIiA9IFwiaW5zdGFsbFwiIC1vIFwiJHtBQ1RJT059XCIgPSBcImluc3RhbGxo
ZHJzXCIgXTsgdGhlblxuICAgIG1ha2UgIC0tbm8tYnVpbHRpbi1ydWxlcyAtZiBcIldlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZVwiIC1qIGAvdXNyL3NiaW4vc3lzY3RsIC1uIGh3LmFjdGl2ZWNw
dWAgU0RLUk9PVD1cIiR7U0RLUk9PVH1cIlxuZmlcbiI7CisJCQlzaGVsbFNjcmlwdCA9ICJta2Rp
ciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9XZWJDb3JlXCJcbmNk
IFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmVcIlxuXG4vYmlu
L2xuIC1zZmggXCIke1NSQ1JPT1R9XCIgV2ViQ29yZVxuZXhwb3J0IFdlYkNvcmU9XCJXZWJDb3Jl
XCJcbmV4cG9ydCBJbnNwZWN0b3JTY3JpcHRzPVwiJHtKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hF
QURFUlNfRElSfVwiXG5leHBvcnQgV2ViUmVwbGF5U2NyaXB0cz1cIiR7SkFWQVNDUklQVENPUkVf
UFJJVkFURV9IRUFERVJTX0RJUn1cIlxuZXhwb3J0IEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
PVwiJHtKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSfVwiXG5cbmlmIFsgISAkQ0Mg
XTsgdGhlblxuICAgIGV4cG9ydCBDQz1cImB4Y3J1biAtZmluZCBjbGFuZ2BcIlxuZmlcblxuaWYg
WyAhICRHUEVSRiBdOyB0aGVuXG4gICAgZXhwb3J0IEdQRVJGPVwiYHhjcnVuIC1maW5kIGdwZXJm
YFwiXG5maVxuXG5pZiBbIFwiJHtBQ1RJT059XCIgPSBcImJ1aWxkXCIgLW8gXCIke0FDVElPTn1c
IiA9IFwiaW5zdGFsbFwiIC1vIFwiJHtBQ1RJT059XCIgPSBcImluc3RhbGxoZHJzXCIgXTsgdGhl
blxuICAgIG1ha2UgIC0tbm8tYnVpbHRpbi1ydWxlcyAtZiBcIldlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZVwiIC1qIGAvdXNyL3NiaW4vc3lzY3RsIC1uIGh3LmFjdGl2ZWNwdWAgU0RLUk9PVD1c
IiR7U0RLUk9PVH1cIlxuZmlcbiI7CiAJCX07CiAvKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHAKaW5kZXggMmFmOTc5OWVkMWViZWQ0ZmI5Y2I4ZDk0ZjY3NjhhYzk1NjJjZmMw
Mi4uZTM4ZDM1MzA5MThjYzBhZjY5MzM5ZmE3MjE5NWE3NDQ2Y2FjZTk4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC05NCw3ICs5NCw3
IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTRE9NV2lu
ZG93U2hlbGwqIHNoZWxsKQogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oXAogICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbkZ1
bmN0aW9ucygpLnJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMoKS5uYW1lIyNQcml2YXRl
TmFtZSgpLCBcCiAgICAgICAgICAgICBtX3ByaXZhdGVGdW5jdGlvbnMucmVhZGFibGVTdHJlYW1J
bnRlcm5hbHMoKS5tXyMjbmFtZSMjRnVuY3Rpb24uZ2V0KCkgLCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpLAotICAgICAgICBXRUJDT1JFUkVBREFCTEVTVFJFQU1JTlRFUk5BTFNfRk9SRUFDSF9CVUlM
VElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9HTE9CQUxfU1RBVElDKQorICAgICAgICBXRUJDT1JF
X0ZPUkVBQ0hfUkVBREFCTEVTVFJFQU1JTlRFUk5BTFNfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERF
Q0xBUkVfR0xPQkFMX1NUQVRJQykKICN1bmRlZiBERUNMQVJFX0dMT0JBTF9TVEFUSUMKICNlbmRp
ZgogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9nZW5lcmF0ZS1qcy1idWlsdGlu
cyBiL1NvdXJjZS9XZWJDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA2MWRkNjQyZTdjYTJmODlhNzhlMWQxYTUwM2Q4Yjk3ODJiNDA0NDgwLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zCisrKyAvZGV2L251bGwKQEAgLTEsMTgxICswLDAgQEAK
LSMhL3Vzci9iaW4vcHl0aG9uCi0jIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoK
LSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0j
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotIyBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0jIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0jIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSMgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLWltcG9ydCBhcmdwYXJzZQotaW1w
b3J0IGZpbGVjbXAKLWltcG9ydCBvcwotaW1wb3J0IHN1YnByb2Nlc3MKLQotZnJvbSBzdHJpbmcg
aW1wb3J0IFRlbXBsYXRlCi0KLQotcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQot
cGFyc2VyLmFkZF9hcmd1bWVudCgnLS1vdXRwdXRfZGlyJywgZGVmYXVsdD0nJywgaGVscD0nb3V0
cHV0IGRpcmVjdG9yeScpCi1wYXJzZXIuYWRkX2FyZ3VtZW50KCctLWlucHV0JywgaGVscD0ncGF0
aCB0byBpbnB1dCBKUyBmaWxlJykKLXBhcnNlci5hZGRfYXJndW1lbnQoJy0tZ2VuZXJhdGVfanNf
YnVpbHRpbnNfcGF0aCcsIGhlbHA9J3BhdGggdG8gZGlyZWN0b3J5IGNvbnRhaW5pbmcgSmF2YVNj
cmlwdENvcmVcJ3MgZ2VuZXJhdGUtanMtYnVpbHRpbnMnKQotCi1hcmdzID0gcGFyc2VyLnBhcnNl
X2FyZ3MoKQotZmlsZW5hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoYXJn
cy5pbnB1dCkpWzBdCi0KLSMgZ2VuZXJhdGUgSlMgYnVpbHRpbnMKLW5hbWVzcGFjZSA9ICJXZWJD
b3JlIgotcHJlZml4ID0gIldFQkNPUkUiICsgZmlsZW5hbWUudXBwZXIoKQotb3V0cHV0ID0gb3Mu
cGF0aC5qb2luKGFyZ3Mub3V0cHV0X2RpciwgZmlsZW5hbWUgKyAiQnVpbHRpbnMiKQotanNjX2dl
bmVyYXRlX2J1aWx0aW5fc2NyaXB0ID0gb3MucGF0aC5qb2luKGFyZ3MuZ2VuZXJhdGVfanNfYnVp
bHRpbnNfcGF0aCwgImdlbmVyYXRlLWpzLWJ1aWx0aW5zIikKLQotc3VicHJvY2Vzcy5jYWxsKFsi
cHl0aG9uIiwganNjX2dlbmVyYXRlX2J1aWx0aW5fc2NyaXB0LCAiLS1vdXRwdXQiLCBvdXRwdXQs
ICItLW5hbWVzcGFjZSIsIG5hbWVzcGFjZSwgIi0tcHJlZml4IiwgcHJlZml4LCBhcmdzLmlucHV0
XSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQotCi0jIGdlbmVyYXRlIEpTIGJ1aWx0aW5zIHdy
YXBwZXIKLW91dHB1dF9iYXNlID0gb3V0cHV0ICsgIldyYXBwZXIiCi0KLWJ1aWx0aW5zV3JhcHBl
ckhlYWRlciA9IG9wZW4ob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgInciKQotCi1idWlsdGluc1dy
YXBwZXJIZWFkZXIud3JpdGUoVGVtcGxhdGUoCi0iIiIKLS8qIEdlbmVyYXRlZCBieSBnZW5lcmF0
ZS1qcy1idWlsdGlucyBkbyBub3QgaGFuZCBlZGl0LiAqLwotCi0vKgotICoKLSAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAq
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAt
MTMwMSAgVVNBCi0gKi8KLQotI2lmbmRlZiAke0ZpbGVuYW1lfUJ1aWx0aW5zV3JhcHBlcl9oCi0j
ZGVmaW5lICR7RmlsZW5hbWV9QnVpbHRpbnNXcmFwcGVyX2gKLQotI2luY2x1ZGUgIiR7RmlsZW5h
bWV9QnVpbHRpbnMuaCIKLSNpbmNsdWRlIDxieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oPgotI2luY2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oPgotI2luY2x1ZGUgPHJ1
bnRpbWUvSWRlbnRpZmllci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzICR7RmlsZW5hbWV9QnVpbHRpbnNXcmFwcGVyIDog
cHJpdmF0ZSBKU0M6OldlYWtIYW5kbGVPd25lciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgJHtG
aWxlbmFtZX1CdWlsdGluc1dyYXBwZXIoSlNDOjpWTSogdm0pCi0gICAgICAgIDogbV92bSgqdm0p
Ci0gICAgICAgICR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFM
SVpFX0JVSUxUSU5fTkFNRVMpCi0jZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVN
QkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKEpTQzo6
bWFrZVNvdXJjZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFtZSwgbGVuZ3Ro
KSkpCi0gICAgICAgICR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU4oSU5JVElBTElaRV9CVUlMVElO
X1NPVVJDRV9NRU1CRVJTKQotI3VuZGVmIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVS
UwotICAgIHsKLSAgICB9Ci0KLSNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFt
ZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFxcCi0gICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcXAotICAgIGNvbnN0IEpTQzo6U291cmNlQ29k
ZSYgbmFtZSMjU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQotICAg
ICR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU4oRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCi0j
dW5kZWYgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMKLQotICAgICR7UHJlZml4fV9GT1JFQUNI
X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NP
UikKLQotICAgIHZvaWQgZXhwb3J0TmFtZXMoKTsKLQotcHJpdmF0ZToKLSAgICBKU0M6OlZNJiBt
X3ZtOwotCi0gICAgJHtQcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xB
UkVfQlVJTFRJTl9OQU1FUykKLQotI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJF
UlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFxcCi0gICAgSlNDOjpTb3VyY2VDb2RlIG1f
IyNuYW1lIyNTb3VyY2U7XFwKLSAgICBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZT4gbV8jI25hbWUjI0V4ZWN1dGFibGU7Ci0gICAgJHtQcmVmaXh9X0ZPUkVBQ0hfQlVJ
TFRJTihERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCi0jdW5kZWYgREVDTEFSRV9CVUlM
VElOX1NPVVJDRV9NRU1CRVJTCi0KLX07Ci0KLSNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VU
QUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFxcCi1pbmxpbmUgSlNDOjpVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogJHtGaWxlbmFtZX1CdWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4
ZWN1dGFibGUoKSBcXAote1xcCi0gICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSlcXAotICAg
ICAgICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9IEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlPihKU0M6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fdm0sIG1fIyNuYW1l
IyNTb3VyY2UsIGZ1bmN0aW9uTmFtZSMjUHVibGljTmFtZSgpLCBzXyMjbmFtZSMjQ29uc3RydWN0
QWJpbGl0eSksIHRoaXMsICZtXyMjbmFtZSMjRXhlY3V0YWJsZSk7XFwKLSAgICByZXR1cm4gbV8j
I25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7XFwKLX0KLSR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU4o
REVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCi0jdW5kZWYgREVGSU5FX0JVSUxUSU5fRVhFQ1VU
QUJMRVMKLQotaW5saW5lIHZvaWQgJHtGaWxlbmFtZX1CdWlsdGluc1dyYXBwZXI6OmV4cG9ydE5h
bWVzKCkKLXsKLSNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9OX05BTUUobmFtZSkgbV92bS5wcm9wZXJ0
eU5hbWVzLT5hcHBlbmRFeHRlcm5hbE5hbWUobmFtZSMjUHVibGljTmFtZSgpLCBuYW1lIyNQcml2
YXRlTmFtZSgpKTsKLSAgICAke1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUo
RVhQT1JUX0ZVTkNUSU9OX05BTUUpCi0jdW5kZWYgRVhQT1JUX0ZVTkNUSU9OX05BTUUKLX0KLQot
Y2xhc3MgJHtGaWxlbmFtZX1CdWlsdGluRnVuY3Rpb25zIHsKLXB1YmxpYzoKLSAgICBleHBsaWNp
dCAke0ZpbGVuYW1lfUJ1aWx0aW5GdW5jdGlvbnMoSlNDOjpWTSYgdm0pIDogbV92bSh2bSkgeyB9
Ci0KLSAgICB2b2lkIGluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYpOwotICAgIHZvaWQgdmlzaXQo
SlNDOjpTbG90VmlzaXRvciYpOwotCi1wdWJsaWM6Ci0gICAgSlNDOjpWTSYgbV92bTsKLQotI2Rl
ZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMoZnVuY3Rpb25OYW1lKSBcXAotICAg
IEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNGdW5jdGlvbj4gbV8jI2Z1bmN0aW9uTmFtZSMjRnVu
Y3Rpb247Ci0gICAgJHtQcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xB
UkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKLSN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNF
X01FTUJFUlMKLX07Ci0KLWlubGluZSB2b2lkICR7RmlsZW5hbWV9QnVpbHRpbkZ1bmN0aW9uczo6
aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0jZGVmaW5lIEVYUE9S
VF9GVU5DVElPTihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXFwKLSAgICBtXyMjZnVu
Y3Rpb25OYW1lIyNGdW5jdGlvbi5zZXQobV92bSwgJmdsb2JhbE9iamVjdCwgSlNDOjpKU0Z1bmN0
aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24obV92bSwgY29kZU5hbWUjI0dlbmVyYXRvcihtX3Zt
KSwgJmdsb2JhbE9iamVjdCkpOwotICAgICR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU4oRVhQT1JU
X0ZVTkNUSU9OKQotI3VuZGVmIEVYUE9SVF9GVU5DVElPTgotfQotCi1pbmxpbmUgdm9pZCAke0Zp
bGVuYW1lfUJ1aWx0aW5GdW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Ci17Ci0jZGVmaW5lIFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFt
ZSMjRnVuY3Rpb24pOwotICAgICR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFN
RShWSVNJVF9GVU5DVElPTikKLSN1bmRlZiBWSVNJVF9GVU5DVElPTgotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyAke0ZpbGVuYW1lfUJ1aWx0aW5zV3JhcHBlcl9oCi0i
IiIpLnN1YnN0aXR1dGUoZGljdChGaWxlbmFtZT1maWxlbmFtZSwgUHJlZml4PXByZWZpeCkpKQot
Ci1idWlsdGluc1dyYXBwZXJIZWFkZXIuY2xvc2UoKQotCi1pZiAobm90IG9zLnBhdGguZXhpc3Rz
KG91dHB1dF9iYXNlICsgIi5oIikpIG9yIChub3QgZmlsZWNtcC5jbXAob3V0cHV0X2Jhc2UgKyAi
LmgudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmgiLCBzaGFsbG93PUZhbHNlKSk6Ci0gICAgaWYgKG9z
LnBhdGguZXhpc3RzKG91dHB1dF9iYXNlICsgIi5oIikpOgotICAgICAgICBvcy5yZW1vdmUob3V0
cHV0X2Jhc2UgKyAiLmgiKQotICAgIG9zLnJlbmFtZShvdXRwdXRfYmFzZSArICIuaC50bXAiLCBv
dXRwdXRfYmFzZSArICIuaCIpCi1lbHNlOgotICAgIG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIu
aC50bXAiKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDY4ZjQ5NWEyY2NjMzY3Yzc4NWVmNDEzYzQwZDc3NjlhMGMwZDljYTMuLjc0ODIzNzFhMGIw
OWY0OGM1ZGU0NzhhMGE1ZTk3NDQ4NjE0OTdmMjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxNS0xMC0xMyAgQnJp
YW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBSZXN0cnVjdHVyZSBnZW5lcmF0
ZS1qcy1iaW5kaW5ncyBzY3JpcHQgdG8gYmUgbW9kdWxhciBhbmQgdGVzdGFibGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTkyOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHN0dWIgc2hlbGwg
c2NyaXB0IGFuZCBiYXNpYyB3ZWJraXRweSBzdXBwb3J0IGZvciBydW5uaW5nIGJ1aWx0aW5zCisg
ICAgICAgIGdlbmVyYXRvciB0ZXN0cy4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWJ1aWx0aW5z
LWdlbmVyYXRvci10ZXN0czogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2NvZGVnZW4vX19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvY29kZWdlbi9tYWluLnB5OiBBZGRlZC4KKworICAgICAgICAgICAgVGhlIG9u
bHkgaW50ZXJlc3RpbmcgZGlmZmVyZW5jZSBoZXJlIGZyb20gdGhlIGluc3BlY3RvciBwcm90b2Nv
bAorICAgICAgICAgICAgZ2VuZXJhdG9yIGVxdWl2YWxlbnQgaXMgdGhhdCB0aGlzIGltcGxlbWVu
dGF0aW9uIGRlY29kZXMgdGhlIHRhcmdldAorICAgICAgICAgICAgZnJhbWV3b3JrIGFuZCBvdXRw
dXQgbW9kZSAoY29tYmluZWQgb3Igc2VwYXJhdGUpIGZyb20gdGhlIHRlc3QncyBmaWxlIG5hbWUu
CisKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHMpOgorICAgICAgICAoQnVpbHRpbnNH
ZW5lcmF0b3JUZXN0cy5fX2luaXRfXyk6CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvclRlc3Rz
LmdlbmVyYXRlX2Zyb21fanNfYnVpbHRpbnMpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3JU
ZXN0cy53cml0ZV9lcnJvcl9maWxlKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHMu
ZGV0ZWN0X2NoYW5nZXMpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3JUZXN0cy5ydW5fdGVz
dHMpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3JUZXN0cy5tYWluKToKKwogMjAxNS0xMC0x
NCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lP
TihyMTkwODgyKTogQ29uY2F0ZW5hdGluZyBhIGNoYXJhY3RlciBhcnJheSBhbmQgYW4gZW1wdHkg
c3RyaW5nIGlzIGJyb2tlbi4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWJ1aWx0aW5z
LWdlbmVyYXRvci10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWJ1aWx0aW5zLWdlbmVyYXRvci10
ZXN0cwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yMzk4Yzc4Y2ExMGVjNTk3NjI2NjEyYzg1NTUzYWJkMWE0ZTZmYmQ0
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tYnVpbHRpbnMtZ2VuZXJhdG9y
LXRlc3RzCkBAIC0wLDAgKzEsNDIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHN5cworZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtIGltcG9ydCBleGVjdXRpdmUKKworZGVmIG1haW4oYXJndik6CisgICAgIiIi
UnVucyB0aGUgSlMgYnVpbHRpbnMgY29kZSBnZW5lcmF0b3Igb24gdGVzdCBpbnB1dCBmaWxlcyBh
bmQgY29tcGFyZXMKKyAgICB0aGUgcmVzdWx0cyB3aXRoIHJlZmVyZW5jZSBmaWxlcy4KKworICAg
IE9wdGlvbnM6CisgICAgICAgLS1yZXNldC1yZXN1bHRzOiBPdmVyd3JpdGVzIHRoZSByZWZlcmVu
Y2UgZmlsZXMgd2l0aCB0aGUgZ2VuZXJhdGVkIHJlc3VsdHMuCisKKyAgICAiIiIKKyAgICByZXNl
dF9yZXN1bHRzID0gIi0tcmVzZXQtcmVzdWx0cyIgaW4gYXJndgorCisgICAgZnJvbSB3ZWJraXRw
eS5jb2RlZ2VuLm1haW4gaW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHMKKyAgICByZXR1cm4g
QnVpbHRpbnNHZW5lcmF0b3JUZXN0cyhyZXNldF9yZXN1bHRzLCBleGVjdXRpdmUuRXhlY3V0aXZl
KCkpLm1haW4oKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHN5cy5leGl0KG1h
aW4oc3lzLmFyZ3YpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb2RlZ2Vu
L19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb2RlZ2VuL19faW5pdF9fLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmVmNjViZWU1YmI3N2U5NmViYzdjZDljNDc2NDA2OTBmYmRhOGFjMTkKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvZGVnZW4vX19pbml0X18u
cHkKQEAgLTAsMCArMSBAQAorIyBSZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRp
cmVjdG9yeSBmb3IgbW9kdWxlIGZpbGVzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvZGVnZW4vbWFpbi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29kZWdlbi9tYWlu
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjAwMzk2ZGI5YTM4YmUwZjA3YmUxODYzYjg4YWVkNDFlZGY5N2Q5NjkK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvZGVnZW4vbWFpbi5w
eQpAQCAtMCwwICsxLDE0NCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUworIyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQKKyMgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBCisjIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgb3MKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgc2h1
dGlsCitpbXBvcnQgc3lzCitpbXBvcnQgdGVtcGZpbGUKK2Zyb20gd2Via2l0cHkuY29tbW9uLmNo
ZWNrb3V0LnNjbS5kZXRlY3Rpb24gaW1wb3J0IGRldGVjdF9zY21fc3lzdGVtCitmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgorCisKK2NsYXNz
IEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHM6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVzZXRf
cmVzdWx0cywgZXhlY3V0aXZlKToKKyAgICAgICAgc2VsZi5yZXNldF9yZXN1bHRzID0gcmVzZXRf
cmVzdWx0cworICAgICAgICBzZWxmLmV4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZQorCisgICAgZGVmIGdl
bmVyYXRlX2Zyb21fanNfYnVpbHRpbnMoc2VsZiwgYnVpbHRpbnNfZmlsZSwgb3V0cHV0X2RpcmVj
dG9yeSwgZnJhbWV3b3JrX25hbWU9IiIsIGNvbWJpbmVkX291dHB1dHM9RmFsc2UpOgorICAgICAg
ICBjbWQgPSBbJ3B5dGhvbicsCisgICAgICAgICAgICAgICAnSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weScsCisgICAgICAgICAgICAgICAnLS1vdXRwdXQtZGly
ZWN0b3J5Jywgb3V0cHV0X2RpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICctLWZvcmNlJywKKyAg
ICAgICAgICAgICAgICctLWZyYW1ld29yaycsIGZyYW1ld29ya19uYW1lLAorICAgICAgICAgICAg
ICAgJy0tdGVzdCddCisKKyAgICAgICAgaWYgY29tYmluZWRfb3V0cHV0czoKKyAgICAgICAgICAg
IGNtZC5hcHBlbmQoJy0tY29tYmluZWQnKQorCisgICAgICAgIGNtZC5hcHBlbmQoYnVpbHRpbnNf
ZmlsZSkKKworICAgICAgICBleGl0X2NvZGUgPSAwCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IHN0ZGVycl9vdXRwdXQgPSBzZWxmLmV4ZWN1dGl2ZS5ydW5fY29tbWFuZChjbWQpCisgICAgICAg
ICAgICBpZiBzdGRlcnJfb3V0cHV0OgorICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfZXJyb3Jf
ZmlsZShidWlsdGluc19maWxlLCBvdXRwdXRfZGlyZWN0b3J5LCBzdGRlcnJfb3V0cHV0KQorICAg
ICAgICBleGNlcHQgU2NyaXB0RXJyb3IsIGU6CisgICAgICAgICAgICBwcmludCBlLm91dHB1dAor
ICAgICAgICAgICAgZXhpdF9jb2RlID0gZS5leGl0X2NvZGUKKyAgICAgICAgcmV0dXJuIGV4aXRf
Y29kZQorCisgICAgZGVmIHdyaXRlX2Vycm9yX2ZpbGUoc2VsZiwgaW5wdXRfZmlsZXBhdGgsIG91
dHB1dF9kaXJlY3RvcnksIGVycm9yX291dHB1dCk6CisgICAgICAgIG91dHB1dF9maWxlcGF0aCA9
IG9zLnBhdGguam9pbihvdXRwdXRfZGlyZWN0b3J5LCBvcy5wYXRoLmJhc2VuYW1lKGlucHV0X2Zp
bGVwYXRoKSArICctZXJyb3InKQorCisgICAgICAgIHdpdGggb3BlbihvdXRwdXRfZmlsZXBhdGgs
ICJ3IikgYXMgb3V0cHV0X2ZpbGU6CisgICAgICAgICAgICBvdXRwdXRfZmlsZS53cml0ZShlcnJv
cl9vdXRwdXQpCisKKyAgICBkZWYgZGV0ZWN0X2NoYW5nZXMoc2VsZiwgd29ya19kaXJlY3Rvcnks
IHJlZmVyZW5jZV9kaXJlY3RvcnkpOgorICAgICAgICBjaGFuZ2VzX2ZvdW5kID0gRmFsc2UKKyAg
ICAgICAgZm9yIG91dHB1dF9maWxlIGluIG9zLmxpc3RkaXIod29ya19kaXJlY3RvcnkpOgorICAg
ICAgICAgICAgY21kID0gWydkaWZmJywKKyAgICAgICAgICAgICAgICAgICAnLXUnLAorICAgICAg
ICAgICAgICAgICAgICctTicsCisgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHJlZmVy
ZW5jZV9kaXJlY3RvcnksIG91dHB1dF9maWxlKSwKKyAgICAgICAgICAgICAgICAgICBvcy5wYXRo
LmpvaW4od29ya19kaXJlY3RvcnksIG91dHB1dF9maWxlKV0KKworICAgICAgICAgICAgZXhpdF9j
b2RlID0gMAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG91dHB1dCA9IHNlbGYu
ZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGNtZCkKKyAgICAgICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJv
ciwgZToKKyAgICAgICAgICAgICAgICBvdXRwdXQgPSBlLm91dHB1dAorICAgICAgICAgICAgICAg
IGV4aXRfY29kZSA9IGUuZXhpdF9jb2RlCisKKyAgICAgICAgICAgIGlmIGV4aXRfY29kZSBvciBv
dXRwdXQ6CisgICAgICAgICAgICAgICAgcHJpbnQgJ0ZBSUw6ICVzJyAlIG91dHB1dF9maWxlCisg
ICAgICAgICAgICAgICAgcHJpbnQgb3V0cHV0CisgICAgICAgICAgICAgICAgY2hhbmdlc19mb3Vu
ZCA9IFRydWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcHJpbnQgJ1BBU1M6
ICVzJyAlIG91dHB1dF9maWxlCisgICAgICAgIHJldHVybiBjaGFuZ2VzX2ZvdW5kCisKKyAgICBk
ZWYgcnVuX3Rlc3RzKHNlbGYsIGlucHV0X2RpcmVjdG9yeSwgcmVmZXJlbmNlX2RpcmVjdG9yeSk6
CisgICAgICAgIHdvcmtfZGlyZWN0b3J5ID0gcmVmZXJlbmNlX2RpcmVjdG9yeQorCisgICAgICAg
IHBhc3NlZCA9IFRydWUKKyAgICAgICAgZm9yIGlucHV0X2ZpbGUgaW4gb3MubGlzdGRpcihpbnB1
dF9kaXJlY3RvcnkpOgorICAgICAgICAgICAgKHRlc3RfbmFtZSwgZXh0ZW5zaW9uKSA9IG9zLnBh
dGguc3BsaXRleHQoaW5wdXRfZmlsZSkKKyAgICAgICAgICAgIGlmIGV4dGVuc2lvbiAhPSAnLmpz
JzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBHZW5lcmF0ZSBvdXRw
dXQgaW50byB0aGUgd29yayBkaXJlY3RvcnkgKGVpdGhlciB0aGUgZ2l2ZW4gb25lIG9yIGEKKyAg
ICAgICAgICAgICMgdGVtcCBvbmUgaWYgbm90IHJlc2V0X3Jlc3VsdHMgaXMgcGVyZm9ybWVkKQor
ICAgICAgICAgICAgaWYgbm90IHNlbGYucmVzZXRfcmVzdWx0czoKKyAgICAgICAgICAgICAgICB3
b3JrX2RpcmVjdG9yeSA9IHRlbXBmaWxlLm1rZHRlbXAoKQorCisgICAgICAgICAgICAoZnJhbWV3
b3JrX25hbWUsIHRlc3RfY2FzZSwgb3V0cHV0X21vZGUpID0gdGVzdF9uYW1lLnNwbGl0KCctJykK
KyAgICAgICAgICAgIGlmIG5vdCBmcmFtZXdvcmtfbmFtZSBvciBub3Qgb3V0cHV0X21vZGUgb3Ig
bm90IHRlc3RfY2FzZToKKyAgICAgICAgICAgICAgICBwcmludCAiSW52YWxpZCB0ZXN0IGNhc2Ug
bmFtZTogc2hvdWxkIGJlIEZyYW1ld29yay1UZXN0Q2FzZU5hbWUtT3V0cHV0TW9kZS5qcyIKKyAg
ICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBjb21iaW5lZF9vdXRwdXRzID0g
b3V0cHV0X21vZGUgPT0gIkNvbWJpbmVkIgorICAgICAgICAgICAgaWYgc2VsZi5nZW5lcmF0ZV9m
cm9tX2pzX2J1aWx0aW5zKG9zLnBhdGguam9pbihpbnB1dF9kaXJlY3RvcnksIGlucHV0X2ZpbGUp
LCB3b3JrX2RpcmVjdG9yeSwgZnJhbWV3b3JrX25hbWU9ZnJhbWV3b3JrX25hbWUsIGNvbWJpbmVk
X291dHB1dHM9Y29tYmluZWRfb3V0cHV0cyk6CisgICAgICAgICAgICAgICAgcGFzc2VkID0gRmFs
c2UKKworICAgICAgICAgICAgaWYgc2VsZi5yZXNldF9yZXN1bHRzOgorICAgICAgICAgICAgICAg
IHByaW50ICJSZXNldCByZXN1bHRzIGZvciB0ZXN0OiAlcyIgJSAoaW5wdXRfZmlsZSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAjIERldGVjdCBjaGFuZ2VzCisgICAg
ICAgICAgICBpZiBzZWxmLmRldGVjdF9jaGFuZ2VzKHdvcmtfZGlyZWN0b3J5LCByZWZlcmVuY2Vf
ZGlyZWN0b3J5KToKKyAgICAgICAgICAgICAgICBwYXNzZWQgPSBGYWxzZQorICAgICAgICAgICAg
c2h1dGlsLnJtdHJlZSh3b3JrX2RpcmVjdG9yeSkKKworICAgICAgICByZXR1cm4gcGFzc2VkCisK
KyAgICBkZWYgbWFpbihzZWxmKToKKyAgICAgICAgY3VycmVudF9zY20gPSBkZXRlY3Rfc2NtX3N5
c3RlbShvcy5jdXJkaXIpCisgICAgICAgIG9zLmNoZGlyKG9zLnBhdGguam9pbihjdXJyZW50X3Nj
bS5jaGVja291dF9yb290LCAnU291cmNlJykpCisKKyAgICAgICAgYWxsX3Rlc3RzX3Bhc3NlZCA9
IFRydWUKKworICAgICAgICBpbnB1dF9kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oJ0phdmFTY3Jp
cHRDb3JlJywgJ1NjcmlwdHMnLCAndGVzdHMnLCAnYnVpbHRpbnMnKQorICAgICAgICByZWZlcmVu
Y2VfZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKCdKYXZhU2NyaXB0Q29yZScsICdTY3JpcHRzJywg
J3Rlc3RzJywgJ2J1aWx0aW5zJywgJ2V4cGVjdGVkJykKKyAgICAgICAgaWYgbm90IHNlbGYucnVu
X3Rlc3RzKGlucHV0X2RpcmVjdG9yeSwgcmVmZXJlbmNlX2RpcmVjdG9yeSk6CisgICAgICAgICAg
ICBhbGxfdGVzdHNfcGFzc2VkID0gRmFsc2UKKworICAgICAgICBwcmludCAnJworICAgICAgICBp
ZiBhbGxfdGVzdHNfcGFzc2VkOgorICAgICAgICAgICAgcHJpbnQgJ0FsbCB0ZXN0cyBQQVNTIScK
KyAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcmludCAn
U29tZSB0ZXN0cyBGQUlMISAoVG8gdXBkYXRlIHRoZSByZWZlcmVuY2UgZmlsZXMsIGV4ZWN1dGUg
InJ1bi1idWlsdGlucy1nZW5lcmF0b3ItdGVzdHMgLS1yZXNldC1yZXN1bHRzIiknCisgICAgICAg
ICAgICByZXR1cm4gLTEK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263121</attachid>
            <date>2015-10-14 16:32:28 -0700</date>
            <delta_ts>2015-10-19 17:10:29 -0700</delta_ts>
            <desc>Try again</desc>
            <filename>bug-149929-20151014163150.patch</filename>
            <type>text/plain</type>
            <size>327918</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
ZWYxZDMwNTFmN2MxZDdiZTc4MDU4YjhiY2VjYTE4M2M3N2RiYjg2Li45MDA5ZjM2NTJkMjc2NzRm
OWI4MWMwNmNiNTdhZTJjNjExOTUyZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTUgQEAKKzIwMTUtMTAtMTMgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmVzdHJ1Y3R1cmUgZ2VuZXJhdGUtanMtYmluZGluZ3Mgc2NyaXB0IHRvIGJlIG1v
ZHVsYXIgYW5kIHRlc3RhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDk5MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGlzIGEgbmV3IGNvZGUgZ2VuZXJhdG9yLCBiYXNlZCBvbiB0aGUgcmVw
bGF5IGlucHV0cyBjb2RlIGdlbmVyYXRvciBhbmQKKyAgICAgICAgdGhlIGluc3BlY3RvciBwcm90
b2NvbCBjb2RlIGdlbmVyYXRvciwgd2hpY2ggcHJvZHVjZXMgdmFyaW91cyBmaWxlcyBmb3IgSlMK
KyAgICAgICAgYnVpbHRpbnMuCisKKyAgICAgICAgUmVsYXRpdmUgdG8gdGhlIGdlbmVyYXRvciBp
dCByZXBsYWNlcywgdGhpcyBvbmUgY29uc29saWRhdGVzIHR3byBzY3JpcHRzIGluCisgICAgICAg
IEphdmFTY3JpcHRDb3JlIGFuZCBXZWJDb3JlIGludG8gYSBzaW5nbGUgc2NyaXB0IHdpdGggbXVs
dGlwbGUgZmlsZXMuIFBhcnNlZAorICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnVpbHRp
bnMgZmlsZSBpcyBzdG9yZWQgaW4gYmFja2VuZC1pbmRlcGVuZGVudCBtb2RlbAorICAgICAgICBv
YmplY3RzLiBFYWNoIG91dHB1dCBmaWxlIGhhcyBpdHMgb3duIGNvZGUgZ2VuZXJhdG9yIHRoYXQg
dXNlcyB0aGUgbW9kZWwgdG8KKyAgICAgICAgcHJvZHVjZSByZXN1bHRpbmcgY29kZS4gR2VuZXJh
dG9ycyBhcmUgYWRkaXRpb25hbGx5IHBhcmFtZXRlcml6ZWQgYnkgdGhlIHRhcmdldAorICAgICAg
ICBmcmFtZXdvcmsgKHRvIGNob29zZSBjb3JyZWN0IG1hY3JvcyBhbmQgaW5jbHVkZXMpIGFuZCBv
dXRwdXQgbW9kZSAob25lCisgICAgICAgIGhlYWRlci9pbXBsZW1lbnRhdGlvbiBmaWxlIHBlciBi
dWlsdGluIG9yIHBlciBmcmFtZXdvcmspLgorCisgICAgICAgIEl0IGluY2x1ZGVzIGEgZmV3IHNp
bXBsZSB0ZXN0cyBvZiB0aGUgZ2VuZXJhdG9yJ3MgZnVuY3Rpb25hbGl0eS4gVGhlc2UgcmVzdWx0
LQorICAgICAgICBiYXNlZCB0ZXN0cyB3aWxsIGJlY29tZSBpbmNyZWFzaW5nbHkgbW9yZSBpbXBv
cnRhbnQgYXMgd2Ugc3RhcnQgdG8gYWRkIHN1cHBvcnQKKyAgICAgICAgZm9yIGJ1aWx0aW5zIGFu
bm90YXRpb24gc3VjaCBhcyBAb3B0aW9uYWwsIEBpbnRlcm5hbCwgZXRjLiB0byB0aGUgY29kZSBn
ZW5lcmF0b3IuCisKKyAgICAgICAgU29tZSBvZiB0aGVzZSBjb21wbGV4aXRpZXMsIHN1Y2ggYXMg
aGF2aW5nIHR3byBvdXRwdXQgbW9kZXMsIHdpbGwgYmUgcmVtb3ZlZCBpbgorICAgICAgICBzdWJz
ZXF1ZW50IHBhdGNoZXMuIFRoaXMgcGF0Y2ggaXMgaW50ZW5kZWQgdG8gZXhhY3RseSByZXBsYWNl
IHRoZSBleGlzdGluZworICAgICAgICBmdW5jdGlvbmFsaXR5IHdpdGggYSB1bmlmaWVkIHNjcmlw
dCB0aGF0IG1ha2VzIGFkZGl0aW9uYWwgY2xlYW51cHMgc3RyYWlnaHRmb3J3YXJkLgorCisgICAg
ICAgIEFkZGl0aW9uYWwgY2xlYW51cCBhbmQgY29uc29saWRhdGlvbiBiZXR3ZWVuIGluc3BlY3Rv
ciBjb2RlIGdlbmVyYXRvciBzY3JpcHRzCisgICAgICAgIGFuZCB0aGlzIHNjcmlwdCB3aWxsIGJl
IHB1cnN1ZWQgaW4gZm9sbG93dXAgcGF0Y2hlcy4KKworICAgICAgICBOZXcgdGVzdHM6CisKKyAg
ICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21p
c2UtQ29tYmluZWQuanMKKyAgICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0
Q29yZS1CdWlsdGluLlByb21pc2UtU2VwYXJhdGUuanMKKyAgICAgICAgU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5qcworICAg
ICAgICBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90
eXBlLVNlcGFyYXRlLmpzCisgICAgICAgIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlw
dENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpzCisgICAgICAgIFNjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFyYXRlLmpz
CisgICAgICAgIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1T
ZXBhcmF0ZS5qcworICAgICAgICBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRl
ZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcworICAgICAgICBTY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcworICAgICAgICBTY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcworCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKworICAgICAgICAgICAgRGVmaW5lIEphdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSIGV4cGxpY2l0bHkgc28gdGhlIGFkZF9jdXN0b21fY29tbWFuZCBhbmQK
KyAgICAgICAgICAgIHNoYXJlZCBmaWxlIGxpc3RzIGFyZSBpZGVudGljYWwgYmV0d2VlbiBKYXZh
U2NyaXB0Q29yZSBhbmQgV2ViQ29yZS4KKworICAgICAgICAgICAgVGhlIG91dHB1dCBmaWxlcyBh
ZGRpdGlvbmFsbHkgZGVwZW5kIG9uIGFsbCBidWlsdGluIGdlbmVyYXRvciBzY3JpcHQgZmlsZXMK
KyAgICAgICAgICAgIGFuZCBpbnB1dCBmaWxlcyB0aGF0IGFyZSBjb21iaW5lZCBpbnRvIHRoZSBz
aW5nbGUgaGVhZGVyL2ltcGxlbWVudGF0aW9uIGZpbGUuCisKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy5tYWtlOgorCisgICAgICAgICAgICBEZWZpbmUgSmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVIgZXhwbGljaXRseSBzbyB0aGUgcnVsZSBmb3IgY29kZSBnZW5lcmF0aW9uIGFuZAorICAgICAg
ICAgICAgc2hhcmVkIGZpbGUgbGlzdHMgYXJlIGlkZW50aWNhbCBiZXR3ZWVuIEphdmFTY3JpcHRD
b3JlIGFuZCBXZWJDb3JlLgorCisgICAgICAgICAgICBUaGUgb3V0cHV0IGZpbGVzIGFkZGl0aW9u
YWxseSBkZXBlbmQgb24gYWxsIGJ1aWx0aW4gZ2VuZXJhdG9yIHNjcmlwdCBmaWxlcworICAgICAg
ICAgICAgYW5kIGlucHV0IGZpbGVzIHRoYXQgYXJlIGNvbWJpbmVkIGludG8gdGhlIHNpbmdsZSBo
ZWFkZXIvaW1wbGVtZW50YXRpb24gZmlsZS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgICAgIE1hcmsgdGhlIG5ldyBidWls
dGlucyBnZW5lcmF0b3IgZmlsZXMgYXMgcHJpdmF0ZSBoZWFkZXJzIHNvIHdlIGNhbiB1c2UgdGhl
bSBmcm9tCisgICAgICAgICAgICBXZWJDb3JlLgorCisgICAgICAgICogU2NyaXB0cy9VcGRhdGVD
b250ZW50cy5weTogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9VcGRhdGVDb250
ZW50cy5weS4KKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL19faW5pdF9fLnB5OiBBZGRlZC4K
KyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zLnB5OiBBZGRlZC4KKyAgICAgICAg
KiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5weTogQWRkZWQuIFRoaXMgZmls
ZSBjb250YWlucyB0aGUgYmFzZSBnZW5lcmF0b3IuCisgICAgICAgIChXS19sY2ZpcnN0KToKKyAg
ICAgICAgKFdLX3VjZmlyc3QpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3IpOgorICAgICAg
ICAoQnVpbHRpbnNHZW5lcmF0b3IuX19pbml0X18pOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0
b3IubW9kZWwpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3IuZ2VuZXJhdGVfbGljZW5zZSk6
CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvci5nZW5lcmF0ZV9pbmNsdWRlc19mcm9tX2VudHJp
ZXMpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAg
ICAgKEJ1aWx0aW5zR2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSk6CisgICAgICAgIChCdWlsdGlu
c0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvckZ1bmN0aW9uKToKKyAgICAgICAgKEJ1aWx0aW5zR2Vu
ZXJhdG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rpb24udG9DYW1lbCk6CisgICAgICAgIChCdWlsdGlu
c0dlbmVyYXRvci5nZW5lcmF0ZV9lbWJlZGRlZF9jb2RlX3N0cmluZ19zZWN0aW9uX2Zvcl9mdW5j
dGlvbik6CisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19tb2RlbC5weTogQWRk
ZWQuIFRoaXMgZmlsZSBjb250YWlucyBidWlsdGlucyBtb2RlbCBvYmplY3RzLgorICAgICAgICAo
UGFyc2VFeGNlcHRpb24pOgorICAgICAgICAoRnJhbWV3b3JrKToKKyAgICAgICAgKEZyYW1ld29y
ay5fX2luaXRfXyk6CisgICAgICAgIChGcmFtZXdvcmsuc2V0dGluZyk6CisgICAgICAgIChGcmFt
ZXdvcmsuZnJvbVN0cmluZyk6CisgICAgICAgIChGcmFtZXdvcmtzKToKKyAgICAgICAgKEJ1aWx0
aW5PYmplY3QpOgorICAgICAgICAoQnVpbHRpbk9iamVjdC5fX2luaXRfXyk6CisgICAgICAgIChC
dWlsdGluRnVuY3Rpb24pOgorICAgICAgICAoQnVpbHRpbkZ1bmN0aW9uLl9faW5pdF9fKToKKyAg
ICAgICAgKEJ1aWx0aW5GdW5jdGlvbi5mcm9tU3RyaW5nKToKKyAgICAgICAgKEJ1aWx0aW5GdW5j
dGlvbi5fX3N0cl9fKToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbik6CisgICAgICAgIChC
dWlsdGluc0NvbGxlY3Rpb24uX19pbml0X18pOgorICAgICAgICAoQnVpbHRpbnNDb2xsZWN0aW9u
LnBhcnNlX2J1aWx0aW5zX2ZpbGUpOgorICAgICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLmNvcHly
aWdodHMpOgorICAgICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLmFsbF9mdW5jdGlvbnMpOgorICAg
ICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLl9wYXJzZV9jb3B5cmlnaHRfbGluZXMpOgorICAgICAg
ICAoQnVpbHRpbnNDb2xsZWN0aW9uLl9wYXJzZV9mdW5jdGlvbnMpOgorICAgICAgICAqIFNjcmlw
dHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5OiBBZGRlZC4KKyAgICAgICAgKEJ1aWx0
aW5zR2VuZXJhdG9yVGVtcGxhdGVzKToKKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2dlbmVy
YXRlX2J1aWx0aW5zX2NvbWJpbmVkX2hlYWRlci5weTogQWRkZWQuCisgICAgICAgIChCdWlsdGlu
c0NvbWJpbmVkSGVhZGVyR2VuZXJhdG9yKToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFk
ZXJHZW5lcmF0b3IuX19pbml0X18pOgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEhlYWRlckdl
bmVyYXRvci5vdXRwdXRfZmlsZW5hbWUpOgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEhlYWRl
ckdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEhl
YWRlckdlbmVyYXRvci5nZW5lcmF0ZV9mb3J3YXJkX2RlY2xhcmF0aW9ucyk6CisgICAgICAgIChG
dW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoVk0pOgorICAgICAgICAoQ29uc3RydWN0QWJp
bGl0eSk6CisgICAgICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9vYmplY3QpOgorICAgICAgICAo
Z2VuZXJhdGVfZXh0ZXJuc19mb3Jfb2JqZWN0KToKKyAgICAgICAgKGdlbmVyYXRlX21hY3Jvc19m
b3Jfb2JqZWN0KToKKyAgICAgICAgKGdlbmVyYXRlX2RlZmluZXNfZm9yX29iamVjdCk6CisgICAg
ICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX3RhYmxlX21hY3JvKToKKyAgICAgICAgKGdl
bmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfbmFtZV9tYWNybyk6CisgICAgICAgICogU2NyaXB0cy9i
dWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weTogQWRk
ZWQuCisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSW1wbGVtZW50YXRpb25HZW5lcmF0b3IpOgor
ICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9faW5pdF9f
KToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5vdXRw
dXRfZmlsZW5hbWUpOgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2Vu
ZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSW1wbGVt
ZW50YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKToKKyAgICAgICAgKiBT
Y3JpcHRzL2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2hlYWRlci5weTogQWRk
ZWQuCisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlSGVhZGVyR2VuZXJhdG9yKToKKyAgICAgICAg
KEJ1aWx0aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0b3IuX19pbml0X18pOgorICAgICAgICAoQnVp
bHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvci5vdXRwdXRfZmlsZW5hbWUpOgorICAgICAgICAo
QnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvci5tYWNyb19wcmVmaXgpOgorICAgICAgICAo
QnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAg
ICAoQnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvci5nZW5lcmF0ZV9mb3J3YXJkX2RlY2xh
cmF0aW9ucyk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoZ2VuZXJh
dGVfaGVhZGVyX2luY2x1ZGVzKToKKyAgICAgICAgKGdlbmVyYXRlX3NlY3Rpb25fZm9yX29iamVj
dCk6CisgICAgICAgIChnZW5lcmF0ZV9leHRlcm5zX2Zvcl9vYmplY3QpOgorICAgICAgICAoZ2Vu
ZXJhdGVfbWFjcm9zX2Zvcl9vYmplY3QpOgorICAgICAgICAoZ2VuZXJhdGVfZGVmaW5lc19mb3Jf
b2JqZWN0KToKKyAgICAgICAgKGdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfdGFibGVfbWFjcm8p
OgorICAgICAgICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV9uYW1lX21hY3JvKToKKyAgICAg
ICAgKiBTY3JpcHRzL2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2ltcGxlbWVu
dGF0aW9uLnB5OiBBZGRlZC4KKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlv
bkdlbmVyYXRvcik6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlSW1wbGVtZW50YXRpb25HZW5l
cmF0b3IuX19pbml0X18pOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9u
R2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSk6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlSW1w
bGVtZW50YXRpb25HZW5lcmF0b3IubWFjcm9fcHJlZml4KToKKyAgICAgICAgKEJ1aWx0aW5zU2Vw
YXJhdGVJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAo
QnVpbHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZXJhdG9yLmdlbmVyYXRlX2hlYWRlcl9p
bmNsdWRlcyk6CisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19z
ZXBhcmF0ZV93cmFwcGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFw
cGVyR2VuZXJhdG9yKToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9y
Ll9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9yLm91
dHB1dF9maWxlbmFtZSk6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlV3JhcHBlckdlbmVyYXRv
ci5tYWNyb19wcmVmaXgpOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZVdyYXBwZXJHZW5lcmF0
b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2Vu
ZXJhdG9yLmdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcyk6CisgICAgICAgICogU2NyaXB0cy9nZW5l
cmF0ZS1qcy1idWlsdGlucy5weTogQWRkZWQuCisKKyAgICAgICAgICAgIFBhcnNlIGNvbW1hbmQg
bGluZSBvcHRpb25zLCBkZWNpZGUgd2hpY2ggZ2VuZXJhdG9ycyBhbmQgb3V0cHV0IG1vZGVzIHRv
IHVzZS4KKworICAgICAgICAoZ2VuZXJhdGVfYmluZGluZ3NfZm9yX2J1aWx0aW5zX2ZpbGVzKToK
KyAgICAgICAgKiBTY3JpcHRzL2xhenl3cml0ZXIucHk6IENvcGllZCBmcm9tIHRoZSBpbnNwZWN0
b3IgcHJvdG9jb2wgZ2VuZXJhdG9yLgorICAgICAgICAoTGF6eUZpbGVXcml0ZXIpOgorICAgICAg
ICAoTGF6eUZpbGVXcml0ZXIuX19pbml0X18pOgorICAgICAgICAoTGF6eUZpbGVXcml0ZXIud3Jp
dGUpOgorICAgICAgICAoTGF6eUZpbGVXcml0ZXIuY2xvc2UpOgorICAgICAgICAqIFNjcmlwdHMv
dGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpz
OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3Jl
LUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS5qczogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5q
czogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29y
ZS1CdWlsdGluLnByb3RvdHlwZS1TZXBhcmF0ZS5qczogQWRkZWQuCisgICAgICAgICogU2NyaXB0
cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmlu
ZWQuanM6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlw
dENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFyYXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBT
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanM6
IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVk
SW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qczogQWRkZWQu
CisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLXhtbENhc2luZ1Rlc3Qt
U2VwYXJhdGUuanM6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhw
ZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzLXJlc3VsdDog
QWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2Ny
aXB0Q29yZS1CdWlsdGluLlByb21pc2UtU2VwYXJhdGUuanMtcmVzdWx0OiBBZGRlZC4KKyAgICAg
ICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0
aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzLXJlc3VsdDogQWRkZWQuCisgICAgICAgICogU2NyaXB0
cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlw
ZS1TZXBhcmF0ZS5qcy1yZXN1bHQ6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVk
LmpzLXJlc3VsdDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBl
Y3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItU2VwYXJhdGUuanMtcmVzdWx0
OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNv
cmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0OiBBZGRlZC4KKyAgICAgICAgKiBT
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVp
bHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQ6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMv
YnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJl
c3VsdDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9X
ZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0OiBBZGRlZC4KKyAgICAgICAg
KiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwOgorICAgICAgICAoSlNDOjpCdWlsdGlu
RXhlY3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyk6CisgICAgICAgICogYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgICogY3JlYXRlX2hhc2hfdGFibGU6CisKKyAgICAg
ICAgICAgIFVwZGF0ZSB0aGUgZ2VuZXJhdGVkIGJ1aWx0aW4gbWFjcm8gbmFtZXMuCisKKyAgICAg
ICAgKiBnZW5lcmF0ZS1qcy1idWlsdGluczogUmVtb3ZlZC4KKwogMjAxNS0xMC0xNCAgS2VpdGgg
TWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBFUzYgRml4IFR5cGVk
QXJyYXkgY29uc3RydWN0b3JzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU2OTAxMmYwZDgyZjU5NTY0MzQyYjY4
ODEyMDc3MzZhYTc2Yzk4NDcuLmMxYzMyNWY3NWYzMDQzMjE2ZTJjZWU5NmJiOTcyYTJiNzJiZDMy
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxNS0xMC0xMyAgQnJpYW4gQnVyZyAg
PGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBSZXN0cnVjdHVyZSBnZW5lcmF0ZS1qcy1iaW5k
aW5ncyBzY3JpcHQgdG8gYmUgbW9kdWxhciBhbmQgdGVzdGFibGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTkyOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKKyAgICAg
ICAgICAgIERlZmluZSBKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUiBleHBsaWNpdGx5IHNvIHRo
ZSBhZGRfY3VzdG9tX2NvbW1hbmQgYW5kCisgICAgICAgICAgICBzaGFyZWQgZmlsZSBsaXN0cyBh
cmUgaWRlbnRpY2FsIGJldHdlZW4gSmF2YVNjcmlwdENvcmUgYW5kIFdlYkNvcmUuCisKKyAgICAg
ICAgICAgIFRoZSBvdXRwdXQgZmlsZXMgYWRkaXRpb25hbGx5IGRlcGVuZCBvbiBhbGwgYnVpbHRp
biBnZW5lcmF0b3Igc2NyaXB0IGZpbGVzLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFr
ZToKKworICAgICAgICAgICAgVXNlIEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSIHNvIHRoYXQg
dGhlIHJ1bGUgZm9yIGNvZGUgZ2VuZXJhdGlvbiBhbmQKKyAgICAgICAgICAgIHNoYXJlZCBmaWxl
IGxpc3RzIGFyZSBpZGVudGljYWwgYmV0d2VlbiBKYXZhU2NyaXB0Q29yZSBhbmQgV2ViQ29yZS4K
KworICAgICAgICAgICAgVGhlIG91dHB1dCBmaWxlcyBhZGRpdGlvbmFsbHkgZGVwZW5kIG9uIGFs
bCBidWlsdGluIGdlbmVyYXRvciBzY3JpcHQgZmlsZXMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgICAgIERlZmluZSBKYXZhU2NyaXB0
Q29yZV9TQ1JJUFRTX0RJUiBiZWZvcmUgY2FsbGluZyBEZXJpdmVkU291cmNlcy5tYWtlLgorICAg
ICAgICAgICAgVGhpcyB3aWxsIGV2ZW50dWFsbHkgYmUgbWVyZ2VkIHdpdGggdGhlIG90aGVyIHNp
bWlsYXIgc2NyaXB0IHBhdGhzLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6ZmluaXNoQ3JlYXRp
b24pOgorCisgICAgICAgICAgICBVcGRhdGUgdGhlIGdlbmVyYXRlZCBidWlsdGluIG1hY3JvIG5h
bWVzLgorCisgICAgICAgICogZ2VuZXJhdGUtanMtYnVpbHRpbnM6IFJlbW92ZWQuCisKIDIwMTUt
MTAtMTQgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBQb3N0
cG9uZSBtdXRhdGlvbiBldmVudHMgYmVmb3JlIGludm9rZSBFZGl0b3I6OkNvbW1hbmQgY29tbWFu
ZChEb2N1bWVudCosIGNvbnN0IFN0cmluZyYsIGJvb2wpLgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IGZlNzljYTdiOWM1Njc5MDIxNDkwOGZmM2FlNjUyMGY4NjQ2NWQwYmIu
LmFiYmU1MTRhY2RiM2RkZmUzYzM0ZjI5YTU1ZTAwMzE1YTY5NDEwNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTcwMyw2ICs3MDMsOCBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfTElCUkFSSUVTCiAgICAgJHtJQ1VfSTE4Tl9MSUJSQVJJRVN9CiApCiAKK3NldChKYXZhU2Ny
aXB0Q29yZV9TQ1JJUFRTX0RJUiAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L1NjcmlwdHMiKQorCiBp
ZiAoVVNFX1VESVM4NikKICAgICBzZXQoVURJU19HRU5fREVQCiAgICAgICAgIGRpc2Fzc2VtYmxl
ci91ZGlzODYvdWRfb3Bjb2RlLnB5CkBAIC05MzcsNyArOTM5LDcgQEAgc2V0KEhBU0hfTFVUX0dF
TkVSQVRPUiAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vY3JlYXRlX2hhc2hfdGFibGUpCiBt
YWNybyhHRU5FUkFURV9IQVNIX0xVVCBfaW5wdXQgX291dHB1dCkKICAgICBhZGRfY3VzdG9tX2Nv
bW1hbmQoCiAgICAgICAgIE9VVFBVVCAke19vdXRwdXR9Ci0gICAgICAgIERFUEVORFMgJHtIQVNI
X0xVVF9HRU5FUkFUT1J9ICR7X2lucHV0fSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZ2Vu
ZXJhdGUtanMtYnVpbHRpbnMKKyAgICAgICAgREVQRU5EUyAke0hBU0hfTFVUX0dFTkVSQVRPUn0g
JHtfaW5wdXR9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0
aW5zLnB5CiAgICAgICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SEFTSF9MVVRfR0VO
RVJBVE9SfSAke19pbnB1dH0gLWkgPiAke19vdXRwdXR9CiAgICAgICAgIFZFUkJBVElNKQogICAg
IGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMgJHtfb3V0cHV0fSkKQEAgLTEwNzUs
NiArMTA3NywyMCBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgVkVSQkFUSU0pCiAKICMgSlND
QnVpbHRpbnMKKworc2V0KEJVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTCisgICAgJHtKYXZhU2Ny
aXB0Q29yZV9TQ1JJUFRTX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKyAgICAke0phdmFT
Y3JpcHRDb3JlX1NDUklQVFNfRElSfS9sYXp5d3JpdGVyLnB5CisgICAgJHtKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5CisgICAgJHtKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKKyAgICAk
e0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMu
cHkKKyAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGlucy9nZW5lcmF0ZV9i
dWlsdGluc19jb21iaW5lZF9oZWFkZXIucHkKKyAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNf
RElSfS9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5w
eQorICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5zL2dlbmVyYXRlX2J1
aWx0aW5zX3NlcGFyYXRlX2hlYWRlci5weQorICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVJ9L2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5
CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnMvZ2VuZXJhdGVfYnVp
bHRpbnNfc2VwYXJhdGVfd3JhcHBlci5weQorKQorCiBzZXQoSmF2YVNjcmlwdENvcmVfQlVJTFRJ
TlNfU09VUkNFUwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9BcnJheUNvbnN0
cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0FycmF5SXRlcmF0
b3IucHJvdG90eXBlLmpzCkBAIC0xMDk3LDEwICsxMTEzLDExIEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9CVUlMVElOU19TT1VSQ0VTCiApCiAKIGFkZF9jdXN0b21fY29tbWFuZCgKLSAgIE9VVFBVVCAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcCAke0RF
UklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKLSAgIE1BSU5f
REVQRU5ERU5DWSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRp
bnMKLSAgIERFUEVORFMgJHtKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTfQotICAgQ09N
TUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZ2Vu
ZXJhdGUtanMtYnVpbHRpbnMgLS1pbnB1dC1kaXJlY3RvcnkgJHtDTUFLRV9DVVJSRU5UX1NPVVJD
RV9ESVJ9L2J1aWx0aW5zIC0tb3V0cHV0ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0vSlNDQnVpbHRpbnMuY3BwCisgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVND
UklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5jcHAKKyAgICAgICAgICAke0RFUklWRURfU09VUkNF
U19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKKyAgIE1BSU5fREVQRU5ERU5DWSAk
e0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorICAg
REVQRU5EUyAke0phdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVN9ICR7QlVJTFRJTlNfR0VO
RVJBVE9SX1NDUklQVFN9CisgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SmF2YVNj
cmlwdENvcmVfU0NSSVBUU19ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5IC0tZnJhbWV3b3Jr
IEphdmFTY3JpcHRDb3JlIC0tb3V0cHV0LWRpcmVjdG9yeSAke0RFUklWRURfU09VUkNFU19KQVZB
U0NSSVBUQ09SRV9ESVJ9IC0tY29tYmluZWQgJHtKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VS
Q0VTfQogICAgVkVSQkFUSU0pCiAKIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMTAxNWRkYzc3
OTg3ODBlZTk3MjYyM2Y0YzhlOGQzYzc1YTllNGI3MS4uNmVjNGQ4OWNiNTA5NmFiZGMxMzQxODQ4
ODc0ZTUxN2Y0ZGYyN2RiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKQEAgLTcxLDEyICs3MSwxMiBAQCBhbGwgOiBcCiAgICAgdWRpczg2X2l0YWIuaCBcCiAg
ICAgQnl0ZWNvZGVzLmggXAogICAgIEluaXRCeXRlY29kZXMuYXNtIFwKLSAgICBKU0NCdWlsdGlu
cyBcCisgICAgSlNDQnVpbHRpbnMuaCBcCiAjCiAKLSMgYnVpbHRpbiBmdW5jdGlvbnMKIFBZVEhP
TiA9IHB5dGhvbgogUEVSTCA9IHBlcmwKK0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSID0gJChK
YXZhU2NyaXB0Q29yZSkvU2NyaXB0cwogCiBpZmVxICgkKE9TKSxXaW5kb3dzX05UKQogICAgIERF
TEVURSA9IGNtZCAvL0MgZGVsCkBAIC04NSwxNSArODUsMjMgQEAgZWxzZQogZW5kaWYKICMgLS0t
LS0tLS0KIAotLlBIT05ZOiBKU0NCdWlsdGlucwotSlNDQnVpbHRpbnM6ICQoSmF2YVNjcmlwdENv
cmUpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zIEpTQ0J1aWx0aW5zLmggSlNDQnVpbHRpbnMuY3BwCi1K
U0NCdWlsdGlucy5oOiAkKEphdmFTY3JpcHRDb3JlKS9nZW5lcmF0ZS1qcy1idWlsdGlucyAkKEph
dmFTY3JpcHRDb3JlKS9idWlsdGlucyBKU0NCdWlsdGluc1NvdXJjZXMKLQkkKFBZVEhPTikgJChK
YXZhU2NyaXB0Q29yZSkvZ2VuZXJhdGUtanMtYnVpbHRpbnMgLS1pbnB1dC1kaXJlY3RvcnkgJChK
YXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMgLS1vdXRwdXQgJEAKLQotSlNDQnVpbHRpbnMuY3BwOiBK
U0NCdWlsdGlucy5oCisjIEphdmFTY3JpcHQgYnVpbHRpbnMuCisKK0JVSUxUSU5TX0dFTkVSQVRP
Ul9TQ1JJUFRTID0gXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5z
L19faW5pdF9fLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGlu
cy9idWlsdGluc19nZW5lcmF0b3IucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVIpL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1ND
UklQVFNfRElSKS9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHkgXAorICAgICQoSmF2YVNj
cmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVk
X2hlYWRlci5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnMv
Z2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkgXAorICAgICQoSmF2
YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFy
YXRlX2hlYWRlci5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRp
bnMvZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkgXAorICAgICQo
SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX3Nl
cGFyYXRlX3dyYXBwZXIucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2dl
bmVyYXRlLWpzLWJ1aWx0aW5zLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
KS9sYXp5d3JpdGVyLnB5IFwKKyMKIAotLlBIT05ZOiBKU0NCdWlsdGluc1NvdXJjZXMKLUpTQ0J1
aWx0aW5zU291cmNlczogXAorSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKICAg
ICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9BcnJheUNvbnN0cnVjdG9yLmpzIFwKICAgICAk
KEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9BcnJheUl0ZXJhdG9yLnByb3RvdHlwZS5qcyBcCiAg
ICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzIFwKQEAgLTEx
MCw4ICsxMTgsMjAgQEAgSlNDQnVpbHRpbnNTb3VyY2VzOiBcCiAgICAgJChKYXZhU2NyaXB0Q29y
ZSkvYnVpbHRpbnMvUmVmbGVjdE9iamVjdC5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVp
bHRpbnMvU3RyaW5nQ29uc3RydWN0b3IuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0
aW5zL1N0cmluZ0l0ZXJhdG9yLnByb3RvdHlwZS5qcyBcCisgICAgJChKYXZhU2NyaXB0Q29yZSkv
YnVpbHRpbnMvVHlwZWRBcnJheUNvbnN0cnVjdG9yLmpzIFwKKyAgICAkKEphdmFTY3JpcHRDb3Jl
KS9idWlsdGlucy9UeXBlZEFycmF5LnByb3RvdHlwZS5qcyBcCiAjCiAKKyMgVGhlIGNvbWJpbmVk
IG91dHB1dCBmaWxlIGRlcGVuZHMgb24gdGhlIGNvbnRlbnRzIG9mIGJ1aWx0aW5zIGFuZCBnZW5l
cmF0b3Igc2NyaXB0cywgc28KKyMgYWRkaW5nLCBtb2RpZnlpbmcsIG9yIHJlbW92aW5nIGJ1aWx0
aW5zIG9yIHNjcmlwdHMgd2lsbCB0cmlnZ2VyIHJlZ2VuZXJhdGlvbiBvZiBmaWxlcy4KKworLlBI
T05ZOiBmb3JjZQorSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfREVQRU5ERU5DSUVTX0xJU1QgOiAk
KEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9VcGRhdGVDb250ZW50cy5weSBmb3JjZQorCSQo
UFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9VcGRhdGVDb250ZW50cy5weSAn
JChKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTKSAkKEJVSUxUSU5TX0dFTkVSQVRPUl9T
Q1JJUFRTKScgJEAKKworSlNDQnVpbHRpbnMuaDogJChCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBU
UykgJChKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTKSBKYXZhU2NyaXB0Q29yZV9CVUlM
VElOU19ERVBFTkRFTkNJRVNfTElTVAorCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQ
VFNfRElSKS9nZW5lcmF0ZS1qcy1idWlsdGlucy5weSAtLWNvbWJpbmVkIC0tb3V0cHV0LWRpcmVj
dG9yeSAuIC0tZnJhbWV3b3JrIEphdmFTY3JpcHRDb3JlICQoSmF2YVNjcmlwdENvcmVfQlVJTFRJ
TlNfU09VUkNFUykKKwogIyBsb29rdXAgdGFibGVzIGZvciBjbGFzc2VzCiAKICUubHV0Lmg6IGNy
ZWF0ZV9oYXNoX3RhYmxlICUuY3BwCkBAIC0xOTgsOCArMjE4LDggQEAgYWxsIDogXAogIyBhZGRp
bmcsIG1vZGlmeWluZywgb3IgcmVtb3ZpbmcgZG9tYWlucyB3aWxsIHRyaWdnZXIgcmVnZW5lcmF0
aW9uIG9mIGluc3BlY3RvciBmaWxlcy4KIAogLlBIT05ZOiBmb3JjZQotRW5hYmxlZEluc3BlY3Rv
ckRvbWFpbnMgOiAkKEphdmFTY3JpcHRDb3JlKS9VcGRhdGVDb250ZW50cy5weSBmb3JjZQotCSQo
UFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlKS9VcGRhdGVDb250ZW50cy5weSAnJChJTlNQRUNUT1Jf
RE9NQUlOUyknICRACitFbmFibGVkSW5zcGVjdG9yRG9tYWlucyA6ICQoSmF2YVNjcmlwdENvcmVf
U0NSSVBUU19ESVIpL1VwZGF0ZUNvbnRlbnRzLnB5IGZvcmNlCisJJChQWVRIT04pICQoSmF2YVNj
cmlwdENvcmVfU0NSSVBUU19ESVIpL1VwZGF0ZUNvbnRlbnRzLnB5ICckKElOU1BFQ1RPUl9ET01B
SU5TKScgJEAKIAogQ29tYmluZWREb21haW5zLmpzb24gOiBpbnNwZWN0b3Ivc2NyaXB0cy9nZW5l
cmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSAkKElOU1BFQ1RPUl9ET01BSU5TKSBFbmFi
bGVkSW5zcGVjdG9yRG9tYWlucwogCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0
b3Ivc2NyaXB0cy9nZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSAkKElOU1BFQ1RP
Ul9ET01BSU5TKSA+IC4vQ29tYmluZWREb21haW5zLmpzb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNDUxNDM3MWJkNzUwZGZiYzI0MGMzZTRlMDhmZjg3NzVkZGYxYzc4YS4uOGQ3
MGRhMzQ5NWJlZjU2NzYxZGQ3YWVhZThjZDI3NTE3OTllYjZmYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTk1Niw3ICs5NTYsNiBAQAogCQkyQURGQTI2MzE4RUYzNTQwMDA0RjlG
Q0MgLyogR0NMb2dnaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJBREZBMjYyMThFRjM1NDAwMDRGOUZDQyAvKiBHQ0xvZ2dpbmcuY3BwICovOyB9
OwogCQkyQUY3MzgyQzE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUY3MzgyQTE4QkJC
RjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5jcHAgKi87IH07CiAJCTJBRjczODJEMThC
QkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUY3MzgyQjE4QkJCRjkyMDA4QTVBMzcgLyogU3Ry
dWN0dXJlSURUYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCTJERkI4QUZFMUJCMzIzQkQwMDkzRDIzNyAvKiBnZW5lcmF0ZS1qcy1idWlsdGlu
cyBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MURBODBE
MTg4MEQ3MUYwMEQxRjI5OSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzFEODQyRDE3Qzk4QjZFMDBFQ0Y5
OTQgLyogbGliei5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDM3MUQ4NDJDMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliICovOyB9Owog
CQk0MTM1OUNGMzBGREQ4OUFEMDAyMDYxODAgLyogRGF0ZUNvbnZlcnNpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQyMTIwMjI5MEFENDMxMEMwMEVE
NzlCNiAvKiBEYXRlQ29udmVyc2lvbi5oICovOyB9OwogCQk0MURFQTEzMjFCOUYzMTYzMDA2RDY1
REQgLyogQnVpbHRpblV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MURFQTEzMTFCOUYzMTU0MDA2RDY1REQgLyogQnVpbHRpblV0aWxzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyMTMsNiAr
MTIxMiwxOCBAQAogCQk5NjlBMDc5QjBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjlBMDc5NTBFRDFEM0FF
MDBGMUY2ODEgLyogT3Bjb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJOTc4ODAxNDAxNDcxQUQ5MjAwNDFCMDE2IC8qIEpTRGF0ZU1hdGguY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc4OEZDMjIx
NDcxQUQwQzAwNjhDRTJEIC8qIEpTRGF0ZU1hdGguY3BwICovOyB9OwogCQk5Nzg4MDE0MTE0NzFB
RDkyMDA0MUIwMTYgLyogSlNEYXRlTWF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTc4OEZDMjMxNDcxQUQwQzAwNjhDRTJEIC8qIEpTRGF0ZU1hdGgu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OTFE
NUVENDFCQ0MzNUFBMDBFNEMyNUQgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTA0NEIzMTFCQ0MyM0RDMDA3
QzI1MEQgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTkxRDVFRDUxQkNDMzVCMTAwRTRDMjVEIC8qIGJ1
aWx0aW5zX2dlbmVyYXRvci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk5MDQ0QjNCMUJDQzI0OTEwMDdDMjUwRCAvKiBidWlsdGluc19nZW5lcmF0b3Iu
cHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTkx
RDVFRDYxQkNDMzVCMTAwRTRDMjVEIC8qIGJ1aWx0aW5zX21vZGVsLnB5IGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkwNDRCM0MxQkNDMjQ5MTAwN0MyNTBE
IC8qIGJ1aWx0aW5zX21vZGVsLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTk5MUQ1RUQ3MUJDQzM1QjEwMEU0QzI1RCAvKiBidWlsdGluc190ZW1w
bGF0ZXMucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
OTA0NEIzRDFCQ0MyNDkxMDA3QzI1MEQgLyogYnVpbHRpbnNfdGVtcGxhdGVzLnB5ICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5MUQ1RUQ4MUJDQzM1
QjEwMEU0QzI1RCAvKiBnZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9oZWFkZXIucHkgaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTA0NEIzRTFCQ0MyNDkx
MDA3QzI1MEQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaGVhZGVyLnB5ICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5MUQ1RUQ5MUJDQzM1
QjEwMEU0QzI1RCAvKiBnZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5w
eSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MDQ0QjNG
MUJDQzI0OTEwMDdDMjUwRCAvKiBnZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRh
dGlvbi5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk5OTFENUVEQTFCQ0MzNUIxMDBFNEMyNUQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVf
aGVhZGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTkwNDRCNDExQkNDMkIwNTAwN0MyNTBEIC8qIGdlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2hl
YWRlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk5OTFENUVEQjFCQ0MzNUIxMDBFNEMyNUQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVf
aW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5OTA0NEI0MjFCQ0MyQjA1MDA3QzI1MEQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2Vw
YXJhdGVfaW1wbGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJOTkxRDVFREMxQkNDMzVCMTAwRTRDMjVEIC8qIGdlbmVyYXRlX2J1
aWx0aW5zX3NlcGFyYXRlX3dyYXBwZXIucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5OTA0NEI0MzFCQ0MyQjA1MDA3QzI1MEQgLyogZ2VuZXJhdGVfYnVp
bHRpbnNfc2VwYXJhdGVfd3JhcHBlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk5OTFENUVERDFCQ0MzNUIzMDBFNEMyNUQgLyogbGF6eXdyaXRl
ci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MDQ0
QjQwMUJDQzI0OTEwMDdDMjUwRCAvKiBsYXp5d3JpdGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5MUQ1RURGMUJDQzYzMEMwMEU0QzI1RCAv
KiBVcGRhdGVDb250ZW50cy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk5MUQ1RURFMUJDQzYyRUEwMEU0QzI1RCAvKiBVcGRhdGVDb250ZW50cy5weSAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OTFENUVF
MTFCQ0M2NDY5MDBFNEMyNUQgLyogYnVpbHRpbnMucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTFENUVFMDFCQ0M2NDE1MDBFNEMyNUQgLyogYnVpbHRp
bnMucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
OTkyOEZGM0IxOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MjhGRjM5MThBQzRBRUMwMEI4
Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5jcHAgKi87IH07CiAJCTk5MjhGRjNDMThBQzRBRUMwMEI4
Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTkyOEZGM0ExOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTk2
MjMxRTkxOEQxODA0MjAwQzAzRkRBIC8qIEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcyBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MzI0Mzk2MTg1NkE0
NzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMgKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMxMTYsNiArMzEyNywxOSBAQAog
CQk5NjlBMDkyMjBFRDFFMDlDMDBGMUY2ODEgLyogQ29tcGxldGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21wbGV0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTc4OEZDMjIxNDcxQUQwQzAwNjhDRTJEIC8qIEpTRGF0ZU1hdGguY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEYXRlTWF0aC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3ODhGQzIzMTQ3MUFEMEMwMDY4Q0UyRCAvKiBK
U0RhdGVNYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGF0ZU1hdGgu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTkwNDRCMzExQkNDMjNEQzAwN0MyNTBE
IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9u
OyBwYXRoID0gImdlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTkwNDRCM0ExQkNDMjQ5MTAwN0MyNTBEIC8qIF9faW5pdF9fLnB5ICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gX19pbml0X18ucHk7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTk5MDQ0QjNCMUJDQzI0OTEwMDdDMjUwRCAvKiBidWlsdGluc19nZW5l
cmF0b3IucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBidWlsdGluc19n
ZW5lcmF0b3IucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MDQ0QjNDMUJDQzI0
OTEwMDdDMjUwRCAvKiBidWlsdGluc19tb2RlbC5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5
dGhvbjsgcGF0aCA9IGJ1aWx0aW5zX21vZGVsLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5OTA0NEIzRDFCQ0MyNDkxMDA3QzI1MEQgLyogYnVpbHRpbnNfdGVtcGxhdGVzLnB5ICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gYnVpbHRpbnNfdGVtcGxhdGVzLnB5
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTA0NEIzRTFCQ0MyNDkxMDA3QzI1MEQg
LyogZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaGVhZGVyLnB5ICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5z
Y3JpcHQucHl0aG9uOyBwYXRoID0gZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaGVhZGVyLnB5
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTA0NEIzRjFCQ0MyNDkxMDA3QzI1MEQg
LyogZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBnZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9p
bXBsZW1lbnRhdGlvbi5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTkwNDRCNDAx
QkNDMjQ5MTAwN0MyNTBEIC8qIGxhenl3cml0ZXIucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5w
eXRob247IHBhdGggPSBsYXp5d3JpdGVyLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5OTA0NEI0MTFCQ0MyQjA1MDA3QzI1MEQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVf
aGVhZGVyLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gZ2VuZXJhdGVf
YnVpbHRpbnNfc2VwYXJhdGVfaGVhZGVyLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5OTA0NEI0MjFCQ0MyQjA1MDA3QzI1MEQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVf
aW1wbGVtZW50YXRpb24ucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBn
ZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTkwNDRCNDMxQkNDMkIwNTAwN0MyNTBEIC8qIGdlbmVyYXRlX2J1
aWx0aW5zX3NlcGFyYXRlX3dyYXBwZXIucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247
IHBhdGggPSBnZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV93cmFwcGVyLnB5OyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5OTFENUVERTFCQ0M2MkVBMDBFNEMyNUQgLyogVXBkYXRlQ29u
dGVudHMucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBVcGRhdGVDb250
ZW50cy5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTkxRDVFRTAxQkNDNjQxNTAw
RTRDMjVEIC8qIGJ1aWx0aW5zLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRo
ID0gYnVpbHRpbnMucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MjhGRjM5MThB
QzRBRUMwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1JlcGxheUlucHV0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk5MjhGRjNBMThBQzRBRUMwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JlcGxheUlucHV0cy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5OTI4RkYzRDE4QUM0QjFDMDBCOENGMTIgLyogSlNJbnB1
dHMuanNvbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuanNvbjsgcGF0aCA9IEpTSW5wdXRzLmpzb247IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMzExLDcgKzMzMzUsNiBAQAogCQlBNzEyMzZFNDEx
OTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpJVE9wY29kZXMzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE3MThGNjFBMTE3NTRBMjEwMDI0NjVBNyAvKiBSZWdFeHBKaXRUYWJsZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwSml0VGFibGVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MThGODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBj
cmVhdGVfcmVnZXhfdGFibGVzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0
RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBj
cmVhdGVfcmVnZXhfdGFibGVzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNzFEQTgw
RDE4ODBENzFGMDBEMUYyOTkgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnNjcmlwdC5weXRob247IHBhdGggPSAiZ2VuZXJhdGUtanMtYnVpbHRpbnMiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNzIwMjhCNDE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1
bm5lclV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ1Rl
c3RSdW5uZXJVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MjAyOEI1
MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNDVGVzdFJ1bm5lclV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE3MjAyOEI5MTc5NzYwM0QwMDk4MDI4QyAvKiBKU0Z1bmN0aW9uSW5saW5l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Z1bmN0aW9uSW5saW5lcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzgzMiw3ICszODU1LDYgQEAKIAkJCQk4
NjA0RjRGMjE0M0E2QzQ0MDBCMjk1RjUgLyogQ2hhbmdlTG9nICovLAogCQkJCUY2OTJBODU0MDI1
NTU5N0QwMUZGNjBGNyAvKiBjcmVhdGVfaGFzaF90YWJsZSAqLywKIAkJCQlBNzE4RjgyMTExNzhF
QjRCMDAyNDY1QTcgLyogY3JlYXRlX3JlZ2V4X3RhYmxlcyAqLywKLQkJCQlBNzFEQTgwRDE4ODBE
NzFGMDBEMUYyOTkgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMgKi8sCiAJCQkJNDVFMTJEODgwNkE0
OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAgKi8sCiAJCQkJRjY4RUJCOEMwMjU1RDRDNjAxRkY2MEY3
IC8qIGNvbmZpZy5oICovLAogCQkJCUY1QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2Ny
aXB0Q29yZVByZWZpeC5oICovLApAQCAtMzg0NCwxMiArMzg2Niw5IEBACiAJCQkJQTdEODAxOUYx
ODgwRDY2RTAwMjZDMzlCIC8qIGJ1aWx0aW5zICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUwMEYx
RjY4MSAvKiBieXRlY29kZSAqLywKIAkJCQk3RTM5RDgxRDBFQzM4RUZBMDAzQUYxMUEgLyogYnl0
ZWNvbXBpbGVyICovLAotCQkJCTFDOTA1MTNFMEJBOUU4ODMwMDgxRTlEMCAvKiBDb25maWd1cmF0
aW9ucyAqLywKIAkJCQkxNDgwREI5QTBEREMyMjMxMDAzQ0ZERjIgLyogZGVidWdnZXIgKi8sCi0J
CQkJNjUwRkRGOEQwOUQwRkNBNzAwNzY5RTU0IC8qIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQk4
NkVDOURCMzEzMjhERjQ0MDAyQjJBRDcgLyogZGZnICovLAogCQkJCTBGRjQyNzJFMTU4RUJDQ0Uw
MDRDQjlGRiAvKiBkaXNhc3NlbWJsZXIgKi8sCi0JCQkJMDg2N0Q2OUFGRTg0MDI4RkMwMkFBQzA3
IC8qIEZyYW1ld29ya3MgKi8sCiAJCQkJMEZFQTA5RkMxNzA1MTM3RjAwQkI3MjJDIC8qIGZ0bCAq
LywKIAkJCQkxNDJFMzEyQTEzNEZGMEE2MDBBRkFEQjUgLyogaGVhcCAqLywKIAkJCQlBNUJBMTVE
RjE4MjM0MDkyMDBBODJFNjkgLyogaW5zcGVjdG9yICovLApAQCAtMzg1OCwxNSArMzg3NywxOSBA
QAogCQkJCTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAqLywKIAkJCQkwRkNFRkFB
RDE4MDVDQTQ0MDA0NzJDRTQgLyogbGx2bSAqLywKIAkJCQk3RTM5RDgzNzBFQzNBMzg4MDAzQUYx
MUEgLyogcGFyc2VyICovLAotCQkJCTAzNDc2OERGRkYzOEE1MDQxMURCOUM4QiAvKiBQcm9kdWN0
cyAqLywKIAkJCQk5NUFCODMxQTBEQTQyQzY5MDBCQzgzRjMgLyogcHJvZmlsZXIgKi8sCiAJCQkJ
OTlFNDVBMEMxOEEwMUU5MzAwMjZEODhGIC8qIHJlcGxheSAqLywKLQkJCQk5MzJGQzNDMjA4MjRC
QjcwMDA1QjNDNzUgLyogUmVzb3VyY2VzICovLAogCQkJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZB
RiAvKiBydW50aW1lICovLAogCQkJCTE0MTIxMTAwMEE0ODc3MjYwMDQ4MDI1NSAvKiB0ZXN0cyAq
LywKIAkJCQk4NjAzQ0VGMDE0Qzc1M0VGMDBBRTU5RTMgLyogdG9vbHMgKi8sCiAJCQkJN0I5OEQx
MzMxQjYwQ0QxRTAwMjNCMUE0IC8qIHdhc20gKi8sCiAJCQkJODZFQUM0OEMwRjkzRThCOTAwOEVD
OTQ4IC8qIHlhcnIgKi8sCisJCQkJNjUwRkRGOEQwOUQwRkNBNzAwNzY5RTU0IC8qIERlcml2ZWQg
U291cmNlcyAqLywKKwkJCQk5OTA0NEIzMDFCQ0MyM0IyMDA3QzI1MEQgLyogU2NyaXB0cyAqLywK
KwkJCQk5MzJGQzNDMjA4MjRCQjcwMDA1QjNDNzUgLyogUmVzb3VyY2VzICovLAorCQkJCTA4NjdE
NjlBRkU4NDAyOEZDMDJBQUMwNyAvKiBGcmFtZXdvcmtzICovLAorCQkJCTAzNDc2OERGRkYzOEE1
MDQxMURCOUM4QiAvKiBQcm9kdWN0cyAqLywKKwkJCQkxQzkwNTEzRTBCQTlFODgzMDA4MUU5RDAg
LyogQ29uZmlndXJhdGlvbnMgKi8sCiAJCQkpOwogCQkJbmFtZSA9IEphdmFTY3JpcHRDb3JlOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTU3MzQsNiArNTc1NywzNCBAQAogCQkJcGF0
aCA9IGJ5dGVjb2RlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJOTkwNDRC
MzAxQkNDMjNCMjAwN0MyNTBEIC8qIFNjcmlwdHMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCTk5MDQ0QjM5MUJDQzIzRkYwMDdDMjUwRCAvKiBidWlsdGlu
cyAqLywKKwkJCQk5OTA0NEIzMTFCQ0MyM0RDMDA3QzI1MEQgLyogZ2VuZXJhdGUtanMtYnVpbHRp
bnMucHkgKi8sCisJCQkJOTkwNDRCNDAxQkNDMjQ5MTAwN0MyNTBEIC8qIGxhenl3cml0ZXIucHkg
Ki8sCisJCQkJOTkxRDVFREUxQkNDNjJFQTAwRTRDMjVEIC8qIFVwZGF0ZUNvbnRlbnRzLnB5ICov
LAorCQkJKTsKKwkJCXBhdGggPSBTY3JpcHRzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKKwkJOTkwNDRCMzkxQkNDMjNGRjAwN0MyNTBEIC8qIGJ1aWx0aW5zICovID0geworCQkJ
aXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk5OTA0NEIzQTFCQ0MyNDkxMDA3
QzI1MEQgLyogX19pbml0X18ucHkgKi8sCisJCQkJOTkxRDVFRTAxQkNDNjQxNTAwRTRDMjVEIC8q
IGJ1aWx0aW5zLnB5ICovLAorCQkJCTk5MDQ0QjNCMUJDQzI0OTEwMDdDMjUwRCAvKiBidWlsdGlu
c19nZW5lcmF0b3IucHkgKi8sCisJCQkJOTkwNDRCM0MxQkNDMjQ5MTAwN0MyNTBEIC8qIGJ1aWx0
aW5zX21vZGVsLnB5ICovLAorCQkJCTk5MDQ0QjNEMUJDQzI0OTEwMDdDMjUwRCAvKiBidWlsdGlu
c190ZW1wbGF0ZXMucHkgKi8sCisJCQkJOTkwNDRCM0UxQkNDMjQ5MTAwN0MyNTBEIC8qIGdlbmVy
YXRlX2J1aWx0aW5zX2NvbWJpbmVkX2hlYWRlci5weSAqLywKKwkJCQk5OTA0NEIzRjFCQ0MyNDkx
MDA3QzI1MEQgLyogZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkg
Ki8sCisJCQkJOTkwNDRCNDExQkNDMkIwNTAwN0MyNTBEIC8qIGdlbmVyYXRlX2J1aWx0aW5zX3Nl
cGFyYXRlX2hlYWRlci5weSAqLywKKwkJCQk5OTA0NEI0MjFCQ0MyQjA1MDA3QzI1MEQgLyogZ2Vu
ZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkgKi8sCisJCQkJOTkwNDRC
NDMxQkNDMkIwNTAwN0MyNTBEIC8qIGdlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX3dyYXBwZXIu
cHkgKi8sCisJCQkpOworCQkJcGF0aCA9IGJ1aWx0aW5zOworCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKKwkJfTsKIAkJOTlFNDVBMEMxOEEwMUU5MzAwMjZEODhGIC8qIHJlcGxheSAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC02MDMyLDYgKzYwODMsMTAg
QEAKIAkJCQlGRUEwODYyMDE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc1RUU5QjIxOEFBQjdFMjAwQUFEMDQzIC8qIEJ1aWx0
aW5OYW1lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTkxRDVFRTExQkNDNjQ2OTAwRTRDMjVEIC8q
IGJ1aWx0aW5zLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJOTkxRDVFRDUxQkNDMzVCMTAwRTRDMjVE
IC8qIGJ1aWx0aW5zX2dlbmVyYXRvci5weSBpbiBIZWFkZXJzICovLAorCQkJCTk5MUQ1RUQ2MUJD
QzM1QjEwMEU0QzI1RCAvKiBidWlsdGluc19tb2RlbC5weSBpbiBIZWFkZXJzICovLAorCQkJCTk5
MUQ1RUQ3MUJDQzM1QjEwMEU0QzI1RCAvKiBidWlsdGluc190ZW1wbGF0ZXMucHkgaW4gSGVhZGVy
cyAqLywKIAkJCQk0MURFQTEzMjFCOUYzMTYzMDA2RDY1REQgLyogQnVpbHRpblV0aWxzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5RTcyOTQwQjE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTcxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZs
eS5oIGluIEhlYWRlcnMgKi8sCkBAIC02MDU5LDYgKzYxMTQsNyBAQAogCQkJCTBGMEI4M0I5MTRC
Q0Y5NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU0MjE3RUE5RjU5MDBBQkIyMTcgLyogQ0NhbGxIZWxw
ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjFDM0REQTFCQkNFMDlFMDBFNTIzRTQgLyogQ2Vs
bFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzZBQUFFNTBFMUY0MjY1MDBBRDg3RDggLyog
Q2xhc3NJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyNjFBQTkwOTU2MDBEMzNCMzMg
LyogQ2xvbmVkQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDc5NzBFRDFEM0FF
MDBGMUY2ODEgLyogQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKQEAgLTYxOTAsMTAgKzYyNDYs
OCBAQAogCQkJCUE3OEE5Nzc1MTc5NzM4QjgwMDlERjc0NCAvKiBERkdGYWlsZWRGaW5hbGl6ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3QkZGM0MwMTc5ODY4OTQwMDAyRjQ2MiAvKiBERkdGaWx0
cmF0aW9uUmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzhBOTc3NzE3OTczOEI4MDA5REY3
NDQgLyogREZHRmluYWxpemVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk3QjgzMjlCRjFCQjIxRkUz
MDA2NDlBNkUgLyogV0FTTUZ1bmN0aW9uTExWTUlSR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJCREMxNjE1MUM1RDRGMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY5RDMzOTcxN0ZGQzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRBdC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJMEYzMkJEMTExQkIzNEYxOTAwOTNBNTdGIC8qIEhlYXBIZWxwZXJQ
b29sLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUNGODE3QTBCOENDMDA3NzNBRDggLyogREZH
Rmx1c2hGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkREODE1MUFCM0Q4QkUwMEJCQjhF
OCAvKiBERkdGb3JBbGxLaWxscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2OUNDODkxOTNBQzYw
QTAwNDU3NTlFIC8qIERGR0Zyb3plblZhbHVlLmggaW4gSGVhZGVycyAqLywKQEAgLTYyNjIsNyAr
NjMxNiw2IEBACiAJCQkJMEZCMTc2NjMxOTZCOEY5RTAwOTEwNTJBIC8qIERGR1B1cmVWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzQTFCRkExQTlFQ0I3RDAwMERFMDFBIC8qIERGR1B1dFN0
YWNrU2lua2luZ1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDOUREMTEzMjhERjgyMDAy
QjJBRDcgLyogREZHUmVnaXN0ZXJCYW5rLmggaW4gSGVhZGVycyAqLywKLQkJCQlERUE3RTI0NTFC
QkM2NzdGMDBENzg0NDAgLyogSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYyRkNDRkMxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1NhZmVwb2ludC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTc3QTQyNDMxN0EwQkJGRDAwQThEQjgxIC8qIERGR1NhZmVUb0V4ZWN1
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NDEwMTdGMTc5REFGODAwMDJFQjhCQSAvKiBERkdT
YW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC02
NDA2LDcgKzY0NTksMTIgQEAKIAkJCQlBNTRFOEVCMTE4QkZGQkJFMDA1NTZEMjggLyogR0NTZWdt
ZW50ZWRBcnJheUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MzI0Mzk0MTg1Njk3MDkw
MDJFRDY5MiAvKiBnZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSBpbiBIZWFkZXJz
ICovLAogCQkJCUM0NzAzQ0MwMTkyODQ0OTYwMDEzRkJFQSAvKiBnZW5lcmF0ZS1pbnNwZWN0b3It
cHJvdG9jb2wtYmluZGluZ3MucHkgaW4gSGVhZGVycyAqLywKLQkJCQkyREZCOEFGRTFCQjMyM0JE
MDA5M0QyMzcgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMgaW4gSGVhZGVycyAqLywKKwkJCQk5OTFE
NUVENDFCQ0MzNUFBMDBFNEMyNUQgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgaW4gSGVhZGVy
cyAqLywKKwkJCQk5OTFENUVEODFCQ0MzNUIxMDBFNEMyNUQgLyogZ2VuZXJhdGVfYnVpbHRpbnNf
Y29tYmluZWRfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJOTkxRDVFRDkxQkNDMzVCMTAw
RTRDMjVEIC8qIGdlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5IGlu
IEhlYWRlcnMgKi8sCisJCQkJOTkxRDVFREExQkNDMzVCMTAwRTRDMjVEIC8qIGdlbmVyYXRlX2J1
aWx0aW5zX3NlcGFyYXRlX2hlYWRlci5weSBpbiBIZWFkZXJzICovLAorCQkJCTk5MUQ1RURCMUJD
QzM1QjEwMEU0QzI1RCAvKiBnZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9pbXBsZW1lbnRhdGlv
bi5weSBpbiBIZWFkZXJzICovLAorCQkJCTk5MUQ1RURDMUJDQzM1QjEwMEU0QzI1RCAvKiBnZW5l
cmF0ZV9idWlsdGluc19zZXBhcmF0ZV93cmFwcGVyLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQTVF
QTcwRUMxOUY1QjNFQTAwOThGNUVDIC8qIGdlbmVyYXRlX2NwcF9hbHRlcm5hdGVfYmFja2VuZF9k
aXNwYXRjaGVyX2hlYWRlci5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1RUY5QjE0MUExRDQzRjYw
MDcwMkU5MCAvKiBnZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weSBpbiBI
ZWFkZXJzICovLAogCQkJCUE1RUY5QjE1MUExRDQzRkEwMDcwMkU5MCAvKiBnZW5lcmF0ZV9jcHBf
YmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCkBAIC02
NDQzLDYgKzY1MDEsNyBAQAogCQkJCTE0MkUzMTM4MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGVT
dGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3ODI5N0IxMzc5RThBODAwQTdDMkEzIC8qIEhh
bmRsZVR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEJBN0E5ODEzQUFERkY4MDA1QjdDMkMg
LyogSGVhcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzMkJEMTExQkIzNEYxOTAwOTNBNTdGIC8q
IEhlYXBIZWxwZXJQb29sLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkRBNzc4MzE4RTI1OTk5MDA2
NkZDQjYgLyogSGVhcElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBRDg5MzJCMTdFMzg2
OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJB
NkY0NjI2MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywK
QEAgLTY1ODcsNyArNjY0Niw2IEBACiAJCQkJODZFM0M2MTQxNjdCQUJENzAwNkQ3NjBBIC8qIEpT
RXhwb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0I0QUNBRjE0ODRDOUNFMDBCMzhBMzYgLyog
SlNFeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkVGMTdCNkI1QUIwMEE3
QUUzRiAvKiBKU0Zsb2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTM5MTdFN0IxQjc5
MDZGQTAwMEVCRDMzIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25z
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGMDE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9h
dDY0QXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDFGMEUxNkY1Q0QwMEIzNDQ2MCAv
KiBKU0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzIwMjhCQTE3OTc2MDNEMDA5ODAy
OEMgLyogSlNGdW5jdGlvbklubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNjU5Niw2ICs2NjU0
LDcgQEAKIAkJCQkwRjJCNjZGMzE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkY0MTdC
NkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMkI2NkY1MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTM5MTdFN0IxQjc5MDZGQTAw
MEVCRDMzIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjJCNjZGNjE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OTdFMDdB
QTFCOEZDRkI5MDA4NDAwQkEgLyogSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMThDNDIxMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0dsb2JhbE9iamVjdC5o
IGluIEhlYWRlcnMgKi8sCkBAIC02NjcwLDYgKzY3MjksNyBAQAogCQkJCTBGMkI2NkZCMTdCNkI1
QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMkI2NkZEMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlQcm90b3R5cGVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFy
cmF5cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJREVBN0UyNDUxQkJDNjc3RjAwRDc4NDQwIC8qIEpT
VHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1MDdEMjlFMEU4
NzFFNUUwMEQ3RDg5NiAvKiBKU1R5cGVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjcw
MjE3QjZCNUFCMDBBN0FFM0YgLyogSlNVaW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyQjY3MDMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVWludDMyQXJyYXkuaCBpbiBIZWFkZXJzICov
LApAQCAtNjY5Myw2ICs2NzUzLDcgQEAKIAkJCQk5NjlBMDcyQTBFRDFDRTY5MDBGMUY2ODEgLyog
TGFiZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2MDA5N0E2MEVCQUJCNTgwMDdBNzI5NyAvKiBM
YWJlbFNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI1NDY3NzE0RjU5QjVDMDAyQzI5ODkg
LyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5MUQ1RURE
MUJDQzM1QjMwMEU0QzI1RCAvKiBsYXp5d3JpdGVyLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
OEM0NTIwRTE2RjVDRDAwQjM0NDYwIC8qIExlZ2FjeVByb2ZpbGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzQzMTBFMTZGNUNEMDBCMzQ0NjAgLyogTGV4ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMThDNTJFMEUxNkZDRTEwMEIzNDQ2MCAvKiBMZXhlci5sdXQuaCBpbiBIZWFkZXJzICov
LApAQCAtNjk0OCw4ICs3MDA5LDggQEAKIAkJCQlBN0I2MDE4MjE2MzlGRDJBMDAzNzJCQTMgLyog
VW5saW5rZWRDb2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTQyRTUxMUI3OTZFQ0Uw
MEY0QkY0QiAvKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYyRTg5MkMxNkQwMjhBRDAwOUU0RkQyIC8qIFVudXNlZFBvaW50ZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTk5MUQ1RURGMUJDQzYzMEMwMEU0QzI1RCAvKiBVcGRhdGVDb250ZW50cy5weSBp
biBIZWFkZXJzICovLAogCQkJCTBGOTYzQjM4MTNGQzZGRTkwMDAyRDlCMiAvKiBWYWx1ZVByb2Zp
bGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGMUMzRERBMUJCQ0UwOUUwMEU1MjNFNCAvKiBDZWxs
U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDI2QTQ4MTQ2MENCQjMwMDEzMUY4RiAvKiBW
YWx1ZVJlY292ZXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk3OUVFMEMwMDFCNEFGQjg1MDAwMzg1
QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2QzczNTEx
QUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmggaW4gSGVhZGVycyAq
LywKQEAgLTY5NjEsNiArNzAyMiw3IEBACiAJCQkJN0IwMjQ3NTUxQjg2ODJERDAwNTQyNDQwIC8q
IFdBU01Db25zdGFudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdCQzU0N0QzMUI2OTU5QTEwMDk1
OUI1OCAvKiBXQVNNRm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QjJFMDEwRTFCOTdBQTY5
MDBFRjVENUMgLyogV0FTTUZ1bmN0aW9uQ29tcGlsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdC
ODMyOUJGMUJCMjFGRTMwMDY0OUE2RSAvKiBXQVNNRnVuY3Rpb25MTFZNSVJHZW5lcmF0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTdCMDI0NzU3MUI4NjgyRTQwMDU0MjQ0MCAvKiBXQVNNRnVuY3Rp
b25QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdCMDI0NzU5MUI4NjhFQjcwMDU0MjQ0MCAv
KiBXQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QjM5Rjc2
RTFCNjJERTMyMDAzNjBGQjQgLyogV0FTTU1vZHVsZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC03NzcyLDYgKzc4MzQsNyBAQAogCQkJCTE0MkUzMTM1MTM0RkYwQTYwMEFGQURCNSAvKiBIYW5k
bGVTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyRTMxMzcxMzRGRjBBNjAwQUZBREI1IC8q
IEhhbmRsZVN0YWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0QkE3QTk3MTNBQURGRjgwMDVC
N0MyQyAvKiBIZWFwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMzJCRDEwMUJCMzRGMTkwMDkz
QTU3RiAvKiBIZWFwSGVscGVyUG9vbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMjREMzFFMjE2
MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QzJFNTI2QkQxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGRTdCQTYwRjFBMUE3Q0VDMDBGMUY3QjQgLyogSGVhcFZlcmlmaWVyLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtNzkyOCw2ICs3OTkxLDcgQEAKIAkJCQkwRjJCNjZGQTE3QjZCNUFCMDBBN0FF
M0YgLyogSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkI2NkZDMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlQcm90b3R5cGVzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGMkI2NkZFMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlz
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCURFQTdFMjQ0MUJCQzY3NzIwMEQ3ODQ0MCAvKiBKU1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RTNDNjFBMTY3
QkFCRUUwMDZENzYwQSAvKiBKU1ZhbHVlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRCRDVBMzIw
QTNFOTFGNjAwQkFGNTlDIC8qIEpTVmFsdWVSZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZF
M0M2MUMxNjdCQUJFRTAwNkQ3NjBBIC8qIEpTVmlydHVhbE1hY2hpbmUubW0gaW4gU291cmNlcyAq
LywKQEAgLTgwMDEsNyArODA2NSw2IEBACiAJCQkJMEY5ODIwNjAxNkJGRTM4MTAwMjQwRDAyIC8q
IFByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NTc0MkY2NTBERDEx
RjVBMDAwOTE3RkIgLyogUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NUNENDU3NjBF
MUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQlERUE3RTI0NDFCQkM2NzcyMDBENzg0NDAgLyogSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5NUFCODM1NjBEQTQzQzMwMDBCQzgzRjMgLyogUHJvZmls
ZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNzI5QUQxNjZBRDM1QzAwMEY1QkEzIC8q
IFByb2ZpbGVyQnl0ZWNvZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNzI5QUUxNjZBRDM1
QzAwMEY1QkEzIC8qIFByb2ZpbGVyQnl0ZWNvZGVzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtODEx
MCw3ICs4MTczLDYgQEAKIAkJCQkwRkY0Mjc0MDE1OEVCRThCMDA0Q0I5RkYgLyogdWRpczg2X2Rl
Y29kZS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NDMxNThFQkU5MTAwNENCOUZGIC8qIHVk
aXM4Nl9pbnB1dC5jIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NEQxNThFQkZFNjAwNENCOUZG
IC8qIHVkaXM4Nl9pdGFiX2hvbGRlci5jIGluIFNvdXJjZXMgKi8sCi0JCQkJMEYzMkJEMTAxQkIz
NEYxOTAwOTNBNTdGIC8qIEhlYXBIZWxwZXJQb29sLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RjQyNzQ1MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfc3luLWF0dC5jIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZGNDI3NDYxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Nl9zeW4taW50ZWwuYyBpbiBT
b3VyY2VzICovLAogCQkJCTBGRjQyNzQ3MTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODZfc3luLmMg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L1VwZGF0ZUNvbnRlbnRzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvVXBkYXRl
Q29udGVudHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzc2ZDQ2ZmI0YzQyMzAyYjg1ZmYxMGM4NTFlYjM0YzFl
Mjc4OTRjMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L1VwZGF0ZUNvbnRlbnRzLnB5CkBAIC0wLDAgKzEsNDggQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisK
KyMgQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMgMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyMgICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyMgICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKK2ltcG9ydCBzeXMKK2ltcG9ydCBvcworCithc3NlcnQobGVuKHN5cy5h
cmd2KSA9PSAzKQorCitjb21wID0gc3lzLmFyZ3ZbMV0KK2ZpbGVuYW1lID0gc3lzLmFyZ3ZbMl0K
KwordCA9IEZhbHNlCisKK2lmIG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lKToKKyAgICBmID0gb3Bl
bihmaWxlbmFtZSwgJ3InKQorICAgIGNvbXBhcmF0b3IgPSBmLnJlYWQoKQorICAgIGYuY2xvc2Uo
KQorICAgIHQgPSBUcnVlCisKK2lmIChub3QgdCBvciBjb21wICE9IGNvbXBhcmF0b3IpOgorICAg
IGYgPSBvcGVuKGZpbGVuYW1lLCAndycpCisgICAgZi53cml0ZShjb21wKQorICAgIGYuY2xvc2Uo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvX19p
bml0X18ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9fX2luaXRf
Xy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mZGZjYmE5ODFkOGY4ZGEwNzgxMzU4Y2ZlNjRmYTFjNzgwNzRhMTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRp
bnMvX19pbml0X18ucHkKQEAgLTAsMCArMSwzIEBACisjIFJlcXVpcmVkIGZvciBQeXRob24gdG8g
c2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGUgZmlsZXMKKworZnJvbSBidWlsdGlucyBp
bXBvcnQgKgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRp
bnMvYnVpbHRpbnMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9i
dWlsdGlucy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZGZlZDc2NmFmMTUwYmRhZTRkMWIyY2U3NTkxZjgzZjA1
OWY0MTY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
YnVpbHRpbnMvYnVpbHRpbnMucHkKQEAgLTAsMCArMSwxMiBAQAorIyBUaGlzIGZpbGUgaXMgdXNl
ZCB0byBzaW11bGF0ZSB0aGUgYnVpbHRpbnMvIGRpcmVjdG9yeSB3aGVuIGdlbmVyYXRlLWpzLWJ1
aWx0aW5zLnB5CisjIGlzIHJ1biBmcm9tIEphdmFTY3JpcHRDb3JlIGZyYW1ld29yaydzIHByaXZh
dGUgaGVhZGVycyBkaXJlY3RvcnksIHdoaWNoIGlzIGZsYXR0ZW5lZC4KKworZnJvbSBidWlsdGlu
c19tb2RlbCBpbXBvcnQgKgorZnJvbSBidWlsdGluc190ZW1wbGF0ZXMgaW1wb3J0ICoKKworZnJv
bSBidWlsdGluc19nZW5lcmF0b3IgaW1wb3J0ICoKK2Zyb20gZ2VuZXJhdGVfYnVpbHRpbnNfY29t
YmluZWRfaGVhZGVyIGltcG9ydCAqCitmcm9tIGdlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2lt
cGxlbWVudGF0aW9uIGltcG9ydCAqCitmcm9tIGdlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2hl
YWRlciBpbXBvcnQgKgorZnJvbSBnZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9pbXBsZW1lbnRh
dGlvbiBpbXBvcnQgKgorZnJvbSBnZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV93cmFwcGVyIGlt
cG9ydCAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlu
cy9idWlsdGluc19nZW5lcmF0b3IucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9i
dWlsdGlucy9idWlsdGluc19nZW5lcmF0b3IucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTg0ODNlMGMyMjMxNWY3
N2RiYWE5NzZkNGJhZGNmNzdkZTJkM2YxOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5weQpAQCAtMCww
ICsxLDE3MSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAx
NCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykg
MjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgbG9nZ2luZworaW1w
b3J0IG9zLnBhdGgKK2ltcG9ydCByZQorZnJvbSBzdHJpbmcgaW1wb3J0IFRlbXBsYXRlCitpbXBv
cnQganNvbgorCitmcm9tIGJ1aWx0aW5zX21vZGVsIGltcG9ydCBCdWlsdGluRnVuY3Rpb24sIEJ1
aWx0aW5PYmplY3QKK2Zyb20gYnVpbHRpbnNfdGVtcGxhdGVzIGltcG9ydCBCdWlsdGluc0dlbmVy
YXRvclRlbXBsYXRlcyBhcyBUZW1wbGF0ZXMKKworbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2ds
b2JhbCcpCisKKyMgVGhlc2UgbWF0Y2ggV0tfbGNmaXJzdCBhbmQgV0tfdWNmaXJzdCBkZWZpbmVk
IGluIENvZGVHZW5lcmF0b3IucG0uCitkZWYgV0tfbGNmaXJzdChzdHIpOgorICAgIHN0ciA9IHN0
cls6MV0ubG93ZXIoKSArIHN0clsxOl0KKyAgICBzdHIgPSBzdHIucmVwbGFjZSgnaFRNTCcsICdo
dG1sJykKKyAgICBzdHIgPSBzdHIucmVwbGFjZSgndVJMJywgJ3VybCcpCisgICAgc3RyID0gc3Ry
LnJlcGxhY2UoJ2pTJywgJ2pzJykKKyAgICBzdHIgPSBzdHIucmVwbGFjZSgneE1MJywgJ3htbCcp
CisgICAgc3RyID0gc3RyLnJlcGxhY2UoJ3hTTFQnLCAneHNsdCcpCisgICAgc3RyID0gc3RyLnJl
cGxhY2UoJ2NTUycsICdjc3MnKQorICAgIHJldHVybiBzdHIKKworZGVmIFdLX3VjZmlyc3Qoc3Ry
KToKKyAgICBzdHIgPSBzdHJbOjFdLnVwcGVyKCkgKyBzdHJbMTpdCisgICAgc3RyID0gc3RyLnJl
cGxhY2UoJ1htbCcsICdYTUwnKQorICAgIHN0ciA9IHN0ci5yZXBsYWNlKCdTdmcnLCAnU1ZHJykK
KyAgICByZXR1cm4gc3RyCisKK2NsYXNzIEJ1aWx0aW5zR2VuZXJhdG9yOgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBtb2RlbCk6CisgICAgICAgIHNlbGYuX21vZGVsID0gbW9kZWwKKworICAgIGRl
ZiBtb2RlbChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX21vZGVsCisKKyAgICAjIFRoZXNl
IG1ldGhvZHMgYXJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nlcy4KKworICAgIGRlZiBnZW5lcmF0
ZV9vdXRwdXQoc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBvdXRwdXRfZmlsZW5hbWUo
c2VsZik6CisgICAgICAgIHBhc3MKKworCisgICAgIyBTaGFyZWQgY29kZSBnZW5lcmF0aW9uIG1l
dGhvZHMuCisgICAgZGVmIGdlbmVyYXRlX2xpY2Vuc2Uoc2VsZik6CisgICAgICAgIHJhd19saWNl
bnNlID0gVGVtcGxhdGUoVGVtcGxhdGVzLkxpY2Vuc2VUZXh0KS5zdWJzdGl0dXRlKE5vbmUpCisg
ICAgICAgIGNvcHlyaWdodHMgPSBzZWxmLl9tb2RlbC5jb3B5cmlnaHRzKCkKKyAgICAgICAgY29w
eXJpZ2h0cy5zb3J0KCkKKworICAgICAgICBsaWNlbnNlX2Jsb2NrID0gW10KKyAgICAgICAgbGlj
ZW5zZV9ibG9jay5hcHBlbmQoIi8qIikKKyAgICAgICAgZm9yIGNvcHlyaWdodCBpbiBjb3B5cmln
aHRzOgorICAgICAgICAgICAgbGljZW5zZV9ibG9jay5hcHBlbmQoIiAqIENvcHlyaWdodCAoYykg
JXMiICUgY29weXJpZ2h0KQorICAgICAgICBpZiBsZW4oY29weXJpZ2h0cykgPiAwOgorICAgICAg
ICAgICAgbGljZW5zZV9ibG9jay5hcHBlbmQoIiAqICIpCisKKyAgICAgICAgZm9yIGxpbmUgaW4g
cmF3X2xpY2Vuc2Uuc3BsaXQoJ1xuJyk6CisgICAgICAgICAgICBsaWNlbnNlX2Jsb2NrLmFwcGVu
ZCgiICogIiArIGxpbmUpCisKKyAgICAgICAgbGljZW5zZV9ibG9jay5hcHBlbmQoIiAqLyIpCisK
KyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaWNlbnNlX2Jsb2NrKQorCisgICAgZGVmIGdlbmVy
YXRlX2luY2x1ZGVzX2Zyb21fZW50cmllcyhzZWxmLCBlbnRyaWVzKToKKyAgICAgICAgaW5jbHVk
ZXMgPSBzZXQoKQorICAgICAgICBmb3IgZW50cnkgaW4gZW50cmllczoKKyAgICAgICAgICAgIChh
bGxvd2VkX2ZyYW1ld29ya19uYW1lcywgZGF0YSkgPSBlbnRyeQorICAgICAgICAgICAgKGZyYW1l
d29ya19uYW1lLCBoZWFkZXJfcGF0aCkgPSBkYXRhCisKKyAgICAgICAgICAgIGlmIHNlbGYubW9k
ZWwoKS5mcmFtZXdvcmsubmFtZSBub3QgaW4gYWxsb3dlZF9mcmFtZXdvcmtfbmFtZXM6CisgICAg
ICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIHNlbGYubW9kZWwoKS5mcmFtZXdv
cmsubmFtZSAhPSBmcmFtZXdvcmtfbmFtZToKKyAgICAgICAgICAgICAgICBpbmNsdWRlcy5hZGQo
IiNpbmNsdWRlIDwlcz4iICUgaGVhZGVyX3BhdGgpCisgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgIGluY2x1ZGVzLmFkZCgiI2luY2x1ZGUgXCIlc1wiIiAlIG9zLnBhdGguYmFzZW5h
bWUoaGVhZGVyX3BhdGgpKQorCisgICAgICAgIHNvcnRlZF9pbmNsdWRlcyA9IHNvcnRlZChsaXN0
KGluY2x1ZGVzKSkKKyAgICAgICAgIyBBbHdheXMgaW5jbHVkZSBjb25maWcuaCBhbmQgdGhlIGNv
dW50ZXJwYXJ0IGhlYWRlciBiZWZvcmUgb3RoZXIgaGVhZGVycy4KKyAgICAgICAgbmFtZSwgZXh0
ID0gb3MucGF0aC5zcGxpdGV4dChzZWxmLm91dHB1dF9maWxlbmFtZSgpKQorICAgICAgICBpZiBl
eHQgIT0gJy5oJzoKKyAgICAgICAgICAgIHNvcnRlZF9pbmNsdWRlc1s6MF0gPSBbCisgICAgICAg
ICAgICAgICAgIiNpbmNsdWRlIFwiY29uZmlnLmhcIiIsCisgICAgICAgICAgICAgICAgIiNpbmNs
dWRlIFwiJXMuaFwiIiAlIG5hbWUsCisgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICBd
CisKKyAgICAgICAgcmV0dXJuIHNvcnRlZF9pbmNsdWRlcworCisgICAgZGVmIGdlbmVyYXRlX2Vt
YmVkZGVkX2NvZGVfc3RyaW5nX3NlY3Rpb25fZm9yX2Z1bmN0aW9uKHNlbGYsIGZ1bmN0aW9uKToK
KyAgICAgICAgdGV4dCA9IGZ1bmN0aW9uLmZ1bmN0aW9uX3NvdXJjZQorICAgICAgICAjIFdyYXAg
aXQgaW4gcGFyZW5zIHRvIGF2b2lkIGFkZGluZyB0byBnbG9iYWwgc2NvcGUuCisgICAgICAgIHRl
eHQgPSAiKGZ1bmN0aW9uICIgKyB0ZXh0W3RleHQuaW5kZXgoIigiKTpdICsgIikiCisgICAgICAg
IGVtYmVkZGVkU291cmNlTGVuZ3RoID0gbGVuKHRleHQpICsgMSAgIyBGb3IgZXh0cmEgXG4uCisg
ICAgICAgICMgTGF6eSB3YXkgdG8gZXNjYXBlIHF1b3RlcywgSSB0aGluaz8KKyAgICAgICAgdGV4
dExpbmVzID0ganNvbi5kdW1wcyh0ZXh0KVsxOi0xXS5zcGxpdCgiXFxuIikKKyAgICAgICAgIyBU
aGlzIGxvb2tzIHNjYXJ5IGJlY2F1c2Ugd2UgbmVlZCB0aGUgSlMgc291cmNlIGl0c2VsZiB0byBo
YXZlIG5ld2xpbmVzLgorICAgICAgICBlbWJlZGRlZFNvdXJjZSA9ICdcbicuam9pbihbJyAgICAi
JXNcXG4iIFxcJyAlIGxpbmUgZm9yIGxpbmUgaW4gdGV4dExpbmVzXSkKKworICAgICAgICBjb25z
dHJ1Y3RBYmlsaXR5ID0gIkNhbm5vdENvbnN0cnVjdCIKKyAgICAgICAgaWYgZnVuY3Rpb24uaXNf
Y29uc3RydWN0b3I6CisgICAgICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gIkNhbkNvbnN0cnVj
dCIKKworICAgICAgICBhcmdzID0geworICAgICAgICAgICAgJ2NvZGVOYW1lJzogQnVpbHRpbnNH
ZW5lcmF0b3IubWFuZ2xlZE5hbWVGb3JGdW5jdGlvbihmdW5jdGlvbikgKyAnQ29kZScsCisgICAg
ICAgICAgICAnZW1iZWRkZWRTb3VyY2UnOiBlbWJlZGRlZFNvdXJjZSwKKyAgICAgICAgICAgICdl
bWJlZGRlZFNvdXJjZUxlbmd0aCc6IGVtYmVkZGVkU291cmNlTGVuZ3RoLAorICAgICAgICAgICAg
J2NhbkNvbnN0cnVjdCc6IGNvbnN0cnVjdEFiaWxpdHkKKyAgICAgICAgfQorCisgICAgICAgIGxp
bmVzID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCJjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxp
dHkgc18lKGNvZGVOYW1lKXNDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
OjolKGNhbkNvbnN0cnVjdClzOyIgJSBhcmdzKTsKKyAgICAgICAgbGluZXMuYXBwZW5kKCJjb25z
dCBpbnQgc18lKGNvZGVOYW1lKXNMZW5ndGggPSAlKGVtYmVkZGVkU291cmNlTGVuZ3RoKWQ7IiAl
IGFyZ3MpOworICAgICAgICBsaW5lcy5hcHBlbmQoImNvbnN0IGNoYXIqIHNfJShjb2RlTmFtZSlz
ID1cbiUoZW1iZWRkZWRTb3VyY2Upc1xuOyIgJSBhcmdzKTsKKyAgICAgICAgcmV0dXJuICdcbicu
am9pbihsaW5lcykKKworICAgICMgSGVscGVyIG1ldGhvZHMuCisKKyAgICBAc3RhdGljbWV0aG9k
CisgICAgZGVmIG1hbmdsZWROYW1lRm9yT2JqZWN0KG9iamVjdCk6CisgICAgICAgIGlmIG5vdCBp
c2luc3RhbmNlKG9iamVjdCwgQnVpbHRpbk9iamVjdCk6CisgICAgICAgICAgICByYWlzZSBFeGNl
cHRpb24oIkludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIG1hbmdsZWROYW1lRm9yT2JqZWN0KCki
KQorCisgICAgICAgIGRlZiB0b0NhbWVsKG1hdGNoKToKKyAgICAgICAgICAgIHN0ciA9IG1hdGNo
Lmdyb3VwKDApCisgICAgICAgICAgICByZXR1cm4gc3RyWzFdLnVwcGVyKCkKKyAgICAgICAgcmV0
dXJuIHJlLnN1YihyJ1wuW2Etel0nLCB0b0NhbWVsLCBvYmplY3Qub2JqZWN0X25hbWUsIGZsYWdz
PXJlLklHTk9SRUNBU0UpCisKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgbWFuZ2xlZE5h
bWVGb3JGdW5jdGlvbihmdW5jdGlvbik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGZ1bmN0
aW9uLCBCdWlsdGluRnVuY3Rpb24pOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJJbnZh
bGlkIGFyZ3VtZW50IHBhc3NlZCB0byBtYW5nbGVkTmFtZUZvckZ1bmN0aW9uKCkiKQorCisgICAg
ICAgIGZ1bmN0aW9uX25hbWUgPSBXS191Y2ZpcnN0KGZ1bmN0aW9uLmZ1bmN0aW9uX25hbWUpCisK
KyAgICAgICAgZGVmIHRvQ2FtZWwobWF0Y2gpOgorICAgICAgICAgICAgc3RyID0gbWF0Y2guZ3Jv
dXAoMCkKKyAgICAgICAgICAgIHJldHVybiBzdHJbMV0udXBwZXIoKQorICAgICAgICBmdW5jdGlv
bl9uYW1lID0gcmUuc3ViKHInXC5bYS16XScsIHRvQ2FtZWwsIGZ1bmN0aW9uX25hbWUsIGZsYWdz
PXJlLklHTk9SRUNBU0UpCisgICAgICAgIGlmIGZ1bmN0aW9uLmlzX2NvbnN0cnVjdG9yOgorICAg
ICAgICAgICAgZnVuY3Rpb25fbmFtZSA9IGZ1bmN0aW9uX25hbWUgKyAiQ29uc3RydWN0b3IiCisK
KyAgICAgICAgb2JqZWN0X25hbWUgPSBCdWlsdGluc0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvck9i
amVjdChmdW5jdGlvbi5vYmplY3QpCisgICAgICAgIHJldHVybiBXS19sY2ZpcnN0KG9iamVjdF9u
YW1lICsgZnVuY3Rpb25fbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjVkNGJkZTY0
ZDZiYTZjZDFkMDczNTNkNGYyYmQ1ZWExNDUwYWEzZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5CkBAIC0w
LDAgKzEsMjMzIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IChjKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
IyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgcmUKK2ltcG9ydCBv
cworCitsb2cgPSBsb2dnaW5nLmdldExvZ2dlcignZ2xvYmFsJykKKworX0ZSQU1FV09SS19DT05G
SUdfTUFQID0geworICAgICJKYXZhU2NyaXB0Q29yZSI6IHsKKyAgICAgICAgIm1hY3JvX3ByZWZp
eCI6ICJKU0MiLAorICAgICAgICAibmFtZXNwYWNlIjogIkpTQyIsCisgICAgfSwKKyAgICAiV2Vi
Q29yZSI6IHsKKyAgICAgICAgIm1hY3JvX3ByZWZpeCI6ICJXRUJDT1JFIiwKKyAgICAgICAgIm5h
bWVzcGFjZSI6ICJXZWJDb3JlIiwKKyAgICB9LAorfQorCitmdW5jdGlvbkhlYWRSZWdFeHAgPSBy
ZS5jb21waWxlKHIiKD86ZnVuY3Rpb258Y29uc3RydWN0b3IpXHMrXHcrXHMqXCguKj9cKSIsIHJl
Lk1VTFRJTElORSB8IHJlLlMpCitmdW5jdGlvbk5hbWVSZWdFeHAgPSByZS5jb21waWxlKHIiKD86
ZnVuY3Rpb258Y29uc3RydWN0b3IpXHMrKFx3KylccypcKCIsIHJlLk1VTFRJTElORSB8IHJlLlMp
CitmdW5jdGlvbklzQ29uc3RydWN0b3JSZWdFeHAgPSByZS5jb21waWxlKHIiXmNvbnN0cnVjdG9y
IiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uUGFyYW1ldGVyRmluZGVyID0gcmUuY29t
cGlsZShyIl4oPzpmdW5jdGlvbnxjb25zdHJ1Y3RvcilccysoPzpcdyspXHMqXCgoKD86XHMqXHcr
KT9ccyooPzpccyosXHMqXHcrKSopP1xzKlwpIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKKworbXVs
dGlsaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wqLio/XCpcLyIsIHJlLk1VTFRJ
TElORSB8IHJlLlMpCitzaW5nbGVMaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wv
Lio/XG4iLCByZS5NVUxUSUxJTkUgfCByZS5TKQorCisKK2NsYXNzIFBhcnNlRXhjZXB0aW9uKEV4
Y2VwdGlvbik6CisgICAgcGFzcworCisKK2NsYXNzIEZyYW1ld29yazoKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgbmFtZSk6CisgICAgICAgIHNlbGYuX3NldHRpbmdzID0gX0ZSQU1FV09SS19DT05G
SUdfTUFQW25hbWVdCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgIGRlZiBzZXR0aW5n
KHNlbGYsIGtleSwgZGVmYXVsdD0nJyk6CisgICAgICAgIHJldHVybiBzZWxmLl9zZXR0aW5ncy5n
ZXQoa2V5LCBkZWZhdWx0KQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBmcm9tU3RyaW5n
KGZyYW1ld29ya1N0cmluZyk6CisgICAgICAgIGlmIGZyYW1ld29ya1N0cmluZyA9PSAiSmF2YVNj
cmlwdENvcmUiOgorICAgICAgICAgICAgcmV0dXJuIEZyYW1ld29ya3MuSmF2YVNjcmlwdENvcmUK
KworICAgICAgICBpZiBmcmFtZXdvcmtTdHJpbmcgPT0gIldlYkNvcmUiOgorICAgICAgICAgICAg
cmV0dXJuIEZyYW1ld29ya3MuV2ViQ29yZQorCisgICAgICAgIHJhaXNlIFBhcnNlRXhjZXB0aW9u
KCJVbmtub3duIGZyYW1ld29yazogJXMiICUgZnJhbWV3b3JrU3RyaW5nKQorCisKK2NsYXNzIEZy
YW1ld29ya3M6CisgICAgSmF2YVNjcmlwdENvcmUgPSBGcmFtZXdvcmsoIkphdmFTY3JpcHRDb3Jl
IikKKyAgICBXZWJDb3JlID0gRnJhbWV3b3JrKCJXZWJDb3JlIikKKworCitjbGFzcyBCdWlsdGlu
T2JqZWN0OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvYmplY3RfbmFtZSwgZnVuY3Rpb25zKToK
KyAgICAgICAgc2VsZi5vYmplY3RfbmFtZSA9IG9iamVjdF9uYW1lCisgICAgICAgIHNlbGYuZnVu
Y3Rpb25zID0gZnVuY3Rpb25zCisgICAgICAgIHNlbGYuY29sbGVjdGlvbiA9IE5vbmUgICMgU2V0
IGJ5IHRoZSBvd25pbmcgQnVpbHRpbnNDb2xsZWN0aW9uCisKKyAgICAgICAgZm9yIGZ1bmN0aW9u
IGluIHNlbGYuZnVuY3Rpb25zOgorICAgICAgICAgICAgZnVuY3Rpb24ub2JqZWN0ID0gc2VsZgor
CisKK2NsYXNzIEJ1aWx0aW5GdW5jdGlvbjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuY3Rp
b25fbmFtZSwgZnVuY3Rpb25fc291cmNlLCBpc19jb25zdHJ1Y3RvciwgcGFyYW1ldGVycyk6Cisg
ICAgICAgIHNlbGYuZnVuY3Rpb25fbmFtZSA9IGZ1bmN0aW9uX25hbWUKKyAgICAgICAgc2VsZi5m
dW5jdGlvbl9zb3VyY2UgPSBmdW5jdGlvbl9zb3VyY2UKKyAgICAgICAgc2VsZi5pc19jb25zdHJ1
Y3RvciA9IGlzX2NvbnN0cnVjdG9yCisgICAgICAgIHNlbGYucGFyYW1ldGVycyA9IHBhcmFtZXRl
cnMKKyAgICAgICAgc2VsZi5vYmplY3QgPSBOb25lICAjIFNldCBieSB0aGUgb3duaW5nIEJ1aWx0
aW5PYmplY3QKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZnJvbVN0cmluZyhmdW5jdGlv
bl9zdHJpbmcpOgorICAgICAgICBmdW5jdGlvbl9zb3VyY2UgPSBtdWx0aWxpbmVDb21tZW50UmVn
RXhwLnN1YigiIiwgZnVuY3Rpb25fc3RyaW5nKQorICAgICAgICBmdW5jdGlvbl9uYW1lID0gZnVu
Y3Rpb25OYW1lUmVnRXhwLmZpbmRhbGwoZnVuY3Rpb25fc291cmNlKVswXQorICAgICAgICBpc19j
b25zdHJ1Y3RvciA9IGZ1bmN0aW9uSXNDb25zdHJ1Y3RvclJlZ0V4cC5tYXRjaChmdW5jdGlvbl9z
b3VyY2UpICE9IE5vbmUKKyAgICAgICAgcGFyYW1ldGVycyA9IFtzLnN0cmlwKCkgZm9yIHMgaW4g
ZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlvbl9zb3VyY2UpWzBdLnNwbGl0
KCcsJyldCisgICAgICAgIGlmIGxlbihwYXJhbWV0ZXJzWzBdKSA9PSAwOgorICAgICAgICAgICAg
cGFyYW1ldGVycyA9IFtdCisKKyAgICAgICAgcmV0dXJuIEJ1aWx0aW5GdW5jdGlvbihmdW5jdGlv
bl9uYW1lLCBmdW5jdGlvbl9zb3VyY2UsIGlzX2NvbnN0cnVjdG9yLCBwYXJhbWV0ZXJzKQorCisg
ICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIGludGVyZmFjZSA9ICIlcyglcykiICUgKHNl
bGYuZnVuY3Rpb25fbmFtZSwgJywgJy5qb2luKHNlbGYucGFyYW1ldGVycykpCisgICAgICAgIGlm
IHNlbGYuaXNfY29uc3RydWN0b3I6CisgICAgICAgICAgICBpbnRlcmZhY2UgPSBpbnRlcmZhY2Ug
KyAiIFtDb25zdHJ1Y3Rvcl0iCisKKyAgICAgICAgcmV0dXJuIGludGVyZmFjZQorCisKK2NsYXNz
IEJ1aWx0aW5zQ29sbGVjdGlvbjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnJhbWV3b3JrX25h
bWUpOgorICAgICAgICBzZWxmLl9jb3B5cmlnaHRfbGluZXMgPSBzZXQoKQorICAgICAgICBzZWxm
Lm9iamVjdHMgPSBbXQorICAgICAgICBzZWxmLmZyYW1ld29yayA9IEZyYW1ld29yay5mcm9tU3Ry
aW5nKGZyYW1ld29ya19uYW1lKQorICAgICAgICBsb2cuZGVidWcoIkNyZWF0ZWQgbmV3IEJ1aWx0
aW5zIGNvbGxlY3Rpb24uIikKKworICAgIGRlZiBwYXJzZV9idWlsdGluc19maWxlKHNlbGYsIGZp
bGVuYW1lLCB0ZXh0KToKKyAgICAgICAgbG9nLmRlYnVnKCJQYXJzaW5nIGJ1aWx0aW5zIGZpbGU6
ICVzIiAlIGZpbGVuYW1lKQorCisgICAgICAgIHBhcnNlZF9jb3B5cmlnaHRzID0gc2V0KHNlbGYu
X3BhcnNlX2NvcHlyaWdodF9saW5lcyh0ZXh0KSkKKyAgICAgICAgc2VsZi5fY29weXJpZ2h0X2xp
bmVzID0gc2VsZi5fY29weXJpZ2h0X2xpbmVzLnVuaW9uKHBhcnNlZF9jb3B5cmlnaHRzKQorCisg
ICAgICAgIGxvZy5kZWJ1ZygiRm91bmQgY29weXJpZ2h0IGxpbmVzOiIpCisgICAgICAgIGZvciBs
aW5lIGluIHNlbGYuX2NvcHlyaWdodF9saW5lczoKKyAgICAgICAgICAgIGxvZy5kZWJ1ZyhsaW5l
KQorICAgICAgICBsb2cuZGVidWcoIiIpCisKKyAgICAgICAgb2JqZWN0X25hbWUsIGV4dCA9IG9z
LnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSkpCisgICAgICAgIGxvZy5k
ZWJ1ZygiUGFyc2luZyBvYmplY3Q6ICVzIiAlIG9iamVjdF9uYW1lKQorCisgICAgICAgIHBhcnNl
ZF9mdW5jdGlvbnMgPSBzZWxmLl9wYXJzZV9mdW5jdGlvbnModGV4dCkKKyAgICAgICAgZm9yIGZ1
bmN0aW9uIGluIHBhcnNlZF9mdW5jdGlvbnM6CisgICAgICAgICAgICBmdW5jdGlvbi5vYmplY3Qg
PSBvYmplY3RfbmFtZQorCisgICAgICAgIGxvZy5kZWJ1ZygiUGFyc2VkIGZ1bmN0aW9uczoiKQor
ICAgICAgICBmb3IgZnVuYyBpbiBwYXJzZWRfZnVuY3Rpb25zOgorICAgICAgICAgICAgbG9nLmRl
YnVnKGZ1bmMpCisgICAgICAgIGxvZy5kZWJ1ZygiIikKKworICAgICAgICBuZXdfb2JqZWN0ID0g
QnVpbHRpbk9iamVjdChvYmplY3RfbmFtZSwgcGFyc2VkX2Z1bmN0aW9ucykKKyAgICAgICAgbmV3
X29iamVjdC5jb2xsZWN0aW9uID0gc2VsZgorICAgICAgICBzZWxmLm9iamVjdHMuYXBwZW5kKG5l
d19vYmplY3QpCisKKyAgICBkZWYgY29weXJpZ2h0cyhzZWxmKToKKyAgICAgICAgb3duZXJfdG9f
eWVhcnMgPSBkaWN0KCkKKyAgICAgICAgY29weXJpZ2h0WWVhclJlZ0V4cCA9IHJlLmNvbXBpbGUo
ciIoXGR7NH0pWywgXXswLDJ9IikKKyAgICAgICAgb3duZXJTdGFydFJlZ0V4cCA9IHJlLmNvbXBp
bGUociJbXlxkLCBdIikKKworICAgICAgICAjIFJldHVybnMgZGVkdXBsaWNhdGVkIGNvcHlyaWdo
dHMga2V5ZWQgb24gdGhlIG93bmVyLgorICAgICAgICBmb3IgbGluZSBpbiBzZWxmLl9jb3B5cmln
aHRfbGluZXM6CisgICAgICAgICAgICB5ZWFycyA9IHNldChjb3B5cmlnaHRZZWFyUmVnRXhwLmZp
bmRhbGwobGluZSkpCisgICAgICAgICAgICBvd25lckluZGV4ID0gb3duZXJTdGFydFJlZ0V4cC5z
ZWFyY2gobGluZSkuc3RhcnQoKQorICAgICAgICAgICAgb3duZXIgPSBsaW5lW293bmVySW5kZXg6
XQorICAgICAgICAgICAgbG9nLmRlYnVnKCJGb3VuZCB5ZWFyczogJXMgYW5kIG93bmVyOiAlcyIg
JSAoeWVhcnMsIG93bmVyKSkKKyAgICAgICAgICAgIGlmIG93bmVyIG5vdCBpbiBvd25lcl90b195
ZWFyczoKKyAgICAgICAgICAgICAgICBvd25lcl90b195ZWFyc1tvd25lcl0gPSBzZXQoKQorCisg
ICAgICAgICAgICBvd25lcl90b195ZWFyc1tvd25lcl0gPSBvd25lcl90b195ZWFyc1tvd25lcl0u
dW5pb24oeWVhcnMpCisKKyAgICAgICAgcmVzdWx0ID0gW10KKworICAgICAgICBmb3Igb3duZXIs
IHllYXJzIGluIG93bmVyX3RvX3llYXJzLml0ZW1zKCk6CisgICAgICAgICAgICBzb3J0ZWRfeWVh
cnMgPSBsaXN0KHllYXJzKQorICAgICAgICAgICAgc29ydGVkX3llYXJzLnNvcnQoKQorICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgiJXMgJXMiICUgKCcsICcuam9pbihzb3J0ZWRfeWVhcnMpLCBv
d25lcikpCisKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIGFsbF9mdW5jdGlvbnMo
c2VsZik6CisgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgIGZvciBvYmplY3QgaW4gc2VsZi5v
YmplY3RzOgorICAgICAgICAgICAgcmVzdWx0LmV4dGVuZChvYmplY3QuZnVuY3Rpb25zKQorCisg
ICAgICAgIHJlc3VsdC5zb3J0KCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgIyBQcml2
YXRlIG1ldGhvZHMuCisKKyAgICBkZWYgX3BhcnNlX2NvcHlyaWdodF9saW5lcyhzZWxmLCB0ZXh0
KToKKyAgICAgICAgbGljZW5zZUJsb2NrID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5maW5kYWxs
KHRleHQpWzBdCisgICAgICAgIGxpY2Vuc2VCbG9jayA9IGxpY2Vuc2VCbG9ja1s6bGljZW5zZUJs
b2NrLmluZGV4KCJSZWRpc3RyaWJ1dGlvbiIpXQorCisgICAgICAgIGNvcHlyaWdodExpbmVzID0g
W10KKyAgICAgICAgZm9yIGxpbmUgaW4gbGljZW5zZUJsb2NrLnNwbGl0KCJcbiIpOgorICAgICAg
ICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiLyoiLCAiIikKKyAgICAgICAgICAgIGxpbmUgPSBs
aW5lLnJlcGxhY2UoIiovIiwgIiIpCisgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIq
IiwgIiIpCisgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJDb3B5cmlnaHQiLCAiIikK
KyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoImNvcHlyaWdodCIsICIiKQorICAgICAg
ICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKEMpIiwgIiIpCisgICAgICAgICAgICBsaW5lID0g
bGluZS5yZXBsYWNlKCIoYykiLCAiIikKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkK
KworICAgICAgICAgICAgaWYgbGVuKGxpbmUpID09IDA6CisgICAgICAgICAgICAgICAgY29udGlu
dWUKKworICAgICAgICAgICAgY29weXJpZ2h0TGluZXMuYXBwZW5kKGxpbmUpCisKKyAgICAgICAg
cmV0dXJuIGNvcHlyaWdodExpbmVzCisKKyAgICBkZWYgX3BhcnNlX2Z1bmN0aW9ucyhzZWxmLCB0
ZXh0KToKKyAgICAgICAgdGV4dCA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuc3ViKCIvKiovIiwg
c2luZ2xlTGluZUNvbW1lbnRSZWdFeHAuc3ViKCIvL1xuIiwgdGV4dCkpCisKKyAgICAgICAgbWF0
Y2hlcyA9IFtmdW5jIGZvciBmdW5jIGluIGZ1bmN0aW9uSGVhZFJlZ0V4cC5maW5kaXRlcih0ZXh0
KV0KKyAgICAgICAgZnVuY3Rpb25Cb3VuZHMgPSBbXQorICAgICAgICBzdGFydCA9IDAKKyAgICAg
ICAgZW5kID0gMAorICAgICAgICBmb3IgbWF0Y2ggaW4gbWF0Y2hlczoKKyAgICAgICAgICAgIHN0
YXJ0ID0gbWF0Y2guc3RhcnQoKQorICAgICAgICAgICAgaWYgc3RhcnQgPCBlbmQ6CisgICAgICAg
ICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGVuZCA9IG1hdGNoLmVuZCgpCisgICAgICAg
ICAgICB3aGlsZSB0ZXh0W2VuZF0gIT0gJ3snOgorICAgICAgICAgICAgICAgIGVuZCA9IGVuZCAr
IDEKKyAgICAgICAgICAgIGRlcHRoID0gMQorICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAg
ICAgICAgICAgd2hpbGUgZGVwdGggPiAwOgorICAgICAgICAgICAgICAgIGlmIHRleHRbZW5kXSA9
PSAneyc6CisgICAgICAgICAgICAgICAgICAgIGRlcHRoID0gZGVwdGggKyAxCisgICAgICAgICAg
ICAgICAgZWxpZiB0ZXh0W2VuZF0gPT0gJ30nOgorICAgICAgICAgICAgICAgICAgICBkZXB0aCA9
IGRlcHRoIC0gMQorICAgICAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgICAgIGZ1
bmN0aW9uQm91bmRzLmFwcGVuZCgoc3RhcnQsIGVuZCkpCisKKyAgICAgICAgZnVuY3Rpb25TdHJp
bmdzID0gW3RleHRbc3RhcnQ6ZW5kXS5zdHJpcCgpIGZvciAoc3RhcnQsIGVuZCkgaW4gZnVuY3Rp
b25Cb3VuZHNdCisgICAgICAgIHJldHVybiBtYXAoQnVpbHRpbkZ1bmN0aW9uLmZyb21TdHJpbmcs
IGZ1bmN0aW9uU3RyaW5ncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNWVk
ZjY1NmVhMmNlYTRkMGQ0ZjFmNjkyNWQzNGE4ZTEwYWYzZDgzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVz
LnB5CkBAIC0wLDAgKzEsMjE5IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJp
Z2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29w
eXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgQnVpbHRpbnMgZ2VuZXJhdG9yIHRl
bXBsYXRlcywgd2hpY2ggY2FuIGJlIGZpbGxlZCB3aXRoIHN0cmluZy5UZW1wbGF0ZS4KKworCitj
bGFzcyBCdWlsdGluc0dlbmVyYXRvclRlbXBsYXRlczoKKworICAgIExpY2Vuc2VUZXh0ID0gKAor
ICAgICIiIlJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCithcmUgbWV0OgorMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KzIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCitUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCitBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKK1RIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKK1BVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKK1NVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KK0NP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCitBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCitUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisiIiIpCisKKyAgICBEb05vdEVkaXRXYXJuaW5nID0gKAorICAgICIiIi8vIERPIE5PVCBF
RElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2Ny
aXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkiIiIpCisKKyAgICBIZWFkZXJJ
bmNsdWRlR3VhcmRUb3AgPSAoCisgICAgIiIiI2lmbmRlZiAke2hlYWRlckd1YXJkfQorI2RlZmlu
ZSAke2hlYWRlckd1YXJkfSIiIikKKworICAgIEhlYWRlckluY2x1ZGVHdWFyZEJvdHRvbSA9ICgK
KyAgICAiIiIjZW5kaWYgLy8gJHtoZWFkZXJHdWFyZH0KKyIiIikKKworICAgIE5hbWVzcGFjZVRv
cCA9ICgKKyAgICAiIiJuYW1lc3BhY2UgJHtuYW1lc3BhY2V9IHsiIiIpCisKKyAgICBOYW1lc3Bh
Y2VCb3R0b20gPSAoCisgICAgIiIifSAvLyBuYW1lc3BhY2UgJHtuYW1lc3BhY2V9IiIiKQorCisg
ICAgQ29tYmluZWRIZWFkZXJTdGF0aWNNYWNyb3MgPSAoCisgICAgIiIiI2RlZmluZSBERUNMQVJF
X0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQp
IFxcCisgICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlND
OjpWTSYpOworCiske21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUNMQVJFX0JV
SUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKKworI2Rl
ZmluZSAke21hY3JvUHJlZml4fV9CVUlMVElOX0VYSVNUUyhvYmplY3QsIGZ1bmMpIGRlZmluZWQg
JHttYWNyb1ByZWZpeH1fQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVuYyIiIikKKworICAg
IFNlcGFyYXRlSGVhZGVyU3RhdGljTWFjcm9zID0gKAorICAgICIiIiNkZWZpbmUgREVDTEFSRV9C
VUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBc
XAorICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6
Vk0mKTsKKworJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE5hbWV9X0JVSUxUSU5fQ09E
RShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5F
UkFUT1IKKworI2RlZmluZSAke21hY3JvUHJlZml4fV9CVUlMVElOXyR7b2JqZWN0TmFtZX1fRVhJ
U1RTKG9iamVjdCwgZnVuYykgZGVmaW5lZCAke21hY3JvUHJlZml4fV9CVUlMVElOXyAjIyBvYmpl
Y3QgIyMgXyAjIyBmdW5jIiIiKQorCisgICAgQ29tYmluZWRKU0NJbXBsZW1lbnRhdGlvblN0YXRp
Y01hY3JvcyA9ICgKKyAgICAiIiIKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNv
ZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCitKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKK3tcXAorICAgIHJl
dHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGlu
ayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IFwKK30K
KyR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVS
QVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKyIiIikKKworICAgIFNlcGFy
YXRlSlNDSW1wbGVtZW50YXRpb25TdGF0aWNNYWNyb3MgPSAoCisgICAgIiIiCisjZGVmaW5lIERF
RklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENv
dW50KSBcXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlND
OjpWTSYgdm0pIFxcCit7XFwKKyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNv
ZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5j
b2RlTmFtZSMjU291cmNlKCkpOyBcCit9Ciske21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0
TWFjcm99X0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVG
SU5FX0JVSUxUSU5fR0VORVJBVE9SCisiIiIpCisKKyAgICBDb21iaW5lZFdlYkNvcmVJbXBsZW1l
bnRhdGlvblN0YXRpY01hY3JvcyA9ICgKKyAgICAgICAgIiIiCisjZGVmaW5lIERFRklORV9CVUlM
VElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAor
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0p
IFxcCit7XFwKKyAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFxcCisgICAgcmV0dXJuIGNsaWVudERhdGEt
PmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNF
eGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29i
amVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCit9Ciske21hY3Jv
UHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisj
dW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCisiIiIpCisKKyAgICBTZXBhcmF0ZVdlYkNv
cmVJbXBsZW1lbnRhdGlvblN0YXRpY01hY3JvcyA9ICgKKyAgICAgICAgIiIiCisjZGVmaW5lIERF
RklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENv
dW50KSBcXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlND
OjpWTSYgdm0pIFxcCit7XFwKKyAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFxcCisgICAgcmV0dXJuIGNs
aWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNv
ZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlv
bnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCit9
Ciske21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShERUZJ
TkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCisi
IiIpCisKKyAgICBTZXBhcmF0ZVdyYXBwZXJIZWFkZXJCb2lsZXJwbGF0ZSA9ICgKKyAgICAiIiJj
bGFzcyAke29iamVjdE5hbWV9QnVpbHRpbnNXcmFwcGVyIDogcHJpdmF0ZSBKU0M6OldlYWtIYW5k
bGVPd25lciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgJHtvYmplY3ROYW1lfUJ1aWx0aW5zV3Jh
cHBlcihKU0M6OlZNKiB2bSkKKyAgICAgICAgOiBtX3ZtKCp2bSkKKyAgICAgICAgJHttYWNyb1By
ZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElB
TElaRV9CVUlMVElOX05BTUVTKQorI2RlZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01F
TUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpICwgbV8jI25hbWUjI1NvdXJjZShKU0M6
Om1ha2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc18jI25hbWUsIGxlbmd0
aCkpKQorICAgICAgICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxU
SU5fQ09ERShJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgSU5JVElB
TElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCisgICAgeworICAgIH0KKworI2RlZmluZSBFWFBP
U0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXFwKKyAg
ICBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFxc
CisgICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVy
biBtXyMjbmFtZSMjU291cmNlOyB9CisgICAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVj
dE1hY3JvfV9CVUlMVElOX0NPREUoRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYg
RVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMKKworICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hf
JHtvYmplY3RNYWNyb31fQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9JREVO
VElGSUVSX0FDQ0VTU09SKQorCisgICAgdm9pZCBleHBvcnROYW1lcygpOworCitwcml2YXRlOgor
ICAgIEpTQzo6Vk0mIG1fdm07CisKKyAgICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0
TWFjcm99X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fTkFNRVMpCisKKyNk
ZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwg
bGVuZ3RoKSBcXAorICAgIEpTQzo6U291cmNlQ29kZSBtXyMjbmFtZSMjU291cmNlO1xcCisgICAg
SlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVj
dXRhYmxlOworICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJ
Tl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JV
SUxUSU5fU09VUkNFX01FTUJFUlMKKworfTsKKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVD
VVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXFwKK2lubGluZSBKU0M6OlVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiAke29iamVjdE5hbWV9QnVpbHRpbnNXcmFwcGVyOjpuYW1l
IyNFeGVjdXRhYmxlKCkgXFwKK3tcXAorICAgIGlmICghbV8jI25hbWUjI0V4ZWN1dGFibGUpXFwK
KyAgICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUgPSBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZT4oSlNDOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShtX3ZtLCBtXyMj
bmFtZSMjU291cmNlLCBmdW5jdGlvbk5hbWUjI1B1YmxpY05hbWUoKSwgc18jI25hbWUjI0NvbnN0
cnVjdEFiaWxpdHkpLCB0aGlzLCAmbV8jI25hbWUjI0V4ZWN1dGFibGUpO1xcCisgICAgcmV0dXJu
IG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1xcCit9Ciske21hY3JvUHJlZml4fV9GT1JFQUNI
XyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykK
KyN1bmRlZiBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUworCitpbmxpbmUgdm9pZCAke29iamVj
dE5hbWV9QnVpbHRpbnNXcmFwcGVyOjpleHBvcnROYW1lcygpCit7CisjZGVmaW5lIEVYUE9SVF9G
VU5DVElPTl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+YXBwZW5kRXh0ZXJuYWxOYW1l
KG5hbWUjI1B1YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUoKSk7CisgICAgJHttYWNyb1By
ZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0ZVTkNUSU9OX05BTUUoRVhQT1JU
X0ZVTkNUSU9OX05BTUUpCisjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OX05BTUUKK30KKworY2xhc3Mg
JHtvYmplY3ROYW1lfUJ1aWx0aW5GdW5jdGlvbnMgeworcHVibGljOgorICAgIGV4cGxpY2l0ICR7
b2JqZWN0TmFtZX1CdWlsdGluRnVuY3Rpb25zKEpTQzo6Vk0mIHZtKSA6IG1fdm0odm0pIHsgfQor
CisgICAgdm9pZCBpbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKKyAgICB2b2lkIHZpc2l0KEpT
Qzo6U2xvdFZpc2l0b3ImKTsKKworcHVibGljOgorICAgIEpTQzo6Vk0mIG1fdm07CisKKyNkZWZp
bmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKGZ1bmN0aW9uTmFtZSkgXFwKKyAgICBK
U0M6OldyaXRlQmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0
aW9uOworICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9G
VU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNM
QVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKK307CisKK2lubGluZSB2b2lkICR7b2JqZWN0TmFt
ZX1CdWlsdGluRnVuY3Rpb25zOjppbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKK3sKKyNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9OKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGxl
bmd0aClcXAorICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihtX3ZtLCBjb2Rl
TmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7CisgICAgJHttYWNyb1ByZWZp
eH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoRVhQT1JUX0ZVTkNUSU9OKQor
I3VuZGVmIEVYUE9SVF9GVU5DVElPTgorfQorCitpbmxpbmUgdm9pZCAke29iamVjdE5hbWV9QnVp
bHRpbkZ1bmN0aW9uczo6dmlzaXQoSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyNkZWZp
bmUgVklTSVRfRlVOQ1RJT04obmFtZSkgdmlzaXRvci5hcHBlbmQoJm1fIyNuYW1lIyNGdW5jdGlv
bik7CisgICAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0ZV
TkNUSU9OX05BTUUoVklTSVRfRlVOQ1RJT04pCisjdW5kZWYgVklTSVRfRlVOQ1RJT04KK30KKyIi
IikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2dl
bmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2hlYWRlci5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41MDg5ZmRmNTlhMmJhZTk2MTVlOThhOGE2ZTJjYzI5ODA0OTNlNjEwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvZ2Vu
ZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaGVhZGVyLnB5CkBAIC0wLDAgKzEsMTYyIEBACisjIS91
c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkg
b2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
IyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCByZQoraW1wb3J0
IHN0cmluZworZnJvbSBzdHJpbmcgaW1wb3J0IFRlbXBsYXRlCisKK2Zyb20gYnVpbHRpbnNfZ2Vu
ZXJhdG9yIGltcG9ydCBCdWlsdGluc0dlbmVyYXRvcgorZnJvbSBidWlsdGluc190ZW1wbGF0ZXMg
aW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVzIGFzIFRlbXBsYXRlcworCitsb2cgPSBs
b2dnaW5nLmdldExvZ2dlcignZ2xvYmFsJykKKworCitjbGFzcyBCdWlsdGluc0NvbWJpbmVkSGVh
ZGVyR2VuZXJhdG9yKEJ1aWx0aW5zR2VuZXJhdG9yKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
bW9kZWwpOgorICAgICAgICBCdWlsdGluc0dlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBtb2RlbCkK
KworICAgIGRlZiBvdXRwdXRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiAiJXNCdWls
dGlucy5oIiAlIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNlJykKKwor
ICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAg
ICAgICAnbmFtZXNwYWNlJzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCduYW1lc3Bh
Y2UnKSwKKyAgICAgICAgICAgICdoZWFkZXJHdWFyZCc6IHNlbGYub3V0cHV0X2ZpbGVuYW1lKCku
cmVwbGFjZSgnLicsICdfJyksCisgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1vZGVs
KCkuZnJhbWV3b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZpeCcpLAorICAgICAgICB9CisKKyAgICAg
ICAgc2VjdGlvbnMgPSBbXQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9s
aWNlbnNlKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuRG9O
b3RFZGl0V2FybmluZykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5k
KFRlbXBsYXRlKFRlbXBsYXRlcy5IZWFkZXJJbmNsdWRlR3VhcmRUb3ApLnN1YnN0aXR1dGUoYXJn
cykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2ZvcndhcmRfZGVjbGFy
YXRpb25zKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFt
ZXNwYWNlVG9wKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBmb3Igb2JqZWN0IGluIHNlbGYu
bW9kZWwoKS5vYmplY3RzOgorICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJh
dGVfc2VjdGlvbl9mb3Jfb2JqZWN0KG9iamVjdCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChz
ZWxmLmdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfdGFibGVfbWFjcm8oKSkKKyAgICAgICAgc2Vj
dGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV9uYW1lX21hY3JvKCkp
CisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuQ29tYmluZWRIZWFk
ZXJTdGF0aWNNYWNyb3MpLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVu
ZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlQm90dG9tKS5zdWJzdGl0dXRlKGFyZ3MpKQor
ICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkhlYWRlckluY2x1ZGVH
dWFyZEJvdHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkKKworICAgICAgICByZXR1cm4gIlxuXG4iLmpv
aW4oc2VjdGlvbnMpCisKKyAgICBkZWYgZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlvbnMoc2Vs
Zik6CisgICAgICAgIHJldHVybiAiIiJuYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEZ1bmN0aW9uRXhl
Y3V0YWJsZTsKK2NsYXNzIFZNOworCitlbnVtIGNsYXNzIENvbnN0cnVjdEFiaWxpdHkgOiB1bnNp
Z25lZDsKK30iIiIKKworICAgIGRlZiBnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9vYmplY3Qoc2VsZiwg
b2JqZWN0KToKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoJy8qICVz
ICovJyAlIG9iamVjdC5vYmplY3RfbmFtZSkKKyAgICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2Vu
ZXJhdGVfZXh0ZXJuc19mb3Jfb2JqZWN0KG9iamVjdCkpCisgICAgICAgIGxpbmVzLmFwcGVuZCgi
IikKKyAgICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2VuZXJhdGVfbWFjcm9zX2Zvcl9vYmplY3Qo
b2JqZWN0KSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCIiKQorICAgICAgICBsaW5lcy5leHRlbmQo
c2VsZi5nZW5lcmF0ZV9kZWZpbmVzX2Zvcl9vYmplY3Qob2JqZWN0KSkKKyAgICAgICAgcmV0dXJu
ICdcbicuam9pbihsaW5lcykKKworICAgIGRlZiBnZW5lcmF0ZV9leHRlcm5zX2Zvcl9vYmplY3Qo
c2VsZiwgb2JqZWN0KToKKyAgICAgICAgbGluZXMgPSBbXQorCisgICAgICAgIGZvciBmdW5jdGlv
biBpbiBvYmplY3QuZnVuY3Rpb25zOgorICAgICAgICAgICAgZnVuY3Rpb25fYXJncyA9IHsKKyAg
ICAgICAgICAgICAgICAnY29kZU5hbWUnOiBCdWlsdGluc0dlbmVyYXRvci5tYW5nbGVkTmFtZUZv
ckZ1bmN0aW9uKGZ1bmN0aW9uKSArICdDb2RlJywKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgbGluZXMuYXBwZW5kKCIiImV4dGVybiBjb25zdCBjaGFyKiBzXyUoY29kZU5hbWUpczsKK2V4
dGVybiBjb25zdCBpbnQgc18lKGNvZGVOYW1lKXNMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpD
b25zdHJ1Y3RBYmlsaXR5IHNfJShjb2RlTmFtZSlzQ29uc3RydWN0QWJpbGl0eTsiIiIgJSBmdW5j
dGlvbl9hcmdzKQorCisgICAgICAgIHJldHVybiBsaW5lcworCisgICAgZGVmIGdlbmVyYXRlX21h
Y3Jvc19mb3Jfb2JqZWN0KHNlbGYsIG9iamVjdCk6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAg
ICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ21hY3Jv
X3ByZWZpeCcpLAorICAgICAgICAgICAgJ29iamVjdE1hY3JvJzogb2JqZWN0Lm9iamVjdF9uYW1l
LnJlcGxhY2UoJy4nLCAnJykudXBwZXIoKSwKKyAgICAgICAgfQorCisgICAgICAgIGxpbmVzID0g
W10KKyAgICAgICAgbGluZXMuYXBwZW5kKCIjZGVmaW5lICUobWFjcm9QcmVmaXgpc19GT1JFQUNI
XyUob2JqZWN0TWFjcm8pc19CVUlMVElOX0RBVEEobWFjcm8pIFxcIiAlIGFyZ3MpCisgICAgICAg
IGZvciBmdW5jdGlvbiBpbiBvYmplY3QuZnVuY3Rpb25zOgorICAgICAgICAgICAgZnVuY3Rpb25f
YXJncyA9IHsKKyAgICAgICAgICAgICAgICAnZnVuY05hbWUnOiBmdW5jdGlvbi5mdW5jdGlvbl9u
YW1lLAorICAgICAgICAgICAgICAgICdtYW5nbGVkTmFtZSc6IEJ1aWx0aW5zR2VuZXJhdG9yLm1h
bmdsZWROYW1lRm9yRnVuY3Rpb24oZnVuY3Rpb24pLAorICAgICAgICAgICAgICAgICdwYXJhbUNv
dW50JzogbGVuKGZ1bmN0aW9uLnBhcmFtZXRlcnMpLAorICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBsaW5lcy5hcHBlbmQoIiAgICBtYWNybyglKGZ1bmNOYW1lKXMsICUobWFuZ2xlZE5hbWUp
cywgJShwYXJhbUNvdW50KWQpIFxcIiAlIGZ1bmN0aW9uX2FyZ3MpCisgICAgICAgIHJldHVybiBs
aW5lcworCisgICAgZGVmIGdlbmVyYXRlX2RlZmluZXNfZm9yX29iamVjdChzZWxmLCBvYmplY3Qp
OgorICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBvYmplY3QuZnVu
Y3Rpb25zOgorICAgICAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICAgICAnbWFjcm9QcmVm
aXgnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZpeCcpLAorICAg
ICAgICAgICAgICAgICdvYmplY3RNYWNybyc6IG9iamVjdC5vYmplY3RfbmFtZS5yZXBsYWNlKCcu
JywgJycpLnVwcGVyKCksCisgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uTWFjcm8nOiBmdW5jdGlv
bi5mdW5jdGlvbl9uYW1lLnVwcGVyKCksCisgICAgICAgICAgICB9CisgICAgICAgICAgICBsaW5l
cy5hcHBlbmQoIiNkZWZpbmUgJShtYWNyb1ByZWZpeClzX0JVSUxUSU5fJShvYmplY3RNYWNybylz
XyUoZnVuY3Rpb25NYWNybylzIDEiICUgYXJncykKKworICAgICAgICByZXR1cm4gbGluZXMKKwor
ICAgIGRlZiBnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX3RhYmxlX21hY3JvKHNlbGYpOgorICAg
ICAgICBhcmdzID0geworICAgICAgICAgICAgJ21hY3JvUHJlZml4Jzogc2VsZi5tb2RlbCgpLmZy
YW1ld29yay5zZXR0aW5nKCdtYWNyb19wcmVmaXgnKSwKKyAgICAgICAgfQorCisgICAgICAgIGxp
bmVzID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCIjZGVmaW5lICUobWFjcm9QcmVmaXgpc19G
T1JFQUNIX0JVSUxUSU5fQ09ERShtYWNybykgXFwiICUgYXJncykKKyAgICAgICAgZm9yIGZ1bmN0
aW9uIGluIHNlbGYubW9kZWwoKS5hbGxfZnVuY3Rpb25zKCk6CisgICAgICAgICAgICBmdW5jdGlv
bl9hcmdzID0geworICAgICAgICAgICAgICAgICdmdW5jTmFtZSc6IGZ1bmN0aW9uLmZ1bmN0aW9u
X25hbWUsCisgICAgICAgICAgICAgICAgJ2NvZGVOYW1lJzogQnVpbHRpbnNHZW5lcmF0b3IubWFu
Z2xlZE5hbWVGb3JGdW5jdGlvbihmdW5jdGlvbikgKyAnQ29kZScsCisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiICAgIG1hY3JvKCUoY29kZU5hbWUpcywgJShmdW5j
TmFtZSlzLCBzXyUoY29kZU5hbWUpc0xlbmd0aCkgXFwiICUgZnVuY3Rpb25fYXJncykKKyAgICAg
ICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKKworICAgIGRlZiBnZW5lcmF0ZV9zZWN0aW9uX2Zv
cl9jb2RlX25hbWVfbWFjcm8oc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAn
bWFjcm9QcmVmaXgnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZp
eCcpLAorICAgICAgICB9CisKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBl
bmQoIiNkZWZpbmUgJShtYWNyb1ByZWZpeClzX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1F
KG1hY3JvKSBcXCIgJSBhcmdzKQorICAgICAgICB1bmlxdWVfbmFtZXMgPSBsaXN0KHNldChbZnVu
Y3Rpb24uZnVuY3Rpb25fbmFtZSBmb3IgZnVuY3Rpb24gaW4gc2VsZi5tb2RlbCgpLmFsbF9mdW5j
dGlvbnMoKV0pKQorICAgICAgICB1bmlxdWVfbmFtZXMuc29ydCgpCisgICAgICAgIGZvciBmdW5j
dGlvbl9uYW1lIGluIHVuaXF1ZV9uYW1lczoKKyAgICAgICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSB7
CisgICAgICAgICAgICAgICAgJ2Z1bmNOYW1lJzogZnVuY3Rpb25fbmFtZSwKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIgICAgbWFjcm8oJShmdW5jTmFtZSlzKSBc
XCIgJSBmdW5jdGlvbl9hcmdzKQorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvZ2VuZXJhdGVf
YnVpbHRpbnNfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9pbXBsZW1lbnRh
dGlvbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iMjg3OGQzNjEwYmMzZDEzOTdkYzExNTgzYjRkMzliODJmNDI2
ZDg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVp
bHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkKQEAgLTAs
MCArMSw5MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAx
NCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykg
MjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCBsb2dnaW5nCitp
bXBvcnQgcmUKK2ltcG9ydCBzdHJpbmcKK2Zyb20gc3RyaW5nIGltcG9ydCBUZW1wbGF0ZQorCitm
cm9tIGJ1aWx0aW5zX2dlbmVyYXRvciBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3IKK2Zyb20gYnVp
bHRpbnNfbW9kZWwgaW1wb3J0IEZyYW1ld29yaywgRnJhbWV3b3JrcworZnJvbSBidWlsdGluc190
ZW1wbGF0ZXMgaW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVzIGFzIFRlbXBsYXRlcwor
Citsb2cgPSBsb2dnaW5nLmdldExvZ2dlcignZ2xvYmFsJykKKworCitjbGFzcyBCdWlsdGluc0Nv
bWJpbmVkSW1wbGVtZW50YXRpb25HZW5lcmF0b3IoQnVpbHRpbnNHZW5lcmF0b3IpOgorICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBtb2RlbCk6CisgICAgICAgIEJ1aWx0aW5zR2VuZXJhdG9yLl9faW5p
dF9fKHNlbGYsIG1vZGVsKQorCisgICAgZGVmIG91dHB1dF9maWxlbmFtZShzZWxmKToKKyAgICAg
ICAgcmV0dXJuICIlc0J1aWx0aW5zLmNwcCIgJSBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRp
bmcoJ25hbWVzcGFjZScpCisKKyAgICBkZWYgZ2VuZXJhdGVfb3V0cHV0KHNlbGYpOgorICAgICAg
ICBhcmdzID0geworICAgICAgICAgICAgJ25hbWVzcGFjZSc6IHNlbGYubW9kZWwoKS5mcmFtZXdv
cmsuc2V0dGluZygnbmFtZXNwYWNlJyksCisgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxm
Lm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZpeCcpLAorICAgICAgICB9CisK
KyAgICAgICAgc2VjdGlvbnMgPSBbXQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5l
cmF0ZV9saWNlbnNlKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0
ZXMuRG9Ob3RFZGl0V2FybmluZykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMu
YXBwZW5kKHNlbGYuZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKCkpCisgICAgICAgIHNlY3Rpb25z
LmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlVG9wKS5zdWJzdGl0dXRlKGFyZ3Mp
KQorICAgICAgICBmb3IgZnVuY3Rpb24gaW4gc2VsZi5tb2RlbCgpLmFsbF9mdW5jdGlvbnMoKToK
KyAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2VtYmVkZGVkX2NvZGVf
c3RyaW5nX3NlY3Rpb25fZm9yX2Z1bmN0aW9uKGZ1bmN0aW9uKSkKKyAgICAgICAgaWYgc2VsZi5t
b2RlbCgpLmZyYW1ld29yayBpcyBGcmFtZXdvcmtzLkphdmFTY3JpcHRDb3JlOgorICAgICAgICAg
ICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5Db21iaW5lZEpTQ0ltcGxlbWVu
dGF0aW9uU3RhdGljTWFjcm9zKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBlbGlmIHNlbGYu
bW9kZWwoKS5mcmFtZXdvcmsgaXMgRnJhbWV3b3Jrcy5XZWJDb3JlOgorICAgICAgICAgICAgc2Vj
dGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5Db21iaW5lZFdlYkNvcmVJbXBsZW1lbnRh
dGlvblN0YXRpY01hY3Jvcykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBw
ZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VCb3R0b20pLnN1YnN0aXR1dGUoYXJncykp
CisKKyAgICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNlY3Rpb25zKQorCisgICAgZGVmIGdlbmVy
YXRlX2hlYWRlcl9pbmNsdWRlcyhzZWxmKToKKyAgICAgICAgaGVhZGVyX2luY2x1ZGVzID0gWwor
ICAgICAgICAgICAgKFsiSmF2YVNjcmlwdENvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFT
Y3JpcHRDb3JlIiwgImJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIiksCisgICAgICAgICAg
ICApLAorICAgICAgICAgICAgKFsiSmF2YVNjcmlwdENvcmUiLCAiV2ViQ29yZSJdLAorICAgICAg
ICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9FeGVjdXRhYmxlLmgiKSwKKyAg
ICAgICAgICAgICksCisgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZSIsICJXZWJDb3JlIl0s
CisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL0pTQ2VsbElubGlu
ZXMuaCIpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAg
ICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgInJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5o
IiksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAg
ICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIiks
CisgICAgICAgICAgICApLAorICAgICAgICAgICAgKFsiSmF2YVNjcmlwdENvcmUiLCAiV2ViQ29y
ZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9WTS5oIiks
CisgICAgICAgICAgICApLAorICAgICAgICBdCisKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihz
ZWxmLmdlbmVyYXRlX2luY2x1ZGVzX2Zyb21fZW50cmllcyhoZWFkZXJfaW5jbHVkZXMpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvZ2VuZXJhdGVf
YnVpbHRpbnNfc2VwYXJhdGVfaGVhZGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvYnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaGVhZGVyLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjViMWViN2Q2NzFjYTExYzM1OGE1MTk3ZGFkYWRlNzk1MTkwZDAwMzAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9i
dWlsdGluc19zZXBhcmF0ZV9oZWFkZXIucHkKQEAgLTAsMCArMSwxNzUgQEAKKyMhL3Vzci9iaW4v
ZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNo
aW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHJlCitpbXBvcnQgc3RyaW5n
Citmcm9tIHN0cmluZyBpbXBvcnQgVGVtcGxhdGUKKworZnJvbSBidWlsdGluc19nZW5lcmF0b3Ig
aW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9yCitmcm9tIGJ1aWx0aW5zX3RlbXBsYXRlcyBpbXBvcnQg
QnVpbHRpbnNHZW5lcmF0b3JUZW1wbGF0ZXMgYXMgVGVtcGxhdGVzCisKK2xvZyA9IGxvZ2dpbmcu
Z2V0TG9nZ2VyKCdnbG9iYWwnKQorCisKK2NsYXNzIEJ1aWx0aW5zU2VwYXJhdGVIZWFkZXJHZW5l
cmF0b3IoQnVpbHRpbnNHZW5lcmF0b3IpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCwg
b2JqZWN0KToKKyAgICAgICAgQnVpbHRpbnNHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWwp
CisgICAgICAgIHNlbGYub2JqZWN0ID0gb2JqZWN0CisKKyAgICBkZWYgb3V0cHV0X2ZpbGVuYW1l
KHNlbGYpOgorICAgICAgICByZXR1cm4gIiVzQnVpbHRpbnMuaCIgJSBCdWlsdGluc0dlbmVyYXRv
ci5tYW5nbGVkTmFtZUZvck9iamVjdChzZWxmLm9iamVjdCkKKworICAgIGRlZiBtYWNyb19wcmVm
aXgoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmco
J21hY3JvX3ByZWZpeCcpCisKKyAgICBkZWYgZ2VuZXJhdGVfb3V0cHV0KHNlbGYpOgorICAgICAg
ICBhcmdzID0geworICAgICAgICAgICAgJ25hbWVzcGFjZSc6IHNlbGYubW9kZWwoKS5mcmFtZXdv
cmsuc2V0dGluZygnbmFtZXNwYWNlJyksCisgICAgICAgICAgICAnaGVhZGVyR3VhcmQnOiBzZWxm
Lm91dHB1dF9maWxlbmFtZSgpLnJlcGxhY2UoJy4nLCAnXycpLAorICAgICAgICAgICAgJ21hY3Jv
UHJlZml4Jzogc2VsZi5tYWNyb19wcmVmaXgoKSwKKyAgICAgICAgICAgICdvYmplY3ROYW1lJzog
c2VsZi5vYmplY3Qub2JqZWN0X25hbWUudXBwZXIoKSwKKyAgICAgICAgfQorCisgICAgICAgIHNl
Y3Rpb25zID0gW10KKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfbGljZW5z
ZSgpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkRvTm90RWRp
dFdhcm5pbmcpLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1w
bGF0ZShUZW1wbGF0ZXMuSGVhZGVySW5jbHVkZUd1YXJkVG9wKS5zdWJzdGl0dXRlKGFyZ3MpKQor
ICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9oZWFkZXJfaW5jbHVkZXMoKSkK
KyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlv
bnMoKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3Bh
Y2VUb3ApLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdl
bmVyYXRlX3NlY3Rpb25fZm9yX29iamVjdChzZWxmLm9iamVjdCkpCisgICAgICAgIHNlY3Rpb25z
LmFwcGVuZChzZWxmLmdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfdGFibGVfbWFjcm8oKSkKKyAg
ICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV9uYW1l
X21hY3JvKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuU2Vw
YXJhdGVIZWFkZXJTdGF0aWNNYWNyb3MpLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rp
b25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlQm90dG9tKS5zdWJzdGl0dXRl
KGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkhlYWRl
ckluY2x1ZGVHdWFyZEJvdHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkKKworICAgICAgICByZXR1cm4g
IlxuXG4iLmpvaW4oc2VjdGlvbnMpCisKKyAgICBkZWYgZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJh
dGlvbnMoc2VsZik6CisgICAgICAgIHJldHVybiAiIiJuYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEZ1
bmN0aW9uRXhlY3V0YWJsZTsKK30iIiIKKworICAgIGRlZiBnZW5lcmF0ZV9oZWFkZXJfaW5jbHVk
ZXMoc2VsZik6CisgICAgICAgIGhlYWRlcl9pbmNsdWRlcyA9IFsKKyAgICAgICAgICAgIChbIldl
YkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgImJ1aWx0aW5zL0J1
aWx0aW5VdGlscy5oIiksCisgICAgICAgICAgICApLAorICAgICAgICBdCisKKyAgICAgICAgcmV0
dXJuICdcbicuam9pbihzZWxmLmdlbmVyYXRlX2luY2x1ZGVzX2Zyb21fZW50cmllcyhoZWFkZXJf
aW5jbHVkZXMpKQorCisgICAgZGVmIGdlbmVyYXRlX3NlY3Rpb25fZm9yX29iamVjdChzZWxmLCBv
YmplY3QpOgorICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZCgnLyogJXMg
Ki8nICUgb2JqZWN0Lm9iamVjdF9uYW1lKQorICAgICAgICBsaW5lcy5leHRlbmQoc2VsZi5nZW5l
cmF0ZV9leHRlcm5zX2Zvcl9vYmplY3Qob2JqZWN0KSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCIi
KQorICAgICAgICBsaW5lcy5leHRlbmQoc2VsZi5nZW5lcmF0ZV9tYWNyb3NfZm9yX29iamVjdChv
YmplY3QpKQorICAgICAgICBsaW5lcy5hcHBlbmQoIiIpCisgICAgICAgIGxpbmVzLmV4dGVuZChz
ZWxmLmdlbmVyYXRlX2RlZmluZXNfZm9yX29iamVjdChvYmplY3QpKQorICAgICAgICByZXR1cm4g
J1xuJy5qb2luKGxpbmVzKQorCisgICAgZGVmIGdlbmVyYXRlX2V4dGVybnNfZm9yX29iamVjdChz
ZWxmLCBvYmplY3QpOgorICAgICAgICBsaW5lcyA9IFtdCisKKyAgICAgICAgZm9yIGZ1bmN0aW9u
IGluIG9iamVjdC5mdW5jdGlvbnM6CisgICAgICAgICAgICBmdW5jdGlvbl9hcmdzID0geworICAg
ICAgICAgICAgICAgICdjb2RlTmFtZSc6IEJ1aWx0aW5zR2VuZXJhdG9yLm1hbmdsZWROYW1lRm9y
RnVuY3Rpb24oZnVuY3Rpb24pICsgJ0NvZGUnLAorICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBsaW5lcy5hcHBlbmQoIiIiZXh0ZXJuIGNvbnN0IGNoYXIqIHNfJShjb2RlTmFtZSlzOworZXh0
ZXJuIGNvbnN0IGludCBzXyUoY29kZU5hbWUpc0xlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNv
bnN0cnVjdEFiaWxpdHkgc18lKGNvZGVOYW1lKXNDb25zdHJ1Y3RBYmlsaXR5OyIiIiAlIGZ1bmN0
aW9uX2FyZ3MpCisKKyAgICAgICAgcmV0dXJuIGxpbmVzCisKKyAgICBkZWYgZ2VuZXJhdGVfbWFj
cm9zX2Zvcl9vYmplY3Qoc2VsZiwgb2JqZWN0KToKKyAgICAgICAgYXJncyA9IHsKKyAgICAgICAg
ICAgICdtYWNyb1ByZWZpeCc6IHNlbGYubWFjcm9fcHJlZml4KCksCisgICAgICAgICAgICAnb2Jq
ZWN0TWFjcm8nOiBvYmplY3Qub2JqZWN0X25hbWUucmVwbGFjZSgnLicsICdfJykudXBwZXIoKSwK
KyAgICAgICAgfQorCisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCIj
ZGVmaW5lICUobWFjcm9QcmVmaXgpc19GT1JFQUNIXyUob2JqZWN0TWFjcm8pc19CVUlMVElOX0RB
VEEobWFjcm8pIFxcIiAlIGFyZ3MpCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBvYmplY3QuZnVu
Y3Rpb25zOgorICAgICAgICAgICAgZnVuY3Rpb25fYXJncyA9IHsKKyAgICAgICAgICAgICAgICAn
ZnVuY05hbWUnOiBmdW5jdGlvbi5mdW5jdGlvbl9uYW1lLAorICAgICAgICAgICAgICAgICdtYW5n
bGVkTmFtZSc6IEJ1aWx0aW5zR2VuZXJhdG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rpb24oZnVuY3Rp
b24pLAorICAgICAgICAgICAgICAgICdwYXJhbUNvdW50JzogbGVuKGZ1bmN0aW9uLnBhcmFtZXRl
cnMpLAorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiAgICBtYWNy
byglKGZ1bmNOYW1lKXMsICUobWFuZ2xlZE5hbWUpcywgJShwYXJhbUNvdW50KWQpIFxcIiAlIGZ1
bmN0aW9uX2FyZ3MpCisgICAgICAgIHJldHVybiBsaW5lcworCisgICAgZGVmIGdlbmVyYXRlX2Rl
ZmluZXNfZm9yX29iamVjdChzZWxmLCBvYmplY3QpOgorICAgICAgICBsaW5lcyA9IFtdCisgICAg
ICAgIGZvciBmdW5jdGlvbiBpbiBvYmplY3QuZnVuY3Rpb25zOgorICAgICAgICAgICAgYXJncyA9
IHsKKyAgICAgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1hY3JvX3ByZWZpeCgpLAor
ICAgICAgICAgICAgICAgICdvYmplY3RNYWNybyc6IG9iamVjdC5vYmplY3RfbmFtZS5yZXBsYWNl
KCcuJywgJ18nKS51cHBlcigpLAorICAgICAgICAgICAgICAgICdmdW5jdGlvbk1hY3JvJzogZnVu
Y3Rpb24uZnVuY3Rpb25fbmFtZS51cHBlcigpLAorICAgICAgICAgICAgfQorICAgICAgICAgICAg
bGluZXMuYXBwZW5kKCIjZGVmaW5lICUobWFjcm9QcmVmaXgpc19CVUlMVElOXyUob2JqZWN0TWFj
cm8pc18lKGZ1bmN0aW9uTWFjcm8pcyAxIiAlIGFyZ3MpCisKKyAgICAgICAgcmV0dXJuIGxpbmVz
CisKKyAgICBkZWYgZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV90YWJsZV9tYWNybyhzZWxmKToK
KyAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICdtYWNyb1ByZWZpeCc6IHNlbGYubW9kZWwo
KS5mcmFtZXdvcmsuc2V0dGluZygnbWFjcm9fcHJlZml4JyksCisgICAgICAgICAgICAnb2JqZWN0
TWFjcm8nOiBzZWxmLm9iamVjdC5vYmplY3RfbmFtZS51cHBlcigpLAorICAgICAgICB9CisKKyAg
ICAgICAgbGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoIiNkZWZpbmUgJShtYWNyb1By
ZWZpeClzX0ZPUkVBQ0hfJShvYmplY3RNYWNybylzX0JVSUxUSU5fQ09ERShtYWNybykgXFwiICUg
YXJncykKKyAgICAgICAgZm9yIGZ1bmN0aW9uIGluIHNlbGYub2JqZWN0LmZ1bmN0aW9uczoKKyAg
ICAgICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ2Z1bmNOYW1lJzog
ZnVuY3Rpb24uZnVuY3Rpb25fbmFtZSwKKyAgICAgICAgICAgICAgICAnY29kZU5hbWUnOiBCdWls
dGluc0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvckZ1bmN0aW9uKGZ1bmN0aW9uKSArICdDb2RlJywK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIgICAgbWFjcm8oJShj
b2RlTmFtZSlzLCAlKGZ1bmNOYW1lKXMsIHNfJShjb2RlTmFtZSlzTGVuZ3RoKSBcXCIgJSBmdW5j
dGlvbl9hcmdzKQorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQorCisgICAgZGVmIGdl
bmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfbmFtZV9tYWNybyhzZWxmKToKKyAgICAgICAgYXJncyA9
IHsKKyAgICAgICAgICAgICdtYWNyb1ByZWZpeCc6IHNlbGYubWFjcm9fcHJlZml4KCksCisgICAg
ICAgICAgICAnb2JqZWN0TWFjcm8nOiBzZWxmLm9iamVjdC5vYmplY3RfbmFtZS51cHBlcigpLAor
ICAgICAgICB9CisKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoIiNk
ZWZpbmUgJShtYWNyb1ByZWZpeClzX0ZPUkVBQ0hfJShvYmplY3RNYWNybylzX0JVSUxUSU5fRlVO
Q1RJT05fTkFNRShtYWNybykgXFwiICUgYXJncykKKyAgICAgICAgdW5pcXVlX25hbWVzID0gbGlz
dChzZXQoW2Z1bmN0aW9uLmZ1bmN0aW9uX25hbWUgZm9yIGZ1bmN0aW9uIGluIHNlbGYub2JqZWN0
LmZ1bmN0aW9uc10pKQorICAgICAgICB1bmlxdWVfbmFtZXMuc29ydCgpCisgICAgICAgIGZvciBm
dW5jdGlvbl9uYW1lIGluIHVuaXF1ZV9uYW1lczoKKyAgICAgICAgICAgIGZ1bmN0aW9uX2FyZ3Mg
PSB7CisgICAgICAgICAgICAgICAgJ2Z1bmNOYW1lJzogZnVuY3Rpb25fbmFtZSwKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIgICAgbWFjcm8oJShmdW5jTmFtZSlz
KSBcXCIgJSBmdW5jdGlvbl9hcmdzKQorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvZ2VuZXJh
dGVfYnVpbHRpbnNfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV9pbXBsZW1l
bnRhdGlvbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzIyOTA0YjVjZTAyNWQ3ODZlYzkzMzUxMDVlZjliZDVj
ZWQ2NDQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
YnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkKQEAg
LTAsMCArMSw5OSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykg
MjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAo
YykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCBsb2dnaW5n
CitpbXBvcnQgcmUKK2ltcG9ydCBzdHJpbmcKK2Zyb20gc3RyaW5nIGltcG9ydCBUZW1wbGF0ZQor
Citmcm9tIGJ1aWx0aW5zX2dlbmVyYXRvciBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3IsIFdLX2xj
Zmlyc3QKK2Zyb20gYnVpbHRpbnNfbW9kZWwgaW1wb3J0IEZyYW1ld29yaywgRnJhbWV3b3Jrcwor
ZnJvbSBidWlsdGluc190ZW1wbGF0ZXMgaW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVz
IGFzIFRlbXBsYXRlcworCitsb2cgPSBsb2dnaW5nLmdldExvZ2dlcignZ2xvYmFsJykKKworCitj
bGFzcyBCdWlsdGluc1NlcGFyYXRlSW1wbGVtZW50YXRpb25HZW5lcmF0b3IoQnVpbHRpbnNHZW5l
cmF0b3IpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCwgb2JqZWN0KToKKyAgICAgICAg
QnVpbHRpbnNHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWwpCisgICAgICAgIHNlbGYub2Jq
ZWN0ID0gb2JqZWN0CisKKyAgICBkZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gIiVzQnVpbHRpbnMuY3BwIiAlIEJ1aWx0aW5zR2VuZXJhdG9yLm1hbmdsZWROYW1lRm9y
T2JqZWN0KHNlbGYub2JqZWN0KQorCisgICAgZGVmIG1hY3JvX3ByZWZpeChzZWxmKToKKyAgICAg
ICAgcmV0dXJuIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbWFjcm9fcHJlZml4JykK
KworICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAg
ICAgICAgICAnbmFtZXNwYWNlJzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCduYW1l
c3BhY2UnKSwKKyAgICAgICAgICAgICdtYWNyb1ByZWZpeCc6IHNlbGYubWFjcm9fcHJlZml4KCks
CisgICAgICAgICAgICAnb2JqZWN0TWFjcm8nOiBzZWxmLm9iamVjdC5vYmplY3RfbmFtZS51cHBl
cigpLAorICAgICAgICAgICAgJ29iamVjdE5hbWVMQyc6IFdLX2xjZmlyc3Qoc2VsZi5vYmplY3Qu
b2JqZWN0X25hbWUpLAorICAgICAgICB9CisKKyAgICAgICAgc2VjdGlvbnMgPSBbXQorICAgICAg
ICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9saWNlbnNlKCkpCisgICAgICAgIHNlY3Rp
b25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuRG9Ob3RFZGl0V2FybmluZykuc3Vic3RpdHV0
ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfaGVhZGVyX2lu
Y2x1ZGVzKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFt
ZXNwYWNlVG9wKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBmb3IgZnVuY3Rpb24gaW4gc2Vs
Zi5vYmplY3QuZnVuY3Rpb25zOgorICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2Vu
ZXJhdGVfZW1iZWRkZWRfY29kZV9zdHJpbmdfc2VjdGlvbl9mb3JfZnVuY3Rpb24oZnVuY3Rpb24p
KQorICAgICAgICBpZiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrIGlzIEZyYW1ld29ya3MuSmF2YVNj
cmlwdENvcmU6CisgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVz
LlNlcGFyYXRlSlNDSW1wbGVtZW50YXRpb25TdGF0aWNNYWNyb3MpLnN1YnN0aXR1dGUoYXJncykp
CisgICAgICAgIGVsaWYgc2VsZi5tb2RlbCgpLmZyYW1ld29yayBpcyBGcmFtZXdvcmtzLldlYkNv
cmU6CisgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLlNlcGFy
YXRlV2ViQ29yZUltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9zKS5zdWJzdGl0dXRlKGFyZ3MpKQor
ICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZUJvdHRv
bSkuc3Vic3RpdHV0ZShhcmdzKSkKKworICAgICAgICByZXR1cm4gIlxuXG4iLmpvaW4oc2VjdGlv
bnMpCisKKyAgICBkZWYgZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKHNlbGYpOgorICAgICAgICBo
ZWFkZXJfaW5jbHVkZXMgPSBbCisgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZSJdLAorICAg
ICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAiYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFi
bGVzLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZSIs
ICJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1l
L0V4ZWN1dGFibGUuaCIpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIChbIkphdmFTY3Jp
cHRDb3JlIiwgIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwg
InJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oIiksCisgICAgICAgICAgICApLAorICAgICAgICAgICAg
KFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGlt
ZS9TdHJ1Y3R1cmVJbmxpbmVzLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJX
ZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL0pT
Q0pTVmFsdWVJbmxpbmVzLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJKYXZh
U2NyaXB0Q29yZSIsICJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29y
ZSIsICJydW50aW1lL1ZNLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJXZWJD
b3JlIl0sCisgICAgICAgICAgICAgICAgKCJXZWJDb3JlIiwgImJpbmRpbmdzL2pzL1dlYkNvcmVK
U0NsaWVudERhdGEuaCIpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgXQorCisgICAgICAgIHJl
dHVybiAnXG4nLmpvaW4oc2VsZi5nZW5lcmF0ZV9pbmNsdWRlc19mcm9tX2VudHJpZXMoaGVhZGVy
X2luY2x1ZGVzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1
aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX3dyYXBwZXIucHkgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV93
cmFwcGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhYTg4Y2Y3NjIwY2RhMTM3MTg2Yjk5MTY0MzdiYzZkMGI0
ODFkOWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9i
dWlsdGlucy9nZW5lcmF0ZV9idWlsdGluc19zZXBhcmF0ZV93cmFwcGVyLnB5CkBAIC0wLDAgKzEs
OTQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTQg
VW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
IyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitpbXBvcnQgbG9nZ2luZworaW1wb3J0
IHJlCitpbXBvcnQgc3RyaW5nCitmcm9tIHN0cmluZyBpbXBvcnQgVGVtcGxhdGUKKworZnJvbSBi
dWlsdGluc19nZW5lcmF0b3IgaW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9yCitmcm9tIGJ1aWx0aW5z
X3RlbXBsYXRlcyBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3JUZW1wbGF0ZXMgYXMgVGVtcGxhdGVz
CisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwnKQorCisKK2NsYXNzIEJ1aWx0aW5z
U2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9yKEJ1aWx0aW5zR2VuZXJhdG9yKToKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgbW9kZWwsIG9iamVjdCk6CisgICAgICAgIEJ1aWx0aW5zR2VuZXJhdG9yLl9f
aW5pdF9fKHNlbGYsIG1vZGVsKQorICAgICAgICBzZWxmLm9iamVjdCA9IG9iamVjdAorCisgICAg
ZGVmIG91dHB1dF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuICIlc0J1aWx0aW5zV3Jh
cHBlci5oIiAlIEJ1aWx0aW5zR2VuZXJhdG9yLm1hbmdsZWROYW1lRm9yT2JqZWN0KHNlbGYub2Jq
ZWN0KQorCisgICAgZGVmIG1hY3JvX3ByZWZpeChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
bW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbWFjcm9fcHJlZml4JykKKworICAgIGRlZiBnZW5l
cmF0ZV9vdXRwdXQoc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbmFtZXNw
YWNlJzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCduYW1lc3BhY2UnKSwKKyAgICAg
ICAgICAgICdoZWFkZXJHdWFyZCc6IHNlbGYub3V0cHV0X2ZpbGVuYW1lKCkucmVwbGFjZSgnLics
ICdfJyksCisgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1hY3JvX3ByZWZpeCgpLAor
ICAgICAgICAgICAgJ29iamVjdE5hbWUnOiBzZWxmLm9iamVjdC5vYmplY3RfbmFtZSwKKyAgICAg
ICAgICAgICdvYmplY3RNYWNybyc6IHNlbGYub2JqZWN0Lm9iamVjdF9uYW1lLnVwcGVyKCksCisg
ICAgICAgIH0KKworICAgICAgICBzZWN0aW9ucyA9IFtdCisgICAgICAgIHNlY3Rpb25zLmFwcGVu
ZChzZWxmLmdlbmVyYXRlX2xpY2Vuc2UoKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBs
YXRlKFRlbXBsYXRlcy5Eb05vdEVkaXRXYXJuaW5nKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAg
ICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkhlYWRlckluY2x1ZGVHdWFyZFRv
cCkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJh
dGVfaGVhZGVyX2luY2x1ZGVzKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShU
ZW1wbGF0ZXMuTmFtZXNwYWNlVG9wKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9u
cy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLlNlcGFyYXRlV3JhcHBlckhlYWRlckJvaWxlcnBs
YXRlKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUo
VGVtcGxhdGVzLk5hbWVzcGFjZUJvdHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2Vj
dGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5IZWFkZXJJbmNsdWRlR3VhcmRCb3R0b20p
LnN1YnN0aXR1dGUoYXJncykpCisKKyAgICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNlY3Rpb25z
KQorCisgICAgZGVmIGdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcyhzZWxmKToKKyAgICAgICAgaGVh
ZGVyX2luY2x1ZGVzID0gWworICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAg
ICAgICgiV2ViQ29yZSIsICIlc0J1aWx0aW5zLmgiICUgc2VsZi5vYmplY3Qub2JqZWN0X25hbWUp
LAorICAgICAgICAgICAgKSwKKworICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAg
ICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAiYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuaCIpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAor
ICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAiYnVpbHRpbnMvQnVpbHRpblV0aWxz
LmgiKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAg
ICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgInJ1bnRpbWUvSWRlbnRpZmllci5oIiksCisg
ICAgICAgICAgICApLAorCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAg
ICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL0pTRnVuY3Rpb24uaCIpLAorICAgICAgICAg
ICAgKSwKKyAgICAgICAgXQorCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4oc2VsZi5nZW5lcmF0
ZV9pbmNsdWRlc19mcm9tX2VudHJpZXMoaGVhZGVyX2luY2x1ZGVzKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDcwNzA5YjQ4MDgzODhlNjc4ZjNkYjIzODJmNDZhM2Q2MzMzOTA2ZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0
aW5zLnB5CkBAIC0wLDAgKzEsMTY0IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29w
eXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
Q29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
IyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgVGhp
cyBzY3JpcHQgZ2VuZXJhdGVzIEMrKyBiaW5kaW5ncyBmb3IgSmF2YVNjcmlwdCBidWlsdGlucy4K
KyMgR2VuZXJhdG9ycyBmb3IgaW5kaXZpZHVhbCBmaWxlcyBhcmUgbG9jYXRlZCBpbiB0aGUgYnVp
bHRpbnMvIGRpcmVjdG9yeS4KKworaW1wb3J0IGZubWF0Y2gKK2ltcG9ydCBsb2dnaW5nCitpbXBv
cnQgb3B0cGFyc2UKK2ltcG9ydCBvcworCitsb2dnaW5nLmJhc2ljQ29uZmlnKGZvcm1hdD0nJShs
ZXZlbG5hbWUpczogJShtZXNzYWdlKXMnLCBsZXZlbD1sb2dnaW5nLkVSUk9SKQorbG9nID0gbG9n
Z2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcpCisKK2Zyb20gbGF6eXdyaXRlciBpbXBvcnQgTGF6eUZp
bGVXcml0ZXIKKworaW1wb3J0IGJ1aWx0aW5zCitmcm9tIGJ1aWx0aW5zIGltcG9ydCAqCisKKwor
ZGVmIGdlbmVyYXRlX2JpbmRpbmdzX2Zvcl9idWlsdGluc19maWxlcyhidWlsdGluc19maWxlcz1b
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X3BhdGg9
Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uY2F0ZW5h
dGVfb3V0cHV0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb21iaW5lZF9vdXRwdXQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZyYW1ld29ya19uYW1lPSIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3JjZV9vdXRwdXQ9RmFsc2UpOgorCisgICAgZ2VuZXJhdG9ycyA9IFtd
CisKKyAgICBtb2RlbCA9IEJ1aWx0aW5zQ29sbGVjdGlvbihmcmFtZXdvcmtfbmFtZT1mcmFtZXdv
cmtfbmFtZSkKKworICAgIGZvciBmaWxlcGF0aCBpbiBidWlsdGluc19maWxlczoKKyAgICAgICAg
d2l0aCBvcGVuKGZpbGVwYXRoLCAiciIpIGFzIGZpbGU6CisgICAgICAgICAgICBmaWxlX3RleHQg
PSBmaWxlLnJlYWQoKQorICAgICAgICAgICAgZmlsZV9uYW1lID0gb3MucGF0aC5iYXNlbmFtZShm
aWxlcGF0aCkKKworICAgICAgICAgICAgIyBJZiB0aGlzIGlzIGEgdGVzdCBmaWxlLCB0aGVuIHJl
d3JpdGUgdGhlIGZpbGVuYW1lIHRvIHJlbW92ZSB0aGUKKyAgICAgICAgICAgICMgdGVzdCBydW5u
aW5nIG9wdGlvbnMgZW5jb2RlZCBpbnRvIHRoZSBmaWxlbmFtZS4KKyAgICAgICAgICAgIGlmIGZp
bGVfbmFtZS5zdGFydHN3aXRoKGZyYW1ld29ya19uYW1lKToKKyAgICAgICAgICAgICAgICAoXywg
b2JqZWN0X25hbWUsIF8pID0gZmlsZV9uYW1lLnNwbGl0KCctJykKKyAgICAgICAgICAgICAgICBm
aWxlX25hbWUgPSBvYmplY3RfbmFtZSArICcuanMnCisgICAgICAgICAgICBtb2RlbC5wYXJzZV9i
dWlsdGluc19maWxlKGZpbGVfbmFtZSwgZmlsZV90ZXh0KQorCisgICAgaWYgY29tYmluZWRfb3V0
cHV0OgorICAgICAgICBsb2cuZGVidWcoIlVzaW5nIGdlbmVyYXRvciBzdHlsZTogY29tYmluZWQg
ZmlsZXMgZm9yIGFsbCBidWlsdGlucy4iKQorICAgICAgICBnZW5lcmF0b3JzLmFwcGVuZChCdWls
dGluc0NvbWJpbmVkSGVhZGVyR2VuZXJhdG9yKG1vZGVsKSkKKyAgICAgICAgZ2VuZXJhdG9ycy5h
cHBlbmQoQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yKG1vZGVsKSkKKyAg
ICBlbHNlOgorICAgICAgICBsb2cuZGVidWcoIlVzaW5nIGdlbmVyYXRvciBzdHlsZTogc2luZ2xl
IGZpbGVzIGZvciBlYWNoIGJ1aWx0aW4uIikKKyAgICAgICAgZm9yIG9iamVjdCBpbiBtb2RlbC5v
YmplY3RzOgorICAgICAgICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQoQnVpbHRpbnNTZXBhcmF0ZUhl
YWRlckdlbmVyYXRvcihtb2RlbCwgb2JqZWN0KSkKKyAgICAgICAgICAgIGdlbmVyYXRvcnMuYXBw
ZW5kKEJ1aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihtb2RlbCwgb2JqZWN0
KSkKKworICAgICAgICAgICAgaWYgbW9kZWwuZnJhbWV3b3JrIGlzIEZyYW1ld29ya3MuV2ViQ29y
ZToKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3JzLmFwcGVuZChCdWlsdGluc1NlcGFyYXRlV3Jh
cHBlckdlbmVyYXRvcihtb2RlbCwgb2JqZWN0KSkKKworICAgIGxvZy5kZWJ1ZygiIikKKyAgICBs
b2cuZGVidWcoIkdlbmVyYXRpbmcgYmluZGluZ3MgZm9yIGJ1aWx0aW5zLiIpCisKKyAgICB0ZXN0
X3Jlc3VsdF9maWxlX2NvbnRlbnRzID0gW10KKworICAgIGZvciBnZW5lcmF0b3IgaW4gZ2VuZXJh
dG9yczoKKyAgICAgICAgb3V0cHV0X2ZpbGVwYXRoID0gb3MucGF0aC5qb2luKG91dHB1dF9wYXRo
LCBnZW5lcmF0b3Iub3V0cHV0X2ZpbGVuYW1lKCkpCisgICAgICAgIGxvZy5kZWJ1ZygiR2VuZXJh
dGluZyBvdXRwdXQgZmlsZTogJXMiICUgZ2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSgpKQorICAg
ICAgICBvdXRwdXQgPSBnZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KCkKKworICAgICAgICBsb2cu
ZGVidWcoIi0tLSIpCisgICAgICAgIGxvZy5kZWJ1ZygiXG4iICsgb3V0cHV0KQorICAgICAgICBs
b2cuZGVidWcoIi0tLSIpCisgICAgICAgIGlmIGNvbmNhdGVuYXRlX291dHB1dDoKKyAgICAgICAg
ICAgIHRlc3RfcmVzdWx0X2ZpbGVfY29udGVudHMuYXBwZW5kKCcjIyMgQmVnaW4gRmlsZTogJXMn
ICUgZ2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSgpKQorICAgICAgICAgICAgdGVzdF9yZXN1bHRf
ZmlsZV9jb250ZW50cy5hcHBlbmQob3V0cHV0KQorICAgICAgICAgICAgdGVzdF9yZXN1bHRfZmls
ZV9jb250ZW50cy5hcHBlbmQoJyMjIyBFbmQgRmlsZTogJXMnICUgZ2VuZXJhdG9yLm91dHB1dF9m
aWxlbmFtZSgpKQorICAgICAgICAgICAgdGVzdF9yZXN1bHRfZmlsZV9jb250ZW50cy5hcHBlbmQo
JycpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2cuZGVidWcoIldyaXRpbmcgZmlsZTog
JXMiICUgb3V0cHV0X2ZpbGVwYXRoKQorICAgICAgICAgICAgb3V0cHV0X2ZpbGUgPSBMYXp5Rmls
ZVdyaXRlcihvdXRwdXRfZmlsZXBhdGgsIGZvcmNlX291dHB1dCkKKyAgICAgICAgICAgIG91dHB1
dF9maWxlLndyaXRlKG91dHB1dCkKKyAgICAgICAgICAgIG91dHB1dF9maWxlLmNsb3NlKCkKKwor
ICAgIGlmIGNvbmNhdGVuYXRlX291dHB1dDoKKyAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpv
aW4ob3MucGF0aC5iYXNlbmFtZShidWlsdGluc19maWxlc1swXSkgKyAnLXJlc3VsdCcpCisgICAg
ICAgIG91dHB1dF9maWxlcGF0aCA9IG9zLnBhdGguam9pbihvdXRwdXRfcGF0aCwgZmlsZW5hbWUp
CisgICAgICAgIGxvZy5kZWJ1ZygiV3JpdGluZyBmaWxlOiAlcyIgJSBvdXRwdXRfZmlsZXBhdGgp
IAorICAgICAgICBvdXRwdXRfZmlsZSA9IExhenlGaWxlV3JpdGVyKG91dHB1dF9maWxlcGF0aCwg
Zm9yY2Vfb3V0cHV0KQorICAgICAgICBvdXRwdXRfZmlsZS53cml0ZSgnXG4nLmpvaW4odGVzdF9y
ZXN1bHRfZmlsZV9jb250ZW50cykpCisgICAgICAgIG91dHB1dF9maWxlLmNsb3NlKCkKKworaWYg
X19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBhbGxvd2VkX2ZyYW1ld29ya19uYW1lcyA9IFsn
SmF2YVNjcmlwdENvcmUnLCAnV2ViQ29yZSddCisgICAgY2xpX3BhcnNlciA9IG9wdHBhcnNlLk9w
dGlvblBhcnNlcih1c2FnZT0idXNhZ2U6ICVwcm9nIFtvcHRpb25zXSBCdWlsdGluMS5qcyBbLCBC
dWlsdGluMi5qcywgLi4uXSIpCisgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9uKCItaSIsICItLWlu
cHV0LWRpcmVjdG9yeSIsIGhlbHA9IklmIHNwZWNpZmllZCwgZ2VuZXJhdGVzIGJ1aWx0aW5zIGZy
b20gYWxsIEphdmFTY3JpcHQgZmlsZXMgaW4gdGhlIHNwZWNpZmllZCBkaXJlY3RvcnkgaW4gYWRk
aXRpb24gdG8gc3BlY2lmaWMgZmlsZXMgcGFzc2VkIGFzIGFyZ3VtZW50cy4iKQorICAgIGNsaV9w
YXJzZXIuYWRkX29wdGlvbigiLW8iLCAiLS1vdXRwdXQtZGlyZWN0b3J5IiwgaGVscD0iRGlyZWN0
b3J5IHdoZXJlIGdlbmVyYXRlZCBmaWxlcyBzaG91bGQgYmUgd3JpdHRlbi4iKQorICAgIGNsaV9w
YXJzZXIuYWRkX29wdGlvbigiLS1mcmFtZXdvcmsiLCB0eXBlPSJjaG9pY2UiLCBjaG9pY2VzPWFs
bG93ZWRfZnJhbWV3b3JrX25hbWVzLCBoZWxwPSJEZXN0aW5hdGlvbiBmcmFtZXdvcmsgZm9yIGdl
bmVyYXRlZCBmaWxlcy4iKQorICAgIGNsaV9wYXJzZXIuYWRkX29wdGlvbigiLS1mb3JjZSIsIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IkZvcmNlIG91dHB1dCBvZiBnZW5lcmF0ZWQgc2NyaXB0
cywgZXZlbiBpZiBub3RoaW5nIGNoYW5nZWQuIikKKyAgICBjbGlfcGFyc2VyLmFkZF9vcHRpb24o
Ii0tY29tYmluZWQiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJQcm9kdWNlIG9uZSAuaC8u
Y3BwIGZpbGUgaW5zdGVhZCBvZiBwcm9kdWNpbmcgb25lIHBlciBidWlsdGluIG9iamVjdC4iKQor
ICAgIGNsaV9wYXJzZXIuYWRkX29wdGlvbigiLXYiLCAiLS1kZWJ1ZyIsIGFjdGlvbj0ic3RvcmVf
dHJ1ZSIsIGhlbHA9IkxvZyBleHRyYSBvdXRwdXQgZm9yIGRlYnVnZ2luZyB0aGUgZ2VuZXJhdG9y
IGl0c2VsZi4iKQorICAgIGNsaV9wYXJzZXIuYWRkX29wdGlvbigiLXQiLCAiLS10ZXN0IiwgYWN0
aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iRW5hYmxlIHRlc3QgbW9kZS4iKQorCisgICAgYXJnX29w
dGlvbnMsIGFyZ192YWx1ZXMgPSBjbGlfcGFyc2VyLnBhcnNlX2FyZ3MoKQorICAgIGlmIGxlbihh
cmdfdmFsdWVzKSBpcyAwIGFuZCBub3QgYXJnX29wdGlvbnMuaW5wdXRfZGlyZWN0b3J5OgorICAg
ICAgICByYWlzZSBQYXJzZUV4Y2VwdGlvbigiQXQgbGVhc3Qgb25lIGlucHV0IGZpbGUgb3IgZGly
ZWN0b3J5IGV4cGVjdGVkLiIpCisKKyAgICBpZiBub3QgYXJnX29wdGlvbnMub3V0cHV0X2RpcmVj
dG9yeToKKyAgICAgICAgcmFpc2UgUGFyc2VFeGNlcHRpb24oIk1pc3Npbmcgb3V0cHV0IGRpcmVj
dG9yeS4iKQorCisgICAgaWYgYXJnX29wdGlvbnMuZGVidWc6CisgICAgICAgIGxvZy5zZXRMZXZl
bChsb2dnaW5nLkRFQlVHKQorCisgICAgaW5wdXRfZmlsZXBhdGhzID0gYXJnX3ZhbHVlc1s6XQor
ICAgIGlmIGFyZ19vcHRpb25zLmlucHV0X2RpcmVjdG9yeToKKyAgICAgICAgZm9yIGZpbGVwYXRo
IGluIG9zLmxpc3RkaXIoYXJnX29wdGlvbnMuaW5wdXRfZGlyZWN0b3J5KToKKyAgICAgICAgICAg
IGlucHV0X2ZpbGVwYXRocy5hcHBlbmQob3MucGF0aC5qb2luKGFyZ19vcHRpb25zLmlucHV0X2Rp
cmVjdG9yeSwgZmlsZXBhdGgpKQorCisgICAgaW5wdXRfZmlsZXBhdGhzID0gZmlsdGVyKGxhbWJk
YSBuYW1lOiBmbm1hdGNoLmZubWF0Y2gobmFtZSwgJyouanMnKSwgaW5wdXRfZmlsZXBhdGhzKQor
CisgICAgb3B0aW9ucyA9IHsKKyAgICAgICAgJ291dHB1dF9wYXRoJzogYXJnX29wdGlvbnMub3V0
cHV0X2RpcmVjdG9yeSwKKyAgICAgICAgJ2ZyYW1ld29ya19uYW1lJzogYXJnX29wdGlvbnMuZnJh
bWV3b3JrLAorICAgICAgICAnY29tYmluZWRfb3V0cHV0JzogYXJnX29wdGlvbnMuY29tYmluZWQs
CisgICAgICAgICdmb3JjZV9vdXRwdXQnOiBhcmdfb3B0aW9ucy5mb3JjZSwKKyAgICAgICAgJ2Nv
bmNhdGVuYXRlX291dHB1dCc6IGFyZ19vcHRpb25zLnRlc3QsCisgICAgfQorCisgICAgbG9nLmRl
YnVnKCJHZW5lcmF0aW5nIGNvZGUgZm9yIGJ1aWx0aW5zLiIpCisgICAgbG9nLmRlYnVnKCJQYXJz
ZWQgb3B0aW9uczoiKQorICAgIGZvciBvcHRpb24sIHZhbHVlIGluIG9wdGlvbnMuaXRlbXMoKToK
KyAgICAgICAgbG9nLmRlYnVnKCIgICAgJXM6ICVzIiAlIChvcHRpb24sIHZhbHVlKSkKKyAgICBs
b2cuZGVidWcoIiIpCisgICAgbG9nLmRlYnVnKCJJbnB1dCBmaWxlczoiKQorICAgIGZvciBmaWxl
cGF0aCBpbiBpbnB1dF9maWxlcGF0aHM6CisgICAgICAgIGxvZy5kZWJ1ZygiICAgICVzIiAlIGZp
bGVwYXRoKQorICAgIGxvZy5kZWJ1ZygiIikKKworICAgIHRyeToKKyAgICAgICAgZ2VuZXJhdGVf
YmluZGluZ3NfZm9yX2J1aWx0aW5zX2ZpbGVzKGJ1aWx0aW5zX2ZpbGVzPWlucHV0X2ZpbGVwYXRo
cywgKipvcHRpb25zKQorICAgIGV4Y2VwdCBQYXJzZUV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBp
ZiBhcmdfb3B0aW9ucy50ZXN0OgorICAgICAgICAgICAgbG9nLmVycm9yKGUubWVzc2FnZSkKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlICAjIEZvcmNlIHRoZSBidWlsZCB0byBmYWls
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvbGF6eXdyaXRlci5w
eSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2xhenl3cml0ZXIucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjkzYTJjNjk3Y2FjYmQ3NzQxZmU5OThlZjE5MGViMWNkNmYyNDUzOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2xhenl3cml0ZXIucHkKQEAgLTAs
MCArMSw1OCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworIyBBIHdyaXRlciB0aGF0IG9ubHkgdXBkYXRlcyBmaWxlIGlmIGl0
IGFjdHVhbGx5IGNoYW5nZWQuCisKKworY2xhc3MgTGF6eUZpbGVXcml0ZXI6CisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGZpbGVwYXRoLCBmb3JjZV9vdXRwdXQpOgorICAgICAgICBzZWxmLl9maWxl
cGF0aCA9IGZpbGVwYXRoCisgICAgICAgIHNlbGYuX291dHB1dCA9ICIiCisgICAgICAgIHNlbGYu
Zm9yY2Vfb3V0cHV0ID0gZm9yY2Vfb3V0cHV0CisKKyAgICBkZWYgd3JpdGUoc2VsZiwgdGV4dCk6
CisgICAgICAgIHNlbGYuX291dHB1dCArPSB0ZXh0CisKKyAgICBkZWYgY2xvc2Uoc2VsZik6Cisg
ICAgICAgIHRleHRfY2hhbmdlZCA9IFRydWUKKyAgICAgICAgc2VsZi5fb3V0cHV0ID0gc2VsZi5f
b3V0cHV0LnJzdHJpcCgpICsgIlxuIgorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIHNl
bGYuZm9yY2Vfb3V0cHV0OgorICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgICAgIHJl
YWRfZmlsZSA9IG9wZW4oc2VsZi5fZmlsZXBhdGgsICJyIikKKyAgICAgICAgICAgIG9sZF90ZXh0
ID0gcmVhZF9maWxlLnJlYWQoKQorICAgICAgICAgICAgcmVhZF9maWxlLmNsb3NlKCkKKyAgICAg
ICAgICAgIHRleHRfY2hhbmdlZCA9IG9sZF90ZXh0ICE9IHNlbGYuX291dHB1dAorICAgICAgICBl
eGNlcHQ6CisgICAgICAgICAgICAjIElnbm9yZSwganVzdCBvdmVyd3JpdGUgYnkgZGVmYXVsdAor
ICAgICAgICAgICAgcGFzcworCisgICAgICAgIGlmIHRleHRfY2hhbmdlZCBvciBzZWxmLmZvcmNl
X291dHB1dDoKKyAgICAgICAgICAgIG91dF9maWxlID0gb3BlbihzZWxmLl9maWxlcGF0aCwgInci
KQorICAgICAgICAgICAgb3V0X2ZpbGUud3JpdGUoc2VsZi5fb3V0cHV0KQorICAgICAgICAgICAg
b3V0X2ZpbGUuY2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVk
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNj
cmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0NWQ4MWNl
YjllZDkwNjQyNTg0ZmEwYmI0NThkY2YwZGJhZGMzYTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1C
dWlsdGluLlByb21pc2UtQ29tYmluZWQuanMKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiByZWplY3RQ
cm9taXNlKHByb21pc2UsIHJlYXNvbikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIg
cmVhY3Rpb25zID0gcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0aW9uczsKKyAgICBwcm9taXNl
LkBwcm9taXNlUmVzdWx0ID0gcmVhc29uOworICAgIHByb21pc2UuQHByb21pc2VGdWxmaWxsUmVh
Y3Rpb25zID0gdW5kZWZpbmVkOworICAgIHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnMg
PSB1bmRlZmluZWQ7CisgICAgcHJvbWlzZS5AcHJvbWlzZVN0YXRlID0gQHByb21pc2VSZWplY3Rl
ZDsKKworICAgIEBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24ucHJvbWlzZVJlamVjdGVkKHByb21p
c2UsIHJlYXNvbiwgcmVhY3Rpb25zKTsKKworICAgIEB0cmlnZ2VyUHJvbWlzZVJlYWN0aW9ucyhy
ZWFjdGlvbnMsIHJlYXNvbik7Cit9CisKK2Z1bmN0aW9uIGZ1bGZpbGxQcm9taXNlKHByb21pc2Us
IHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciByZWFjdGlvbnMgPSBwcm9t
aXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9uczsKKyAgICBwcm9taXNlLkBwcm9taXNlUmVzdWx0
ID0gdmFsdWU7CisgICAgcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlvbnMgPSB1bmRlZmlu
ZWQ7CisgICAgcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucyA9IHVuZGVmaW5lZDsKKyAg
ICBwcm9taXNlLkBwcm9taXNlU3RhdGUgPSBAcHJvbWlzZUZ1bGZpbGxlZDsKKworICAgIEBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24ucHJvbWlzZUZ1bGZpbGxlZChwcm9taXNlLCB2YWx1ZSwgcmVh
Y3Rpb25zKTsKKworICAgIEB0cmlnZ2VyUHJvbWlzZVJlYWN0aW9ucyhyZWFjdGlvbnMsIHZhbHVl
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1
aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1
aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDVkODFjZWI5ZWQ5MDY0MjU4
NGZhMGJiNDU4ZGNmMGRiYWRjM2EyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9t
aXNlLVNlcGFyYXRlLmpzCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rpb24gcmVqZWN0UHJvbWlzZShwcm9t
aXNlLCByZWFzb24pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIHJlYWN0aW9ucyA9
IHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnM7CisgICAgcHJvbWlzZS5AcHJvbWlzZVJl
c3VsdCA9IHJlYXNvbjsKKyAgICBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucyA9IHVu
ZGVmaW5lZDsKKyAgICBwcm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25zID0gdW5kZWZpbmVk
OworICAgIHByb21pc2UuQHByb21pc2VTdGF0ZSA9IEBwcm9taXNlUmVqZWN0ZWQ7CisKKyAgICBA
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLnByb21pc2VSZWplY3RlZChwcm9taXNlLCByZWFzb24s
IHJlYWN0aW9ucyk7CisKKyAgICBAdHJpZ2dlclByb21pc2VSZWFjdGlvbnMocmVhY3Rpb25zLCBy
ZWFzb24pOworfQorCitmdW5jdGlvbiBmdWxmaWxsUHJvbWlzZShwcm9taXNlLCB2YWx1ZSkKK3sK
KyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgcmVhY3Rpb25zID0gcHJvbWlzZS5AcHJvbWlz
ZUZ1bGZpbGxSZWFjdGlvbnM7CisgICAgcHJvbWlzZS5AcHJvbWlzZVJlc3VsdCA9IHZhbHVlOwor
ICAgIHByb21pc2UuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zID0gdW5kZWZpbmVkOworICAgIHBy
b21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnMgPSB1bmRlZmluZWQ7CisgICAgcHJvbWlzZS5A
cHJvbWlzZVN0YXRlID0gQHByb21pc2VGdWxmaWxsZWQ7CisKKyAgICBASW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLnByb21pc2VGdWxmaWxsZWQocHJvbWlzZSwgdmFsdWUsIHJlYWN0aW9ucyk7CisK
KyAgICBAdHJpZ2dlclByb21pc2VSZWFjdGlvbnMocmVhY3Rpb25zLCB2YWx1ZSk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZh
U2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJv
dG90eXBlLUNvbWJpbmVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0NDhiOTgzMmI2NmE0YmRmMGZlMmM0YmQ4
NzAxMGY2MGFkNzJkZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1D
b21iaW5lZC5qcwpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKK2Z1bmN0aW9uIGV2ZXJ5KGNhbGxiYWNrIC8q
LCB0aGlzQXJnICovKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICh0aGlzID09PSBu
dWxsKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5
IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIik7CisgICAgCisgICAgaWYgKHRoaXMg
PT09IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3Rv
dHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkIik7CisgICAg
CisgICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTsKKyAgICB2YXIgbGVuZ3RoID0gQHRvTGVu
Z3RoKGFycmF5Lmxlbmd0aCk7CisKKyAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rp
b24iKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5
IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOworICAgIAorICAgIHZhciB0aGlzQXJnID0g
YXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7CisgICAgCisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoIShpIGlu
IGFycmF5KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIWNhbGxiYWNrLkBj
YWxsKHRoaXNBcmcsIGFycmF5W2ldLCBpLCBhcnJheSkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiBmb3JFYWNo
KGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlm
ICh0aGlzID09PSBudWxsKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJv
dG90eXBlLmZvckVhY2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwiKTsKKyAgICAK
KyAgICBpZiAodGhpcyA9PT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJv
cigiQXJyYXkucHJvdG90eXBlLmZvckVhY2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVu
ZGVmaW5lZCIpOworICAgIAorICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7CisgICAgdmFy
IGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpOworCisgICAgaWYgKHR5cGVvZiBjYWxs
YmFjayAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5
LnByb3RvdHlwZS5mb3JFYWNoIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOworICAgIAor
ICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1
bmRlZmluZWQ7CisgICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewor
ICAgICAgICBpZiAoaSBpbiBhcnJheSkKKyAgICAgICAgICAgIGNhbGxiYWNrLkBjYWxsKHRoaXNB
cmcsIGFycmF5W2ldLCBpLCBhcnJheSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRp
bi5wcm90b3R5cGUtU2VwYXJhdGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1TZXBhcmF0ZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41NDQ4Yjk4MzJiNjZhNGJkZjBmZTJjNGJkODcwMTBmNjBhZDcyZGYwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtU2VwYXJhdGUuanMKQEAgLTAs
MCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworCitmdW5jdGlvbiBldmVyeShjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykKK3sK
KyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAodGhpcyA9PT0gbnVsbCkKKyAgICAgICAgdGhy
b3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0
aGlzfCBub3QgYmUgbnVsbCIpOworICAgIAorICAgIGlmICh0aGlzID09PSB1bmRlZmluZWQpCisg
ICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWly
ZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZCIpOworICAgIAorICAgIHZhciBhcnJheSA9
IEBPYmplY3QodGhpcyk7CisgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgp
OworCisgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgdGhy
b3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJl
IGEgZnVuY3Rpb24iKTsKKyAgICAKKyAgICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50cy5sZW5ndGgg
PiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkOworICAgIAorICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKCEoaSBpbiBhcnJheSkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFjYWxsYmFjay5AY2FsbCh0aGlzQXJnLCBhcnJh
eVtpXSwgaSwgYXJyYXkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFjayAvKiwgdGhp
c0FyZyAqLykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAodGhpcyA9PT0gbnVsbCkK
KyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5mb3JFYWNoIHJl
cXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIik7CisgICAgCisgICAgaWYgKHRoaXMgPT09
IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlw
ZS5mb3JFYWNoIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWQiKTsKKyAgICAK
KyAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMpOworICAgIHZhciBsZW5ndGggPSBAdG9MZW5n
dGgoYXJyYXkubGVuZ3RoKTsKKworICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlv
biIpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZm9yRWFj
aCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKKyAgICAKKyAgICB2YXIgdGhpc0FyZyA9
IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkOworICAgIAor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKGkgaW4g
YXJyYXkpCisgICAgICAgICAgICBjYWxsYmFjay5AY2FsbCh0aGlzQXJnLCBhcnJheVtpXSwgaSwg
YXJyYXkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21i
aW5lZC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0ph
dmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
ZThjMWI0NDk2Y2M1NDRmNDA3NzM5NTA0MmNmZDI0ZThhMzk0NjYxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlw
dENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpzCkBAIC0wLDAgKzEsMTEwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rpb24gb2Yo
LyogaXRlbXMuLi4gKi8pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIGxlbmd0aCA9
IGFyZ3VtZW50cy5sZW5ndGg7CisgICAgLy8gVE9ETzogTmVlZCBpc0NvbnN0cnVjdG9yKHRoaXMp
IGluc3RlYWQgb2YgdHlwZW9mICJmdW5jdGlvbiIgY2hlY2suCisgICAgdmFyIGFycmF5ID0gdHlw
ZW9mIHRoaXMgPT09ICdmdW5jdGlvbicgPyBuZXcgdGhpcyhsZW5ndGgpIDogbmV3IEBBcnJheShs
ZW5ndGgpOworICAgIGZvciAodmFyIGsgPSAwOyBrIDwgbGVuZ3RoOyArK2spCisgICAgICAgIEBw
dXRCeVZhbERpcmVjdChhcnJheSwgaywgYXJndW1lbnRzW2tdKTsKKyAgICBhcnJheS5sZW5ndGgg
PSBsZW5ndGg7CisgICAgcmV0dXJuIGFycmF5OworfQorCitmdW5jdGlvbiBmcm9tKGl0ZW1zIC8q
LCBtYXBGbiwgdGhpc0FyZyAqLykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgdGhp
c09iaiA9IHRoaXM7CisKKyAgICB2YXIgbWFwRm4gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFy
Z3VtZW50c1sxXSA6IHVuZGVmaW5lZDsKKworICAgIHZhciB0aGlzQXJnOworCisgICAgaWYgKG1h
cEZuICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgaWYgKHR5cGVvZiBtYXBGbiAhPT0gImZ1bmN0
aW9uIikKKyAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5mcm9tIHJlcXVp
cmVzIHRoYXQgdGhlIHNlY29uZCBhcmd1bWVudCwgd2hlbiBwcm92aWRlZCwgYmUgYSBmdW5jdGlv
biIpOworCisgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMikKKyAgICAgICAgICAgIHRo
aXNBcmcgPSBhcmd1bWVudHNbMl07CisgICAgfQorCisgICAgaWYgKGl0ZW1zID09IG51bGwpCisg
ICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5mcm9tIHJlcXVpcmVzIGFuIGFycmF5
LWxpa2Ugb2JqZWN0IC0gbm90IG51bGwgb3IgdW5kZWZpbmVkIik7CisKKyAgICB2YXIgaXRlcmF0
b3JNZXRob2QgPSBpdGVtc1tAc3ltYm9sSXRlcmF0b3JdOworICAgIGlmIChpdGVyYXRvck1ldGhv
ZCAhPSBudWxsKSB7CisgICAgICAgIGlmICh0eXBlb2YgaXRlcmF0b3JNZXRob2QgIT09ICJmdW5j
dGlvbiIpCisgICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkuZnJvbSByZXF1
aXJlcyB0aGF0IHRoZSBwcm9wZXJ0eSBvZiB0aGUgZmlyc3QgYXJndW1lbnQsIGl0ZW1zW1N5bWJv
bC5pdGVyYXRvcl0sIHdoZW4gZXhpc3RzLCBiZSBhIGZ1bmN0aW9uIik7CisKKyAgICAgICAgLy8g
VE9ETzogTmVlZCBpc0NvbnN0cnVjdG9yKHRoaXNPYmopIGluc3RlYWQgb2YgdHlwZW9mICJmdW5j
dGlvbiIgY2hlY2suCisgICAgICAgIHZhciByZXN1bHQgPSAodHlwZW9mIHRoaXNPYmogPT09ICJm
dW5jdGlvbiIpID8gQE9iamVjdChuZXcgdGhpc09iaigpKSA6IFtdOworCisgICAgICAgIHZhciBr
ID0gMDsKKyAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JNZXRob2QuQGNhbGwoaXRlbXMp
OworCisgICAgICAgIC8vIFNpbmNlIGZvci1vZiBsb29wIG9uY2UgbW9yZSBsb29rcyB1cCB0aGUg
QEBpdGVyYXRvciBwcm9wZXJ0eSBvZiBhIGdpdmVuIGl0ZXJhYmxlLAorICAgICAgICAvLyBpdCBj
b3VsZCBiZSBvYnNlcnZhYmxlIGlmIHRoZSB1c2VyIGRlZmluZXMgYSBnZXR0ZXIgZm9yIEBAaXRl
cmF0b3IuCisgICAgICAgIC8vIFRvIGF2b2lkIHRoaXMgc2l0dWF0aW9uLCB3ZSBkZWZpbmUgYSB3
cmFwcGVyIG9iamVjdCB0aGF0IEBAaXRlcmF0b3IganVzdCByZXR1cm5zIGEgZ2l2ZW4gaXRlcmF0
b3IuCisgICAgICAgIHZhciB3cmFwcGVyID0geworICAgICAgICAgICAgW0BzeW1ib2xJdGVyYXRv
cl0oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yOworICAgICAgICAgICAgfQor
ICAgICAgICB9OworCisgICAgICAgIGZvciAodmFyIHZhbHVlIG9mIHdyYXBwZXIpIHsKKyAgICAg
ICAgICAgIGlmIChtYXBGbikKKyAgICAgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0
LCBrLCB0aGlzQXJnID09PSB1bmRlZmluZWQgPyBtYXBGbih2YWx1ZSwgaykgOiBtYXBGbi5AY2Fs
bCh0aGlzQXJnLCB2YWx1ZSwgaykpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHZhbHVlKTsKKyAgICAgICAgICAgIGsgKz0gMTsK
KyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdC5sZW5ndGggPSBrOworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKworICAgIHZhciBhcnJheUxpa2UgPSBAT2JqZWN0KGl0ZW1zKTsKKyAg
ICB2YXIgYXJyYXlMaWtlTGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5TGlrZS5sZW5ndGgpOworCisg
ICAgLy8gVE9ETzogTmVlZCBpc0NvbnN0cnVjdG9yKHRoaXNPYmopIGluc3RlYWQgb2YgdHlwZW9m
ICJmdW5jdGlvbiIgY2hlY2suCisgICAgdmFyIHJlc3VsdCA9ICh0eXBlb2YgdGhpc09iaiA9PT0g
ImZ1bmN0aW9uIikgPyBAT2JqZWN0KG5ldyB0aGlzT2JqKGFycmF5TGlrZUxlbmd0aCkpIDogbmV3
IEBBcnJheShhcnJheUxpa2VMZW5ndGgpOworCisgICAgdmFyIGsgPSAwOworICAgIHdoaWxlIChr
IDwgYXJyYXlMaWtlTGVuZ3RoKSB7CisgICAgICAgIHZhciB2YWx1ZSA9IGFycmF5TGlrZVtrXTsK
KyAgICAgICAgaWYgKG1hcEZuKQorICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwg
aywgdGhpc0FyZyA9PT0gdW5kZWZpbmVkID8gbWFwRm4odmFsdWUsIGspIDogbWFwRm4uQGNhbGwo
dGhpc0FyZywgdmFsdWUsIGspKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQHB1dEJ5VmFs
RGlyZWN0KHJlc3VsdCwgaywgdmFsdWUpOworICAgICAgICBrICs9IDE7CisgICAgfQorCisgICAg
cmVzdWx0Lmxlbmd0aCA9IGFycmF5TGlrZUxlbmd0aDsKKyAgICByZXR1cm4gcmVzdWx0OworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
SmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFyYXRlLmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRp
bkNvbnN0cnVjdG9yLVNlcGFyYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllOGMxYjQ0OTZjYzU0NGY0MDc3
Mzk1MDQyY2ZkMjRlOGEzOTQ2NjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3Ry
dWN0b3ItU2VwYXJhdGUuanMKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBvZigvKiBpdGVtcy4uLiAqLykKK3sK
KyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsK
KyAgICAvLyBUT0RPOiBOZWVkIGlzQ29uc3RydWN0b3IodGhpcykgaW5zdGVhZCBvZiB0eXBlb2Yg
ImZ1bmN0aW9uIiBjaGVjay4KKyAgICB2YXIgYXJyYXkgPSB0eXBlb2YgdGhpcyA9PT0gJ2Z1bmN0
aW9uJyA/IG5ldyB0aGlzKGxlbmd0aCkgOiBuZXcgQEFycmF5KGxlbmd0aCk7CisgICAgZm9yICh2
YXIgayA9IDA7IGsgPCBsZW5ndGg7ICsraykKKyAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGFycmF5
LCBrLCBhcmd1bWVudHNba10pOworICAgIGFycmF5Lmxlbmd0aCA9IGxlbmd0aDsKKyAgICByZXR1
cm4gYXJyYXk7Cit9CisKK2Z1bmN0aW9uIGZyb20oaXRlbXMgLyosIG1hcEZuLCB0aGlzQXJnICov
KQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciB0aGlzT2JqID0gdGhpczsKKworICAg
IHZhciBtYXBGbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZp
bmVkOworCisgICAgdmFyIHRoaXNBcmc7CisKKyAgICBpZiAobWFwRm4gIT09IHVuZGVmaW5lZCkg
eworICAgICAgICBpZiAodHlwZW9mIG1hcEZuICE9PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAg
dGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LmZyb20gcmVxdWlyZXMgdGhhdCB0aGUgc2Vjb25k
IGFyZ3VtZW50LCB3aGVuIHByb3ZpZGVkLCBiZSBhIGZ1bmN0aW9uIik7CisKKyAgICAgICAgaWYg
KGFyZ3VtZW50cy5sZW5ndGggPiAyKQorICAgICAgICAgICAgdGhpc0FyZyA9IGFyZ3VtZW50c1sy
XTsKKyAgICB9CisKKyAgICBpZiAoaXRlbXMgPT0gbnVsbCkKKyAgICAgICAgdGhyb3cgbmV3IEBU
eXBlRXJyb3IoIkFycmF5LmZyb20gcmVxdWlyZXMgYW4gYXJyYXktbGlrZSBvYmplY3QgLSBub3Qg
bnVsbCBvciB1bmRlZmluZWQiKTsKKworICAgIHZhciBpdGVyYXRvck1ldGhvZCA9IGl0ZW1zW0Bz
eW1ib2xJdGVyYXRvcl07CisgICAgaWYgKGl0ZXJhdG9yTWV0aG9kICE9IG51bGwpIHsKKyAgICAg
ICAgaWYgKHR5cGVvZiBpdGVyYXRvck1ldGhvZCAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAg
IHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5mcm9tIHJlcXVpcmVzIHRoYXQgdGhlIHByb3Bl
cnR5IG9mIHRoZSBmaXJzdCBhcmd1bWVudCwgaXRlbXNbU3ltYm9sLml0ZXJhdG9yXSwgd2hlbiBl
eGlzdHMsIGJlIGEgZnVuY3Rpb24iKTsKKworICAgICAgICAvLyBUT0RPOiBOZWVkIGlzQ29uc3Ry
dWN0b3IodGhpc09iaikgaW5zdGVhZCBvZiB0eXBlb2YgImZ1bmN0aW9uIiBjaGVjay4KKyAgICAg
ICAgdmFyIHJlc3VsdCA9ICh0eXBlb2YgdGhpc09iaiA9PT0gImZ1bmN0aW9uIikgPyBAT2JqZWN0
KG5ldyB0aGlzT2JqKCkpIDogW107CisKKyAgICAgICAgdmFyIGsgPSAwOworICAgICAgICB2YXIg
aXRlcmF0b3IgPSBpdGVyYXRvck1ldGhvZC5AY2FsbChpdGVtcyk7CisKKyAgICAgICAgLy8gU2lu
Y2UgZm9yLW9mIGxvb3Agb25jZSBtb3JlIGxvb2tzIHVwIHRoZSBAQGl0ZXJhdG9yIHByb3BlcnR5
IG9mIGEgZ2l2ZW4gaXRlcmFibGUsCisgICAgICAgIC8vIGl0IGNvdWxkIGJlIG9ic2VydmFibGUg
aWYgdGhlIHVzZXIgZGVmaW5lcyBhIGdldHRlciBmb3IgQEBpdGVyYXRvci4KKyAgICAgICAgLy8g
VG8gYXZvaWQgdGhpcyBzaXR1YXRpb24sIHdlIGRlZmluZSBhIHdyYXBwZXIgb2JqZWN0IHRoYXQg
QEBpdGVyYXRvciBqdXN0IHJldHVybnMgYSBnaXZlbiBpdGVyYXRvci4KKyAgICAgICAgdmFyIHdy
YXBwZXIgPSB7CisgICAgICAgICAgICBbQHN5bWJvbEl0ZXJhdG9yXSgpIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gaXRlcmF0b3I7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAg
ICAgZm9yICh2YXIgdmFsdWUgb2Ygd3JhcHBlcikgeworICAgICAgICAgICAgaWYgKG1hcEZuKQor
ICAgICAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHRoaXNBcmcgPT09IHVu
ZGVmaW5lZCA/IG1hcEZuKHZhbHVlLCBrKSA6IG1hcEZuLkBjYWxsKHRoaXNBcmcsIHZhbHVlLCBr
KSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJl
c3VsdCwgaywgdmFsdWUpOworICAgICAgICAgICAgayArPSAxOworICAgICAgICB9CisKKyAgICAg
ICAgcmVzdWx0Lmxlbmd0aCA9IGs7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisg
ICAgdmFyIGFycmF5TGlrZSA9IEBPYmplY3QoaXRlbXMpOworICAgIHZhciBhcnJheUxpa2VMZW5n
dGggPSBAdG9MZW5ndGgoYXJyYXlMaWtlLmxlbmd0aCk7CisKKyAgICAvLyBUT0RPOiBOZWVkIGlz
Q29uc3RydWN0b3IodGhpc09iaikgaW5zdGVhZCBvZiB0eXBlb2YgImZ1bmN0aW9uIiBjaGVjay4K
KyAgICB2YXIgcmVzdWx0ID0gKHR5cGVvZiB0aGlzT2JqID09PSAiZnVuY3Rpb24iKSA/IEBPYmpl
Y3QobmV3IHRoaXNPYmooYXJyYXlMaWtlTGVuZ3RoKSkgOiBuZXcgQEFycmF5KGFycmF5TGlrZUxl
bmd0aCk7CisKKyAgICB2YXIgayA9IDA7CisgICAgd2hpbGUgKGsgPCBhcnJheUxpa2VMZW5ndGgp
IHsKKyAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlMaWtlW2tdOworICAgICAgICBpZiAobWFwRm4p
CisgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB0aGlzQXJnID09PSB1bmRl
ZmluZWQgPyBtYXBGbih2YWx1ZSwgaykgOiBtYXBGbi5AY2FsbCh0aGlzQXJnLCB2YWx1ZSwgaykp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB2
YWx1ZSk7CisgICAgICAgIGsgKz0gMTsKKyAgICB9CisKKyAgICByZXN1bHQubGVuZ3RoID0gYXJy
YXlMaWtlTGVuZ3RoOworICAgIHJldHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUd1YXJkZWRCdWls
dGluLVNlcGFyYXRlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Njg4
N2U3ZWRjYWQ2YjJhODdlZjVlNzgyOWQyOTNjZWYwMWUzNzIyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFy
ZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcwpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gQG9wdGlvbmFsPVNUUkVBTVNfQVBJCisK
K2Z1bmN0aW9uIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQoc3RyZWFtKQoreworICAgInVzZSBzdHJp
Y3QiOworCisgICAgcmV0dXJuICEhc3RyZWFtLkByZWFkZXI7Cit9CisKKworZnVuY3Rpb24gY2Fu
Y2VsUmVhZGFibGVTdHJlYW0oc3RyZWFtLCByZWFzb24pCit7CisgICAgInVzZSBzdHJpY3QiOwor
CisgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUNsb3NlZCkKKyAgICAg
ICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBA
cmVhZGFibGVTdHJlYW1FcnJvcmVkKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoc3Ry
ZWFtLkBzdG9yZWRFcnJvcik7CisgICAgc3RyZWFtLkBxdWV1ZSA9IFtdOworICAgIEBmaW5pc2hD
bG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTsKKyAgICByZXR1cm4gQHByb21pc2VJbnZva2VP
ck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCAiY2FuY2VsIiwgW3JlYXNvbl0pLnRoZW4o
ZnVuY3Rpb24oKSB7IH0pOworfQorCisKK2Z1bmN0aW9uIHByb21pc2VJbnZva2VPck5vb3Aob2Jq
ZWN0LCBrZXksIGFyZ3MpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdHJ5IHsKKyAgICAg
ICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldOworICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCA9
PT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7Cisg
ICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9iamVjdCwgYXJncyk7CisgICAgICAg
IHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTsKKyAgICB9CisgICAgY2F0Y2goZXJyb3Ip
IHsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTsKKyAgICB9Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJD
b3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0
aW4tU2VwYXJhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGY1ZTdiM2I4NDFkNTEwYTI5ZjU3NmY5NDM2MDk5
ZThlMjc2MjY1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0
ZS5qcwpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworLy8gQG9wdGlvbmFsPVNUUkVBTVNfQVBJCisvLyBAaW50ZXJuYWwKKworZnVu
Y3Rpb24gaXNSZWFkYWJsZVN0cmVhbUxvY2tlZChzdHJlYW0pCit7CisgICAidXNlIHN0cmljdCI7
CisKKyAgICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjsKK30KKworCitmdW5jdGlvbiBjYW5jZWxS
ZWFkYWJsZVN0cmVhbShzdHJlYW0sIHJlYXNvbikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAg
ICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xvc2VkKQorICAgICAgICBy
ZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFk
YWJsZVN0cmVhbUVycm9yZWQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChzdHJlYW0u
QHN0b3JlZEVycm9yKTsKKyAgICBzdHJlYW0uQHF1ZXVlID0gW107CisgICAgQGZpbmlzaENsb3Np
bmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pOworICAgIHJldHVybiBAcHJvbWlzZUludm9rZU9yTm9v
cChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsICJjYW5jZWwiLCBbcmVhc29uXSkudGhlbihmdW5j
dGlvbigpIHsgfSk7Cit9CisKKworZnVuY3Rpb24gcHJvbWlzZUludm9rZU9yTm9vcChvYmplY3Qs
IGtleSwgYXJncykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB0cnkgeworICAgICAgICB2
YXIgbWV0aG9kID0gb2JqZWN0W2tleV07CisgICAgICAgIGlmICh0eXBlb2YgbWV0aG9kID09PSAi
dW5kZWZpbmVkIikKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAgICAg
ICAgdmFyIHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBhcmdzKTsKKyAgICAgICAgcmV0
dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpOworICAgIH0KKyAgICBjYXRjaChlcnJvcikgewor
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpOworICAgIH0KK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUt
VW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45YmRjOGQzYjdlOWJlMjk4MGFmZGQ2YjYxMzhjMDQ4OGZlYjI2YTBmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRp
bnMvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzCkBAIC0wLDAgKzEsNjIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBp
c1JlYWRhYmxlU3RyZWFtTG9ja2VkKHN0cmVhbSkKK3sKKyAgICJ1c2Ugc3RyaWN0IjsKKworICAg
IHJldHVybiAhIXN0cmVhbS5AcmVhZGVyOworfQorCisKK2Z1bmN0aW9uIGNhbmNlbFJlYWRhYmxl
U3RyZWFtKHN0cmVhbSwgcmVhc29uKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmIChz
dHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQpCisgICAgICAgIHJldHVybiBQ
cm9taXNlLnJlc29sdmUoKTsKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3Ry
ZWFtRXJyb3JlZCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHN0cmVhbS5Ac3RvcmVk
RXJyb3IpOworICAgIHN0cmVhbS5AcXVldWUgPSBbXTsKKyAgICBAZmluaXNoQ2xvc2luZ1JlYWRh
YmxlU3RyZWFtKHN0cmVhbSk7CisgICAgcmV0dXJuIEBwcm9taXNlSW52b2tlT3JOb29wKHN0cmVh
bS5AdW5kZXJseWluZ1NvdXJjZSwgImNhbmNlbCIsIFtyZWFzb25dKS50aGVuKGZ1bmN0aW9uKCkg
eyB9KTsKK30KKworCitmdW5jdGlvbiBwcm9taXNlSW52b2tlT3JOb29wKG9iamVjdCwga2V5LCBh
cmdzKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHRyeSB7CisgICAgICAgIHZhciBtZXRo
b2QgPSBvYmplY3Rba2V5XTsKKyAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QgPT09ICJ1bmRlZmlu
ZWQiKQorICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgICAgICB2YXIg
cmVzdWx0ID0gbWV0aG9kLkBhcHBseShvYmplY3QsIGFyZ3MpOworICAgICAgICByZXR1cm4gUHJv
bWlzZS5yZXNvbHZlKHJlc3VsdCk7CisgICAgfQorICAgIGNhdGNoKGVycm9yKSB7CisgICAgICAg
IHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS14bWxDYXNp
bmdUZXN0LVNlcGFyYXRlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMv
YnVpbHRpbnMvV2ViQ29yZS14bWxDYXNpbmdUZXN0LVNlcGFyYXRlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRl
MzkzYmM1OTgxNDI4Mjg3ZTBmMDQzMTlkYjZlNDIwMmI1NWUyNjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLXht
bENhc2luZ1Rlc3QtU2VwYXJhdGUuanMKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIEBvcHRpb25hbD1TVFJFQU1TX0FQSQor
Ly8gQGludGVybmFsCisKK2Z1bmN0aW9uIHhtbENhc2luZ1Rlc3Qoc3RyZWFtKQoreworICAgInVz
ZSBzdHJpY3QiOworCisgICAgcmV0dXJuICEhc3RyZWFtLkByZWFkZXI7Cit9CisKKworZnVuY3Rp
b24gY3NzQ2FzaW5nVGVzdChzdHJlYW0sIHJlYXNvbikKK3sKKyAgICAidXNlIHN0cmljdCI7CisK
KyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xvc2VkKQorICAgICAg
ICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEBy
ZWFkYWJsZVN0cmVhbUVycm9yZWQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChzdHJl
YW0uQHN0b3JlZEVycm9yKTsKKyAgICBzdHJlYW0uQHF1ZXVlID0gW107CisgICAgQGZpbmlzaENs
b3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pOworICAgIHJldHVybiBAcHJvbWlzZUludm9rZU9y
Tm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsICJjYW5jZWwiLCBbcmVhc29uXSkudGhlbihm
dW5jdGlvbigpIHsgfSk7Cit9CisKKworZnVuY3Rpb24gdXJsQ2FzaW5nVGVzdChvYmplY3QsIGtl
eSwgYXJncykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB0cnkgeworICAgICAgICB2YXIg
bWV0aG9kID0gb2JqZWN0W2tleV07CisgICAgICAgIGlmICh0eXBlb2YgbWV0aG9kID09PSAidW5k
ZWZpbmVkIikKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAg
dmFyIHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBhcmdzKTsKKyAgICAgICAgcmV0dXJu
IFByb21pc2UucmVzb2x2ZShyZXN1bHQpOworICAgIH0KKyAgICBjYXRjaChlcnJvcikgeworICAg
ICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpOworICAgIH0KK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0ph
dmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1Db21iaW5lZC5qcy1yZXN1bHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0
Q29yZS1CdWlsdGluLlByb21pc2UtQ29tYmluZWQuanMtcmVzdWx0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczMmE4
Yzg5ZjVhYTVkNmM5NTIzZGEwZTY0ODAxMWY1YmU5ODhkYmYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZh
U2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtQ29tYmluZWQuanMtcmVzdWx0CkBAIC0wLDAgKzEs
MTY4IEBACisjIyMgQmVnaW4gRmlsZTogSlNDQnVpbHRpbnMuaAorLyoKKyAqIENvcHlyaWdodCAo
YykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICog
CisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdl
bmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2Ny
aXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5w
eQorCisjaWZuZGVmIEpTQ0J1aWx0aW5zX2gKKyNkZWZpbmUgSlNDQnVpbHRpbnNfaAorCituYW1l
c3BhY2UgSlNDIHsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIFZNOworCitlbnVt
IGNsYXNzIENvbnN0cnVjdEFiaWxpdHkgOiB1bnNpZ25lZDsKK30KKworbmFtZXNwYWNlIEpTQyB7
CisKKy8qIEJ1aWx0aW4uUHJvbWlzZSAqLworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfYnVpbHRpblBy
b21pc2VSZWplY3RQcm9taXNlQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19idWlsdGluUHJvbWlz
ZVJlamVjdFByb21pc2VDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJp
bGl0eSBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5Owor
ZXh0ZXJuIGNvbnN0IGNoYXIqIHNfYnVpbHRpblByb21pc2VGdWxmaWxsUHJvbWlzZUNvZGU7Citl
eHRlcm4gY29uc3QgaW50IHNfYnVpbHRpblByb21pc2VGdWxmaWxsUHJvbWlzZUNvZGVMZW5ndGg7
CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb21pc2VGdWxm
aWxsUHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5OworCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JV
SUxUSU5QUk9NSVNFX0JVSUxUSU5fREFUQShtYWNybykgXAorICAgIG1hY3JvKHJlamVjdFByb21p
c2UsIGJ1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZSwgMikgXAorICAgIG1hY3JvKGZ1bGZpbGxQ
cm9taXNlLCBidWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNlLCAyKSBcCisKKyNkZWZpbmUgSlND
X0JVSUxUSU5fQlVJTFRJTlBST01JU0VfUkVKRUNUUFJPTUlTRSAxCisjZGVmaW5lIEpTQ19CVUlM
VElOX0JVSUxUSU5QUk9NSVNFX0ZVTEZJTExQUk9NSVNFIDEKKworI2RlZmluZSBKU0NfRk9SRUFD
SF9CVUlMVElOX0NPREUobWFjcm8pIFwKKyAgICBtYWNybyhidWlsdGluUHJvbWlzZVJlamVjdFBy
b21pc2VDb2RlLCByZWplY3RQcm9taXNlLCBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNv
ZGVMZW5ndGgpIFwKKyAgICBtYWNybyhidWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZSwg
ZnVsZmlsbFByb21pc2UsIHNfYnVpbHRpblByb21pc2VGdWxmaWxsUHJvbWlzZUNvZGVMZW5ndGgp
IFwKKworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFwK
KyAgICBtYWNybyhmdWxmaWxsUHJvbWlzZSkgXAorICAgIG1hY3JvKHJlamVjdFByb21pc2UpIFwK
KworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5h
bWUsIGFyZ3VtZW50Q291bnQpIFwKKyAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5h
bWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisKK0pTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShERUNM
QVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IK
KworI2RlZmluZSBKU0NfQlVJTFRJTl9FWElTVFMob2JqZWN0LCBmdW5jKSBkZWZpbmVkIEpTQ19C
VUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gSlNDQnVpbHRpbnNfaAorCisjIyMgRW5kIEZpbGU6IEpTQ0J1aWx0aW5zLmgKKwor
IyMjIEJlZ2luIEZpbGU6IEpTQ0J1aWx0aW5zLmNwcAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAx
NSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8K
KworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRl
ZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKKworI2luY2x1ZGUg
IkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRl
ICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlz
ZUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25z
dHJ1Y3Q7Citjb25zdCBpbnQgc19idWlsdGluUHJvbWlzZVJlamVjdFByb21pc2VDb2RlTGVuZ3Ro
ID0gNDEzOworY29uc3QgY2hhciogc19idWlsdGluUHJvbWlzZVJlamVjdFByb21pc2VDb2RlID0K
KyAgICAiKGZ1bmN0aW9uIChwcm9taXNlLCByZWFzb24pXG4iIFwKKyAgICAie1xuIiBcCisgICAg
IiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdmFyIHJlYWN0
aW9ucyA9IHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnM7XG4iIFwKKyAgICAiICAgIHBy
b21pc2UuQHByb21pc2VSZXN1bHQgPSByZWFzb247XG4iIFwKKyAgICAiICAgIHByb21pc2UuQHBy
b21pc2VGdWxmaWxsUmVhY3Rpb25zID0gdW5kZWZpbmVkO1xuIiBcCisgICAgIiAgICBwcm9taXNl
LkBwcm9taXNlUmVqZWN0UmVhY3Rpb25zID0gdW5kZWZpbmVkO1xuIiBcCisgICAgIiAgICBwcm9t
aXNlLkBwcm9taXNlU3RhdGUgPSBAcHJvbWlzZVJlamVjdGVkO1xuIiBcCisgICAgIlxuIiBcCisg
ICAgIiAgICBASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLnByb21pc2VSZWplY3RlZChwcm9taXNl
LCByZWFzb24sIHJlYWN0aW9ucyk7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIEB0cmlnZ2Vy
UHJvbWlzZVJlYWN0aW9ucyhyZWFjdGlvbnMsIHJlYXNvbik7XG4iIFwKKyAgICAifSlcbiIgXAor
OworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQ
cm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5v
dENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0aW5Qcm9taXNlRnVsZmlsbFByb21pc2VDb2Rl
TGVuZ3RoID0gNDEyOworY29uc3QgY2hhciogc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNl
Q29kZSA9CisgICAgIihmdW5jdGlvbiAocHJvbWlzZSwgdmFsdWUpXG4iIFwKKyAgICAie1xuIiBc
CisgICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdmFy
IHJlYWN0aW9ucyA9IHByb21pc2UuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zO1xuIiBcCisgICAg
IiAgICBwcm9taXNlLkBwcm9taXNlUmVzdWx0ID0gdmFsdWU7XG4iIFwKKyAgICAiICAgIHByb21p
c2UuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zID0gdW5kZWZpbmVkO1xuIiBcCisgICAgIiAgICBw
cm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25zID0gdW5kZWZpbmVkO1xuIiBcCisgICAgIiAg
ICBwcm9taXNlLkBwcm9taXNlU3RhdGUgPSBAcHJvbWlzZUZ1bGZpbGxlZDtcbiIgXAorICAgICJc
biIgXAorICAgICIgICAgQEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5wcm9taXNlRnVsZmlsbGVk
KHByb21pc2UsIHZhbHVlLCByZWFjdGlvbnMpO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICBA
dHJpZ2dlclByb21pc2VSZWFjdGlvbnMocmVhY3Rpb25zLCB2YWx1ZSk7XG4iIFwKKyAgICAifSlc
biIgXAorOworCisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBm
dW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBj
b2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCit7XAorICAgIHJldHVybiB2bS5idWls
dGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVp
bHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IH0KK0pTQ19GT1JFQUNIX0JV
SUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxU
SU5fR0VORVJBVE9SCisKKworfSAvLyBuYW1lc3BhY2UgSlNDCisjIyMgRW5kIEZpbGU6IEpTQ0J1
aWx0aW5zLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLVNlcGFy
YXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS5qcy1y
ZXN1bHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjI3YmEyNGM1Y2MyOWU1ZTI5YjFkYjlmNTQ2MjVmZTBmMjk1MTgy
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3Rz
L2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0
ZS5qcy1yZXN1bHQKQEAgLTAsMCArMSwxNjcgQEAKKyMjIyBCZWdpbiBGaWxlOiBCdWlsdGluUHJv
bWlzZUJ1aWx0aW5zLmgKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgWXVzdWtlIFN1enVraSA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElU
IFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0
IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lmbmRlZiBCdWlsdGluUHJv
bWlzZUJ1aWx0aW5zX2gKKyNkZWZpbmUgQnVpbHRpblByb21pc2VCdWlsdGluc19oCisKKworCitu
YW1lc3BhY2UgSlNDIHsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK30KKworbmFtZXNwYWNl
IEpTQyB7CisKKy8qIEJ1aWx0aW4uUHJvbWlzZSAqLworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfYnVp
bHRpblByb21pc2VSZWplY3RQcm9taXNlQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19idWlsdGlu
UHJvbWlzZVJlamVjdFByb21pc2VDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3Ry
dWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmls
aXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfYnVpbHRpblByb21pc2VGdWxmaWxsUHJvbWlzZUNv
ZGU7CitleHRlcm4gY29uc3QgaW50IHNfYnVpbHRpblByb21pc2VGdWxmaWxsUHJvbWlzZUNvZGVM
ZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb21p
c2VGdWxmaWxsUHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5OworCisjZGVmaW5lIEpTQ19GT1JF
QUNIX0JVSUxUSU5fUFJPTUlTRV9CVUlMVElOX0RBVEEobWFjcm8pIFwKKyAgICBtYWNybyhyZWpl
Y3RQcm9taXNlLCBidWlsdGluUHJvbWlzZVJlamVjdFByb21pc2UsIDIpIFwKKyAgICBtYWNybyhm
dWxmaWxsUHJvbWlzZSwgYnVpbHRpblByb21pc2VGdWxmaWxsUHJvbWlzZSwgMikgXAorCisjZGVm
aW5lIEpTQ19CVUlMVElOX0JVSUxUSU5fUFJPTUlTRV9SRUpFQ1RQUk9NSVNFIDEKKyNkZWZpbmUg
SlNDX0JVSUxUSU5fQlVJTFRJTl9QUk9NSVNFX0ZVTEZJTExQUk9NSVNFIDEKKworI2RlZmluZSBK
U0NfRk9SRUFDSF9CVUlMVElOLlBST01JU0VfQlVJTFRJTl9DT0RFKG1hY3JvKSBcCisgICAgbWFj
cm8oYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNlQ29kZSwgcmVqZWN0UHJvbWlzZSwgc19idWls
dGluUHJvbWlzZVJlamVjdFByb21pc2VDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8oYnVpbHRpblBy
b21pc2VGdWxmaWxsUHJvbWlzZUNvZGUsIGZ1bGZpbGxQcm9taXNlLCBzX2J1aWx0aW5Qcm9taXNl
RnVsZmlsbFByb21pc2VDb2RlTGVuZ3RoKSBcCisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJ
Ti5QUk9NSVNFX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXAorICAgIG1hY3JvKGZ1bGZp
bGxQcm9taXNlKSBcCisgICAgbWFjcm8ocmVqZWN0UHJvbWlzZSkgXAorCisjZGVmaW5lIERFQ0xB
UkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3Vu
dCkgXAorICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpT
Qzo6Vk0mKTsKKworSlNDX0ZPUkVBQ0hfQlVJTFRJTi5QUk9NSVNFX0JVSUxUSU5fQ09ERShERUNM
QVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IK
KworI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOLlBST01JU0VfRVhJU1RTKG9iamVjdCwgZnVu
YykgZGVmaW5lZCBKU0NfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVuYworCit9IC8vIG5h
bWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEJ1aWx0aW5Qcm9taXNlQnVpbHRpbnNfaAorCisjIyMg
RW5kIEZpbGU6IEJ1aWx0aW5Qcm9taXNlQnVpbHRpbnMuaAorCisjIyMgQmVnaW4gRmlsZTogQnVp
bHRpblByb21pc2VCdWlsdGlucy5jcHAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqIAorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERP
IE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBK
YXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ1aWx0aW5Qcm9taXNlQnVpbHRpbnMuaCIKKworI2luY2x1
ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNs
dWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJv
bWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RD
b25zdHJ1Y3Q7Citjb25zdCBpbnQgc19idWlsdGluUHJvbWlzZVJlamVjdFByb21pc2VDb2RlTGVu
Z3RoID0gNDEzOworY29uc3QgY2hhciogc19idWlsdGluUHJvbWlzZVJlamVjdFByb21pc2VDb2Rl
ID0KKyAgICAiKGZ1bmN0aW9uIChwcm9taXNlLCByZWFzb24pXG4iIFwKKyAgICAie1xuIiBcCisg
ICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdmFyIHJl
YWN0aW9ucyA9IHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnM7XG4iIFwKKyAgICAiICAg
IHByb21pc2UuQHByb21pc2VSZXN1bHQgPSByZWFzb247XG4iIFwKKyAgICAiICAgIHByb21pc2Uu
QHByb21pc2VGdWxmaWxsUmVhY3Rpb25zID0gdW5kZWZpbmVkO1xuIiBcCisgICAgIiAgICBwcm9t
aXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25zID0gdW5kZWZpbmVkO1xuIiBcCisgICAgIiAgICBw
cm9taXNlLkBwcm9taXNlU3RhdGUgPSBAcHJvbWlzZVJlamVjdGVkO1xuIiBcCisgICAgIlxuIiBc
CisgICAgIiAgICBASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLnByb21pc2VSZWplY3RlZChwcm9t
aXNlLCByZWFzb24sIHJlYWN0aW9ucyk7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIEB0cmln
Z2VyUHJvbWlzZVJlYWN0aW9ucyhyZWFjdGlvbnMsIHJlYXNvbik7XG4iIFwKKyAgICAifSlcbiIg
XAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvbWlzZUZ1bGZp
bGxQcm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNh
bm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0aW5Qcm9taXNlRnVsZmlsbFByb21pc2VD
b2RlTGVuZ3RoID0gNDEyOworY29uc3QgY2hhciogc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9t
aXNlQ29kZSA9CisgICAgIihmdW5jdGlvbiAocHJvbWlzZSwgdmFsdWUpXG4iIFwKKyAgICAie1xu
IiBcCisgICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAg
dmFyIHJlYWN0aW9ucyA9IHByb21pc2UuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zO1xuIiBcCisg
ICAgIiAgICBwcm9taXNlLkBwcm9taXNlUmVzdWx0ID0gdmFsdWU7XG4iIFwKKyAgICAiICAgIHBy
b21pc2UuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zID0gdW5kZWZpbmVkO1xuIiBcCisgICAgIiAg
ICBwcm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25zID0gdW5kZWZpbmVkO1xuIiBcCisgICAg
IiAgICBwcm9taXNlLkBwcm9taXNlU3RhdGUgPSBAcHJvbWlzZUZ1bGZpbGxlZDtcbiIgXAorICAg
ICJcbiIgXAorICAgICIgICAgQEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5wcm9taXNlRnVsZmls
bGVkKHByb21pc2UsIHZhbHVlLCByZWFjdGlvbnMpO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAg
ICBAdHJpZ2dlclByb21pc2VSZWFjdGlvbnMocmVhY3Rpb25zLCB2YWx1ZSk7XG4iIFwKKyAgICAi
fSlcbiIgXAorOworCisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1l
LCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
KiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCit7XAorICAgIHJldHVybiB2bS5i
dWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0u
YnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IH0KK0pTQ19GT1JFQUNI
X0JVSUxUSU4uUFJPTUlTRV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQor
I3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgorCisKK30gLy8gbmFtZXNwYWNlIEpTQwor
IyMjIEVuZCBGaWxlOiBCdWlsdGluUHJvbWlzZUJ1aWx0aW5zLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNj
cmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMtcmVzdWx0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENv
cmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMtcmVzdWx0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0ZjY3
YzVhYzAxZGRhM2RiZjliMWQ5ZTc3OTgzOWZkNzg2M2M2YjUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZh
U2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5qcy1yZXN1bHQKQEAgLTAsMCAr
MSwxOTIgQEAKKyMjIyBCZWdpbiBGaWxlOiBKU0NCdWlsdGlucy5oCisvKgorICogQ29weXJpZ2h0
IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoYykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICog
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNh
bGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0
aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWls
dGlucy5weQorCisjaWZuZGVmIEpTQ0J1aWx0aW5zX2gKKyNkZWZpbmUgSlNDQnVpbHRpbnNfaAor
CituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIFZNOwor
CitlbnVtIGNsYXNzIENvbnN0cnVjdEFiaWxpdHkgOiB1bnNpZ25lZDsKK30KKworbmFtZXNwYWNl
IEpTQyB7CisKKy8qIEJ1aWx0aW4ucHJvdG90eXBlICovCitleHRlcm4gY29uc3QgY2hhciogc19i
dWlsdGluUHJvdG90eXBlRXZlcnlDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2J1aWx0aW5Qcm90
b3R5cGVFdmVyeUNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
IHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29u
c3QgY2hhciogc19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGU7CitleHRlcm4gY29uc3QgaW50
IHNfYnVpbHRpblByb3RvdHlwZUZvckVhY2hDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6
Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZUNvbnN0cnVjdEFi
aWxpdHk7CisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTlBST1RPVFlQRV9CVUlMVElOX0RB
VEEobWFjcm8pIFwKKyAgICBtYWNybyhldmVyeSwgYnVpbHRpblByb3RvdHlwZUV2ZXJ5LCAxKSBc
CisgICAgbWFjcm8oZm9yRWFjaCwgYnVpbHRpblByb3RvdHlwZUZvckVhY2gsIDEpIFwKKworI2Rl
ZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOUFJPVE9UWVBFX0VWRVJZIDEKKyNkZWZpbmUgSlNDX0JV
SUxUSU5fQlVJTFRJTlBST1RPVFlQRV9GT1JFQUNIIDEKKworI2RlZmluZSBKU0NfRk9SRUFDSF9C
VUlMVElOX0NPREUobWFjcm8pIFwKKyAgICBtYWNybyhidWlsdGluUHJvdG90eXBlRXZlcnlDb2Rl
LCBldmVyeSwgc19idWlsdGluUHJvdG90eXBlRXZlcnlDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8o
YnVpbHRpblByb3RvdHlwZUZvckVhY2hDb2RlLCBmb3JFYWNoLCBzX2J1aWx0aW5Qcm90b3R5cGVG
b3JFYWNoQ29kZUxlbmd0aCkgXAorCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJ
T05fTkFNRShtYWNybykgXAorICAgIG1hY3JvKGV2ZXJ5KSBcCisgICAgbWFjcm8oZm9yRWFjaCkg
XAorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9u
TmFtZSwgYXJndW1lbnRDb3VudCkgXAorICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2Rl
TmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKworSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERF
Q0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRP
UgorCisjZGVmaW5lIEpTQ19CVUlMVElOX0VYSVNUUyhvYmplY3QsIGZ1bmMpIGRlZmluZWQgSlND
X0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMKKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZiAvLyBKU0NCdWlsdGluc19oCisKKyMjIyBFbmQgRmlsZTogSlNDQnVpbHRpbnMuaAor
CisjIyMgQmVnaW4gRmlsZTogSlNDQnVpbHRpbnMuY3BwCisvKgorICogQ29weXJpZ2h0IChjKSAy
MDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
YykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICog
CisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdl
bmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2Ny
aXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5w
eQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKKworI2lu
Y2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNp
bmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm90b3R5cGVFdmVy
eUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25z
dHJ1Y3Q7Citjb25zdCBpbnQgc19idWlsdGluUHJvdG90eXBlRXZlcnlDb2RlTGVuZ3RoID0gNzYy
OworY29uc3QgY2hhciogc19idWlsdGluUHJvdG90eXBlRXZlcnlDb2RlID0KKyAgICAiKGZ1bmN0
aW9uIChjYWxsYmFjayApXG4iIFwKKyAgICAie1xuIiBcCisgICAgIiAgICBcInVzZSBzdHJpY3Rc
IjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgaWYgKHRoaXMgPT09IG51bGwpXG4iIFwKKyAg
ICAiICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LnByb3RvdHlwZS5ldmVyeSBy
ZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbFwiKTtcbiIgXAorICAgICIgICAgXG4iIFwK
KyAgICAiICAgIGlmICh0aGlzID09PSB1bmRlZmluZWQpXG4iIFwKKyAgICAiICAgICAgICB0aHJv
dyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0
aGlzfCBub3QgYmUgdW5kZWZpbmVkXCIpO1xuIiBcCisgICAgIiAgICBcbiIgXAorICAgICIgICAg
dmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTtcbiIgXAorICAgICIgICAgdmFyIGxlbmd0aCA9IEB0
b0xlbmd0aChhcnJheS5sZW5ndGgpO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICBpZiAodHlw
ZW9mIGNhbGxiYWNrICE9PSBcImZ1bmN0aW9uXCIpXG4iIFwKKyAgICAiICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcihcIkFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEg
ZnVuY3Rpb25cIik7XG4iIFwKKyAgICAiICAgIFxuIiBcCisgICAgIiAgICB2YXIgdGhpc0FyZyA9
IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuIiBcCisg
ICAgIiAgICBcbiIgXAorICAgICIgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
e1xuIiBcCisgICAgIiAgICAgICAgaWYgKCEoaSBpbiBhcnJheSkpXG4iIFwKKyAgICAiICAgICAg
ICAgICAgY29udGludWU7XG4iIFwKKyAgICAiICAgICAgICBpZiAoIWNhbGxiYWNrLkBjYWxsKHRo
aXNBcmcsIGFycmF5W2ldLCBpLCBhcnJheSkpXG4iIFwKKyAgICAiICAgICAgICAgICAgcmV0dXJu
IGZhbHNlO1xuIiBcCisgICAgIiAgICB9XG4iIFwKKyAgICAiICAgIFxuIiBcCisgICAgIiAgICBy
ZXR1cm4gdHJ1ZTtcbiIgXAorICAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0
QWJpbGl0eSBzX2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBK
U0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0
aW5Qcm90b3R5cGVGb3JFYWNoQ29kZUxlbmd0aCA9IDY5NDsKK2NvbnN0IGNoYXIqIHNfYnVpbHRp
blByb3RvdHlwZUZvckVhY2hDb2RlID0KKyAgICAiKGZ1bmN0aW9uIChjYWxsYmFjayApXG4iIFwK
KyAgICAie1xuIiBcCisgICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAor
ICAgICIgICAgaWYgKHRoaXMgPT09IG51bGwpXG4iIFwKKyAgICAiICAgICAgICB0aHJvdyBuZXcg
QFR5cGVFcnJvcihcIkFycmF5LnByb3RvdHlwZS5mb3JFYWNoIHJlcXVpcmVzIHRoYXQgfHRoaXN8
IG5vdCBiZSBudWxsXCIpO1xuIiBcCisgICAgIiAgICBcbiIgXAorICAgICIgICAgaWYgKHRoaXMg
PT09IHVuZGVmaW5lZClcbiIgXAorICAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwi
QXJyYXkucHJvdG90eXBlLmZvckVhY2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVm
aW5lZFwiKTtcbiIgXAorICAgICIgICAgXG4iIFwKKyAgICAiICAgIHZhciBhcnJheSA9IEBPYmpl
Y3QodGhpcyk7XG4iIFwKKyAgICAiICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVu
Z3RoKTtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0g
XCJmdW5jdGlvblwiKVxuIiBcCisgICAgIiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJB
cnJheS5wcm90b3R5cGUuZm9yRWFjaCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb25cIik7XG4i
IFwKKyAgICAiICAgIFxuIiBcCisgICAgIiAgICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50cy5sZW5n
dGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuIiBcCisgICAgIiAgICBcbiIgXAor
ICAgICIgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuIiBcCisgICAgIiAg
ICAgICAgaWYgKGkgaW4gYXJyYXkpXG4iIFwKKyAgICAiICAgICAgICAgICAgY2FsbGJhY2suQGNh
bGwodGhpc0FyZywgYXJyYXlbaV0sIGksIGFycmF5KTtcbiIgXAorICAgICIgICAgfVxuIiBcCisg
ICAgIn0pXG4iIFwKKzsKKworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2Rl
TmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCitKU0M6OkZ1bmN0aW9uRXhlY3V0
YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAore1wKKyAgICByZXR1cm4g
dm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0s
IHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyB9CitKU0NfRk9S
RUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFRklO
RV9CVUlMVElOX0dFTkVSQVRPUgorCisKK30gLy8gbmFtZXNwYWNlIEpTQworIyMjIEVuZCBGaWxl
OiBKU0NCdWlsdGlucy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90
eXBlLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLVNl
cGFyYXRlLmpzLXJlc3VsdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTM4M2Y0ZjdhYWY5MGNjODE0ZDQxMThkZDJj
ZmNjNGY3ZDg2ZTY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90
b3R5cGUtU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0wLDAgKzEsMTkxIEBACisjIyMgQmVnaW4gRmls
ZTogQnVpbHRpblByb3RvdHlwZUJ1aWx0aW5zLmgKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAy
MDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKiAKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAq
LworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJh
dGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisK
KyNpZm5kZWYgQnVpbHRpblByb3RvdHlwZUJ1aWx0aW5zX2gKKyNkZWZpbmUgQnVpbHRpblByb3Rv
dHlwZUJ1aWx0aW5zX2gKKworCisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRnVuY3Rpb25FeGVj
dXRhYmxlOworfQorCituYW1lc3BhY2UgSlNDIHsKKworLyogQnVpbHRpbi5wcm90b3R5cGUgKi8K
K2V4dGVybiBjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGU7CitleHRlcm4g
Y29uc3QgaW50IHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZUxlbmd0aDsKK2V4dGVybiBjb25z
dCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvdG90eXBlRXZlcnlDb2RlQ29uc3Ry
dWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNo
Q29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGVMZW5n
dGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb3RvdHlw
ZUZvckVhY2hDb2RlQ29uc3RydWN0QWJpbGl0eTsKKworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlM
VElOX1BST1RPVFlQRV9CVUlMVElOX0RBVEEobWFjcm8pIFwKKyAgICBtYWNybyhldmVyeSwgYnVp
bHRpblByb3RvdHlwZUV2ZXJ5LCAxKSBcCisgICAgbWFjcm8oZm9yRWFjaCwgYnVpbHRpblByb3Rv
dHlwZUZvckVhY2gsIDEpIFwKKworI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOX1BST1RPVFlQ
RV9FVkVSWSAxCisjZGVmaW5lIEpTQ19CVUlMVElOX0JVSUxUSU5fUFJPVE9UWVBFX0ZPUkVBQ0gg
MQorCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU4uUFJPVE9UWVBFX0JVSUxUSU5fQ09ERSht
YWNybykgXAorICAgIG1hY3JvKGJ1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGUsIGV2ZXJ5LCBzX2J1
aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhidWlsdGluUHJvdG90
eXBlRm9yRWFjaENvZGUsIGZvckVhY2gsIHNfYnVpbHRpblByb3RvdHlwZUZvckVhY2hDb2RlTGVu
Z3RoKSBcCisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTi5QUk9UT1RZUEVfQlVJTFRJTl9G
VU5DVElPTl9OQU1FKG1hY3JvKSBcCisgICAgbWFjcm8oZXZlcnkpIFwKKyAgICBtYWNybyhmb3JF
YWNoKSBcCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVu
Y3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCisgICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUq
IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCitKU0NfRk9SRUFDSF9CVUlMVElOLlBS
T1RPVFlQRV9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBE
RUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTi5Q
Uk9UT1RZUEVfRVhJU1RTKG9iamVjdCwgZnVuYykgZGVmaW5lZCBKU0NfQlVJTFRJTl8gIyMgb2Jq
ZWN0ICMjIF8gIyMgZnVuYworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEJ1aWx0
aW5Qcm90b3R5cGVCdWlsdGluc19oCisKKyMjIyBFbmQgRmlsZTogQnVpbHRpblByb3RvdHlwZUJ1
aWx0aW5zLmgKKworIyMjIEJlZ2luIEZpbGU6IEJ1aWx0aW5Qcm90b3R5cGVCdWlsdGlucy5jcHAK
Ky8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4uCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUu
IEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IK
Ky8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJCdWlsdGluUHJvdG90eXBlQnVpbHRpbnMuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRh
Ymxlcy5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVz
LmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IEpTQzo6Q29u
c3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGVDb25zdHJ1Y3RBYmlsaXR5
ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19i
dWlsdGluUHJvdG90eXBlRXZlcnlDb2RlTGVuZ3RoID0gNzYyOworY29uc3QgY2hhciogc19idWls
dGluUHJvdG90eXBlRXZlcnlDb2RlID0KKyAgICAiKGZ1bmN0aW9uIChjYWxsYmFjayApXG4iIFwK
KyAgICAie1xuIiBcCisgICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAor
ICAgICIgICAgaWYgKHRoaXMgPT09IG51bGwpXG4iIFwKKyAgICAiICAgICAgICB0aHJvdyBuZXcg
QFR5cGVFcnJvcihcIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBu
b3QgYmUgbnVsbFwiKTtcbiIgXAorICAgICIgICAgXG4iIFwKKyAgICAiICAgIGlmICh0aGlzID09
PSB1bmRlZmluZWQpXG4iIFwKKyAgICAiICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcIkFy
cmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVk
XCIpO1xuIiBcCisgICAgIiAgICBcbiIgXAorICAgICIgICAgdmFyIGFycmF5ID0gQE9iamVjdCh0
aGlzKTtcbiIgXAorICAgICIgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgp
O1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSBcImZ1
bmN0aW9uXCIpXG4iIFwKKyAgICAiICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcIkFycmF5
LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb25cIik7XG4iIFwKKyAg
ICAiICAgIFxuIiBcCisgICAgIiAgICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAx
ID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuIiBcCisgICAgIiAgICBcbiIgXAorICAgICIg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuIiBcCisgICAgIiAgICAgICAg
aWYgKCEoaSBpbiBhcnJheSkpXG4iIFwKKyAgICAiICAgICAgICAgICAgY29udGludWU7XG4iIFwK
KyAgICAiICAgICAgICBpZiAoIWNhbGxiYWNrLkBjYWxsKHRoaXNBcmcsIGFycmF5W2ldLCBpLCBh
cnJheSkpXG4iIFwKKyAgICAiICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuIiBcCisgICAgIiAg
ICB9XG4iIFwKKyAgICAiICAgIFxuIiBcCisgICAgIiAgICByZXR1cm4gdHJ1ZTtcbiIgXAorICAg
ICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm90
b3R5cGVGb3JFYWNoQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6
OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29k
ZUxlbmd0aCA9IDY5NDsKK2NvbnN0IGNoYXIqIHNfYnVpbHRpblByb3RvdHlwZUZvckVhY2hDb2Rl
ID0KKyAgICAiKGZ1bmN0aW9uIChjYWxsYmFjayApXG4iIFwKKyAgICAie1xuIiBcCisgICAgIiAg
ICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgaWYgKHRoaXMgPT09
IG51bGwpXG4iIFwKKyAgICAiICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LnBy
b3RvdHlwZS5mb3JFYWNoIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsXCIpO1xuIiBc
CisgICAgIiAgICBcbiIgXAorICAgICIgICAgaWYgKHRoaXMgPT09IHVuZGVmaW5lZClcbiIgXAor
ICAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkucHJvdG90eXBlLmZvckVh
Y2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZFwiKTtcbiIgXAorICAgICIg
ICAgXG4iIFwKKyAgICAiICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7XG4iIFwKKyAgICAi
ICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTtcbiIgXAorICAgICJcbiIg
XAorICAgICIgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gXCJmdW5jdGlvblwiKVxuIiBcCisg
ICAgIiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5wcm90b3R5cGUuZm9yRWFj
aCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb25cIik7XG4iIFwKKyAgICAiICAgIFxuIiBcCisg
ICAgIiAgICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFd
IDogdW5kZWZpbmVkO1xuIiBcCisgICAgIiAgICBcbiIgXAorICAgICIgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuIiBcCisgICAgIiAgICAgICAgaWYgKGkgaW4gYXJyYXkp
XG4iIFwKKyAgICAiICAgICAgICAgICAgY2FsbGJhY2suQGNhbGwodGhpc0FyZywgYXJyYXlbaV0s
IGksIGFycmF5KTtcbiIgXAorICAgICIgICAgfVxuIiBcCisgICAgIn0pXG4iIFwKKzsKKworCisj
ZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBh
cmd1bWVudENvdW50KSBcCitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVy
YXRvcihKU0M6OlZNJiB2bSkgXAore1wKKyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVz
KCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxl
cygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyB9CitKU0NfRk9SRUFDSF9CVUlMVElOLlBST1RPVFlQ
RV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFRklORV9C
VUlMVElOX0dFTkVSQVRPUgorCisKK30gLy8gbmFtZXNwYWNlIEpTQworIyMjIEVuZCBGaWxlOiBC
dWlsdGluUHJvdG90eXBlQnVpbHRpbnMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWls
dGluQ29uc3RydWN0b3ItQ29tYmluZWQuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNv
bnN0cnVjdG9yLUNvbWJpbmVkLmpzLXJlc3VsdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzM3MTMzODVlMTYyMTcw
MDAyOGVlN2Q4MWEyMzAwYTc4MjJhZTZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUt
QnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpzLXJlc3VsdApAQCAtMCwwICsxLDIyNCBAQAor
IyMjIEJlZ2luIEZpbGU6IEpTQ0J1aWx0aW5zLmgKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8g
Tk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEph
dmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaWZuZGVmIEpT
Q0J1aWx0aW5zX2gKKyNkZWZpbmUgSlNDQnVpbHRpbnNfaAorCituYW1lc3BhY2UgSlNDIHsKK2Ns
YXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIFZNOworCitlbnVtIGNsYXNzIENvbnN0cnVj
dEFiaWxpdHkgOiB1bnNpZ25lZDsKK30KKworbmFtZXNwYWNlIEpTQyB7CisKKy8qIEJ1aWx0aW5D
b25zdHJ1Y3RvciAqLworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZD
b2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2J1aWx0aW5Db25zdHJ1Y3Rvck9mQ29kZUxlbmd0aDsK
K2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluQ29uc3RydWN0b3JP
ZkNvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfYnVpbHRpbkNvbnN0
cnVjdG9yRnJvbUNvZGU7CitleHRlcm4gY29uc3QgaW50IHNfYnVpbHRpbkNvbnN0cnVjdG9yRnJv
bUNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRp
bkNvbnN0cnVjdG9yRnJvbUNvZGVDb25zdHJ1Y3RBYmlsaXR5OworCisjZGVmaW5lIEpTQ19GT1JF
QUNIX0JVSUxUSU5DT05TVFJVQ1RPUl9CVUlMVElOX0RBVEEobWFjcm8pIFwKKyAgICBtYWNybyhv
ZiwgYnVpbHRpbkNvbnN0cnVjdG9yT2YsIDApIFwKKyAgICBtYWNybyhmcm9tLCBidWlsdGluQ29u
c3RydWN0b3JGcm9tLCAxKSBcCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTkNPTlNUUlVD
VE9SX09GIDEKKyNkZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTkNPTlNUUlVDVE9SX0ZST00gMQor
CisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShtYWNybykgXAorICAgIG1hY3JvKGJ1
aWx0aW5Db25zdHJ1Y3Rvck9mQ29kZSwgb2YsIHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2RlTGVu
Z3RoKSBcCisgICAgbWFjcm8oYnVpbHRpbkNvbnN0cnVjdG9yRnJvbUNvZGUsIGZyb20sIHNfYnVp
bHRpbkNvbnN0cnVjdG9yRnJvbUNvZGVMZW5ndGgpIFwKKworI2RlZmluZSBKU0NfRk9SRUFDSF9C
VUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFwKKyAgICBtYWNybyhmcm9tKSBcCisgICAgbWFj
cm8ob2YpIFwKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBm
dW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKKyAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJs
ZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisKK0pTQ19GT1JFQUNIX0JVSUxUSU5f
Q09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9H
RU5FUkFUT1IKKworI2RlZmluZSBKU0NfQlVJTFRJTl9FWElTVFMob2JqZWN0LCBmdW5jKSBkZWZp
bmVkIEpTQ19CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gSlNDQnVpbHRpbnNfaAorCisjIyMgRW5kIEZpbGU6IEpTQ0J1aWx0
aW5zLmgKKworIyMjIEJlZ2luIEZpbGU6IEpTQ0J1aWx0aW5zLmNwcAorLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAq
LworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJh
dGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorCisjaW5jbHVk
ZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1
ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2Rl
Q29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0
OworY29uc3QgaW50IHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2RlTGVuZ3RoID0gMjk0OworY29u
c3QgY2hhciogc19idWlsdGluQ29uc3RydWN0b3JPZkNvZGUgPQorICAgICIoZnVuY3Rpb24gKClc
biIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxu
IiBcCisgICAgIiAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiIgXAorICAgICIg
ICAgLy9cbiIgXAorICAgICIgICAgdmFyIGFycmF5ID0gdHlwZW9mIHRoaXMgPT09ICdmdW5jdGlv
bicgPyBuZXcgdGhpcyhsZW5ndGgpIDogbmV3IEBBcnJheShsZW5ndGgpO1xuIiBcCisgICAgIiAg
ICBmb3IgKHZhciBrID0gMDsgayA8IGxlbmd0aDsgKytrKVxuIiBcCisgICAgIiAgICAgICAgQHB1
dEJ5VmFsRGlyZWN0KGFycmF5LCBrLCBhcmd1bWVudHNba10pO1xuIiBcCisgICAgIiAgICBhcnJh
eS5sZW5ndGggPSBsZW5ndGg7XG4iIFwKKyAgICAiICAgIHJldHVybiBhcnJheTtcbiIgXAorICAg
ICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Db25z
dHJ1Y3RvckZyb21Db2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6
Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfYnVpbHRpbkNvbnN0cnVjdG9yRnJvbUNvZGVM
ZW5ndGggPSAyMDQ2OworY29uc3QgY2hhciogc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZSA9
CisgICAgIihmdW5jdGlvbiAoaXRlbXMgKVxuIiBcCisgICAgIntcbiIgXAorICAgICIgICAgXCJ1
c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHZhciB0aGlzT2JqID0gdGhp
cztcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdmFyIG1hcEZuID0gYXJndW1lbnRzLmxlbmd0
aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAi
ICAgIHZhciB0aGlzQXJnO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICBpZiAobWFwRm4gIT09
IHVuZGVmaW5lZCkge1xuIiBcCisgICAgIiAgICAgICAgaWYgKHR5cGVvZiBtYXBGbiAhPT0gXCJm
dW5jdGlvblwiKVxuIiBcCisgICAgIiAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwi
QXJyYXkuZnJvbSByZXF1aXJlcyB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQsIHdoZW4gcHJvdmlk
ZWQsIGJlIGEgZnVuY3Rpb25cIik7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgICAgICBpZiAo
YXJndW1lbnRzLmxlbmd0aCA+IDIpXG4iIFwKKyAgICAiICAgICAgICAgICAgdGhpc0FyZyA9IGFy
Z3VtZW50c1syXTtcbiIgXAorICAgICIgICAgfVxuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICBp
ZiAoaXRlbXMgPT0gbnVsbClcbiIgXAorICAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9y
KFwiQXJyYXkuZnJvbSByZXF1aXJlcyBhbiBhcnJheS1saWtlIG9iamVjdCAtIG5vdCBudWxsIG9y
IHVuZGVmaW5lZFwiKTtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdmFyIGl0ZXJhdG9yTWV0
aG9kID0gaXRlbXNbQHN5bWJvbEl0ZXJhdG9yXTtcbiIgXAorICAgICIgICAgaWYgKGl0ZXJhdG9y
TWV0aG9kICE9IG51bGwpIHtcbiIgXAorICAgICIgICAgICAgIGlmICh0eXBlb2YgaXRlcmF0b3JN
ZXRob2QgIT09IFwiZnVuY3Rpb25cIilcbiIgXAorICAgICIgICAgICAgICAgICB0aHJvdyBuZXcg
QFR5cGVFcnJvcihcIkFycmF5LmZyb20gcmVxdWlyZXMgdGhhdCB0aGUgcHJvcGVydHkgb2YgdGhl
IGZpcnN0IGFyZ3VtZW50LCBpdGVtc1tTeW1ib2wuaXRlcmF0b3JdLCB3aGVuIGV4aXN0cywgYmUg
YSBmdW5jdGlvblwiKTtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgICAgIC8vXG4iIFwKKyAg
ICAiICAgICAgICB2YXIgcmVzdWx0ID0gKHR5cGVvZiB0aGlzT2JqID09PSBcImZ1bmN0aW9uXCIp
ID8gQE9iamVjdChuZXcgdGhpc09iaigpKSA6IFtdO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAg
ICAgICAgdmFyIGsgPSAwO1xuIiBcCisgICAgIiAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0
b3JNZXRob2QuQGNhbGwoaXRlbXMpO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICAgICAgLy9c
biIgXAorICAgICIgICAgICAgIC8vXG4iIFwKKyAgICAiICAgICAgICAvL1xuIiBcCisgICAgIiAg
ICAgICAgdmFyIHdyYXBwZXIgPSB7XG4iIFwKKyAgICAiICAgICAgICAgICAgW0BzeW1ib2xJdGVy
YXRvcl0oKSB7XG4iIFwKKyAgICAiICAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcjtcbiIg
XAorICAgICIgICAgICAgICAgICB9XG4iIFwKKyAgICAiICAgICAgICB9O1xuIiBcCisgICAgIlxu
IiBcCisgICAgIiAgICAgICAgZm9yICh2YXIgdmFsdWUgb2Ygd3JhcHBlcikge1xuIiBcCisgICAg
IiAgICAgICAgICAgIGlmIChtYXBGbilcbiIgXAorICAgICIgICAgICAgICAgICAgICAgQHB1dEJ5
VmFsRGlyZWN0KHJlc3VsdCwgaywgdGhpc0FyZyA9PT0gdW5kZWZpbmVkID8gbWFwRm4odmFsdWUs
IGspIDogbWFwRm4uQGNhbGwodGhpc0FyZywgdmFsdWUsIGspKTtcbiIgXAorICAgICIgICAgICAg
ICAgICBlbHNlXG4iIFwKKyAgICAiICAgICAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1
bHQsIGssIHZhbHVlKTtcbiIgXAorICAgICIgICAgICAgICAgICBrICs9IDE7XG4iIFwKKyAgICAi
ICAgICAgICB9XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgICAgICByZXN1bHQubGVuZ3RoID0g
aztcbiIgXAorICAgICIgICAgICAgIHJldHVybiByZXN1bHQ7XG4iIFwKKyAgICAiICAgIH1cbiIg
XAorICAgICJcbiIgXAorICAgICIgICAgdmFyIGFycmF5TGlrZSA9IEBPYmplY3QoaXRlbXMpO1xu
IiBcCisgICAgIiAgICB2YXIgYXJyYXlMaWtlTGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5TGlrZS5s
ZW5ndGgpO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICAvL1xuIiBcCisgICAgIiAgICB2YXIg
cmVzdWx0ID0gKHR5cGVvZiB0aGlzT2JqID09PSBcImZ1bmN0aW9uXCIpID8gQE9iamVjdChuZXcg
dGhpc09iaihhcnJheUxpa2VMZW5ndGgpKSA6IG5ldyBAQXJyYXkoYXJyYXlMaWtlTGVuZ3RoKTtc
biIgXAorICAgICJcbiIgXAorICAgICIgICAgdmFyIGsgPSAwO1xuIiBcCisgICAgIiAgICB3aGls
ZSAoayA8IGFycmF5TGlrZUxlbmd0aCkge1xuIiBcCisgICAgIiAgICAgICAgdmFyIHZhbHVlID0g
YXJyYXlMaWtlW2tdO1xuIiBcCisgICAgIiAgICAgICAgaWYgKG1hcEZuKVxuIiBcCisgICAgIiAg
ICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHRoaXNBcmcgPT09IHVuZGVmaW5l
ZCA/IG1hcEZuKHZhbHVlLCBrKSA6IG1hcEZuLkBjYWxsKHRoaXNBcmcsIHZhbHVlLCBrKSk7XG4i
IFwKKyAgICAiICAgICAgICBlbHNlXG4iIFwKKyAgICAiICAgICAgICAgICAgQHB1dEJ5VmFsRGly
ZWN0KHJlc3VsdCwgaywgdmFsdWUpO1xuIiBcCisgICAgIiAgICAgICAgayArPSAxO1xuIiBcCisg
ICAgIiAgICB9XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHJlc3VsdC5sZW5ndGggPSBhcnJh
eUxpa2VMZW5ndGg7XG4iIFwKKyAgICAiICAgIHJldHVybiByZXN1bHQ7XG4iIFwKKyAgICAifSlc
biIgXAorOworCisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBm
dW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBj
b2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCit7XAorICAgIHJldHVybiB2bS5idWls
dGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVp
bHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IH0KK0pTQ19GT1JFQUNIX0JV
SUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxU
SU5fR0VORVJBVE9SCisKKworfSAvLyBuYW1lc3BhY2UgSlNDCisjIyMgRW5kIEZpbGU6IEpTQ0J1
aWx0aW5zLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLVNl
cGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1
aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1TZXBhcmF0
ZS5qcy1yZXN1bHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODI2NmQwNWQ0MDBkNWQ3NjRiZjJkZDY3YzJiODY1YmNh
NTc5ZDNiMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rv
ci1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTAsMCArMSwyMjMgQEAKKyMjIyBCZWdpbiBGaWxlOiBC
dWlsdGluQ29uc3RydWN0b3JCdWlsdGlucy5oCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5P
VCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZh
U2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lmbmRlZiBCdWls
dGluQ29uc3RydWN0b3JCdWlsdGluc19oCisjZGVmaW5lIEJ1aWx0aW5Db25zdHJ1Y3RvckJ1aWx0
aW5zX2gKKworCisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwor
fQorCituYW1lc3BhY2UgSlNDIHsKKworLyogQnVpbHRpbkNvbnN0cnVjdG9yICovCitleHRlcm4g
Y29uc3QgY2hhciogc19idWlsdGluQ29uc3RydWN0b3JPZkNvZGU7CitleHRlcm4gY29uc3QgaW50
IHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29u
c3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Db25zdHJ1Y3Rvck9mQ29kZUNvbnN0cnVjdEFiaWxpdHk7
CitleHRlcm4gY29uc3QgY2hhciogc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZTsKK2V4dGVy
biBjb25zdCBpbnQgc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZUxlbmd0aDsKK2V4dGVybiBj
b25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZUNv
bnN0cnVjdEFiaWxpdHk7CisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTkNPTlNUUlVDVE9S
X0JVSUxUSU5fREFUQShtYWNybykgXAorICAgIG1hY3JvKG9mLCBidWlsdGluQ29uc3RydWN0b3JP
ZiwgMCkgXAorICAgIG1hY3JvKGZyb20sIGJ1aWx0aW5Db25zdHJ1Y3RvckZyb20sIDEpIFwKKwor
I2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOQ09OU1RSVUNUT1JfT0YgMQorI2RlZmluZSBKU0Nf
QlVJTFRJTl9CVUlMVElOQ09OU1RSVUNUT1JfRlJPTSAxCisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hf
QlVJTFRJTkNPTlNUUlVDVE9SX0JVSUxUSU5fQ09ERShtYWNybykgXAorICAgIG1hY3JvKGJ1aWx0
aW5Db25zdHJ1Y3Rvck9mQ29kZSwgb2YsIHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2RlTGVuZ3Ro
KSBcCisgICAgbWFjcm8oYnVpbHRpbkNvbnN0cnVjdG9yRnJvbUNvZGUsIGZyb20sIHNfYnVpbHRp
bkNvbnN0cnVjdG9yRnJvbUNvZGVMZW5ndGgpIFwKKworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlM
VElOQ09OU1RSVUNUT1JfQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcCisgICAgbWFjcm8o
ZnJvbSkgXAorICAgIG1hY3JvKG9mKSBcCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVS
QVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCisgICAgSlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCitKU0Nf
Rk9SRUFDSF9CVUlMVElOQ09OU1RSVUNUT1JfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9H
RU5FUkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIEpT
Q19CVUlMVElOX0JVSUxUSU5DT05TVFJVQ1RPUl9FWElTVFMob2JqZWN0LCBmdW5jKSBkZWZpbmVk
IEpTQ19CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisKK30gLy8gbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy8gQnVpbHRpbkNvbnN0cnVjdG9yQnVpbHRpbnNfaAorCisjIyMgRW5kIEZp
bGU6IEJ1aWx0aW5Db25zdHJ1Y3RvckJ1aWx0aW5zLmgKKworIyMjIEJlZ2luIEZpbGU6IEJ1aWx0
aW5Db25zdHJ1Y3RvckJ1aWx0aW5zLmNwcAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1Qg
RURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNj
cmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJCdWlsdGluQ29uc3RydWN0b3JCdWlsdGlucy5oIgorCisjaW5jbHVk
ZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1
ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2Rl
Q29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0
OworY29uc3QgaW50IHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2RlTGVuZ3RoID0gMjk0OworY29u
c3QgY2hhciogc19idWlsdGluQ29uc3RydWN0b3JPZkNvZGUgPQorICAgICIoZnVuY3Rpb24gKClc
biIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxu
IiBcCisgICAgIiAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiIgXAorICAgICIg
ICAgLy9cbiIgXAorICAgICIgICAgdmFyIGFycmF5ID0gdHlwZW9mIHRoaXMgPT09ICdmdW5jdGlv
bicgPyBuZXcgdGhpcyhsZW5ndGgpIDogbmV3IEBBcnJheShsZW5ndGgpO1xuIiBcCisgICAgIiAg
ICBmb3IgKHZhciBrID0gMDsgayA8IGxlbmd0aDsgKytrKVxuIiBcCisgICAgIiAgICAgICAgQHB1
dEJ5VmFsRGlyZWN0KGFycmF5LCBrLCBhcmd1bWVudHNba10pO1xuIiBcCisgICAgIiAgICBhcnJh
eS5sZW5ndGggPSBsZW5ndGg7XG4iIFwKKyAgICAiICAgIHJldHVybiBhcnJheTtcbiIgXAorICAg
ICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Db25z
dHJ1Y3RvckZyb21Db2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6
Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfYnVpbHRpbkNvbnN0cnVjdG9yRnJvbUNvZGVM
ZW5ndGggPSAyMDQ2OworY29uc3QgY2hhciogc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZSA9
CisgICAgIihmdW5jdGlvbiAoaXRlbXMgKVxuIiBcCisgICAgIntcbiIgXAorICAgICIgICAgXCJ1
c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHZhciB0aGlzT2JqID0gdGhp
cztcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdmFyIG1hcEZuID0gYXJndW1lbnRzLmxlbmd0
aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAi
ICAgIHZhciB0aGlzQXJnO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICBpZiAobWFwRm4gIT09
IHVuZGVmaW5lZCkge1xuIiBcCisgICAgIiAgICAgICAgaWYgKHR5cGVvZiBtYXBGbiAhPT0gXCJm
dW5jdGlvblwiKVxuIiBcCisgICAgIiAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwi
QXJyYXkuZnJvbSByZXF1aXJlcyB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQsIHdoZW4gcHJvdmlk
ZWQsIGJlIGEgZnVuY3Rpb25cIik7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgICAgICBpZiAo
YXJndW1lbnRzLmxlbmd0aCA+IDIpXG4iIFwKKyAgICAiICAgICAgICAgICAgdGhpc0FyZyA9IGFy
Z3VtZW50c1syXTtcbiIgXAorICAgICIgICAgfVxuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICBp
ZiAoaXRlbXMgPT0gbnVsbClcbiIgXAorICAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9y
KFwiQXJyYXkuZnJvbSByZXF1aXJlcyBhbiBhcnJheS1saWtlIG9iamVjdCAtIG5vdCBudWxsIG9y
IHVuZGVmaW5lZFwiKTtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdmFyIGl0ZXJhdG9yTWV0
aG9kID0gaXRlbXNbQHN5bWJvbEl0ZXJhdG9yXTtcbiIgXAorICAgICIgICAgaWYgKGl0ZXJhdG9y
TWV0aG9kICE9IG51bGwpIHtcbiIgXAorICAgICIgICAgICAgIGlmICh0eXBlb2YgaXRlcmF0b3JN
ZXRob2QgIT09IFwiZnVuY3Rpb25cIilcbiIgXAorICAgICIgICAgICAgICAgICB0aHJvdyBuZXcg
QFR5cGVFcnJvcihcIkFycmF5LmZyb20gcmVxdWlyZXMgdGhhdCB0aGUgcHJvcGVydHkgb2YgdGhl
IGZpcnN0IGFyZ3VtZW50LCBpdGVtc1tTeW1ib2wuaXRlcmF0b3JdLCB3aGVuIGV4aXN0cywgYmUg
YSBmdW5jdGlvblwiKTtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgICAgIC8vXG4iIFwKKyAg
ICAiICAgICAgICB2YXIgcmVzdWx0ID0gKHR5cGVvZiB0aGlzT2JqID09PSBcImZ1bmN0aW9uXCIp
ID8gQE9iamVjdChuZXcgdGhpc09iaigpKSA6IFtdO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAg
ICAgICAgdmFyIGsgPSAwO1xuIiBcCisgICAgIiAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0
b3JNZXRob2QuQGNhbGwoaXRlbXMpO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICAgICAgLy9c
biIgXAorICAgICIgICAgICAgIC8vXG4iIFwKKyAgICAiICAgICAgICAvL1xuIiBcCisgICAgIiAg
ICAgICAgdmFyIHdyYXBwZXIgPSB7XG4iIFwKKyAgICAiICAgICAgICAgICAgW0BzeW1ib2xJdGVy
YXRvcl0oKSB7XG4iIFwKKyAgICAiICAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcjtcbiIg
XAorICAgICIgICAgICAgICAgICB9XG4iIFwKKyAgICAiICAgICAgICB9O1xuIiBcCisgICAgIlxu
IiBcCisgICAgIiAgICAgICAgZm9yICh2YXIgdmFsdWUgb2Ygd3JhcHBlcikge1xuIiBcCisgICAg
IiAgICAgICAgICAgIGlmIChtYXBGbilcbiIgXAorICAgICIgICAgICAgICAgICAgICAgQHB1dEJ5
VmFsRGlyZWN0KHJlc3VsdCwgaywgdGhpc0FyZyA9PT0gdW5kZWZpbmVkID8gbWFwRm4odmFsdWUs
IGspIDogbWFwRm4uQGNhbGwodGhpc0FyZywgdmFsdWUsIGspKTtcbiIgXAorICAgICIgICAgICAg
ICAgICBlbHNlXG4iIFwKKyAgICAiICAgICAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1
bHQsIGssIHZhbHVlKTtcbiIgXAorICAgICIgICAgICAgICAgICBrICs9IDE7XG4iIFwKKyAgICAi
ICAgICAgICB9XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgICAgICByZXN1bHQubGVuZ3RoID0g
aztcbiIgXAorICAgICIgICAgICAgIHJldHVybiByZXN1bHQ7XG4iIFwKKyAgICAiICAgIH1cbiIg
XAorICAgICJcbiIgXAorICAgICIgICAgdmFyIGFycmF5TGlrZSA9IEBPYmplY3QoaXRlbXMpO1xu
IiBcCisgICAgIiAgICB2YXIgYXJyYXlMaWtlTGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5TGlrZS5s
ZW5ndGgpO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICAvL1xuIiBcCisgICAgIiAgICB2YXIg
cmVzdWx0ID0gKHR5cGVvZiB0aGlzT2JqID09PSBcImZ1bmN0aW9uXCIpID8gQE9iamVjdChuZXcg
dGhpc09iaihhcnJheUxpa2VMZW5ndGgpKSA6IG5ldyBAQXJyYXkoYXJyYXlMaWtlTGVuZ3RoKTtc
biIgXAorICAgICJcbiIgXAorICAgICIgICAgdmFyIGsgPSAwO1xuIiBcCisgICAgIiAgICB3aGls
ZSAoayA8IGFycmF5TGlrZUxlbmd0aCkge1xuIiBcCisgICAgIiAgICAgICAgdmFyIHZhbHVlID0g
YXJyYXlMaWtlW2tdO1xuIiBcCisgICAgIiAgICAgICAgaWYgKG1hcEZuKVxuIiBcCisgICAgIiAg
ICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHRoaXNBcmcgPT09IHVuZGVmaW5l
ZCA/IG1hcEZuKHZhbHVlLCBrKSA6IG1hcEZuLkBjYWxsKHRoaXNBcmcsIHZhbHVlLCBrKSk7XG4i
IFwKKyAgICAiICAgICAgICBlbHNlXG4iIFwKKyAgICAiICAgICAgICAgICAgQHB1dEJ5VmFsRGly
ZWN0KHJlc3VsdCwgaywgdmFsdWUpO1xuIiBcCisgICAgIiAgICAgICAgayArPSAxO1xuIiBcCisg
ICAgIiAgICB9XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHJlc3VsdC5sZW5ndGggPSBhcnJh
eUxpa2VMZW5ndGg7XG4iIFwKKyAgICAiICAgIHJldHVybiByZXN1bHQ7XG4iIFwKKyAgICAifSlc
biIgXAorOworCisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBm
dW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBj
b2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCit7XAorICAgIHJldHVybiB2bS5idWls
dGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVp
bHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IH0KK0pTQ19GT1JFQUNIX0JV
SUxUSU5DT05TVFJVQ1RPUl9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQor
I3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgorCisKK30gLy8gbmFtZXNwYWNlIEpTQwor
IyMjIEVuZCBGaWxlOiBCdWlsdGluQ29uc3RydWN0b3JCdWlsdGlucy5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0ph
dmFTY3JpcHRDb3JlLU9wZXJhdGlvbnMuUHJvbWlzZS1Db21iaW5lZC5qcy1yZXN1bHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2Ny
aXB0Q29yZS1PcGVyYXRpb25zLlByb21pc2UtQ29tYmluZWQuanMtcmVzdWx0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmMxNDUxMTExY2E3ZDY3NTVmZTI3NWEzOTQ0ZTc3MTY0MWIzYjlkZjYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3Rl
ZC9KYXZhU2NyaXB0Q29yZS1PcGVyYXRpb25zLlByb21pc2UtQ29tYmluZWQuanMtcmVzdWx0CkBA
IC0wLDAgKzEsNDE1IEBACisjIyMgQmVnaW4gRmlsZTogSlNDQnVpbHRpbnMuaAorLyoKKyAqIENv
cHlyaWdodCAoYykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Lgor
ICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0
aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBi
eSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1i
dWlsdGlucy5weQorCisjaWZuZGVmIEpTQ0J1aWx0aW5zX2gKKyNkZWZpbmUgSlNDQnVpbHRpbnNf
aAorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIFZN
OworCitlbnVtIGNsYXNzIENvbnN0cnVjdEFiaWxpdHkgOiB1bnNpZ25lZDsKK30KKworbmFtZXNw
YWNlIEpTQyB7CisKKy8qIE9wZXJhdGlvbnMuUHJvbWlzZSAqLworZXh0ZXJuIGNvbnN0IGNoYXIq
IHNfb3BlcmF0aW9uc1Byb21pc2VJc1Byb21pc2VDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX29w
ZXJhdGlvbnNQcm9taXNlSXNQcm9taXNlQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNv
bnN0cnVjdEFiaWxpdHkgc19vcGVyYXRpb25zUHJvbWlzZUlzUHJvbWlzZUNvZGVDb25zdHJ1Y3RB
YmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfb3BlcmF0aW9uc1Byb21pc2VOZXdQcm9taXNl
UmVhY3Rpb25Db2RlOworZXh0ZXJuIGNvbnN0IGludCBzX29wZXJhdGlvbnNQcm9taXNlTmV3UHJv
bWlzZVJlYWN0aW9uQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxp
dHkgc19vcGVyYXRpb25zUHJvbWlzZU5ld1Byb21pc2VSZWFjdGlvbkNvZGVDb25zdHJ1Y3RBYmls
aXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfb3BlcmF0aW9uc1Byb21pc2VOZXdQcm9taXNlQ2Fw
YWJpbGl0eUNvZGU7CitleHRlcm4gY29uc3QgaW50IHNfb3BlcmF0aW9uc1Byb21pc2VOZXdQcm9t
aXNlQ2FwYWJpbGl0eUNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmls
aXR5IHNfb3BlcmF0aW9uc1Byb21pc2VOZXdQcm9taXNlQ2FwYWJpbGl0eUNvZGVDb25zdHJ1Y3RB
YmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfb3BlcmF0aW9uc1Byb21pc2VUcmlnZ2VyUHJv
bWlzZVJlYWN0aW9uc0NvZGU7CitleHRlcm4gY29uc3QgaW50IHNfb3BlcmF0aW9uc1Byb21pc2VU
cmlnZ2VyUHJvbWlzZVJlYWN0aW9uc0NvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25z
dHJ1Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VUcmlnZ2VyUHJvbWlzZVJlYWN0aW9uc0Nv
ZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfb3BlcmF0aW9uc1Byb21p
c2VSZWplY3RQcm9taXNlQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19vcGVyYXRpb25zUHJvbWlz
ZVJlamVjdFByb21pc2VDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJp
bGl0eSBzX29wZXJhdGlvbnNQcm9taXNlUmVqZWN0UHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5
OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfb3BlcmF0aW9uc1Byb21pc2VGdWxmaWxsUHJvbWlzZUNv
ZGU7CitleHRlcm4gY29uc3QgaW50IHNfb3BlcmF0aW9uc1Byb21pc2VGdWxmaWxsUHJvbWlzZUNv
ZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfb3BlcmF0aW9u
c1Byb21pc2VGdWxmaWxsUHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0
IGNoYXIqIHNfb3BlcmF0aW9uc1Byb21pc2VDcmVhdGVSZXNvbHZpbmdGdW5jdGlvbnNDb2RlOwor
ZXh0ZXJuIGNvbnN0IGludCBzX29wZXJhdGlvbnNQcm9taXNlQ3JlYXRlUmVzb2x2aW5nRnVuY3Rp
b25zQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19vcGVy
YXRpb25zUHJvbWlzZUNyZWF0ZVJlc29sdmluZ0Z1bmN0aW9uc0NvZGVDb25zdHJ1Y3RBYmlsaXR5
OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfb3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVhY3Rpb25K
b2JDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX29wZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJlYWN0
aW9uSm9iQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19v
cGVyYXRpb25zUHJvbWlzZVByb21pc2VSZWFjdGlvbkpvYkNvZGVDb25zdHJ1Y3RBYmlsaXR5Owor
ZXh0ZXJuIGNvbnN0IGNoYXIqIHNfb3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVzb2x2ZVRoZW5h
YmxlSm9iQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19vcGVyYXRpb25zUHJvbWlzZVByb21pc2VS
ZXNvbHZlVGhlbmFibGVKb2JDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0
QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYkNvZGVD
b25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfb3BlcmF0aW9uc1Byb21pc2VJ
bml0aWFsaXplUHJvbWlzZUNvZGU7CitleHRlcm4gY29uc3QgaW50IHNfb3BlcmF0aW9uc1Byb21p
c2VJbml0aWFsaXplUHJvbWlzZUNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VJbml0aWFsaXplUHJvbWlzZUNvZGVDb25zdHJ1
Y3RBYmlsaXR5OworCisjZGVmaW5lIEpTQ19GT1JFQUNIX09QRVJBVElPTlNQUk9NSVNFX0JVSUxU
SU5fREFUQShtYWNybykgXAorICAgIG1hY3JvKGlzUHJvbWlzZSwgb3BlcmF0aW9uc1Byb21pc2VJ
c1Byb21pc2UsIDEpIFwKKyAgICBtYWNybyhuZXdQcm9taXNlUmVhY3Rpb24sIG9wZXJhdGlvbnNQ
cm9taXNlTmV3UHJvbWlzZVJlYWN0aW9uLCAyKSBcCisgICAgbWFjcm8obmV3UHJvbWlzZUNhcGFi
aWxpdHksIG9wZXJhdGlvbnNQcm9taXNlTmV3UHJvbWlzZUNhcGFiaWxpdHksIDEpIFwKKyAgICBt
YWNybyh0cmlnZ2VyUHJvbWlzZVJlYWN0aW9ucywgb3BlcmF0aW9uc1Byb21pc2VUcmlnZ2VyUHJv
bWlzZVJlYWN0aW9ucywgMikgXAorICAgIG1hY3JvKHJlamVjdFByb21pc2UsIG9wZXJhdGlvbnNQ
cm9taXNlUmVqZWN0UHJvbWlzZSwgMikgXAorICAgIG1hY3JvKGZ1bGZpbGxQcm9taXNlLCBvcGVy
YXRpb25zUHJvbWlzZUZ1bGZpbGxQcm9taXNlLCAyKSBcCisgICAgbWFjcm8oY3JlYXRlUmVzb2x2
aW5nRnVuY3Rpb25zLCBvcGVyYXRpb25zUHJvbWlzZUNyZWF0ZVJlc29sdmluZ0Z1bmN0aW9ucywg
MSkgXAorICAgIG1hY3JvKHByb21pc2VSZWFjdGlvbkpvYiwgb3BlcmF0aW9uc1Byb21pc2VQcm9t
aXNlUmVhY3Rpb25Kb2IsIDIpIFwKKyAgICBtYWNybyhwcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9i
LCBvcGVyYXRpb25zUHJvbWlzZVByb21pc2VSZXNvbHZlVGhlbmFibGVKb2IsIDMpIFwKKyAgICBt
YWNybyhpbml0aWFsaXplUHJvbWlzZSwgb3BlcmF0aW9uc1Byb21pc2VJbml0aWFsaXplUHJvbWlz
ZSwgMSkgXAorCisjZGVmaW5lIEpTQ19CVUlMVElOX09QRVJBVElPTlNQUk9NSVNFX0lTUFJPTUlT
RSAxCisjZGVmaW5lIEpTQ19CVUlMVElOX09QRVJBVElPTlNQUk9NSVNFX05FV1BST01JU0VSRUFD
VElPTiAxCisjZGVmaW5lIEpTQ19CVUlMVElOX09QRVJBVElPTlNQUk9NSVNFX05FV1BST01JU0VD
QVBBQklMSVRZIDEKKyNkZWZpbmUgSlNDX0JVSUxUSU5fT1BFUkFUSU9OU1BST01JU0VfVFJJR0dF
UlBST01JU0VSRUFDVElPTlMgMQorI2RlZmluZSBKU0NfQlVJTFRJTl9PUEVSQVRJT05TUFJPTUlT
RV9SRUpFQ1RQUk9NSVNFIDEKKyNkZWZpbmUgSlNDX0JVSUxUSU5fT1BFUkFUSU9OU1BST01JU0Vf
RlVMRklMTFBST01JU0UgMQorI2RlZmluZSBKU0NfQlVJTFRJTl9PUEVSQVRJT05TUFJPTUlTRV9D
UkVBVEVSRVNPTFZJTkdGVU5DVElPTlMgMQorI2RlZmluZSBKU0NfQlVJTFRJTl9PUEVSQVRJT05T
UFJPTUlTRV9QUk9NSVNFUkVBQ1RJT05KT0IgMQorI2RlZmluZSBKU0NfQlVJTFRJTl9PUEVSQVRJ
T05TUFJPTUlTRV9QUk9NSVNFUkVTT0xWRVRIRU5BQkxFSk9CIDEKKyNkZWZpbmUgSlNDX0JVSUxU
SU5fT1BFUkFUSU9OU1BST01JU0VfSU5JVElBTElaRVBST01JU0UgMQorCisjZGVmaW5lIEpTQ19G
T1JFQUNIX0JVSUxUSU5fQ09ERShtYWNybykgXAorICAgIG1hY3JvKG9wZXJhdGlvbnNQcm9taXNl
SXNQcm9taXNlQ29kZSwgaXNQcm9taXNlLCBzX29wZXJhdGlvbnNQcm9taXNlSXNQcm9taXNlQ29k
ZUxlbmd0aCkgXAorICAgIG1hY3JvKG9wZXJhdGlvbnNQcm9taXNlTmV3UHJvbWlzZVJlYWN0aW9u
Q29kZSwgbmV3UHJvbWlzZVJlYWN0aW9uLCBzX29wZXJhdGlvbnNQcm9taXNlTmV3UHJvbWlzZVJl
YWN0aW9uQ29kZUxlbmd0aCkgXAorICAgIG1hY3JvKG9wZXJhdGlvbnNQcm9taXNlTmV3UHJvbWlz
ZUNhcGFiaWxpdHlDb2RlLCBuZXdQcm9taXNlQ2FwYWJpbGl0eSwgc19vcGVyYXRpb25zUHJvbWlz
ZU5ld1Byb21pc2VDYXBhYmlsaXR5Q29kZUxlbmd0aCkgXAorICAgIG1hY3JvKG9wZXJhdGlvbnNQ
cm9taXNlVHJpZ2dlclByb21pc2VSZWFjdGlvbnNDb2RlLCB0cmlnZ2VyUHJvbWlzZVJlYWN0aW9u
cywgc19vcGVyYXRpb25zUHJvbWlzZVRyaWdnZXJQcm9taXNlUmVhY3Rpb25zQ29kZUxlbmd0aCkg
XAorICAgIG1hY3JvKG9wZXJhdGlvbnNQcm9taXNlUmVqZWN0UHJvbWlzZUNvZGUsIHJlamVjdFBy
b21pc2UsIHNfb3BlcmF0aW9uc1Byb21pc2VSZWplY3RQcm9taXNlQ29kZUxlbmd0aCkgXAorICAg
IG1hY3JvKG9wZXJhdGlvbnNQcm9taXNlRnVsZmlsbFByb21pc2VDb2RlLCBmdWxmaWxsUHJvbWlz
ZSwgc19vcGVyYXRpb25zUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZUxlbmd0aCkgXAorICAgIG1h
Y3JvKG9wZXJhdGlvbnNQcm9taXNlQ3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zQ29kZSwgY3JlYXRl
UmVzb2x2aW5nRnVuY3Rpb25zLCBzX29wZXJhdGlvbnNQcm9taXNlQ3JlYXRlUmVzb2x2aW5nRnVu
Y3Rpb25zQ29kZUxlbmd0aCkgXAorICAgIG1hY3JvKG9wZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJl
YWN0aW9uSm9iQ29kZSwgcHJvbWlzZVJlYWN0aW9uSm9iLCBzX29wZXJhdGlvbnNQcm9taXNlUHJv
bWlzZVJlYWN0aW9uSm9iQ29kZUxlbmd0aCkgXAorICAgIG1hY3JvKG9wZXJhdGlvbnNQcm9taXNl
UHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYkNvZGUsIHByb21pc2VSZXNvbHZlVGhlbmFibGVKb2Is
IHNfb3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZUxlbmd0aCkg
XAorICAgIG1hY3JvKG9wZXJhdGlvbnNQcm9taXNlSW5pdGlhbGl6ZVByb21pc2VDb2RlLCBpbml0
aWFsaXplUHJvbWlzZSwgc19vcGVyYXRpb25zUHJvbWlzZUluaXRpYWxpemVQcm9taXNlQ29kZUxl
bmd0aCkgXAorCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNy
bykgXAorICAgIG1hY3JvKGNyZWF0ZVJlc29sdmluZ0Z1bmN0aW9ucykgXAorICAgIG1hY3JvKGZ1
bGZpbGxQcm9taXNlKSBcCisgICAgbWFjcm8oaW5pdGlhbGl6ZVByb21pc2UpIFwKKyAgICBtYWNy
byhpc1Byb21pc2UpIFwKKyAgICBtYWNybyhuZXdQcm9taXNlQ2FwYWJpbGl0eSkgXAorICAgIG1h
Y3JvKG5ld1Byb21pc2VSZWFjdGlvbikgXAorICAgIG1hY3JvKHByb21pc2VSZWFjdGlvbkpvYikg
XAorICAgIG1hY3JvKHByb21pc2VSZXNvbHZlVGhlbmFibGVKb2IpIFwKKyAgICBtYWNybyhyZWpl
Y3RQcm9taXNlKSBcCisgICAgbWFjcm8odHJpZ2dlclByb21pc2VSZWFjdGlvbnMpIFwKKworI2Rl
ZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFy
Z3VtZW50Q291bnQpIFwKKyAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dl
bmVyYXRvcihKU0M6OlZNJik7CisKK0pTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShERUNMQVJFX0JV
SUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKKworI2Rl
ZmluZSBKU0NfQlVJTFRJTl9FWElTVFMob2JqZWN0LCBmdW5jKSBkZWZpbmVkIEpTQ19CVUlMVElO
XyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYg
Ly8gSlNDQnVpbHRpbnNfaAorCisjIyMgRW5kIEZpbGU6IEpTQ0J1aWx0aW5zLmgKKworIyMjIEJl
Z2luIEZpbGU6IEpTQ0J1aWx0aW5zLmNwcAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBZdXN1
a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8g
RE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9t
IEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKKworI2luY2x1ZGUgIkJ1aWx0
aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0Nl
bGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0
IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9taXNlSXNQcm9taXNlQ29kZUNv
bnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsK
K2NvbnN0IGludCBzX29wZXJhdGlvbnNQcm9taXNlSXNQcm9taXNlQ29kZUxlbmd0aCA9IDE1ODsK
K2NvbnN0IGNoYXIqIHNfb3BlcmF0aW9uc1Byb21pc2VJc1Byb21pc2VDb2RlID0KKyAgICIoZnVu
Y3Rpb24gKHByb21pc2UpXG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7
XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICByZXR1cm4gQGlzT2JqZWN0KHByb21pc2UpICYmICEh
cHJvbWlzZS5AcHJvbWlzZVN0YXRlO1xuIiBcCisgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6
OkNvbnN0cnVjdEFiaWxpdHkgc19vcGVyYXRpb25zUHJvbWlzZU5ld1Byb21pc2VSZWFjdGlvbkNv
ZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1
Y3Q7Citjb25zdCBpbnQgc19vcGVyYXRpb25zUHJvbWlzZU5ld1Byb21pc2VSZWFjdGlvbkNvZGVM
ZW5ndGggPSAyMjA7Citjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQcm9taXNlTmV3UHJvbWlzZVJl
YWN0aW9uQ29kZSA9CisgICAiKGZ1bmN0aW9uIChjYXBhYmlsaXR5LCBoYW5kbGVyKVxuIiBcCisg
ICAie1xuIiBcCisgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIg
ICAgcmV0dXJuIHtcbiIgXAorICAgIiAgICAgICAgQGNhcGFiaWxpdGllczogY2FwYWJpbGl0eSxc
biIgXAorICAgIiAgICAgICAgQGhhbmRsZXI6IGhhbmRsZXJcbiIgXAorICAgIiAgICB9O1xuIiBc
CisgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19vcGVyYXRp
b25zUHJvbWlzZU5ld1Byb21pc2VDYXBhYmlsaXR5Q29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6
OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX29wZXJhdGlv
bnNQcm9taXNlTmV3UHJvbWlzZUNhcGFiaWxpdHlDb2RlTGVuZ3RoID0gMTQyNzsKK2NvbnN0IGNo
YXIqIHNfb3BlcmF0aW9uc1Byb21pc2VOZXdQcm9taXNlQ2FwYWJpbGl0eUNvZGUgPQorICAgIihm
dW5jdGlvbiAoY29uc3RydWN0b3IpXG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAgXCJ1c2Ugc3Ry
aWN0XCI7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICAvL1xuIiBcCisgICAiICAgIGlmICh0eXBl
b2YgY29uc3RydWN0b3IgIT09IFwiZnVuY3Rpb25cIilcbiIgXAorICAgIiAgICAgICAgdGhyb3cg
bmV3IEBUeXBlRXJyb3IoXCJwcm9taXNlIGNhcGFiaWxpdHkgcmVxdWlyZXMgYSBjb25zdHJ1Y3Rv
ciBmdW5jdGlvblwiKTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHZhciBwcm9taXNlQ2FwYWJp
bGl0eSA9IHtcbiIgXAorICAgIiAgICAgICAgQHByb21pc2U6IHVuZGVmaW5lZCxcbiIgXAorICAg
IiAgICAgICAgQHJlc29sdmU6IHVuZGVmaW5lZCxcbiIgXAorICAgIiAgICAgICAgQHJlamVjdDog
dW5kZWZpbmVkXG4iIFwKKyAgICIgICAgfTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIGZ1bmN0
aW9uIGV4ZWN1dG9yKHJlc29sdmUsIHJlamVjdClcbiIgXAorICAgIiAgICB7XG4iIFwKKyAgICIg
ICAgICAgIGlmIChwcm9taXNlQ2FwYWJpbGl0eS5AcmVzb2x2ZSAhPT0gdW5kZWZpbmVkKVxuIiBc
CisgICAiICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJyZXNvbHZlIGZ1bmN0aW9u
IGlzIGFscmVhZHkgc2V0XCIpO1xuIiBcCisgICAiICAgICAgICBpZiAocHJvbWlzZUNhcGFiaWxp
dHkuQHJlamVjdCAhPT0gdW5kZWZpbmVkKVxuIiBcCisgICAiICAgICAgICAgICAgdGhyb3cgbmV3
IEBUeXBlRXJyb3IoXCJyZWplY3QgZnVuY3Rpb24gaXMgYWxyZWFkeSBzZXRcIik7XG4iIFwKKyAg
ICJcbiIgXAorICAgIiAgICAgICAgcHJvbWlzZUNhcGFiaWxpdHkuQHJlc29sdmUgPSByZXNvbHZl
O1xuIiBcCisgICAiICAgICAgICBwcm9taXNlQ2FwYWJpbGl0eS5AcmVqZWN0ID0gcmVqZWN0O1xu
IiBcCisgICAiICAgIH1cbiIgXAorICAgIlxuIiBcCisgICAiICAgIHZhciBwcm9taXNlID0gbmV3
IGNvbnN0cnVjdG9yKGV4ZWN1dG9yKTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIGlmICh0eXBl
b2YgcHJvbWlzZUNhcGFiaWxpdHkuQHJlc29sdmUgIT09IFwiZnVuY3Rpb25cIilcbiIgXAorICAg
IiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJleGVjdXRvciBkaWQgbm90IHRha2UgYSBy
ZXNvbHZlIGZ1bmN0aW9uXCIpO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgaWYgKHR5cGVvZiBw
cm9taXNlQ2FwYWJpbGl0eS5AcmVqZWN0ICE9PSBcImZ1bmN0aW9uXCIpXG4iIFwKKyAgICIgICAg
ICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiZXhlY3V0b3IgZGlkIG5vdCB0YWtlIGEgcmVqZWN0
IGZ1bmN0aW9uXCIpO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgcHJvbWlzZUNhcGFiaWxpdHku
QHByb21pc2UgPSBwcm9taXNlO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgcmV0dXJuIHByb21p
c2VDYXBhYmlsaXR5O1xuIiBcCisgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVj
dEFiaWxpdHkgc19vcGVyYXRpb25zUHJvbWlzZVRyaWdnZXJQcm9taXNlUmVhY3Rpb25zQ29kZUNv
bnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsK
K2NvbnN0IGludCBzX29wZXJhdGlvbnNQcm9taXNlVHJpZ2dlclByb21pc2VSZWFjdGlvbnNDb2Rl
TGVuZ3RoID0gMjY5OworY29uc3QgY2hhciogc19vcGVyYXRpb25zUHJvbWlzZVRyaWdnZXJQcm9t
aXNlUmVhY3Rpb25zQ29kZSA9CisgICAiKGZ1bmN0aW9uIChyZWFjdGlvbnMsIGFyZ3VtZW50KVxu
IiBcCisgICAie1xuIiBcCisgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwK
KyAgICIgICAgZm9yICh2YXIgaW5kZXggPSAwLCBsZW5ndGggPSByZWFjdGlvbnMubGVuZ3RoOyBp
bmRleCA8IGxlbmd0aDsgKytpbmRleClcbiIgXAorICAgIiAgICAgICAgQGVucXVldWVKb2IoQHBy
b21pc2VSZWFjdGlvbkpvYiwgW3JlYWN0aW9uc1tpbmRleF0sIGFyZ3VtZW50XSk7XG4iIFwKKyAg
ICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJhdGlvbnNQ
cm9taXNlUmVqZWN0UHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RB
YmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19vcGVyYXRpb25zUHJvbWlzZVJl
amVjdFByb21pc2VDb2RlTGVuZ3RoID0gNTQxOworY29uc3QgY2hhciogc19vcGVyYXRpb25zUHJv
bWlzZVJlamVjdFByb21pc2VDb2RlID0KKyAgICIoZnVuY3Rpb24gKHByb21pc2UsIHJlYXNvbilc
biIgXAorICAgIntcbiIgXAorICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBc
CisgICAiICAgIHZhciByZWFjdGlvbnMgPSBwcm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25z
O1xuIiBcCisgICAiICAgIHByb21pc2UuQHByb21pc2VSZXN1bHQgPSByZWFzb247XG4iIFwKKyAg
ICIgICAgcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlvbnMgPSB1bmRlZmluZWQ7XG4iIFwK
KyAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucyA9IHVuZGVmaW5lZDtcbiIg
XAorICAgIiAgICBwcm9taXNlLkBwcm9taXNlU3RhdGUgPSBAcHJvbWlzZVJlamVjdGVkO1xuIiBc
CisgICAiXG4iIFwKKyAgICIgICAgQEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5wcm9taXNlUmVq
ZWN0ZWQocHJvbWlzZSwgcmVhc29uLCByZWFjdGlvbnMpO1xuIiBcCisgICAiXG4iIFwKKyAgICIg
ICAgQHRyaWdnZXJQcm9taXNlUmVhY3Rpb25zKHJlYWN0aW9ucywgcmVhc29uKTtcbiIgXAorICAg
In0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1By
b21pc2VGdWxmaWxsUHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RB
YmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19vcGVyYXRpb25zUHJvbWlzZUZ1
bGZpbGxQcm9taXNlQ29kZUxlbmd0aCA9IDU0MDsKK2NvbnN0IGNoYXIqIHNfb3BlcmF0aW9uc1By
b21pc2VGdWxmaWxsUHJvbWlzZUNvZGUgPQorICAgIihmdW5jdGlvbiAocHJvbWlzZSwgdmFsdWUp
XG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICJcbiIg
XAorICAgIiAgICB2YXIgcmVhY3Rpb25zID0gcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlv
bnM7XG4iIFwKKyAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlc3VsdCA9IHZhbHVlO1xuIiBcCisg
ICAiICAgIHByb21pc2UuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zID0gdW5kZWZpbmVkO1xuIiBc
CisgICAiICAgIHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnMgPSB1bmRlZmluZWQ7XG4i
IFwKKyAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVN0YXRlID0gQHByb21pc2VGdWxmaWxsZWQ7XG4i
IFwKKyAgICJcbiIgXAorICAgIiAgICBASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLnByb21pc2VG
dWxmaWxsZWQocHJvbWlzZSwgdmFsdWUsIHJlYWN0aW9ucyk7XG4iIFwKKyAgICJcbiIgXAorICAg
IiAgICBAdHJpZ2dlclByb21pc2VSZWFjdGlvbnMocmVhY3Rpb25zLCB2YWx1ZSk7XG4iIFwKKyAg
ICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJhdGlvbnNQ
cm9taXNlQ3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6
OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX29wZXJhdGlv
bnNQcm9taXNlQ3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zQ29kZUxlbmd0aCA9IDE0Njg7Citjb25z
dCBjaGFyKiBzX29wZXJhdGlvbnNQcm9taXNlQ3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zQ29kZSA9
CisgICAiKGZ1bmN0aW9uIChwcm9taXNlKVxuIiBcCisgICAie1xuIiBcCisgICAiICAgIFwidXNl
IHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdmFyIGFscmVhZHlSZXNvbHZlZCA9
IGZhbHNlO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdmFyIHJlc29sdmUgPSBmdW5jdGlvbiAo
cmVzb2x1dGlvbikge1xuIiBcCisgICAiICAgICAgICBpZiAoYWxyZWFkeVJlc29sdmVkKVxuIiBc
CisgICAiICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiIgXAorICAgIiAgICAgICAgYWxy
ZWFkeVJlc29sdmVkID0gdHJ1ZTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgICAgICBpZiAocmVz
b2x1dGlvbiA9PT0gcHJvbWlzZSlcbiIgXAorICAgIiAgICAgICAgICAgIHJldHVybiBAcmVqZWN0
UHJvbWlzZShwcm9taXNlLCBuZXcgQFR5cGVFcnJvcihcIlJlc29sdmUgYSBwcm9taXNlIHdpdGgg
aXRzZWxmXCIpKTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgICAgICBpZiAoIUBpc09iamVjdChy
ZXNvbHV0aW9uKSlcbiIgXAorICAgIiAgICAgICAgICAgIHJldHVybiBAZnVsZmlsbFByb21pc2Uo
cHJvbWlzZSwgcmVzb2x1dGlvbik7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICAgICAgdmFyIHRo
ZW47XG4iIFwKKyAgICIgICAgICAgIHRyeSB7XG4iIFwKKyAgICIgICAgICAgICAgICB0aGVuID0g
cmVzb2x1dGlvbi50aGVuO1xuIiBcCisgICAiICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuIiBc
CisgICAiICAgICAgICAgICAgcmV0dXJuIEByZWplY3RQcm9taXNlKHByb21pc2UsIGVycm9yKTtc
biIgXAorICAgIiAgICAgICAgfVxuIiBcCisgICAiXG4iIFwKKyAgICIgICAgICAgIGlmICh0eXBl
b2YgdGhlbiAhPT0gJ2Z1bmN0aW9uJylcbiIgXAorICAgIiAgICAgICAgICAgIHJldHVybiBAZnVs
ZmlsbFByb21pc2UocHJvbWlzZSwgcmVzb2x1dGlvbik7XG4iIFwKKyAgICJcbiIgXAorICAgIiAg
ICAgICAgQGVucXVldWVKb2IoQHByb21pc2VSZXNvbHZlVGhlbmFibGVKb2IsIFtwcm9taXNlLCBy
ZXNvbHV0aW9uLCB0aGVuXSk7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICAgICAgcmV0dXJuIHVu
ZGVmaW5lZDtcbiIgXAorICAgIiAgICB9O1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdmFyIHJl
amVjdCA9IGZ1bmN0aW9uIChyZWFzb24pIHtcbiIgXAorICAgIiAgICAgICAgaWYgKGFscmVhZHlS
ZXNvbHZlZClcbiIgXAorICAgIiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4iIFwKKyAg
ICIgICAgICAgIGFscmVhZHlSZXNvbHZlZCA9IHRydWU7XG4iIFwKKyAgICJcbiIgXAorICAgIiAg
ICAgICAgcmV0dXJuIEByZWplY3RQcm9taXNlKHByb21pc2UsIHJlYXNvbik7XG4iIFwKKyAgICIg
ICAgfTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHJldHVybiB7XG4iIFwKKyAgICIgICAgICAg
IEByZXNvbHZlOiByZXNvbHZlLFxuIiBcCisgICAiICAgICAgICBAcmVqZWN0OiByZWplY3RcbiIg
XAorICAgIiAgICB9O1xuIiBcCisgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVj
dEFiaWxpdHkgc19vcGVyYXRpb25zUHJvbWlzZVByb21pc2VSZWFjdGlvbkpvYkNvZGVDb25zdHJ1
Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25z
dCBpbnQgc19vcGVyYXRpb25zUHJvbWlzZVByb21pc2VSZWFjdGlvbkpvYkNvZGVMZW5ndGggPSA0
OTM7Citjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJlYWN0aW9uSm9iQ29k
ZSA9CisgICAiKGZ1bmN0aW9uIChyZWFjdGlvbiwgYXJndW1lbnQpXG4iIFwKKyAgICJ7XG4iIFwK
KyAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICB2YXIgcHJv
bWlzZUNhcGFiaWxpdHkgPSByZWFjdGlvbi5AY2FwYWJpbGl0aWVzO1xuIiBcCisgICAiXG4iIFwK
KyAgICIgICAgdmFyIHJlc3VsdDtcbiIgXAorICAgIiAgICB0cnkge1xuIiBcCisgICAiICAgICAg
ICByZXN1bHQgPSByZWFjdGlvbi5AaGFuZGxlci5AY2FsbCh1bmRlZmluZWQsIGFyZ3VtZW50KTtc
biIgXAorICAgIiAgICB9IGNhdGNoIChlcnJvcikge1xuIiBcCisgICAiICAgICAgICByZXR1cm4g
cHJvbWlzZUNhcGFiaWxpdHkuQHJlamVjdC5AY2FsbCh1bmRlZmluZWQsIGVycm9yKTtcbiIgXAor
ICAgIiAgICB9XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICByZXR1cm4gcHJvbWlzZUNhcGFiaWxp
dHkuQHJlc29sdmUuQGNhbGwodW5kZWZpbmVkLCByZXN1bHQpO1xuIiBcCisgICAifSlcbiIgXAor
OworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19vcGVyYXRpb25zUHJvbWlzZVByb21p
c2VSZXNvbHZlVGhlbmFibGVKb2JDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0
QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfb3BlcmF0aW9uc1Byb21pc2VQ
cm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZUxlbmd0aCA9IDQ1MzsKK2NvbnN0IGNoYXIqIHNf
b3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZSA9CisgICAiKGZ1
bmN0aW9uIChwcm9taXNlVG9SZXNvbHZlLCB0aGVuYWJsZSwgdGhlbilcbiIgXAorICAgIntcbiIg
XAorICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHZhciBy
ZXNvbHZpbmdGdW5jdGlvbnMgPSBAY3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zKHByb21pc2VUb1Jl
c29sdmUpO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdHJ5IHtcbiIgXAorICAgIiAgICAgICAg
cmV0dXJuIHRoZW4uQGNhbGwodGhlbmFibGUsIHJlc29sdmluZ0Z1bmN0aW9ucy5AcmVzb2x2ZSwg
cmVzb2x2aW5nRnVuY3Rpb25zLkByZWplY3QpO1xuIiBcCisgICAiICAgIH0gY2F0Y2ggKGVycm9y
KSB7XG4iIFwKKyAgICIgICAgICAgIHJldHVybiByZXNvbHZpbmdGdW5jdGlvbnMuQHJlamVjdC5A
Y2FsbCh1bmRlZmluZWQsIGVycm9yKTtcbiIgXAorICAgIiAgICB9XG4iIFwKKyAgICJ9KVxuIiBc
Cis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9taXNlSW5p
dGlhbGl6ZVByb21pc2VDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0
eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfb3BlcmF0aW9uc1Byb21pc2VJbml0aWFs
aXplUHJvbWlzZUNvZGVMZW5ndGggPSA3MzE7Citjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQcm9t
aXNlSW5pdGlhbGl6ZVByb21pc2VDb2RlID0KKyAgICIoZnVuY3Rpb24gKGV4ZWN1dG9yKVxuIiBc
CisgICAie1xuIiBcCisgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAg
ICIgICAgaWYgKHR5cGVvZiBleGVjdXRvciAhPT0gJ2Z1bmN0aW9uJylcbiIgXAorICAgIiAgICAg
ICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJQcm9taXNlIGNvbnN0cnVjdG9yIHRha2VzIGEgZnVu
Y3Rpb24gYXJndW1lbnRcIik7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICB0aGlzLkBwcm9taXNl
U3RhdGUgPSBAcHJvbWlzZVBlbmRpbmc7XG4iIFwKKyAgICIgICAgdGhpcy5AcHJvbWlzZUZ1bGZp
bGxSZWFjdGlvbnMgPSBbXTtcbiIgXAorICAgIiAgICB0aGlzLkBwcm9taXNlUmVqZWN0UmVhY3Rp
b25zID0gW107XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICB2YXIgcmVzb2x2aW5nRnVuY3Rpb25z
ID0gQGNyZWF0ZVJlc29sdmluZ0Z1bmN0aW9ucyh0aGlzKTtcbiIgXAorICAgIiAgICB0cnkge1xu
IiBcCisgICAiICAgICAgICBleGVjdXRvcihyZXNvbHZpbmdGdW5jdGlvbnMuQHJlc29sdmUsIHJl
c29sdmluZ0Z1bmN0aW9ucy5AcmVqZWN0KTtcbiIgXAorICAgIiAgICB9IGNhdGNoIChlcnJvcikg
e1xuIiBcCisgICAiICAgICAgICByZXR1cm4gcmVzb2x2aW5nRnVuY3Rpb25zLkByZWplY3QuQGNh
bGwodW5kZWZpbmVkLCBlcnJvcik7XG4iIFwKKyAgICIgICAgfVxuIiBcCisgICAiXG4iIFwKKyAg
ICIgICAgcmV0dXJuIHRoaXM7XG4iIFwKKyAgICJ9KVxuIiBcCis7CisKKworI2RlZmluZSBERUZJ
TkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3Vu
dCkgXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpW
TSYgdm0pIFwKK3tcCisgICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFt
ZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5h
bWUjI1NvdXJjZSgpKTsgfQorSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElO
X0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKworCit9IC8vIG5h
bWVzcGFjZSBKU0MKKyMjIyBFbmQgRmlsZTogSlNDQnVpbHRpbnMuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJD
b3JlLUd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEJ1aWx0
aW4tU2VwYXJhdGUuanMtcmVzdWx0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1YTIxZDQ2NTY4NjZmZThmNzM3ZjE4
MzA3YjEyNjI0YTc0NDgyYWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRCdWlsdGlu
LVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMCwwICsxLDMxOCBAQAorIyMjIEJlZ2luIEZpbGU6IEd1
YXJkZWRCdWlsdGluQnVpbHRpbnMuaAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJ
VCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlw
dCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgR3VhcmRlZEJ1
aWx0aW5CdWlsdGluc19oCisjZGVmaW5lIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNfaAorCisjaW5j
bHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3Mg
RnVuY3Rpb25FeGVjdXRhYmxlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8qIEd1YXJk
ZWRCdWlsdGluICovCitleHRlcm4gY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpbklzUmVhZGFi
bGVTdHJlYW1Mb2NrZWRDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2d1YXJkZWRCdWlsdGluSXNS
ZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5IHNfZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUNvbnN0
cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpbkNhbmNlbFJl
YWRhYmxlU3RyZWFtQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19ndWFyZGVkQnVpbHRpbkNhbmNl
bFJlYWRhYmxlU3RyZWFtQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFi
aWxpdHkgc19ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUNvbnN0cnVjdEFi
aWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VP
ck5vb3BDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2d1YXJkZWRCdWlsdGluUHJvbWlzZUludm9r
ZU9yTm9vcENvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNf
Z3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUNvbnN0cnVjdEFiaWxpdHk7CisK
KyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fREFUQShtYWNy
bykgXAorICAgIG1hY3JvKGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIGd1YXJkZWRCdWlsdGluSXNS
ZWFkYWJsZVN0cmVhbUxvY2tlZCwgMSkgXAorICAgIG1hY3JvKGNhbmNlbFJlYWRhYmxlU3RyZWFt
LCBndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtLCAyKSBcCisgICAgbWFjcm8ocHJv
bWlzZUludm9rZU9yTm9vcCwgZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wLCAzKSBc
CisKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX0dVQVJERURCVUlMVElOX0lTUkVBREFCTEVTVFJF
QU1MT0NLRUQgMQorI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fR1VBUkRFREJVSUxUSU5fQ0FOQ0VM
UkVBREFCTEVTVFJFQU0gMQorI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fR1VBUkRFREJVSUxUSU5f
UFJPTUlTRUlOVk9LRU9STk9PUCAxCisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURC
VUlMVElOX0JVSUxUSU5fQ09ERShtYWNybykgXAorICAgIG1hY3JvKGd1YXJkZWRCdWlsdGluSXNS
ZWFkYWJsZVN0cmVhbUxvY2tlZENvZGUsIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIHNfZ3VhcmRl
ZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUxlbmd0aCkgXAorICAgIG1hY3JvKGd1
YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlLCBjYW5jZWxSZWFkYWJsZVN0cmVh
bSwgc19ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUxlbmd0aCkgXAorICAg
IG1hY3JvKGd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGUsIHByb21pc2VJbnZv
a2VPck5vb3AsIHNfZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUxlbmd0aCkg
XAorCisjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNU
SU9OX05BTUUobWFjcm8pIFwKKyAgICBtYWNybyhjYW5jZWxSZWFkYWJsZVN0cmVhbSkgXAorICAg
IG1hY3JvKGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQpIFwKKyAgICBtYWNybyhwcm9taXNlSW52b2tl
T3JOb29wKSBcCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwg
ZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCisgICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCitXRUJDT1JFX0ZPUkVBQ0hfR1VB
UkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5k
ZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9H
VUFSREVEQlVJTFRJTl9FWElTVFMob2JqZWN0LCBmdW5jKSBkZWZpbmVkIFdFQkNPUkVfQlVJTFRJ
Tl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVuYworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zX2gKKworIyMjIEVuZCBGaWxlOiBHdWFyZGVk
QnVpbHRpbkJ1aWx0aW5zLmgKKworIyMjIEJlZ2luIEZpbGU6IEd1YXJkZWRCdWlsdGluQnVpbHRp
bnMuY3BwCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQg
aXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8g
YnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2Vu
ZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkd1
YXJkZWRCdWlsdGluQnVpbHRpbnMuaCIKKworI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEu
aCIKKyNpbmNsdWRlIDxydW50aW1lL0V4ZWN1dGFibGUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pT
Q0pTVmFsdWVJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NlbGxJbmxpbmVzLmg+Cisj
aW5jbHVkZSA8cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9W
TS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0
eSBzX2d1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVDb25zdHJ1Y3RBYmls
aXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQg
c19ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlTGVuZ3RoID0gNzE7Citj
b25zdCBjaGFyKiBzX2d1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGUgPQor
ICAgICIoZnVuY3Rpb24gKHN0cmVhbSlcbiIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgXCJ1c2Ug
c3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHJldHVybiAhIXN0cmVhbS5AcmVh
ZGVyO1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
IHNfZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGVDb25zdHJ1Y3RBYmlsaXR5
ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19n
dWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUxlbmd0aCA9IDQwMjsKK2NvbnN0
IGNoYXIqIHNfZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGUgPQorICAgICIo
ZnVuY3Rpb24gKHN0cmVhbSwgcmVhc29uKVxuIiBcCisgICAgIntcbiIgXAorICAgICIgICAgXCJ1
c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIGlmIChzdHJlYW0uQHN0YXRl
ID09PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQpXG4iIFwKKyAgICAiICAgICAgICByZXR1cm4gUHJv
bWlzZS5yZXNvbHZlKCk7XG4iIFwKKyAgICAiICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVh
ZGFibGVTdHJlYW1FcnJvcmVkKVxuIiBcCisgICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVq
ZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpO1xuIiBcCisgICAgIiAgICBzdHJlYW0uQHF1ZXVlID0g
W107XG4iIFwKKyAgICAiICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTtc
biIgXAorICAgICIgICAgcmV0dXJuIEBwcm9taXNlSW52b2tlT3JOb29wKHN0cmVhbS5AdW5kZXJs
eWluZ1NvdXJjZSwgXCJjYW5jZWxcIiwgW3JlYXNvbl0pLnRoZW4oZnVuY3Rpb24oKSB7IH0pO1xu
IiBcCisgICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3Vh
cmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6
OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2d1YXJkZWRC
dWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVMZW5ndGggPSAzMzg7Citjb25zdCBjaGFyKiBz
X2d1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGUgPQorICAgICIoZnVuY3Rpb24g
KG9iamVjdCwga2V5LCBhcmdzKVxuIiBcCisgICAgIntcbiIgXAorICAgICIgICAgXCJ1c2Ugc3Ry
aWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHRyeSB7XG4iIFwKKyAgICAiICAgICAg
ICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07XG4iIFwKKyAgICAiICAgICAgICBpZiAodHlwZW9m
IG1ldGhvZCA9PT0gXCJ1bmRlZmluZWRcIilcbiIgXAorICAgICIgICAgICAgICAgICByZXR1cm4g
UHJvbWlzZS5yZXNvbHZlKCk7XG4iIFwKKyAgICAiICAgICAgICB2YXIgcmVzdWx0ID0gbWV0aG9k
LkBhcHBseShvYmplY3QsIGFyZ3MpO1xuIiBcCisgICAgIiAgICAgICAgcmV0dXJuIFByb21pc2Uu
cmVzb2x2ZShyZXN1bHQpO1xuIiBcCisgICAgIiAgICB9XG4iIFwKKyAgICAiICAgIGNhdGNoKGVy
cm9yKSB7XG4iIFwKKyAgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xu
IiBcCisgICAgIiAgICB9XG4iIFwKKyAgICAifSlcbiIgXAorOworCisKKyNkZWZpbmUgREVGSU5F
X0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQp
IFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0m
IHZtKSBcCit7XAorICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXAorICAgIHJldHVybiBjbGllbnREYXRh
LT5idWlsdGluRnVuY3Rpb25zKCkuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNF
eGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5ndWFy
ZGVkQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpKTsgXAorfQorV0VCQ09SRV9G
T1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFU
T1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCisKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorIyMjIEVuZCBGaWxlOiBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmNwcAorCisjIyMg
QmVnaW4gRmlsZTogR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIuaAorLyoKKyAqIENvcHly
aWdodCAoYykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAK
KyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2Vu
ZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3Jp
cHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5
CisKKyNpZm5kZWYgR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAorI2RlZmluZSBHdWFy
ZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9oCisKKyNpbmNsdWRlICJHdWFyZGVkQnVpbHRpbkJ1
aWx0aW5zLmgiCisjaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+CisjaW5jbHVkZSA8
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaD4KKyNpbmNsdWRlIDxydW50aW1l
L0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlciA6IHBy
aXZhdGUgSlNDOjpXZWFrSGFuZGxlT3duZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IEd1YXJk
ZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyKEpTQzo6Vk0qIHZtKQorICAgICAgICA6IG1fdm0oKnZt
KQorICAgICAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElP
Tl9OQU1FKElOSVRJQUxJWkVfQlVJTFRJTl9OQU1FUykKKyNkZWZpbmUgSU5JVElBTElaRV9CVUlM
VElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1l
IyNTb3VyY2UoSlNDOjptYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNf
IyNuYW1lLCBsZW5ndGgpKSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElO
X0JVSUxUSU5fQ09ERShJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYg
SU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCisgICAgeworICAgIH0KKworI2RlZmlu
ZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkg
XAorICAgIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUo
KTsgXAorICAgIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQorICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJ
TFRJTl9CVUlMVElOX0NPREUoRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgRVhQ
T1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMKKworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJ
TFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUND
RVNTT1IpCisKKyAgICB2b2lkIGV4cG9ydE5hbWVzKCk7CisKK3ByaXZhdGU6CisgICAgSlNDOjpW
TSYgbV92bTsKKworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZV
TkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX05BTUVTKQorCisjZGVmaW5lIERFQ0xBUkVfQlVJ
TFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorICAgIEpT
Qzo6U291cmNlQ29kZSBtXyMjbmFtZSMjU291cmNlO1wKKyAgICBKU0M6OldlYWs8SlNDOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4gbV8jI25hbWUjI0V4ZWN1dGFibGU7CisgICAgV0VCQ09S
RV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fU09V
UkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCisKK307
CisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1l
LCBsZW5ndGgpIFwKK2lubGluZSBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBHdWFy
ZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tcCisgICAg
aWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxl
ID0gSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6Y3JlYXRl
QnVpbHRpbkV4ZWN1dGFibGUobV92bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25OYW1lIyNQ
dWJsaWNOYW1lKCksIHNfIyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1l
IyNFeGVjdXRhYmxlKTtcCisgICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wK
K30KK1dFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVGSU5FX0JV
SUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMKKwor
aW5saW5lIHZvaWQgR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXI6OmV4cG9ydE5hbWVzKCkK
K3sKKyNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9OX05BTUUobmFtZSkgbV92bS5wcm9wZXJ0eU5hbWVz
LT5hcHBlbmRFeHRlcm5hbE5hbWUobmFtZSMjUHVibGljTmFtZSgpLCBuYW1lIyNQcml2YXRlTmFt
ZSgpKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElP
Tl9OQU1FKEVYUE9SVF9GVU5DVElPTl9OQU1FKQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTl9OQU1F
Cit9CisKK2NsYXNzIEd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9ucyB7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgR3VhcmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zKEpTQzo6Vk0mIHZtKSA6
IG1fdm0odm0pIHsgfQorCisgICAgdm9pZCBpbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKKyAg
ICB2b2lkIHZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImKTsKKworcHVibGljOgorICAgIEpTQzo6Vk0m
IG1fdm07CisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKGZ1bmN0aW9u
TmFtZSkgXAorICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNGdW5jdGlvbj4gbV8jI2Z1bmN0
aW9uTmFtZSMjRnVuY3Rpb247CisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JV
SUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5k
ZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCit9OworCitpbmxpbmUgdm9pZCBHdWFy
ZGVkQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnM6OmluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQoreworI2RlZmluZSBFWFBPUlRfRlVOQ1RJT04oY29kZU5hbWUsIGZ1bmN0aW9u
TmFtZSwgbGVuZ3RoKVwKKyAgICBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbi5zZXQobV92bSwg
Jmdsb2JhbE9iamVjdCwgSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24obV92
bSwgY29kZU5hbWUjI0dlbmVyYXRvcihtX3ZtKSwgJmdsb2JhbE9iamVjdCkpOworICAgIFdFQkNP
UkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoRVhQT1JUX0ZVTkNUSU9OKQor
I3VuZGVmIEVYUE9SVF9GVU5DVElPTgorfQorCitpbmxpbmUgdm9pZCBHdWFyZGVkQnVpbHRpbkJ1
aWx0aW5GdW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisjZGVm
aW5lIFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFtZSMjRnVuY3Rp
b24pOworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9O
X05BTUUoVklTSVRfRlVOQ1RJT04pCisjdW5kZWYgVklTSVRfRlVOQ1RJT04KK30KKworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3Jh
cHBlcl9oCisKKyMjIyBFbmQgRmlsZTogR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIuaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
ZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3Vs
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVk
L1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzQ4YTFjZmM0NDg0YWVmM2Y3NjBlODc5NDY2ZWZiYWI5NjZlNTBmNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4
cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQK
QEAgLTAsMCArMSwzMTggQEAKKyMjIyBCZWdpbiBGaWxlOiBHdWFyZGVkSW50ZXJuYWxCdWlsdGlu
QnVpbHRpbnMuaAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUu
IEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IK
Ky8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgR3VhcmRlZEludGVybmFsQnVpbHRp
bkJ1aWx0aW5zX2gKKyNkZWZpbmUgR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zX2gKKwor
I2luY2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oPgorCituYW1lc3BhY2UgSlNDIHsKK2Ns
YXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvKiBH
dWFyZGVkSW50ZXJuYWxCdWlsdGluICovCitleHRlcm4gY29uc3QgY2hhciogc19ndWFyZGVkSW50
ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGU7CitleHRlcm4gY29uc3QgaW50
IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlTGVuZ3Ro
OworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRJbnRlcm5hbEJ1
aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4g
Y29uc3QgY2hhciogc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1D
b2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFk
YWJsZVN0cmVhbUNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUNvbnN0cnVj
dEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluUHJv
bWlzZUludm9rZU9yTm9vcENvZGU7CitleHRlcm4gY29uc3QgaW50IHNfZ3VhcmRlZEludGVybmFs
QnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6
Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JO
b29wQ29kZUNvbnN0cnVjdEFiaWxpdHk7CisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX0dVQVJE
RURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9EQVRBKG1hY3JvKSBcCisgICAgbWFjcm8oaXNSZWFk
YWJsZVN0cmVhbUxvY2tlZCwgZ3VhcmRlZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVTdHJlYW1M
b2NrZWQsIDEpIFwKKyAgICBtYWNybyhjYW5jZWxSZWFkYWJsZVN0cmVhbSwgZ3VhcmRlZEludGVy
bmFsQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtLCAyKSBcCisgICAgbWFjcm8ocHJvbWlzZUlu
dm9rZU9yTm9vcCwgZ3VhcmRlZEludGVybmFsQnVpbHRpblByb21pc2VJbnZva2VPck5vb3AsIDMp
IFwKKworI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9JU1JF
QURBQkxFU1RSRUFNTE9DS0VEIDEKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX0dVQVJERURJTlRF
Uk5BTEJVSUxUSU5fQ0FOQ0VMUkVBREFCTEVTVFJFQU0gMQorI2RlZmluZSBXRUJDT1JFX0JVSUxU
SU5fR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9QUk9NSVNFSU5WT0tFT1JOT09QIDEKKworI2RlZmlu
ZSBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0NPREUobWFj
cm8pIFwKKyAgICBtYWNybyhndWFyZGVkSW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxv
Y2tlZENvZGUsIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIHNfZ3VhcmRlZEludGVybmFsQnVpbHRp
bklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8oZ3VhcmRlZElu
dGVybmFsQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZSwgY2FuY2VsUmVhZGFibGVTdHJl
YW0sIHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUxlbmd0
aCkgXAorICAgIG1hY3JvKGd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29w
Q29kZSwgcHJvbWlzZUludm9rZU9yTm9vcCwgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluUHJvbWlz
ZUludm9rZU9yTm9vcENvZGVMZW5ndGgpIFwKKworI2RlZmluZSBXRUJDT1JFX0ZPUkVBQ0hfR1VB
UkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFwKKyAgICBt
YWNybyhjYW5jZWxSZWFkYWJsZVN0cmVhbSkgXAorICAgIG1hY3JvKGlzUmVhZGFibGVTdHJlYW1M
b2NrZWQpIFwKKyAgICBtYWNybyhwcm9taXNlSW52b2tlT3JOb29wKSBcCisKKyNkZWZpbmUgREVD
TEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENv
dW50KSBcCisgICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3Io
SlNDOjpWTSYpOworCitXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlM
VElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUNMQVJFX0JVSUxU
SU5fR0VORVJBVE9SCisKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX0dVQVJERURJTlRFUk5BTEJV
SUxUSU5fRVhJU1RTKG9iamVjdCwgZnVuYykgZGVmaW5lZCBXRUJDT1JFX0JVSUxUSU5fICMjIG9i
amVjdCAjIyBfICMjIGZ1bmMKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
R3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zX2gKKworIyMjIEVuZCBGaWxlOiBHdWFyZGVk
SW50ZXJuYWxCdWlsdGluQnVpbHRpbnMuaAorCisjIyMgQmVnaW4gRmlsZTogR3VhcmRlZEludGVy
bmFsQnVpbHRpbkJ1aWx0aW5zLmNwcAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJ
VCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlw
dCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnMuaCIKKworI2luY2x1
ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlIDxydW50aW1lL0V4ZWN1dGFibGUu
aD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVu
dGltZS9KU0NlbGxJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVz
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9WTS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Nv
bnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1JlYWRh
YmxlU3RyZWFtTG9ja2VkQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxp
dHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5J
c1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUxlbmd0aCA9IDcxOworY29uc3QgY2hhciogc19ndWFy
ZGVkSW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGUgPQorICAgICIoZnVu
Y3Rpb24gKHN0cmVhbSlcbiIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgXCJ1c2Ugc3RyaWN0XCI7
XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHJldHVybiAhIXN0cmVhbS5AcmVhZGVyO1xuIiBc
CisgICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRl
ZEludGVybmFsQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUNvbnN0cnVjdEFiaWxpdHkg
PSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2d1
YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGVMZW5ndGggPSA0MDI7
Citjb25zdCBjaGFyKiBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVh
bUNvZGUgPQorICAgICIoZnVuY3Rpb24gKHN0cmVhbSwgcmVhc29uKVxuIiBcCisgICAgIntcbiIg
XAorICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIGlm
IChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQpXG4iIFwKKyAgICAiICAg
ICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4iIFwKKyAgICAiICAgIGlmIChzdHJlYW0u
QHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKVxuIiBcCisgICAgIiAgICAgICAgcmV0
dXJuIFByb21pc2UucmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpO1xuIiBcCisgICAgIiAgICBz
dHJlYW0uQHF1ZXVlID0gW107XG4iIFwKKyAgICAiICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVT
dHJlYW0oc3RyZWFtKTtcbiIgXAorICAgICIgICAgcmV0dXJuIEBwcm9taXNlSW52b2tlT3JOb29w
KHN0cmVhbS5AdW5kZXJseWluZ1NvdXJjZSwgXCJjYW5jZWxcIiwgW3JlYXNvbl0pLnRoZW4oZnVu
Y3Rpb24oKSB7IH0pO1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2Rl
Q29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0
OworY29uc3QgaW50IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BD
b2RlTGVuZ3RoID0gMzM4OworY29uc3QgY2hhciogc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluUHJv
bWlzZUludm9rZU9yTm9vcENvZGUgPQorICAgICIoZnVuY3Rpb24gKG9iamVjdCwga2V5LCBhcmdz
KVxuIiBcCisgICAgIntcbiIgXAorICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAi
XG4iIFwKKyAgICAiICAgIHRyeSB7XG4iIFwKKyAgICAiICAgICAgICB2YXIgbWV0aG9kID0gb2Jq
ZWN0W2tleV07XG4iIFwKKyAgICAiICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gXCJ1bmRl
ZmluZWRcIilcbiIgXAorICAgICIgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7
XG4iIFwKKyAgICAiICAgICAgICB2YXIgcmVzdWx0ID0gbWV0aG9kLkBhcHBseShvYmplY3QsIGFy
Z3MpO1xuIiBcCisgICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xu
IiBcCisgICAgIiAgICB9XG4iIFwKKyAgICAiICAgIGNhdGNoKGVycm9yKSB7XG4iIFwKKyAgICAi
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuIiBcCisgICAgIiAgICB9XG4i
IFwKKyAgICAifSlcbiIgXAorOworCisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9S
KGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKK0pTQzo6RnVuY3Rpb25F
eGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCit7XAorICAgIEpT
Vk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKTsgXAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25z
KCkuZ3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUo
KS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmd1YXJkZWRJbnRlcm5h
bEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSk7IFwKK30KK1dFQkNPUkVfRk9S
RUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9H
RU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCisKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorIyMjIEVuZCBGaWxlOiBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRp
bnMuY3BwCisKKyMjIyBCZWdpbiBGaWxlOiBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNX
cmFwcGVyLmgKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJ
dCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisv
LyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9n
ZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaWZuZGVmIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5C
dWlsdGluc1dyYXBwZXJfaAorI2RlZmluZSBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNX
cmFwcGVyX2gKKworI2luY2x1ZGUgIkd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucy5oIgor
I2luY2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oPgorI2luY2x1ZGUgPGJ5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg+CisjaW5jbHVkZSA8cnVudGltZS9JZGVudGlmaWVy
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0Z1bmN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlciA6IHByaXZh
dGUgSlNDOjpXZWFrSGFuZGxlT3duZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IEd1YXJkZWRJ
bnRlcm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIoSlNDOjpWTSogdm0pCisgICAgICAgIDogbV92
bSgqdm0pCisgICAgICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JV
SUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX0JVSUxUSU5fTkFNRVMpCisjZGVmaW5lIElO
SVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0
aCkgLCBtXyMjbmFtZSMjU291cmNlKEpTQzo6bWFrZVNvdXJjZShTdHJpbmdJbXBsOjpjcmVhdGVG
cm9tTGl0ZXJhbChzXyMjbmFtZSwgbGVuZ3RoKSkpCisgICAgICAgIFdFQkNPUkVfRk9SRUFDSF9H
VUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShJTklUSUFMSVpFX0JVSUxUSU5fU09V
UkNFX01FTUJFUlMpCisjdW5kZWYgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCisg
ICAgeworICAgIH0KKworI2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBm
dW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorICAgIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXAorICAgIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgbmFt
ZSMjU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQorICAgIFdFQkNP
UkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShFWFBPU0VfQlVJ
TFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUworCisg
ICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9GVU5DVElP
Tl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKQorCisgICAgdm9pZCBl
eHBvcnROYW1lcygpOworCitwcml2YXRlOgorICAgIEpTQzo6Vk0mIG1fdm07CisKKyAgICBXRUJD
T1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUo
REVDTEFSRV9CVUlMVElOX05BTUVTKQorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0Vf
TUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorICAgIEpTQzo6U291cmNlQ29k
ZSBtXyMjbmFtZSMjU291cmNlO1wKKyAgICBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZT4gbV8jI25hbWUjI0V4ZWN1dGFibGU7CisgICAgV0VCQ09SRV9GT1JFQUNIX0dV
QVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0Vf
TUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKKworfTsKKwor
I2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxl
bmd0aCkgXAoraW5saW5lIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEd1YXJkZWRJ
bnRlcm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4ZWN1dGFibGUoKSBcCit7XAor
ICAgIGlmICghbV8jI25hbWUjI0V4ZWN1dGFibGUpXAorICAgICAgICBtXyMjbmFtZSMjRXhlY3V0
YWJsZSA9IEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPihKU0M6OmNy
ZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fdm0sIG1fIyNuYW1lIyNTb3VyY2UsIGZ1bmN0aW9uTmFt
ZSMjUHVibGljTmFtZSgpLCBzXyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0eSksIHRoaXMsICZtXyMj
bmFtZSMjRXhlY3V0YWJsZSk7XAorICAgIHJldHVybiBtXyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQo
KTtcCit9CitXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0NP
REUoREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fRVhF
Q1VUQUJMRVMKKworaW5saW5lIHZvaWQgR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3Jh
cHBlcjo6ZXhwb3J0TmFtZXMoKQoreworI2RlZmluZSBFWFBPUlRfRlVOQ1RJT05fTkFNRShuYW1l
KSBtX3ZtLnByb3BlcnR5TmFtZXMtPmFwcGVuZEV4dGVybmFsTmFtZShuYW1lIyNQdWJsaWNOYW1l
KCksIG5hbWUjI1ByaXZhdGVOYW1lKCkpOworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5U
RVJOQUxCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShFWFBPUlRfRlVOQ1RJT05fTkFNRSkK
KyN1bmRlZiBFWFBPUlRfRlVOQ1RJT05fTkFNRQorfQorCitjbGFzcyBHdWFyZGVkSW50ZXJuYWxC
dWlsdGluQnVpbHRpbkZ1bmN0aW9ucyB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgR3VhcmRlZElu
dGVybmFsQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnMoSlNDOjpWTSYgdm0pIDogbV92bSh2bSkgeyB9
CisKKyAgICB2b2lkIGluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYpOworICAgIHZvaWQgdmlzaXQo
SlNDOjpTbG90VmlzaXRvciYpOworCitwdWJsaWM6CisgICAgSlNDOjpWTSYgbV92bTsKKworI2Rl
ZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMoZnVuY3Rpb25OYW1lKSBcCisgICAg
SlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU0Z1bmN0aW9uPiBtXyMjZnVuY3Rpb25OYW1lIyNGdW5j
dGlvbjsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElO
X0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERF
Q0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworfTsKKworaW5saW5lIHZvaWQgR3VhcmRlZElu
dGVybmFsQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnM6OmluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQoreworI2RlZmluZSBFWFBPUlRfRlVOQ1RJT04oY29kZU5hbWUsIGZ1bmN0
aW9uTmFtZSwgbGVuZ3RoKVwKKyAgICBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbi5zZXQobV92
bSwgJmdsb2JhbE9iamVjdCwgSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24o
bV92bSwgY29kZU5hbWUjI0dlbmVyYXRvcihtX3ZtKSwgJmdsb2JhbE9iamVjdCkpOworICAgIFdF
QkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShFWFBPUlRf
RlVOQ1RJT04pCisjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OCit9CisKK2lubGluZSB2b2lkIEd1YXJk
ZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zOjp2aXNpdChKU0M6OlNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworI2RlZmluZSBWSVNJVF9GVU5DVElPTihuYW1lKSB2aXNpdG9yLmFwcGVu
ZCgmbV8jI25hbWUjI0Z1bmN0aW9uKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVS
TkFMQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoVklTSVRfRlVOQ1RJT04pCisjdW5kZWYg
VklTSVRfRlVOQ1RJT04KK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyX2gKKworIyMjIEVuZCBGaWxl
OiBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyLmgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNv
cmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLVVuZ3VhcmRlZEJ1
aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4ZWUyZGFiYmFjOWMxYTZiNjU5
YWIxMzJiMGE2YzQ3MWU2M2U0NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLVVuZ3VhcmRlZEJ1
aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0wLDAgKzEsMzE4IEBACisjIyMgQmVnaW4gRmls
ZTogVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmgKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUg
Q2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8g
Tk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEph
dmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaWZuZGVmIFVu
Z3VhcmRlZEJ1aWx0aW5CdWlsdGluc19oCisjZGVmaW5lIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlu
c19oCisKKyNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4KKworbmFtZXNwYWNlIEpT
QyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworLyogVW5ndWFyZGVkQnVpbHRpbiAqLworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfdW5ndWFyZGVk
QnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX3Vu
Z3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUxlbmd0aDsKK2V4dGVybiBj
b25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc191bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0
cmVhbUxvY2tlZENvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfdW5n
dWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZTsKK2V4dGVybiBjb25zdCBpbnQg
c191bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlTGVuZ3RoOworZXh0ZXJu
IGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3VuZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFk
YWJsZVN0cmVhbUNvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfdW5n
dWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlOworZXh0ZXJuIGNvbnN0IGludCBz
X3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUxlbmd0aDsKK2V4dGVybiBj
b25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc191bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9r
ZU9yTm9vcENvZGVDb25zdHJ1Y3RBYmlsaXR5OworCisjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9V
TkdVQVJERURCVUlMVElOX0JVSUxUSU5fREFUQShtYWNybykgXAorICAgIG1hY3JvKGlzUmVhZGFi
bGVTdHJlYW1Mb2NrZWQsIHVuZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkLCAx
KSBcCisgICAgbWFjcm8oY2FuY2VsUmVhZGFibGVTdHJlYW0sIHVuZ3VhcmRlZEJ1aWx0aW5DYW5j
ZWxSZWFkYWJsZVN0cmVhbSwgMikgXAorICAgIG1hY3JvKHByb21pc2VJbnZva2VPck5vb3AsIHVu
Z3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wLCAzKSBcCisKKyNkZWZpbmUgV0VCQ09S
RV9CVUlMVElOX1VOR1VBUkRFREJVSUxUSU5fSVNSRUFEQUJMRVNUUkVBTUxPQ0tFRCAxCisjZGVm
aW5lIFdFQkNPUkVfQlVJTFRJTl9VTkdVQVJERURCVUlMVElOX0NBTkNFTFJFQURBQkxFU1RSRUFN
IDEKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX1VOR1VBUkRFREJVSUxUSU5fUFJPTUlTRUlOVk9L
RU9STk9PUCAxCisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJ
TFRJTl9DT0RFKG1hY3JvKSBcCisgICAgbWFjcm8odW5ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVT
dHJlYW1Mb2NrZWRDb2RlLCBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkLCBzX3VuZ3VhcmRlZEJ1aWx0
aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUxlbmd0aCkgXAorICAgIG1hY3JvKHVuZ3VhcmRl
ZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGUsIGNhbmNlbFJlYWRhYmxlU3RyZWFtLCBz
X3VuZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGVMZW5ndGgpIFwKKyAgICBt
YWNybyh1bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGUsIHByb21pc2VJbnZv
a2VPck5vb3AsIHNfdW5ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlTGVuZ3Ro
KSBcCisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9G
VU5DVElPTl9OQU1FKG1hY3JvKSBcCisgICAgbWFjcm8oY2FuY2VsUmVhZGFibGVTdHJlYW0pIFwK
KyAgICBtYWNybyhpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKSBcCisgICAgbWFjcm8ocHJvbWlzZUlu
dm9rZU9yTm9vcCkgXAorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5h
bWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorICAgIEpTQzo6RnVuY3Rpb25FeGVj
dXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKworV0VCQ09SRV9GT1JFQUNI
X1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1Ip
CisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIFdFQkNPUkVfQlVJ
TFRJTl9VTkdVQVJERURCVUlMVElOX0VYSVNUUyhvYmplY3QsIGZ1bmMpIGRlZmluZWQgV0VCQ09S
RV9CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc19oCisKKyMjIyBFbmQgRmls
ZTogVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmgKKworIyMjIEJlZ2luIEZpbGU6IFVuZ3VhcmRl
ZEJ1aWx0aW5CdWlsdGlucy5jcHAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ2Fub24gSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQg
VEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQg
ZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmgiCisKKyNpbmNsdWRlICJXZWJD
b3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSA8cnVudGltZS9FeGVjdXRhYmxlLmg+CisjaW5j
bHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlND
ZWxsSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oPgorI2lu
Y2x1ZGUgPHJ1bnRpbWUvVk0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBKU0M6
OkNvbnN0cnVjdEFiaWxpdHkgc191bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tl
ZENvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25z
dHJ1Y3Q7Citjb25zdCBpbnQgc191bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tl
ZENvZGVMZW5ndGggPSA3MTsKK2NvbnN0IGNoYXIqIHNfdW5ndWFyZGVkQnVpbHRpbklzUmVhZGFi
bGVTdHJlYW1Mb2NrZWRDb2RlID0KKyAgICAiKGZ1bmN0aW9uIChzdHJlYW0pXG4iIFwKKyAgICAi
e1xuIiBcCisgICAgIiAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAg
ICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjtcbiIgXAorICAgICJ9KVxuIiBcCis7CisKK2NvbnN0
IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3VuZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0
cmVhbUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RD
b25zdHJ1Y3Q7Citjb25zdCBpbnQgc191bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJl
YW1Db2RlTGVuZ3RoID0gNDAyOworY29uc3QgY2hhciogc191bmd1YXJkZWRCdWlsdGluQ2FuY2Vs
UmVhZGFibGVTdHJlYW1Db2RlID0KKyAgICAiKGZ1bmN0aW9uIChzdHJlYW0sIHJlYXNvbilcbiIg
XAorICAgICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBc
CisgICAgIiAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xvc2VkKVxu
IiBcCisgICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuIiBcCisgICAgIiAg
ICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZClcbiIgXAorICAg
ICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChzdHJlYW0uQHN0b3JlZEVycm9yKTtcbiIg
XAorICAgICIgICAgc3RyZWFtLkBxdWV1ZSA9IFtdO1xuIiBcCisgICAgIiAgICBAZmluaXNoQ2xv
c2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7XG4iIFwKKyAgICAiICAgIHJldHVybiBAcHJvbWlz
ZUludm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsIFwiY2FuY2VsXCIsIFtyZWFz
b25dKS50aGVuKGZ1bmN0aW9uKCkgeyB9KTtcbiIgXAorICAgICJ9KVxuIiBcCis7CisKK2NvbnN0
IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JO
b29wQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENv
bnN0cnVjdDsKK2NvbnN0IGludCBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29w
Q29kZUxlbmd0aCA9IDMzODsKK2NvbnN0IGNoYXIqIHNfdW5ndWFyZGVkQnVpbHRpblByb21pc2VJ
bnZva2VPck5vb3BDb2RlID0KKyAgICAiKGZ1bmN0aW9uIChvYmplY3QsIGtleSwgYXJncylcbiIg
XAorICAgICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBc
CisgICAgIiAgICB0cnkge1xuIiBcCisgICAgIiAgICAgICAgdmFyIG1ldGhvZCA9IG9iamVjdFtr
ZXldO1xuIiBcCisgICAgIiAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QgPT09IFwidW5kZWZpbmVk
XCIpXG4iIFwKKyAgICAiICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuIiBc
CisgICAgIiAgICAgICAgdmFyIHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBhcmdzKTtc
biIgXAorICAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcbiIgXAor
ICAgICIgICAgfVxuIiBcCisgICAgIiAgICBjYXRjaChlcnJvcikge1xuIiBcCisgICAgIiAgICAg
ICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiIgXAorICAgICIgICAgfVxuIiBcCisg
ICAgIn0pXG4iIFwKKzsKKworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2Rl
TmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCitKU0M6OkZ1bmN0aW9uRXhlY3V0
YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAore1wKKyAgICBKU1ZNQ2xp
ZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xp
ZW50RGF0YSk7IFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLnVu
Z3VhcmRlZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0s
IGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS51bmd1YXJkZWRCdWlsdGluQnVpbHRpbnMo
KS5jb2RlTmFtZSMjU291cmNlKCkpOyBcCit9CitXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJ
TFRJTl9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFRklO
RV9CVUlMVElOX0dFTkVSQVRPUgorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyMjIyBFbmQg
RmlsZTogVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmNwcAorCisjIyMgQmVnaW4gRmlsZTogVW5n
dWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlci5oCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1
IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERP
IE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBK
YXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lmbmRlZiBV
bmd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyX2gKKyNkZWZpbmUgVW5ndWFyZGVkQnVpbHRp
bkJ1aWx0aW5zV3JhcHBlcl9oCisKKyNpbmNsdWRlICJVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnMu
aCIKKyNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4KKyNpbmNsdWRlIDxieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSWRlbnRp
Zmllci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIgOiBwcml2YXRl
IEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBVbmd1YXJkZWRC
dWlsdGluQnVpbHRpbnNXcmFwcGVyKEpTQzo6Vk0qIHZtKQorICAgICAgICA6IG1fdm0oKnZtKQor
ICAgICAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9O
X05BTUUoSU5JVElBTElaRV9CVUlMVElOX05BTUVTKQorI2RlZmluZSBJTklUSUFMSVpFX0JVSUxU
SU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpICwgbV8jI25hbWUj
I1NvdXJjZShKU0M6Om1ha2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc18j
I25hbWUsIGxlbmd0aCkpKQorICAgICAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJ
Tl9CVUlMVElOX0NPREUoSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVm
IElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworICAgIHsKKyAgICB9CisKKyNkZWZp
bmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgp
IFwKKyAgICBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxl
KCk7IFwKKyAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KKyAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVE
QlVJTFRJTl9CVUlMVElOX0NPREUoRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYg
RVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMKKworICAgIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJE
RURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklF
Ul9BQ0NFU1NPUikKKworICAgIHZvaWQgZXhwb3J0TmFtZXMoKTsKKworcHJpdmF0ZToKKyAgICBK
U0M6OlZNJiBtX3ZtOworCisgICAgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJ
TFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FUykKKworI2RlZmluZSBERUNM
QVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwK
KyAgICBKU0M6OlNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJjZTtcCisgICAgSlNDOjpXZWFrPEpT
Qzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVjdXRhYmxlOworICAg
IFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShERUNMQVJFX0JV
SUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1C
RVJTCisKK307CisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVu
Y3Rpb25OYW1lLCBsZW5ndGgpIFwKK2lubGluZSBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyOjpuYW1lIyNFeGVjdXRhYmxlKCkg
XAore1wKKyAgICBpZiAoIW1fIyNuYW1lIyNFeGVjdXRhYmxlKVwKKyAgICAgICAgbV8jI25hbWUj
I0V4ZWN1dGFibGUgPSBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4o
SlNDOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShtX3ZtLCBtXyMjbmFtZSMjU291cmNlLCBmdW5j
dGlvbk5hbWUjI1B1YmxpY05hbWUoKSwgc18jI25hbWUjI0NvbnN0cnVjdEFiaWxpdHkpLCB0aGlz
LCAmbV8jI25hbWUjI0V4ZWN1dGFibGUpO1wKKyAgICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFi
bGUuZ2V0KCk7XAorfQorV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9D
T0RFKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIERFRklORV9CVUlMVElOX0VY
RUNVVEFCTEVTCisKK2lubGluZSB2b2lkIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXI6
OmV4cG9ydE5hbWVzKCkKK3sKKyNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9OX05BTUUobmFtZSkgbV92
bS5wcm9wZXJ0eU5hbWVzLT5hcHBlbmRFeHRlcm5hbE5hbWUobmFtZSMjUHVibGljTmFtZSgpLCBu
YW1lIyNQcml2YXRlTmFtZSgpKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJ
Tl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoRVhQT1JUX0ZVTkNUSU9OX05BTUUpCisjdW5kZWYgRVhQ
T1JUX0ZVTkNUSU9OX05BTUUKK30KKworY2xhc3MgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5GdW5j
dGlvbnMgeworcHVibGljOgorICAgIGV4cGxpY2l0IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluRnVu
Y3Rpb25zKEpTQzo6Vk0mIHZtKSA6IG1fdm0odm0pIHsgfQorCisgICAgdm9pZCBpbml0KEpTQzo6
SlNHbG9iYWxPYmplY3QmKTsKKyAgICB2b2lkIHZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImKTsKKwor
cHVibGljOgorICAgIEpTQzo6Vk0mIG1fdm07CisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NP
VVJDRV9NRU1CRVJTKGZ1bmN0aW9uTmFtZSkgXAorICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6
SlNGdW5jdGlvbj4gbV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb247CisgICAgV0VCQ09SRV9GT1JF
QUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJ
Tl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMK
K307CisKK2lubGluZSB2b2lkIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zOjppbml0
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyNkZWZpbmUgRVhQT1JUX0ZV
TkNUSU9OKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aClcCisgICAgbV8jI2Z1bmN0aW9u
TmFtZSMjRnVuY3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmplY3QsIEpTQzo6SlNGdW5jdGlvbjo6
Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKG1fdm0sIGNvZGVOYW1lIyNHZW5lcmF0b3IobV92bSksICZn
bG9iYWxPYmplY3QpKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlM
VElOX0NPREUoRVhQT1JUX0ZVTkNUSU9OKQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTgorfQorCitp
bmxpbmUgdm9pZCBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9uczo6dmlzaXQoSlNDOjpT
bG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyNkZWZpbmUgVklTSVRfRlVOQ1RJT04obmFtZSkgdmlz
aXRvci5hcHBlbmQoJm1fIyNuYW1lIyNGdW5jdGlvbik7CisgICAgV0VCQ09SRV9GT1JFQUNIX1VO
R1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKFZJU0lUX0ZVTkNUSU9OKQorI3Vu
ZGVmIFZJU0lUX0ZVTkNUSU9OCit9CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9oCisKKyMjIyBFbmQgRmlsZTog
VW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLXhtbENh
c2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS14bWxDYXNpbmdUZXN0LVNlcGFyYXRl
LmpzLXJlc3VsdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjhmYzZmYzZmYmY4NWVkZDdiOGQzYzg4ZWM2ZDIyNjY3
ZTFlNzdkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
dGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS14bWxDYXNpbmdUZXN0LVNlcGFyYXRlLmpz
LXJlc3VsdApAQCAtMCwwICsxLDMxOCBAQAorIyMjIEJlZ2luIEZpbGU6IHhtbENhc2luZ1Rlc3RC
dWlsdGlucy5oCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4g
SXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgor
Ly8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
Z2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lmbmRlZiB4bWxDYXNpbmdUZXN0QnVpbHRpbnNf
aAorI2RlZmluZSB4bWxDYXNpbmdUZXN0QnVpbHRpbnNfaAorCisjaW5jbHVkZSA8YnVpbHRpbnMv
QnVpbHRpblV0aWxzLmg+CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRnVuY3Rpb25FeGVjdXRh
YmxlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8qIHhtbENhc2luZ1Rlc3QgKi8KK2V4
dGVybiBjb25zdCBjaGFyKiBzX3htbENhc2luZ1Rlc3RYTUxDYXNpbmdUZXN0Q29kZTsKK2V4dGVy
biBjb25zdCBpbnQgc194bWxDYXNpbmdUZXN0WE1MQ2FzaW5nVGVzdENvZGVMZW5ndGg7CitleHRl
cm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfeG1sQ2FzaW5nVGVzdFhNTENhc2luZ1Rl
c3RDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX3htbENhc2luZ1Rl
c3RDc3NDYXNpbmdUZXN0Q29kZTsKK2V4dGVybiBjb25zdCBpbnQgc194bWxDYXNpbmdUZXN0Q3Nz
Q2FzaW5nVGVzdENvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
IHNfeG1sQ2FzaW5nVGVzdENzc0Nhc2luZ1Rlc3RDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVy
biBjb25zdCBjaGFyKiBzX3htbENhc2luZ1Rlc3RVcmxDYXNpbmdUZXN0Q29kZTsKK2V4dGVybiBj
b25zdCBpbnQgc194bWxDYXNpbmdUZXN0VXJsQ2FzaW5nVGVzdENvZGVMZW5ndGg7CitleHRlcm4g
Y29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfeG1sQ2FzaW5nVGVzdFVybENhc2luZ1Rlc3RD
b2RlQ29uc3RydWN0QWJpbGl0eTsKKworI2RlZmluZSBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5H
VEVTVF9CVUlMVElOX0RBVEEobWFjcm8pIFwKKyAgICBtYWNybyh4bWxDYXNpbmdUZXN0LCB4bWxD
YXNpbmdUZXN0WE1MQ2FzaW5nVGVzdCwgMSkgXAorICAgIG1hY3JvKGNzc0Nhc2luZ1Rlc3QsIHht
bENhc2luZ1Rlc3RDc3NDYXNpbmdUZXN0LCAyKSBcCisgICAgbWFjcm8odXJsQ2FzaW5nVGVzdCwg
eG1sQ2FzaW5nVGVzdFVybENhc2luZ1Rlc3QsIDMpIFwKKworI2RlZmluZSBXRUJDT1JFX0JVSUxU
SU5fWE1MQ0FTSU5HVEVTVF9YTUxDQVNJTkdURVNUIDEKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElO
X1hNTENBU0lOR1RFU1RfQ1NTQ0FTSU5HVEVTVCAxCisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9Y
TUxDQVNJTkdURVNUX1VSTENBU0lOR1RFU1QgMQorCisjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9Y
TUxDQVNJTkdURVNUX0JVSUxUSU5fQ09ERShtYWNybykgXAorICAgIG1hY3JvKHhtbENhc2luZ1Rl
c3RYTUxDYXNpbmdUZXN0Q29kZSwgeG1sQ2FzaW5nVGVzdCwgc194bWxDYXNpbmdUZXN0WE1MQ2Fz
aW5nVGVzdENvZGVMZW5ndGgpIFwKKyAgICBtYWNybyh4bWxDYXNpbmdUZXN0Q3NzQ2FzaW5nVGVz
dENvZGUsIGNzc0Nhc2luZ1Rlc3QsIHNfeG1sQ2FzaW5nVGVzdENzc0Nhc2luZ1Rlc3RDb2RlTGVu
Z3RoKSBcCisgICAgbWFjcm8oeG1sQ2FzaW5nVGVzdFVybENhc2luZ1Rlc3RDb2RlLCB1cmxDYXNp
bmdUZXN0LCBzX3htbENhc2luZ1Rlc3RVcmxDYXNpbmdUZXN0Q29kZUxlbmd0aCkgXAorCisjZGVm
aW5lIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fRlVOQ1RJT05fTkFNRSht
YWNybykgXAorICAgIG1hY3JvKGNzc0Nhc2luZ1Rlc3QpIFwKKyAgICBtYWNybyh1cmxDYXNpbmdU
ZXN0KSBcCisgICAgbWFjcm8oeG1sQ2FzaW5nVGVzdCkgXAorCisjZGVmaW5lIERFQ0xBUkVfQlVJ
TFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAor
ICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0m
KTsKKworV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKERFQ0xBUkVf
QlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisj
ZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9YTUxDQVNJTkdURVNUX0VYSVNUUyhvYmplY3QsIGZ1bmMp
IGRlZmluZWQgV0VCQ09SRV9CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIHhtbENhc2luZ1Rlc3RCdWlsdGluc19oCisK
KyMjIyBFbmQgRmlsZTogeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zLmgKKworIyMjIEJlZ2luIEZpbGU6
IHhtbENhc2luZ1Rlc3RCdWlsdGlucy5jcHAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ2Fu
b24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9U
IEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFT
Y3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAieG1sQ2FzaW5nVGVzdEJ1aWx0aW5zLmgiCisKKyNpbmNsdWRlICJX
ZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSA8cnVudGltZS9FeGVjdXRhYmxlLmg+Cisj
aW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUv
SlNDZWxsSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oPgor
I2luY2x1ZGUgPHJ1bnRpbWUvVk0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBK
U0M6OkNvbnN0cnVjdEFiaWxpdHkgc194bWxDYXNpbmdUZXN0WE1MQ2FzaW5nVGVzdENvZGVDb25z
dHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citj
b25zdCBpbnQgc194bWxDYXNpbmdUZXN0WE1MQ2FzaW5nVGVzdENvZGVMZW5ndGggPSA3MTsKK2Nv
bnN0IGNoYXIqIHNfeG1sQ2FzaW5nVGVzdFhNTENhc2luZ1Rlc3RDb2RlID0KKyAgICAiKGZ1bmN0
aW9uIChzdHJlYW0pXG4iIFwKKyAgICAie1xuIiBcCisgICAgIiAgIFwidXNlIHN0cmljdFwiO1xu
IiBcCisgICAgIlxuIiBcCisgICAgIiAgICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjtcbiIgXAor
ICAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3htbENhc2lu
Z1Rlc3RDc3NDYXNpbmdUZXN0Q29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFi
aWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX3htbENhc2luZ1Rlc3RDc3NDYXNp
bmdUZXN0Q29kZUxlbmd0aCA9IDQwMjsKK2NvbnN0IGNoYXIqIHNfeG1sQ2FzaW5nVGVzdENzc0Nh
c2luZ1Rlc3RDb2RlID0KKyAgICAiKGZ1bmN0aW9uIChzdHJlYW0sIHJlYXNvbilcbiIgXAorICAg
ICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAg
IiAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xvc2VkKVxuIiBcCisg
ICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuIiBcCisgICAgIiAgICBpZiAo
c3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZClcbiIgXAorICAgICIgICAg
ICAgIHJldHVybiBQcm9taXNlLnJlamVjdChzdHJlYW0uQHN0b3JlZEVycm9yKTtcbiIgXAorICAg
ICIgICAgc3RyZWFtLkBxdWV1ZSA9IFtdO1xuIiBcCisgICAgIiAgICBAZmluaXNoQ2xvc2luZ1Jl
YWRhYmxlU3RyZWFtKHN0cmVhbSk7XG4iIFwKKyAgICAiICAgIHJldHVybiBAcHJvbWlzZUludm9r
ZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsIFwiY2FuY2VsXCIsIFtyZWFzb25dKS50
aGVuKGZ1bmN0aW9uKCkgeyB9KTtcbiIgXAorICAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6
Q29uc3RydWN0QWJpbGl0eSBzX3htbENhc2luZ1Rlc3RVcmxDYXNpbmdUZXN0Q29kZUNvbnN0cnVj
dEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0
IGludCBzX3htbENhc2luZ1Rlc3RVcmxDYXNpbmdUZXN0Q29kZUxlbmd0aCA9IDMzODsKK2NvbnN0
IGNoYXIqIHNfeG1sQ2FzaW5nVGVzdFVybENhc2luZ1Rlc3RDb2RlID0KKyAgICAiKGZ1bmN0aW9u
IChvYmplY3QsIGtleSwgYXJncylcbiIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0
cmljdFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICB0cnkge1xuIiBcCisgICAgIiAgICAg
ICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldO1xuIiBcCisgICAgIiAgICAgICAgaWYgKHR5cGVv
ZiBtZXRob2QgPT09IFwidW5kZWZpbmVkXCIpXG4iIFwKKyAgICAiICAgICAgICAgICAgcmV0dXJu
IFByb21pc2UucmVzb2x2ZSgpO1xuIiBcCisgICAgIiAgICAgICAgdmFyIHJlc3VsdCA9IG1ldGhv
ZC5AYXBwbHkob2JqZWN0LCBhcmdzKTtcbiIgXAorICAgICIgICAgICAgIHJldHVybiBQcm9taXNl
LnJlc29sdmUocmVzdWx0KTtcbiIgXAorICAgICIgICAgfVxuIiBcCisgICAgIiAgICBjYXRjaChl
cnJvcikge1xuIiBcCisgICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtc
biIgXAorICAgICIgICAgfVxuIiBcCisgICAgIn0pXG4iIFwKKzsKKworCisjZGVmaW5lIERFRklO
RV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50
KSBcCitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZN
JiB2bSkgXAore1wKKyAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0
PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFwKKyAgICByZXR1cm4gY2xpZW50RGF0
YS0+YnVpbHRpbkZ1bmN0aW9ucygpLnhtbENhc2luZ1Rlc3RCdWlsdGlucygpLmNvZGVOYW1lIyNF
eGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS54bWxD
YXNpbmdUZXN0QnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCkpOyBcCit9CitXRUJDT1JFX0ZP
UkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9S
KQorI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgorCisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKyMjIyBFbmQgRmlsZTogeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zLmNwcAorCisjIyMgQmVn
aW4gRmlsZTogeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlci5oCisvKgorICogQ29weXJpZ2h0
IChjKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICov
CisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0
ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDog
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKwor
I2lmbmRlZiB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyX2gKKyNkZWZpbmUgeG1sQ2FzaW5n
VGVzdEJ1aWx0aW5zV3JhcHBlcl9oCisKKyNpbmNsdWRlICJ4bWxDYXNpbmdUZXN0QnVpbHRpbnMu
aCIKKyNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4KKyNpbmNsdWRlIDxieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSWRlbnRp
Zmllci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXIgOiBwcml2YXRlIEpT
Qzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCB4bWxDYXNpbmdUZXN0
QnVpbHRpbnNXcmFwcGVyKEpTQzo6Vk0qIHZtKQorICAgICAgICA6IG1fdm0oKnZtKQorICAgICAg
ICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5J
VElBTElaRV9CVUlMVElOX05BTUVTKQorI2RlZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNF
X01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpICwgbV8jI25hbWUjI1NvdXJjZShK
U0M6Om1ha2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc18jI25hbWUsIGxl
bmd0aCkpKQorICAgICAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0NP
REUoSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIElOSVRJQUxJWkVf
QlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworICAgIHsKKyAgICB9CisKKyNkZWZpbmUgRVhQT1NFX0JV
SUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKKyAgICBKU0M6
OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFwKKyAgICBj
b25zdCBKU0M6OlNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fIyNu
YW1lIyNTb3VyY2U7IH0KKyAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElO
X0NPREUoRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5f
RVhFQ1VUQUJMRVMKKworICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5f
RlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUikKKworICAg
IHZvaWQgZXhwb3J0TmFtZXMoKTsKKworcHJpdmF0ZToKKyAgICBKU0M6OlZNJiBtX3ZtOworCisg
ICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERF
Q0xBUkVfQlVJTFRJTl9OQU1FUykKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01F
TUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKKyAgICBKU0M6OlNvdXJjZUNvZGUg
bV8jI25hbWUjI1NvdXJjZTtcCisgICAgSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVjdXRhYmxlOworICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxD
QVNJTkdURVNUX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisj
dW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCisKK307CisKKyNkZWZpbmUgREVG
SU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKK2lu
bGluZSBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB4bWxDYXNpbmdUZXN0QnVpbHRp
bnNXcmFwcGVyOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAore1wKKyAgICBpZiAoIW1fIyNuYW1lIyNF
eGVjdXRhYmxlKVwKKyAgICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUgPSBKU0M6OldlYWs8SlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4oSlNDOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJs
ZShtX3ZtLCBtXyMjbmFtZSMjU291cmNlLCBmdW5jdGlvbk5hbWUjI1B1YmxpY05hbWUoKSwgc18j
I25hbWUjI0NvbnN0cnVjdEFiaWxpdHkpLCB0aGlzLCAmbV8jI25hbWUjI0V4ZWN1dGFibGUpO1wK
KyAgICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7XAorfQorV0VCQ09SRV9GT1JF
QUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVT
KQorI3VuZGVmIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTCisKK2lubGluZSB2b2lkIHhtbENh
c2luZ1Rlc3RCdWlsdGluc1dyYXBwZXI6OmV4cG9ydE5hbWVzKCkKK3sKKyNkZWZpbmUgRVhQT1JU
X0ZVTkNUSU9OX05BTUUobmFtZSkgbV92bS5wcm9wZXJ0eU5hbWVzLT5hcHBlbmRFeHRlcm5hbE5h
bWUobmFtZSMjUHVibGljTmFtZSgpLCBuYW1lIyNQcml2YXRlTmFtZSgpKTsKKyAgICBXRUJDT1JF
X0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoRVhQT1JUX0ZVTkNU
SU9OX05BTUUpCisjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OX05BTUUKK30KKworY2xhc3MgeG1sQ2Fz
aW5nVGVzdEJ1aWx0aW5GdW5jdGlvbnMgeworcHVibGljOgorICAgIGV4cGxpY2l0IHhtbENhc2lu
Z1Rlc3RCdWlsdGluRnVuY3Rpb25zKEpTQzo6Vk0mIHZtKSA6IG1fdm0odm0pIHsgfQorCisgICAg
dm9pZCBpbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKKyAgICB2b2lkIHZpc2l0KEpTQzo6U2xv
dFZpc2l0b3ImKTsKKworcHVibGljOgorICAgIEpTQzo6Vk0mIG1fdm07CisKKyNkZWZpbmUgREVD
TEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKGZ1bmN0aW9uTmFtZSkgXAorICAgIEpTQzo6V3Jp
dGVCYXJyaWVyPEpTQzo6SlNGdW5jdGlvbj4gbV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb247Cisg
ICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERF
Q0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09V
UkNFX01FTUJFUlMKK307CisKK2lubGluZSB2b2lkIHhtbENhc2luZ1Rlc3RCdWlsdGluRnVuY3Rp
b25zOjppbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyNkZWZpbmUg
RVhQT1JUX0ZVTkNUSU9OKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aClcCisgICAgbV8j
I2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmplY3QsIEpTQzo6SlNG
dW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKG1fdm0sIGNvZGVOYW1lIyNHZW5lcmF0b3Io
bV92bSksICZnbG9iYWxPYmplY3QpKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVT
VF9CVUlMVElOX0NPREUoRVhQT1JUX0ZVTkNUSU9OKQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTgor
fQorCitpbmxpbmUgdm9pZCB4bWxDYXNpbmdUZXN0QnVpbHRpbkZ1bmN0aW9uczo6dmlzaXQoSlND
OjpTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyNkZWZpbmUgVklTSVRfRlVOQ1RJT04obmFtZSkg
dmlzaXRvci5hcHBlbmQoJm1fIyNuYW1lIyNGdW5jdGlvbik7CisgICAgV0VCQ09SRV9GT1JFQUNI
X1hNTENBU0lOR1RFU1RfQlVJTFRJTl9GVU5DVElPTl9OQU1FKFZJU0lUX0ZVTkNUSU9OKQorI3Vu
ZGVmIFZJU0lUX0ZVTkNUSU9OCit9CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8geG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcl9oCisKKyMjIyBFbmQgRmlsZTogeG1s
Q2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvVXBkYXRlQ29udGVudHMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVXBkYXRlQ29u
dGVudHMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyZjk1MzJjYjZmYjBhYmFm
NTIwZGFlMDQ4NThhYzkyYTRmYzYyNDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1VwZGF0ZUNvbnRlbnRzLnB5Cisr
KyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotIyEvdXNyL2Jpbi9weXRob24KLQotIyBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
IyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBwdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgotIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQotIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0jIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAotIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
LSMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLQotaW1wb3J0IHN5cwotaW1wb3J0IG9zCi0KLWFzc2VydChsZW4oc3lzLmFy
Z3YpID09IDMpCi0KLWNvbXAgPSBzeXMuYXJndlsxXQotZmlsZW5hbWUgPSBzeXMuYXJndlsyXQot
Ci10ID0gRmFsc2UKLQotaWYgb3MucGF0aC5pc2ZpbGUoZmlsZW5hbWUpOgotICAgIGYgPSBvcGVu
KGZpbGVuYW1lLCAncicpCi0gICAgY29tcGFyYXRvciA9IGYucmVhZCgpCi0gICAgZi5jbG9zZSgp
Ci0gICAgdCA9IFRydWUKLQotaWYgKG5vdCB0IG9yIGNvbXAgIT0gY29tcGFyYXRvcik6Ci0gICAg
ZiA9IG9wZW4oZmlsZW5hbWUsICd3JykKLSAgICBmLndyaXRlKGNvbXApCi0gICAgZi5jbG9zZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0
YWJsZXMuY3BwCmluZGV4IDczZWJlNDc5OTM1ZmNhNzQwOWZkOTMyZjg4OWI2NTg0YmU1OGI2MTQu
LjgxNmI0YTVkMzBiNTIwYjVkMWRmZWFlYWIyZjkzOTRjNjhiZGMwYTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBA
IC00MCw3ICs0MCw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRl
RXhlY3V0YWJsZUludGVybmFsKFZNJiwgY29uc3QgU291cmNlQ29kCiBCdWlsdGluRXhlY3V0YWJs
ZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyhWTSYgdm0pCiAgICAgOiBtX3ZtKHZtKQogI2RlZmluZSBJ
TklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5n
dGgpICwgbV8jI25hbWUjI1NvdXJjZShtYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21M
aXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpKSkKLSAgICBKU0NfRk9SRUFDSF9CVUlMVElOKElOSVRJ
QUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0NP
REUoSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQogI3VuZGVmIEVYUE9TRV9CVUlM
VElOX1NUUklOR1MKIHsKIH0KQEAgLTEzMiw3ICsxMzIsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAogICAgICAg
ICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9IFdlYWs8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+
KGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fIyNuYW1lIyNTb3VyY2UsIG1fdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCksIHNfIyNuYW1l
IyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRhYmxlKTtcCiAgICAg
cmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKIH0KLUpTQ19GT1JFQUNIX0JVSUxU
SU4oREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCitKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUo
REVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCiAjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU09VUkNF
UwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmgKaW5kZXggNmE5ODMyMTdhMGE4ODQ1N2VmMDk4ZmJjYjk1MTIzZDU5YTUyNTE3
NS4uZWM4ZDU3NzA0Yjg3YzU4NGE5MzZkZGU0MTdkNjI5Zjg1N2IzNjU3MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaApAQCAt
NDcsNyArNDcsNyBAQCBwdWJsaWM6CiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMj
RXhlY3V0YWJsZSgpOyBcCiBjb25zdCBTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSB7IHJldHVy
biBtXyMjbmFtZSMjU291cmNlOyB9CiAgICAgCi0gICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihFWFBP
U0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUoRVhQ
T1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCiAjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU09VUkNFUwog
CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZURlZmF1bHRDb25zdHJ1Y3Rv
cihDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwpAQCAtNjIsNyArNjIs
NyBAQCBwcml2YXRlOgogI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFt
ZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXAogICAgIFNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJj
ZTsgXAogICAgIFdlYWs8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVj
dXRhYmxlOwotICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oREVDTEFSRV9CVUlMVElOX1NPVVJDRV9N
RU1CRVJTKQorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fU09V
UkNFX01FTUJFUlMpCiAjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKaW5kZXggNmZhNzhjZWEyODcz
OGMwZjE3NDUxNDdmMDQ5NzNhY2I2Y2E4MzZkOC4uYTIyNWNiZTY3ZDgwZGFhMmZkM2U5OGYxOTA1
MmVjMDk4MThkMjNmOCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9o
YXNoX3RhYmxlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQpA
QCAtMzE5LDcgKzMxOSw3IEBAIHN1YiBvdXRwdXQoKSB7CiAgICAgICAgIGlmICgkdmFsdWVzWyRp
XXsidHlwZSJ9IGVxICJGdW5jdGlvbiIpICB7CiAgICAgICAgICAgICBteSAkdGFibGVIZWFkID0g
JG5hbWU7CiAgICAgICAgICAgICAkdGFibGVIZWFkID1+IHMvVGFibGUkLy87Ci0gICAgICAgICAg
ICBwcmludCAiICNpZiBKU0NfQlVJTFRJTl9FWElTVFMoIiAuIHVjKCR0YWJsZUhlYWQgLiAka2V5
KSAuIilcbiI7CisgICAgICAgICAgICBwcmludCAiICNpZiBKU0NfQlVJTFRJTl9FWElTVFMoIiAu
IHVjKCR0YWJsZUhlYWQpIC4gIiwgIiAuIHVjKCRrZXkpIC4iKVxuIjsKICAgICAgICAgICAgIHBy
aW50ICIgICB7IFwiJGtleVwiLCAoKCRhdHRyc1skaV0pICYgfkZ1bmN0aW9uKSB8IEJ1aWx0aW4s
ICRpbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PEJ1aWx0aW5HZW5lcmF0b3I+KCIg
LiAkdGFibGVIZWFkIC4gdWNmaXJzdCgka2V5KSAuICJDb2RlR2VuZXJhdG9yKSwgKGludHB0cl90
KSRzZWNvbmRWYWx1ZSB9IH0sXG4iOwogICAgICAgICAgICAgcHJpbnQgIiAjZWxzZVxuIgogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMtYnVp
bHRpbnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmZjQxODczZGEyYjY1YTc3MTE0Y2Y1ZDQxZTg3YTRj
MGQzMDYzN2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zCisrKyAvZGV2L251bGwK
QEAgLTEsMzQzICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCi0jIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotIyBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0jIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSMgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0j
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSMgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBv
cnQgYXJncGFyc2UKLWltcG9ydCBmaWxlY21wCi1pbXBvcnQgZm5tYXRjaAotaW1wb3J0IG9zCi1p
bXBvcnQgcmUKLWltcG9ydCBzaHV0aWwKLWltcG9ydCBzeXMKLWltcG9ydCBkYXRldGltZQotaW1w
b3J0IGpzb24KLQotcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQotcGFyc2VyLmFk
ZF9hcmd1bWVudCgnaW5wdXRfZmlsZScsIG5hcmdzPScqJywgaGVscD0nSW5wdXQgSlMgZmlsZXMg
d2hpY2ggYnVpbHRpbnMgZ2VuZXJhdGVkIGZyb20nKQotcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1p
bnB1dC1kaXJlY3RvcnknLCBoZWxwPSdBbGwgSlMgZmlsZXMgd2lsbCBiZSB1c2VkIGFzIGlucHV0
IGZyb20gdGhpcyBkaXJlY3RvcnkuJykKLXBhcnNlci5hZGRfYXJndW1lbnQoJy0tb3V0cHV0Jywg
aGVscD0ncGF0aCB0byBvdXRwdXQgY3BwIG9yIGggZmlsZScpCi1wYXJzZXIuYWRkX2FyZ3VtZW50
KCctLXByZWZpeCcsIGRlZmF1bHQ9J0pTQycsIGhlbHA9J3ByZWZpeCB1c2VkIGZvciBwdWJsaWMg
bWFjcm9zJykKLXBhcnNlci5hZGRfYXJndW1lbnQoJy0tbmFtZXNwYWNlJywgZGVmYXVsdD0nSlND
JywgaGVscD0nQysrIG5hbWVzcGFjZScpCi1hcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi1j
b3B5cmlnaHRUZXh0ID0gIiIiICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki9cbgotIiIiCi0KLWdlbmVyYXRvclN0cmluZyA9ICIvKiBHZW5lcmF0ZWQgYnkgJXMgZG8gbm90
IGhhbmQgZWRpdC4gKi9cbiIgJSBvcy5wYXRoLmJhc2VuYW1lKF9fZmlsZV9fKQotCi1mdW5jdGlv
bkhlYWRSZWdFeHAgPSByZS5jb21waWxlKHIiKD86ZnVuY3Rpb258Y29uc3RydWN0b3IpXHMrXHcr
XHMqXCguKj9cKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCi1mdW5jdGlvbk5hbWVSZWdFeHAgPSBy
ZS5jb21waWxlKHIiKD86ZnVuY3Rpb258Y29uc3RydWN0b3IpXHMrKFx3KylccypcKCIsIHJlLk1V
TFRJTElORSB8IHJlLlMpCi1mdW5jdGlvbklzQ29uc3RydWN0b3JSZWdFeHAgPSByZS5jb21waWxl
KHIiXmNvbnN0cnVjdG9yIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKLWZ1bmN0aW9uUGFyYW1ldGVy
RmluZGVyID0gcmUuY29tcGlsZShyIl4oPzpmdW5jdGlvbnxjb25zdHJ1Y3RvcilccysoPzpcdysp
XHMqXCgoKD86XHMqXHcrKT9ccyooPzpccyosXHMqXHcrKSopP1xzKlwpIiwgcmUuTVVMVElMSU5F
IHwgcmUuUykKLQotbXVsdGlsaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wqLio/
XCpcLyIsIHJlLk1VTFRJTElORSB8IHJlLlMpCi1zaW5nbGVMaW5lQ29tbWVudFJlZ0V4cCA9IHJl
LmNvbXBpbGUociJcL1wvLio/XG4iLCByZS5NVUxUSUxJTkUgfCByZS5TKQotCi1kZWYgZ2V0Q29w
eXJpZ2h0KHNvdXJjZSk6Ci0gICAgY29weXJpZ2h0QmxvY2sgPSBtdWx0aWxpbmVDb21tZW50UmVn
RXhwLmZpbmRhbGwoc291cmNlKVswXQotICAgIGNvcHlyaWdodEJsb2NrID0gY29weXJpZ2h0Qmxv
Y2tbOmNvcHlyaWdodEJsb2NrLmluZGV4KCJSZWRpc3RyaWJ1dGlvbiIpXQotICAgIGNvcHlSaWdo
dExpbmVzID0gW10KLQotICAgIGZvciBsaW5lIGluIGNvcHlyaWdodEJsb2NrLnNwbGl0KCJcbiIp
OgotICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIvKiIsICIiKQotICAgICAgICBsaW5lID0g
bGluZS5yZXBsYWNlKCIqLyIsICIiKQotICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIqIiwg
IiIpCi0gICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIkNvcHlyaWdodCIsICIiKQotICAgICAg
ICBsaW5lID0gbGluZS5yZXBsYWNlKCJjb3B5cmlnaHQiLCAiIikKLSAgICAgICAgbGluZSA9IGxp
bmUucmVwbGFjZSgiKEMpIiwgIiIpCi0gICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIihjKSIs
ICIiKQotICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCi0gICAgICAgIGlmIGxlbihsaW5lKSA9
PSAwOgotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBjb3B5UmlnaHRMaW5lcy5hcHBl
bmQobGluZSkKLSAgICAKLSAgICByZXR1cm4gbGlzdChzZXQoY29weVJpZ2h0TGluZXMpKQotCi1j
bGFzcyBGdW5jdGlvbihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBzb3Vy
Y2UsIGlzQ29uc3RydWN0b3IsIHBhcmFtZXRlcnMpOgotICAgICAgICBzZWxmLm5hbWUgPSBuYW1l
Ci0gICAgICAgIHNlbGYuc291cmNlID0gc291cmNlCi0gICAgICAgIHNlbGYuaXNDb25zdHJ1Y3Rv
ciA9IGlzQ29uc3RydWN0b3IKLSAgICAgICAgc2VsZi5wYXJhbWV0ZXJzID0gcGFyYW1ldGVycwot
Ci0gICAgZGVmIG1hbmdsZU5hbWUoc2VsZiwgb2JqZWN0KToKLSAgICAgICAgcU5hbWUgPSBvYmpl
Y3QgKyAiLiIgKyBzZWxmLm5hbWUKLSAgICAgICAgbWFuZ2xlZE5hbWUgPSAiIgotICAgICAgICBp
ID0gMAotICAgICAgICB3aGlsZSBpIDwgbGVuKHFOYW1lKToKLSAgICAgICAgICAgIGlmIHFOYW1l
W2ldID09ICcuJzoKLSAgICAgICAgICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lICsg
cU5hbWVbaSArIDFdLnVwcGVyKCkKLSAgICAgICAgICAgICAgICBpID0gaSArIDEKLSAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZSArIHFO
YW1lW2ldCi0gICAgICAgICAgICBpID0gaSArIDEKLSAgICAgICAgaWYgc2VsZi5pc0NvbnN0cnVj
dG9yOgotICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZSArICJDb25zdHJ1Y3Rv
ciIKLSAgICAgICAgcmV0dXJuIG1hbmdsZWROYW1lCi0KLWRlZiBnZXRGdW5jdGlvbnMoc291cmNl
KToKLQotICAgIHNvdXJjZSA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuc3ViKCIvKiovIiwgc2lu
Z2xlTGluZUNvbW1lbnRSZWdFeHAuc3ViKCIvL1xuIiwgc291cmNlKSkKLQotICAgIG1hdGNoZXMg
PSBbIGYgZm9yIGYgaW4gZnVuY3Rpb25IZWFkUmVnRXhwLmZpbmRpdGVyKHNvdXJjZSldCi0gICAg
ZnVuY3Rpb25Cb3VuZHMgPSBbXQotICAgIHN0YXJ0ID0gMAotICAgIGVuZCA9IDAKLSAgICBmb3Ig
bWF0Y2ggaW4gbWF0Y2hlczoKLSAgICAgICAgc3RhcnQgPSBtYXRjaC5zdGFydCgpCi0gICAgICAg
IGlmIHN0YXJ0IDwgZW5kOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgZW5kID0gbWF0
Y2guZW5kKCkKLSAgICAgICAgd2hpbGUgc291cmNlW2VuZF0gIT0gJ3snOgotICAgICAgICAgICAg
ZW5kID0gZW5kICsgMQotICAgICAgICBkZXB0aCA9IDEKLSAgICAgICAgZW5kID0gZW5kICsgMQot
ICAgICAgICB3aGlsZSBkZXB0aCA+IDA6Ci0gICAgICAgICAgICBpZiBzb3VyY2VbZW5kXSA9PSAn
eyc6Ci0gICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCArIDEKLSAgICAgICAgICAgIGVsaWYg
c291cmNlW2VuZF0gPT0gJ30nOgotICAgICAgICAgICAgICAgIGRlcHRoID0gZGVwdGggLSAxCi0g
ICAgICAgICAgICBlbmQgPSBlbmQgKyAxCi0gICAgICAgIGZ1bmN0aW9uQm91bmRzLmFwcGVuZCgo
c3RhcnQsIGVuZCkpCi0KLSAgICBmdW5jdGlvbnMgPSBbc291cmNlW3N0YXJ0OmVuZF0uc3RyaXAo
KSBmb3IgKHN0YXJ0LCBlbmQpIGluIGZ1bmN0aW9uQm91bmRzXQotICAgIHJlc3VsdCA9IFtdCi0g
ICAgZm9yIGZ1bmN0aW9uIGluIGZ1bmN0aW9uczoKLSAgICAgICAgZnVuY3Rpb24gPSBtdWx0aWxp
bmVDb21tZW50UmVnRXhwLnN1YigiIiwgZnVuY3Rpb24pCi0gICAgICAgIGZ1bmN0aW9uTmFtZSA9
IGZ1bmN0aW9uTmFtZVJlZ0V4cC5maW5kYWxsKGZ1bmN0aW9uKVswXQotICAgICAgICBmdW5jdGlv
bklzQ29uc3RydWN0b3IgPSBmdW5jdGlvbklzQ29uc3RydWN0b3JSZWdFeHAubWF0Y2goZnVuY3Rp
b24pICE9IE5vbmUKLSAgICAgICAgZnVuY3Rpb25QYXJhbWV0ZXJzID0gZnVuY3Rpb25QYXJhbWV0
ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlvbilbMF0uc3BsaXQoJywnKQotICAgICAgICBpZiBsZW4o
ZnVuY3Rpb25QYXJhbWV0ZXJzWzBdKSA9PSAwOgotICAgICAgICAgICAgZnVuY3Rpb25QYXJhbWV0
ZXJzID0gW10KLQotICAgICAgICByZXN1bHQuYXBwZW5kKEZ1bmN0aW9uKGZ1bmN0aW9uTmFtZSwg
ZnVuY3Rpb24sIGZ1bmN0aW9uSXNDb25zdHJ1Y3RvciwgZnVuY3Rpb25QYXJhbWV0ZXJzKSkKLSAg
ICByZXR1cm4gcmVzdWx0Ci0KLWRlZiB3cml0ZUluY2x1ZGVEaXJlY3RpdmVzKHdyaXRlciwgaGVh
ZGVyTmFtZXMpOgotICAgIGZvciBoZWFkZXJOYW1lIGluIGhlYWRlck5hbWVzOgotICAgICAgICB3
cml0ZXIud3JpdGUoIiNpbmNsdWRlICIgKyBoZWFkZXJOYW1lICsgIlxuIikKLQotZGVmIGdlbmVy
YXRlQ29kZShzb3VyY2UpOgotICAgIGlucHV0RmlsZSA9IG9wZW4oc291cmNlLCAiciIpCi0gICAg
YmFzZU5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHNvdXJjZSkucmVwbGFjZSgiLmpzIiwgIiIpCi0g
ICAgCi0gICAgc291cmNlID0gIiIKLSAgICBmb3IgbGluZSBpbiBpbnB1dEZpbGU6Ci0gICAgICAg
IHNvdXJjZSA9IHNvdXJjZSArIGxpbmUKLSAgICAKLSAgICBpZiBzeXMucGxhdGZvcm0gPT0gImN5
Z3dpbiI6Ci0gICAgICAgIHNvdXJjZSA9IHNvdXJjZS5yZXBsYWNlKCJcclxuIiwgIlxuIikKLSAg
ICByZXR1cm4gKGJhc2VOYW1lLCBnZXRGdW5jdGlvbnMoc291cmNlKSwgZ2V0Q29weXJpZ2h0KHNv
dXJjZSkpCi0KLWJ1aWx0aW5zID0gW10KLWNvcHlyaWdodHMgPSBbXQotKG91dHB1dF9iYXNlLCBf
KSA9IG9zLnBhdGguc3BsaXRleHQoYXJncy5vdXRwdXQpCi0KLWlmIGFyZ3MuaW5wdXRfZGlyZWN0
b3J5OgotICAgIGZvciBmaWxlIGluIG9zLmxpc3RkaXIoYXJncy5pbnB1dF9kaXJlY3RvcnkpOgot
ICAgICAgICBhcmdzLmlucHV0X2ZpbGUuYXBwZW5kKG9zLnBhdGguam9pbihhcmdzLmlucHV0X2Rp
cmVjdG9yeSwgZmlsZSkpCi0KLWZvciBmaWxlIGluIGFyZ3MuaW5wdXRfZmlsZToKLSAgICBpZiBm
bm1hdGNoLmZubWF0Y2goZmlsZSwgJyouanMnKToKLSAgICAgICAgKGJhc2VOYW1lLCBmdW5jdGlv
bnMsIG9iamVjdENvcHlyaWdodHMpID0gZ2VuZXJhdGVDb2RlKGZpbGUpCi0gICAgICAgIGNvcHly
aWdodHMuZXh0ZW5kKG9iamVjdENvcHlyaWdodHMpCi0gICAgICAgIGJ1aWx0aW5zLmFwcGVuZCgo
YmFzZU5hbWUsIGZ1bmN0aW9ucykpCi1uYW1lc3BhY2UgPSBhcmdzLm5hbWVzcGFjZQotbWFjcm9Q
cmVmaXggPSBhcmdzLnByZWZpeAotc2NvcGVOYW1lID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRo
LmJhc2VuYW1lKGFyZ3Mub3V0cHV0KSlbMF0KLWluY2x1ZGVHdWFyZCA9IHNjb3BlTmFtZSArICJf
SCIKLWhlYWRlck5hbWUgPSBzY29wZU5hbWUgKyAiLmgiCi0KLWhlYWRlckluY2x1ZGVzID0gWyJc
IkJ1aWx0aW5VdGlscy5oXCIiXSBpZiBuYW1lc3BhY2UgPT0gIkpTQyIgZWxzZSBbIjxidWlsdGlu
cy9CdWlsdGluVXRpbHMuaD4iXQotY29udGVudEluY2x1ZGVzID0gWyJcIkJ1aWx0aW5FeGVjdXRh
Ymxlcy5oXCIiLCAiXCJFeGVjdXRhYmxlLmhcIiIsICJcIkpTQ2VsbElubGluZXMuaFwiIiwgIlwi
Vk0uaFwiIl0gaWYgbmFtZXNwYWNlID09ICJKU0MiIGVsc2UgWyI8cnVudGltZS9FeGVjdXRhYmxl
Lmg+IiwgIjxydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaD4iLCAiPHJ1bnRpbWUvSlNDSlNWYWx1
ZUlubGluZXMuaD4iLCAiPHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oPiIsICI8cnVudGltZS9WTS5o
PiIsICJcIldlYkNvcmVKU0NsaWVudERhdGEuaFwiIl0KLQotY29weXJpZ2h0cyA9IGxpc3Qoc2V0
KGNvcHlyaWdodHMpKQotCi1jb3B5cmlnaHRCb2R5ID0gIiIKLWZvciBjb3B5cmlnaHQgaW4gY29w
eXJpZ2h0czoKLSAgICBjb3B5cmlnaHRCb2R5ID0gY29weXJpZ2h0Qm9keSArIiAqIENvcHlyaWdo
dCAoQykgIiArIGNvcHlyaWdodCArICJcbiIKLQotYnVpbHRpbnNIZWFkZXIgPSBvcGVuKG91dHB1
dF9iYXNlICsgIi5oLnRtcCIsICJ3IikKLWJ1aWx0aW5zSW1wbGVtZW50YXRpb24gPSBvcGVuKG91
dHB1dF9iYXNlICsgIi5jcHAudG1wIiwgInciKQotY29weXJpZ2h0VGV4dCA9ICIvKlxuIiArIGNv
cHlyaWdodEJvZHkgKyBjb3B5cmlnaHRUZXh0Ci1idWlsdGluc0hlYWRlci53cml0ZSgiIiIlcwot
JXMKLQotI2lmbmRlZiAlcwotI2RlZmluZSAlcwotCi0iIiIgJSAoZ2VuZXJhdG9yU3RyaW5nLCBj
b3B5cmlnaHRUZXh0LCBpbmNsdWRlR3VhcmQsIGluY2x1ZGVHdWFyZCkpCi0KLXdyaXRlSW5jbHVk
ZURpcmVjdGl2ZXMoYnVpbHRpbnNIZWFkZXIsIGhlYWRlckluY2x1ZGVzKQotCi1idWlsdGluc0hl
YWRlci53cml0ZSgiIiIKLW5hbWVzcGFjZSBKU0MgewotICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0
YWJsZTsKLX0KLQotbmFtZXNwYWNlICVzIHsKLQotIiIiICUgbmFtZXNwYWNlKQotCi1jb2RlUmVm
ZXJlbmNlcyA9IFtdCi0KLWZvciAob2JqZWN0TmFtZSwgZnVuY3Rpb25zKSBpbiBidWlsdGluczoK
LSAgICBwcmludCgiR2VuZXJhdGluZyBiaW5kaW5ncyBmb3IgdGhlICVzIGJ1aWx0aW4uIiAlIG9i
amVjdE5hbWUpCi0gICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIi8qICVzIGZ1bmN0aW9ucyAqL1xu
IiAlIG9iamVjdE5hbWUpCi0gICAgZm9yIGZ1bmN0aW9uIGluIGZ1bmN0aW9uczoKLSAgICAgICAg
bmFtZSA9IGZ1bmN0aW9uLm5hbWUKLSAgICAgICAgbWFuZ2xlZE5hbWUgPSBmdW5jdGlvbi5tYW5n
bGVOYW1lKG9iamVjdE5hbWUpCi0gICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWVbMF0u
bG93ZXIoKSArIG1hbmdsZWROYW1lWzE6XSArICJDb2RlIgotICAgICAgICBjb2RlUmVmZXJlbmNl
cy5hcHBlbmQoKG1hbmdsZWROYW1lLCBmdW5jdGlvbikpCi0gICAgICAgIGJ1aWx0aW5zSGVhZGVy
LndyaXRlKCJleHRlcm4gY29uc3QgY2hhciogc18lcztcbiIgJSBtYW5nbGVkTmFtZSkKLSAgICAg
ICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoImV4dGVybiBjb25zdCBpbnQgc18lc0xlbmd0aDtcbiIg
JSBtYW5nbGVkTmFtZSkKLSAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoImV4dGVybiBjb25z
dCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc18lc0NvbnN0cnVjdEFiaWxpdHk7XG4iICUgbWFuZ2xl
ZE5hbWUpCi0gICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuIikKLSAgICBidWlsdGluc0hlYWRl
ci53cml0ZSgiI2RlZmluZSAlc19GT1JFQUNIXyVzX0JVSUxUSU4obWFjcm8pIFxcXG4iICUgKG1h
Y3JvUHJlZml4LCBvYmplY3ROYW1lLnJlcGxhY2UoIi4iLCAiXyIpLnVwcGVyKCkpKQotICAgIGZv
ciBmdW5jdGlvbiBpbiBmdW5jdGlvbnM6Ci0gICAgICAgIG1hbmdsZWROYW1lID0gZnVuY3Rpb24u
bWFuZ2xlTmFtZShvYmplY3ROYW1lKQotICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiICAg
IG1hY3JvKCVzLCAlcywgJWQpIFxcXG4iICUgKGZ1bmN0aW9uLm5hbWUsIG1hbmdsZWROYW1lLCBs
ZW4oZnVuY3Rpb24ucGFyYW1ldGVycykpKQotICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJcbiIp
Ci0gICAgZm9yIGZ1bmN0aW9uIGluIGZ1bmN0aW9uczoKLSAgICAgICAgYnVpbHRpbnNIZWFkZXIu
d3JpdGUoIiNkZWZpbmUgJXNfQlVJTFRJTl8lcyAxXG4iICUgKG1hY3JvUHJlZml4LCBmdW5jdGlv
bi5tYW5nbGVOYW1lKG9iamVjdE5hbWUpLnVwcGVyKCkpKQotICAgIGJ1aWx0aW5zSGVhZGVyLndy
aXRlKCJcblxuIikKLW5hbWVzID0gW10KLWJ1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lICVz
X0ZPUkVBQ0hfQlVJTFRJTihtYWNybylcXFxuIiAlIG1hY3JvUHJlZml4KQotZm9yIChjb2RlUmVm
ZXJlbmNlLCBmdW5jdGlvbikgaW4gY29kZVJlZmVyZW5jZXM6Ci0gICAgYnVpbHRpbnNIZWFkZXIu
d3JpdGUoIiAgICBtYWNybyglcywgJXMsIHNfJXNMZW5ndGgpIFxcXG4iICUgKGNvZGVSZWZlcmVu
Y2UsIGZ1bmN0aW9uLm5hbWUsIGNvZGVSZWZlcmVuY2UpKQotICAgIG5hbWVzLmFwcGVuZChmdW5j
dGlvbi5uYW1lKQotCi1idWlsdGluc0hlYWRlci53cml0ZSgiXG5cbiIpCi1idWlsdGluc0hlYWRl
ci53cml0ZSgiI2RlZmluZSAlc19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykg
XFxcbiIgJSBtYWNyb1ByZWZpeCkKLWZvciBuYW1lIGluIHNvcnRlZChzZXQobmFtZXMpKToKLSAg
ICBidWlsdGluc0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzKSBcXFxuIiAlIG5hbWUpCi1idWls
dGluc0hlYWRlci53cml0ZSgiIiIKLQotI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9S
KGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCi0gICAgSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOwotCi0lc19GT1JF
QUNIX0JVSUxUSU4oREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKLSN1bmRlZiBERUNMQVJFX0JV
SUxUSU5fR0VORVJBVE9SCi0KLSNkZWZpbmUgJXNfQlVJTFRJTl9FWElTVFMobmFtZSkgZGVmaW5l
ZCAlc19CVUlMVElOXyAjIyBuYW1lCi0KLX0KLQotI2VuZGlmIC8vICVzCi0KLSIiIiAlIChtYWNy
b1ByZWZpeCwgbWFjcm9QcmVmaXgsIG1hY3JvUHJlZml4LCBpbmNsdWRlR3VhcmQpKQotCi1idWls
dGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIiVzCi0lcwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0KLSNpbmNsdWRlICIlcyIKLQotIiIiICAlIChnZW5lcmF0b3JTdHJpbmcsIGNvcHlyaWdodFRl
eHQsIGhlYWRlck5hbWUpKQotCi13cml0ZUluY2x1ZGVEaXJlY3RpdmVzKGJ1aWx0aW5zSW1wbGVt
ZW50YXRpb24sIGNvbnRlbnRJbmNsdWRlcykKLQotYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0
ZSgiIiIKLW5hbWVzcGFjZSAlcyB7Ci0KLSIiIiAgJSAobmFtZXNwYWNlKSkKLQotCi0KLWZvciAo
Y29kZVJlZmVyZW5jZSwgZnVuY3Rpb24pIGluIGNvZGVSZWZlcmVuY2VzOgotICAgIHNvdXJjZSA9
IGZ1bmN0aW9uLnNvdXJjZQotICAgIHNvdXJjZSA9ICIoZnVuY3Rpb24gIiArIHNvdXJjZVtzb3Vy
Y2UuaW5kZXgoIigiKTpdICsgIikiCi0gICAgbGluZXMgPSBqc29uLmR1bXBzKHNvdXJjZSlbMTot
MV0uc3BsaXQoIlxcbiIpCi0gICAgc291cmNlTGVuZ3RoID0gbGVuKHNvdXJjZSkKLSAgICBzb3Vy
Y2UgPSAiIgotICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICBzb3VyY2UgPSBzb3VyY2Ug
KyAoIiAgICBcIiVzXFxuXCIgXFxcbiIgJSBsaW5lKQotICAgIGJ1aWx0aW5zSW1wbGVtZW50YXRp
b24ud3JpdGUoImNvbnN0IGNoYXIqIHNfJXMgPVxuJXM7XG5cbiIgJSAoY29kZVJlZmVyZW5jZSwg
c291cmNlKSkKLSAgICBidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCJjb25zdCBpbnQgc18l
c0xlbmd0aCA9ICVkO1xuXG4iICUgKGNvZGVSZWZlcmVuY2UsIHNvdXJjZUxlbmd0aCArIDEpKSAj
ICsgMSBmb3IgXG4KLSAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gIkpTQzo6Q29uc3RydWN0QWJpbGl0
eTo6Q2Fubm90Q29uc3RydWN0IgotICAgIGlmIGZ1bmN0aW9uLmlzQ29uc3RydWN0b3I6Ci0gICAg
ICAgIGNvbnN0cnVjdEFiaWxpdHkgPSAiSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1
Y3QiCi0gICAgYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiY29uc3QgSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5IHNfJXNDb25zdHJ1Y3RBYmlsaXR5ID0gJXM7XG5cbiIgJSAoY29kZVJlZmVyZW5j
ZSwgY29uc3RydWN0QWJpbGl0eSkpICMgKyAxIGZvciBcbgotCi1idWlsdGluc0ltcGxlbWVudGF0
aW9uLndyaXRlKCIiIgotI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUs
IGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKLUpTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
KiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAotIiIiKTsKLQotaWYgKG5hbWVz
cGFjZSA9PSAiSlNDIik6Ci0gICAgYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiIiJ7XFwK
LSAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxl
KCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkp
OyBcXAotIiIiKQotZWxzZToKLSAgICBidWlsdGluTmFtZSA9IHNjb3BlTmFtZVswXS5sb3dlcigp
ICsgc2NvcGVOYW1lWzE6XQotICAgIGJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIie1xc
Ci0gICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50
RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcXAotICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGlu
RnVuY3Rpb25zKCkuJXMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnRE
YXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJXMoKS5jb2RlTmFtZSMjU291cmNlKCkpOyBcXAotIiIi
JSAoYnVpbHRpbk5hbWUsIGJ1aWx0aW5OYW1lKSkKLQotYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53
cml0ZSgiIiJ9Ci0lc19GT1JFQUNIX0JVSUxUSU4oREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQot
I3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgotfQotCi0iIiIlIChtYWNyb1ByZWZpeCkp
Ci0KLWJ1aWx0aW5zSGVhZGVyLmNsb3NlKCkKLWJ1aWx0aW5zSW1wbGVtZW50YXRpb24uY2xvc2Uo
KQotCi1pZiAobm90IG9zLnBhdGguZXhpc3RzKG91dHB1dF9iYXNlICsgIi5oIikpIG9yIChub3Qg
ZmlsZWNtcC5jbXAob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmgiLCBz
aGFsbG93PUZhbHNlKSk6Ci0gICAgaWYgKG9zLnBhdGguZXhpc3RzKG91dHB1dF9iYXNlICsgIi5o
IikpOgotICAgICAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmgiKQotICAgIG9zLnJlbmFt
ZShvdXRwdXRfYmFzZSArICIuaC50bXAiLCBvdXRwdXRfYmFzZSArICIuaCIpCi1lbHNlOgotICAg
IG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIuaC50bXAiKQotCi1pZiAobm90IG9zLnBhdGguZXhp
c3RzKG91dHB1dF9iYXNlICsgIi5jcHAiKSkgb3IgKG5vdCBmaWxlY21wLmNtcChvdXRwdXRfYmFz
ZSArICIuY3BwLnRtcCIsIG91dHB1dF9iYXNlICsgIi5jcHAiLCBzaGFsbG93PUZhbHNlKSk6Ci0g
ICAgaWYgKG9zLnBhdGguZXhpc3RzKG91dHB1dF9iYXNlICsgIi5jcHAiKSk6Ci0gICAgICAgIG9z
LnJlbW92ZShvdXRwdXRfYmFzZSArICIuY3BwIikKLSAgICBvcy5yZW5hbWUob3V0cHV0X2Jhc2Ug
KyAiLmNwcC50bXAiLCBvdXRwdXRfYmFzZSArICIuY3BwIikKLWVsc2U6Ci0gICAgb3MucmVtb3Zl
KG91dHB1dF9iYXNlICsgIi5jcHAudG1wIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNWNmMWJj
MWVjMjA2MzZiNzY2ODk4MTdjZGExN2QzZDc4NDhjZDhkOS4uZjk0ZmNmN2U1MWE0Nzk4Y2Q5OTgy
NDg3ZTg2YTkzZGEyMThkMTUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTgyMSwxNCArODIx
LDE0IEBAIHNldChXZWJDb3JlX0lETF9GSUxFUwogaWYgKFdJTjMyKQogICAgIGlmIChJTlRFUk5B
TF9CVUlMRCkKICAgICAgICAgc2V0KFdlYkNvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSICIke0NN
QUtFX0JJTkFSWV9ESVJ9Ly4uL2luY2x1ZGUvcHJpdmF0ZS9KYXZhU2NyaXB0Q29yZSIpCi0gICAg
ICAgIHNldChXZWJDb3JlX0dFTkVSQVRFX0pTX0JVSUxUSU5TX1NDUklQVFNfRElSICIke0NNQUtF
X0JJTkFSWV9ESVJ9Ly4uL2luY2x1ZGUvcHJpdmF0ZS9KYXZhU2NyaXB0Q29yZSIpCisgICAgICAg
IHNldChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUiAiJHtDTUFLRV9CSU5BUllfRElSfS8uLi9p
bmNsdWRlL3ByaXZhdGUvSmF2YVNjcmlwdENvcmUiKQogICAgIGVsc2UgKCkKICAgICAgICAgc2V0
KFdlYkNvcmVfSU5TUEVDVE9SX1NDUklQVFNfRElSICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5z
cGVjdG9yL3NjcmlwdHMiKQotICAgICAgICBzZXQoV2ViQ29yZV9HRU5FUkFURV9KU19CVUlMVElO
U19TQ1JJUFRTX0RJUiAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9IikKKyAgICAgICAgc2V0KEphdmFT
Y3JpcHRDb3JlX1NDUklQVFNfRElSICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vU2NyaXB0cyIpCiAg
ICAgZW5kaWYgKCkKIGVsc2UgKCkKICAgICBzZXQoV2ViQ29yZV9JTlNQRUNUT1JfU0NSSVBUU19E
SVIgIiR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3Ivc2NyaXB0cyIpCi0gICAgc2V0KFdl
YkNvcmVfR0VORVJBVEVfSlNfQlVJTFRJTlNfU0NSSVBUU19ESVIgIiR7SkFWQVNDUklQVENPUkVf
RElSfSIpCisgICAgc2V0KEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSICIke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vU2NyaXB0cyIpCiBlbmRpZiAoKQogCiBzZXQoV2ViQ29yZV9TT1VSQ0VTCkBAIC0z
MzUzLDcgKzMzNTMsMTEgQEAgc2V0KFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxF
ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9Xb3JrZXJHbG8KIHNldChERURJQ0FURURX
T1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSAke0RFUklWRURfU09VUkNFU19XRUJD
T1JFX0RJUn0vRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsKQogc2V0
KElETF9BVFRSSUJVVEVTX0ZJTEUgJHtXRUJDT1JFX0RJUn0vYmluZGluZ3Mvc2NyaXB0cy9JRExB
dHRyaWJ1dGVzLnR4dCkKIAotc2V0KFdFQkNPUkVfSlNfQlVJTFRJTlMKK1dFQktJVF9JTkNMVURF
X0NPTkZJR19GSUxFU19JRl9FWElTVFMoKQorCisjIFdlYkNvcmUgSlMgQnVpbHRpbnMKKworc2V0
KFdlYkNvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3Ry
ZWFtcy9CeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vTW9k
dWxlcy9zdHJlYW1zL0NvdW50UXVldWluZ1N0cmF0ZWd5LmpzCiAgICAgJHtXRUJDT1JFX0RJUn0v
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmpzCkBAIC0zMzYyLDcgKzMzNjYsMzYgQEAg
c2V0KFdFQkNPUkVfSlNfQlVJTFRJTlMKICAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3N0cmVh
bXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuanMKICkKIAotV0VCS0lUX0lOQ0xVREVfQ09ORklHX0ZJ
TEVTX0lGX0VYSVNUUygpCitzZXQoQlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMKKyAgICAke0ph
dmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorICAgICR7
SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2xhenl3cml0ZXIucHkKKyAgICAke0phdmFTY3Jp
cHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGlucy9idWlsdGluc19nZW5lcmF0b3IucHkKKyAgICAk
e0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGlucy9idWlsdGluc19tb2RlbC5weQor
ICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBs
YXRlcy5weQorICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5zL2dlbmVy
YXRlX2J1aWx0aW5zX2NvbWJpbmVkX2hlYWRlci5weQorICAgICR7SmF2YVNjcmlwdENvcmVfU0NS
SVBUU19ESVJ9L2J1aWx0aW5zL2dlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2ltcGxlbWVudGF0
aW9uLnB5CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnMvZ2VuZXJh
dGVfYnVpbHRpbnNfc2VwYXJhdGVfaGVhZGVyLnB5CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJ
UFRTX0RJUn0vYnVpbHRpbnMvZ2VuZXJhdGVfYnVpbHRpbnNfc2VwYXJhdGVfaW1wbGVtZW50YXRp
b24ucHkKKyAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGlucy9nZW5lcmF0
ZV9idWlsdGluc19zZXBhcmF0ZV93cmFwcGVyLnB5CispCisKK2ZvcmVhY2ggKF9idWlsdGluU291
cmNlICR7V2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTfSkKKyAgICBnZXRfZmlsZW5hbWVfY29tcG9u
ZW50KF9vYmplY3ROYW1lICR7X2J1aWx0aW5Tb3VyY2V9IE5BTUVfV0UpCisgICAgYWRkX2N1c3Rv
bV9jb21tYW5kKAorICAgICAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9
LyR7X29iamVjdE5hbWV9QnVpbHRpbnMuY3BwCisgICAgICAgICAgICAgICAke0RFUklWRURfU09V
UkNFU19XRUJDT1JFX0RJUn0vJHtfb2JqZWN0TmFtZX1CdWlsdGlucy5oCisgICAgICAgICAgICAg
ICAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vJHtfb2JqZWN0TmFtZX1CdWlsdGluc1dy
YXBwZXIuaCAKKyAgICAgICAgTUFJTl9ERVBFTkRFTkNZICR7SmF2YVNjcmlwdENvcmVfU0NSSVBU
U19ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisgICAgICAgIERFUEVORFMgJHtfYnVpbHRp
blNvdXJjZX0gJHtCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUU30KKyAgICAgICAgQ09NTUFORCAk
e1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9nZW5lcmF0
ZS1qcy1idWlsdGlucy5weSAtLWZyYW1ld29yayBXZWJDb3JlIC0tb3V0cHV0LWRpcmVjdG9yeSAk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0gJHtfYnVpbHRpblNvdXJjZX0KKyAgICAgICAg
VkVSQkFUSU0pCisgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgICAgICR7REVS
SVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS8ke19vYmplY3ROYW1lfUJ1aWx0aW5zLmgKKyAgICAg
ICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9LyR7X29iamVjdE5hbWV9QnVpbHRpbnNX
cmFwcGVyLmgKKyAgICApCisgICAgQUREX1NPVVJDRV9XRUJDT1JFX0RFUklWRURfREVQRU5ERU5D
SUVTKCR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL2pzL1dlYkNvcmVKU0J1aWx0aW5zLmNwcCAke19v
YmplY3ROYW1lfUJ1aWx0aW5zLmNwcCkKK2VuZGZvcmVhY2ggKCkKKwogCiAjIEdlbmVyYXRlIElu
c3BlY3Rvck92ZXJsYXlQYWdlLmgKIGFkZF9jdXN0b21fY29tbWFuZCgKQEAgLTMzNzIsNyArMzQw
NSw4IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBERVBFTkRTIGluc3BlY3Rvci9JbnNwZWN0
b3JPdmVybGF5UGFnZS5jc3MgaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlQYWdlLmpzCiAgICAg
Q09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke1dlYkNvcmVfSU5TUEVDVE9SX1NDUklQVFNf
RElSfS9pbmxpbmUtYW5kLW1pbmlmeS1zdHlsZXNoZWV0cy1hbmQtc2NyaXB0cy5weSAke1dFQkNP
UkVfRElSfS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheVBhZ2UuaHRtbCAke0RFUklWRURfU09V
UkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yT3ZlcmxheVBhZ2UuY29tYmluZWQuaHRtbAogICAg
IENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7V2ViQ29yZV9JTlNQRUNUT1JfU0NSSVBUU19E
SVJ9L3h4ZC5wbCBJbnNwZWN0b3JPdmVybGF5UGFnZV9odG1sICR7REVSSVZFRF9TT1VSQ0VTX1dF
QkNPUkVfRElSfS9JbnNwZWN0b3JPdmVybGF5UGFnZS5jb21iaW5lZC5odG1sICR7REVSSVZFRF9T
T1VSQ0VTX1dFQkNPUkVfRElSfS9JbnNwZWN0b3JPdmVybGF5UGFnZS5oCi0gICAgVkVSQkFUSU0p
CisgICAgVkVSQkFUSU0KKykKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke0RFUklWRURf
U09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yT3ZlcmxheVBhZ2UuaCkKIAogCkBAIC0zMzg0
LDcgKzM0MTgsOCBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgQ09NTUFORCBlY2hvICIvLyMg
c291cmNlVVJMPV9fV2ViSW5zcGVjdG9yQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2VfXyIgPiAk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2Uu
bWluLmpzCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke1dlYkNvcmVfSU5TUEVD
VE9SX1NDUklQVFNfRElSfS9qc21pbi5weSA8ICR7V0VCQ09SRV9ESVJ9L2luc3BlY3Rvci9Db21t
YW5kTGluZUFQSU1vZHVsZVNvdXJjZS5qcyA+PiAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJ
Un0vQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UubWluLmpzCiAgICAgQ09NTUFORCAke1BFUkxf
RVhFQ1VUQUJMRX0gJHtXZWJDb3JlX0lOU1BFQ1RPUl9TQ1JJUFRTX0RJUn0veHhkLnBsIENvbW1h
bmRMaW5lQVBJTW9kdWxlU291cmNlX2pzICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9D
b21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5taW4uanMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L0NvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmgKLSAgICBWRVJCQVRJTSkKKyAgICBW
RVJCQVRJTQorKQogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7REVSSVZFRF9TT1VSQ0VT
X1dFQkNPUkVfRElSfS9Db21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oKQogCiAKQEAgLTM1ODUs
MjMgKzM2MjAsNiBAQCBHRU5FUkFURV9CSU5ESU5HUyhXZWJDb3JlVGVzdFN1cHBvcnRfU09VUkNF
UwogICAgICR7U1VQUExFTUVOVEFMX0RFUEVOREVOQ1lfRklMRX0KICAgICAke0FERElUSU9OQUxf
QklORElOR1NfREVQRU5ERU5DSUVTfSkKIAotIyBXZWJDb3JlIEpTIEJ1aWx0aW5zCi1mb3JlYWNo
IChfYnVpbHRpbmpzICR7V0VCQ09SRV9KU19CVUlMVElOU30pCi0gICAgZ2V0X2ZpbGVuYW1lX2Nv
bXBvbmVudChfbmFtZSAke19idWlsdGluanN9IE5BTUVfV0UpCi0gICAgYWRkX2N1c3RvbV9jb21t
YW5kKAotICAgICAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9LyR7X25h
bWV9QnVpbHRpbnNXcmFwcGVyLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9LyR7X25h
bWV9QnVpbHRpbnMuaCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vJHtfbmFtZX1CdWls
dGlucy5jcHAKLSAgICAgICAgTUFJTl9ERVBFTkRFTkNZICR7V0VCQ09SRV9ESVJ9L2dlbmVyYXRl
LWpzLWJ1aWx0aW5zCi0gICAgICAgIERFUEVORFMgJHtXZWJDb3JlX0dFTkVSQVRFX0pTX0JVSUxU
SU5TX1NDUklQVFNfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucwotICAgICAgICBERVBFTkRTICR7
X2J1aWx0aW5qc30KLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMgLS1pbnB1dCAke19idWls
dGluanN9IC0tb3V0cHV0X2RpciAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0gLS1nZW5l
cmF0ZV9qc19idWlsdGluc19wYXRoICR7V2ViQ29yZV9HRU5FUkFURV9KU19CVUlMVElOU19TQ1JJ
UFRTX0RJUn0KLSAgICAgICAgVkVSQkFUSU0pCi0gICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCi0gICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS8ke19uYW1lfUJ1aWx0
aW5zLmgKLSAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9LyR7X25hbWV9QnVp
bHRpbnNXcmFwcGVyLmgKLSAgICApCi0gICAgQUREX1NPVVJDRV9XRUJDT1JFX0RFUklWRURfREVQ
RU5ERU5DSUVTKCR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL2pzL1dlYkNvcmVKU0J1aWx0aW5zLmNw
cCAke19uYW1lfUJ1aWx0aW5zLmNwcCkKLWVuZGZvcmVhY2ggKCkKLQogQUREX1NPVVJDRV9XRUJD
T1JFX0RFUklWRURfREVQRU5ERU5DSUVTKCR7V0VCQ09SRV9ESVJ9L2h0bWwvSFRNTFRyZWVCdWls
ZGVyLmNwcCBNYXRoTUxOYW1lcy5jcHApCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggNDY2NTRmMmFkMzE4ODlkYjM0MjU3YmZkOGM4ZmFjOTNlMmRmMDRiNS4uNGFlMjhkODI1
Nzg1M2NhYmU5M2U4MThjYjFiZTE5YWZiOWY3NTIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCkBAIC03OTIsNyArNzkyLDYgQEAgYWxsIDogXAogICAgICQoV09SS0VSR0xPQkFMU0NP
UEVfQ09OU1RSVUNUT1JTX0ZJTEUpIFwKICAgICAkKEpTX0RPTV9IRUFERVJTKSBcCiAgICAgJChX
RUJfRE9NX0hFQURFUlMpIFwKLSAgICAkKFdFQkNPUkVfSlNfQlVJTFRJTlMpIFwKICAgICBcCiAg
ICAgQ1NTR3JhbW1hci5jcHAgXAogICAgIENTU1Byb3BlcnR5TmFtZXMuY3BwIFwKQEAgLTEyNTEs
NyArMTI1MCw3IEBAIFdlYlJlcGxheUlucHV0cy5oIDogJChJTlBVVF9HRU5FUkFUT1JfU1BFQ0lG
SUNBVElPTlMpICQoSU5QVVRfR0VORVJBVE9SX1NDUklQVFMpCiAKICMgV2ViQ29yZSBKUyBCdWls
dGlucwogCi1XRUJDT1JFX0pTX0JVSUxUSU5TID0gXAorV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VT
ID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL0J5dGVMZW5ndGhRdWV1aW5nU3Ry
YXRlZ3kuanMgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL0NvdW50UXVldWluZ1N0
cmF0ZWd5LmpzIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bS5qcyBcCkBAIC0xMjYwLDEwICsxMjU5LDMxIEBAIFdFQkNPUkVfSlNfQlVJTFRJTlMgPSBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuanMgXAog
IwogCi1hbGwgOiAkKFdFQkNPUkVfSlNfQlVJTFRJTlM6JS5qcz0lQnVpbHRpbnMuY3BwKQorQlVJ
TFRJTlNfR0VORVJBVE9SX1NDUklQVFMgPSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRT
X0RJUikvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQ
VFNfRElSKS9idWlsdGluc19tb2RlbC5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRT
X0RJUikvYnVpbHRpbnNfdGVtcGxhdGVzLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQ
VFNfRElSKS9nZW5lcmF0ZV9idWlsdGluc19jb21iaW5lZF9oZWFkZXIucHkgXAorICAgICQoSmF2
YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlX2J1aWx0aW5zX2NvbWJpbmVkX2ltcGxl
bWVudGF0aW9uLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0
ZV9idWlsdGluc19zZXBhcmF0ZV9oZWFkZXIucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NS
SVBUU19ESVIpL2dlbmVyYXRlX2J1aWx0aW5zX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5IFwK
KyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZV9idWlsdGluc19zZXBh
cmF0ZV93cmFwcGVyLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5l
cmF0ZS1qcy1idWlsdGlucy5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikv
bGF6eXdyaXRlci5weSBcCisjCisKKyMgQWRkaW5nL3JlbW92aW5nIHNjcmlwdHMgc2hvdWxkIHRy
aWdnZXIgcmVnZW5lcmF0aW9uLCBidXQgY2hhbmdpbmcgd2hpY2ggYnVpbHRpbnMgYXJlCisjIGdl
bmVyYXRlZCBzaG91bGQgbm90IGFmZmVjdCBvdGhlciBidWlsdGlucyB3aGVuIG5vdCBwYXNzaW5n
ICctLWNvbWJpbmVkJyB0byB0aGUgZ2VuZXJhdG9yLgorCisuUEhPTlk6IGZvcmNlCitXZWJDb3Jl
X0JVSUxUSU5TX0RFUEVOREVOQ0lFU19MSVNUIDogJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJ
UikvVXBkYXRlQ29udGVudHMucHkgZm9yY2UKKwkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZV9T
Q1JJUFRTX0RJUikvVXBkYXRlQ29udGVudHMucHkgJyQoQlVJTFRJTlNfR0VORVJBVE9SX1NDUklQ
VFMpJyAkQAorCislQnVpbHRpbnMuaDogJS5qcyAkKEJVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRT
KSBXZWJDb3JlX0JVSUxUSU5TX0RFUEVOREVOQ0lFU19MSVNUCisJJChQWVRIT04pICQoSmF2YVNj
cmlwdENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5IC0tb3V0cHV0LWRp
cmVjdG9yeSAuIC0tZnJhbWV3b3JrIFdlYkNvcmUgJDwKIAotJUJ1aWx0aW5zLmNwcDogJS5qcwot
CSQoUFlUSE9OKSAkKFdlYkNvcmUpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zIC0taW5wdXQgJDwgLS1n
ZW5lcmF0ZV9qc19idWlsdGluc19wYXRoICQoR2VuZXJhdGVKU0J1aWx0aW5zU2NyaXB0cykKK2Fs
bCA6ICQobm90ZGlyICQoV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTOiUuanM9JUJ1aWx0aW5zLmgp
KQorCQogCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDI3N2ZiODY2ODc2Y2Yx
OGI0Yjg4NzRhN2RjZDMyN2UxNWMxZDliZC4uYjBmNjVjNWQyN2IwOGJiZGZiMDBhZmIwMTU1NzBl
OTViYWIxM2FlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTQ5MSw3ICsxNDkxLDcgQEAKIAkJNDEyOURGODYxQkI1QjgwQzAw
MzIyQTE2IC8qIEpTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTI5REY4NDFCQjVCN0Y3MDAz
MjJBMTYgLyogSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTM4RDMzNTEyNDQwNTQ4
MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTM4RDMzMzEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0
LmggKi87IH07CiAJCTQxMzhEMzM2MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzOEQzMzQx
MjQ0MDU0ODAwMzIzRDMzIC8qIEV2ZW50Q29udGV4dC5jcHAgKi87IH07Ci0JCTQxM0MyQzM0MUJD
MjlBOEYwMDc1MjA0QyAvKiBKU0RPTUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNDMkMzMzFCQzI5QTdCMDA3NTIwNEMgLyogSlNE
T01Db25zdHJ1Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJ
CTQxM0MyQzM0MUJDMjlBOEYwMDc1MjA0QyAvKiBKU0RPTUNvbnN0cnVjdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNDMkMzMzFCQzI5QTdCMDA3
NTIwNEMgLyogSlNET01Db25zdHJ1Y3Rvci5oICovOyB9OwogCQk0MTUwNzE1NzE2ODUwNjczMDBD
M0M3QjMgLyogU2VsZWN0b3JGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE1MDcxNTUxNjg1MDY3MzAwQzNDN0IzIC8qIFNlbGVjdG9yRmls
dGVyLmNwcCAqLzsgfTsKIAkJNDE1MDcxNTgxNjg1MDY3MzAwQzNDN0IzIC8qIFNlbGVjdG9yRmls
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTUw
NzE1NjE2ODUwNjczMDBDM0M3QjMgLyogU2VsZWN0b3JGaWx0ZXIuaCAqLzsgfTsKIAkJNDE1MEY5
RjExMkI2RTBFNzAwMDhDODYwIC8qIFNsaWRlclRodW1iRWxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1MEY5RUYxMkI2RTBFNzAwMDhDODYw
IC8qIFNsaWRlclRodW1iRWxlbWVudC5oICovOyB9OwpAQCAtMTUyNCw5ICsxNTI0LDkgQEAKIAkJ
NDE5QkMyREUxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QkMyREMxNjg1MzI5OTAw
RDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuY3BwICovOyB9OwogCQk0MTlCQzJERjE2ODUzMjk5
MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QkMyREQxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRM
aW5rU3RhdGUuaCAqLzsgfTsKIAkJNDE5QkU3NTYxQkM3RjQxQjAwRTFDODVCIC8qIFdlYkNvcmVK
U0J1aWx0aW5JbnRlcm5hbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxOUJFNzUzMUJDN0YzREIwMEUxQzg1QiAvKiBXZWJDb3JlSlNCdWlsdGluSW50
ZXJuYWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJNDE5QkU3NTcxQkM3RjQyMTAwRTFDODVCIC8qIFdlYkNvcmVKU0J1aWx0aW5zLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUJFNzU0MUJDN0Yz
REIwMEUxQzg1QiAvKiBXZWJDb3JlSlNCdWlsdGlucy5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VU
X1RBR1MgPSAoKTsgfTsgfTsKLQkJNDE5QkU3NTgxQkM3RjQyNzAwRTFDODVCIC8qIFdlYkNvcmVK
U0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTlCRTc1NTFCQzdGM0RCMDBFMUM4NUIgLyogV2ViQ29yZUpTQnVpbHRpbnMuaCAqLzsgc2V0
dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwotCQk0MTlCRTc1OTFCQzdGNDJCMDBFMUM4
NUIgLyogV2ViQ29yZUJ1aWx0aW5OYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE5QkU3NTIxQkM3RjNEQjAwRTFDODVCIC8qIFdlYkNvcmVCdWls
dGluTmFtZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OworCQk0MTlC
RTc1NzFCQzdGNDIxMDBFMUM4NUIgLyogV2ViQ29yZUpTQnVpbHRpbnMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE5QkU3NTQxQkM3RjNEQjAwRTFD
ODVCIC8qIFdlYkNvcmVKU0J1aWx0aW5zLmNwcCAqLzsgfTsKKwkJNDE5QkU3NTgxQkM3RjQyNzAw
RTFDODVCIC8qIFdlYkNvcmVKU0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTlCRTc1NTFCQzdGM0RCMDBFMUM4NUIgLyogV2ViQ29yZUpT
QnVpbHRpbnMuaCAqLzsgfTsKKwkJNDE5QkU3NTkxQkM3RjQyQjAwRTFDODVCIC8qIFdlYkNvcmVC
dWlsdGluTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxOUJFNzUyMUJDN0YzREIwMEUxQzg1QiAvKiBXZWJDb3JlQnVpbHRpbk5hbWVzLmggKi87
IH07CiAJCTQxQTNENThFMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFBM0Q1
OEMxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5jcHAgKi87IH07CiAJ
CTQxQTNENThGMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTNENThEMTAxQzE1
MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCAqLzsgfTsKIAkJNDFCRjcwMEMw
RkU4NkY0OTAwNUU4REVDIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCRjcwMEEwRkU4NkY0OTAwNUU4REVDIC8q
IE1lc3NhZ2VQb3J0Q2hhbm5lbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC02MzcxLDggKzYzNzEsOCBAQAogCQlFMUZGOEY2ODE4MDc0NjA4MDAx
MzI2NzQgLyogSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRjhGNjYxODA3NDYwODAwMTMyNjc0IC8qIEpTU3Vi
dGxlQ3J5cHRvQ3VzdG9tLmNwcCAqLzsgfTsKIAkJRTFGRjhGNkMxODBEQjVCRTAwMTMyNjc0IC8q
IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkY4RjZBMTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdv
cml0aG1SZWdpc3RyeS5jcHAgKi87IH07CiAJCUUxRkY4RjZEMTgwREI1QkUwMDEzMjY3NCAvKiBD
cnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTFGRjhGNkIxODBEQjVCRTAwMTMyNjc0IC8qIENyeXB0b0FsZ29yaXRo
bVJlZ2lzdHJ5LmggKi87IH07Ci0JCUUzODgzODk4MUJBRDE0NUYwMEQ2MkVFMyAvKiBKU01vZHVs
ZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogSlNNb2R1bGVMb2FkZXIuY3BwICovOyBzZXR0
aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07Ci0JCUUzODgzODk5MUJBRDE0NUYwMEQ2MkVF
MyAvKiBKU01vZHVsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxlTG9hZGVyLmgg
Ki87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJRTM4ODM4OTgxQkFEMTQ1
RjAwRDYyRUUzIC8qIEpTTW9kdWxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBKU01vZHVs
ZUxvYWRlci5jcHAgKi87IH07CisJCUUzODgzODk5MUJBRDE0NUYwMEQ2MkVFMyAvKiBKU01vZHVs
ZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8qIEpTTW9kdWxlTG9hZGVyLmggKi87IH07CiAJCUU0
MDFDMjc1MTdDRTUzRUMwMEM0MUEzNSAvKiBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDAxQzI3NDE3Q0U1
M0VDMDBDNDFBMzUgLyogRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0MjRBMzlFMTMzMERGMDEwMENG
NkRDOSAvKiBMZWdhY3lUaWxlR3JpZFRpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU0MjRBMzlEMTMzMERGMDEwMENGNkRDOSAvKiBMZWdhY3lUaWxl
R3JpZFRpbGUuaCAqLzsgfTsKIAkJRTQyNEEzQTAxMzMwREYxRTAwQ0Y2REM5IC8qIExlZ2FjeVRp
bGVHcmlkVGlsZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0MjRBMzlGMTMzMERGMUUwMENGNkRDOSAvKiBMZWdhY3lUaWxlR3JpZFRpbGUubW0gKi87
IH07CkBAIC02NDIxLDggKzY0MjEsOCBAQAogCQlFNDRCNEJCMzE0MTY1MEQ3MDAyQjFEOEIgLyog
U2VsZWN0b3JDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0NEI0QkIxMTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxlY3RvckNoZWNrZXIuY3Bw
ICovOyB9OwogCQlFNDRCNEJCNDE0MTY1MEQ3MDAyQjFEOEIgLyogU2VsZWN0b3JDaGVja2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDRCNEJCMjE0
MTY1MEQ3MDAyQjFEOEIgLyogU2VsZWN0b3JDaGVja2VyLmggKi87IH07CiAJCUU0NEVFM0E4MTc1
NzdFQkQwMEVFRThDRiAvKiBGb250R2VuZXJpY0ZhbWlsaWVzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NEVFM0E2MTc1NzZFNTUwMEVFRThDRiAv
KiBGb250R2VuZXJpY0ZhbWlsaWVzLmNwcCAqLzsgfTsKLQkJRTQ0RkExODUxQkNBNkI1QTAwOTFC
NkVGIC8qIENvbXBvc2VkVHJlZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNDRGQTE4NDFCQ0E2QjVBMDA5MUI2RUYgLyogQ29tcG9zZWRU
cmVlSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwotCQlF
NDRGQTE4NzFCQ0E5MTU2MDA5MUI2RUYgLyogQ29tcG9zZWRUcmVlSXRlcmF0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ0RkExODYxQkNBOTE1
NjAwOTFCNkVGIC8qIENvbXBvc2VkVHJlZUl0ZXJhdG9yLmNwcCAqLzsgc2V0dGluZ3MgPSB7QVNT
RVRfVEFHUyA9ICgpOyB9OyB9OworCQlFNDRGQTE4NTFCQ0E2QjVBMDA5MUI2RUYgLyogQ29tcG9z
ZWRUcmVlSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0NEZBMTg0MUJDQTZCNUEwMDkxQjZFRiAvKiBDb21wb3NlZFRyZWVJdGVyYXRvci5o
ICovOyB9OworCQlFNDRGQTE4NzFCQ0E5MTU2MDA5MUI2RUYgLyogQ29tcG9zZWRUcmVlSXRlcmF0
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ0
RkExODYxQkNBOTE1NjAwOTFCNkVGIC8qIENvbXBvc2VkVHJlZUl0ZXJhdG9yLmNwcCAqLzsgfTsK
IAkJRTQ1MzIyQUIxNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1MzIyQTkxNDBDRTI2NzAw
NUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuY3BwICovOyB9OwogCQlFNDUzMjJBQzE0MENFMjY3MDA1
QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTQ1MzIyQUExNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnku
aCAqLzsgfTsKIAkJRTQ1MzkwMUQwRUFGQ0FDQTAwMzY5NUM4IC8qIE1JTUVUeXBlUmVnaXN0cnlJ
T1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDUz
OTAxODBFQUZDQUNBMDAzNjk1QzggLyogTUlNRVR5cGVSZWdpc3RyeUlPUy5tbSAqLzsgfTsKQEAg
LTExMzA4LDcgKzExMzA4LDYgQEAKIAkJOThDRTQzMjUxMjlFMDBCRDAwNTgyMURDIC8qIExpbmtM
b2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGlua0xvYWRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk4Q0U0MzI5MTI5RTAwRTUwMDU4
MjFEQyAvKiBMaW5rTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExp
bmtMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOThFQjFGOTQxMzEzRkUw
NTAwRDBFMUVBIC8qIE5vdEltcGxlbWVudGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5vdEltcGxlbWVudGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk5
MDhCMEVDMUJDQUNGMUYwMEVEMEY2NSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1qcy1idWlsdGlucyI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEVEMUJDQUNGOTEwMEVEMEY2NSAvKiBCeXRl
TGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBwYXRoID0gQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5qczsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTkwOEIwRUUxQkNBQ0Y5MTAwRUQwRjY1IC8qIENvdW50UXVldWluZ1N0cmF0
ZWd5LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gQ291bnRRdWV1
aW5nU3RyYXRlZ3kuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEVGMUJD
QUNGOTEwMEVEMEY2NSAvKiBSZWFkYWJsZVN0cmVhbS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
amF2YXNjcmlwdDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtLmpzOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTUyODUsNyArMTUyODQsNiBAQAogCQkwODY3RDY5MUZFODQwMjhGQzAyQUFD
MDcgLyogV2ViS2l0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
LQkJCQk5OTA4QjBFQzFCQ0FDRjFGMDBFRDBGNjUgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMgKi8s
CiAJCQkJNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oICovLAogCQkJCUVERUM5
ODAyMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4LmggKi8sCiAJCQkJOTMwNzA2MTMw
OUUwQ0E4MjAwQjE3RkU0IC8qIERlcml2ZWRTb3VyY2VzLm1ha2UgKi8sCkBAIC0yODEzOSw3ICsy
ODEzNyw3IEBACiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCQlzaGVsbFBhdGggPSAvYmluL3NoOwotCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAg
XCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvV2ViQ29yZVwiXG5jZCBcIiR7
QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9XZWJDb3JlXCJcblxuL2Jpbi9sbiAt
c2ZoIFwiJHtTUkNST09UfVwiIFdlYkNvcmVcbmV4cG9ydCBXZWJDb3JlPVwiV2ViQ29yZVwiXG5l
eHBvcnQgSW5zcGVjdG9yU2NyaXB0cz1cIiR7SkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJT
X0RJUn1cIlxuZXhwb3J0IFdlYlJlcGxheVNjcmlwdHM9XCIke0pBVkFTQ1JJUFRDT1JFX1BSSVZB
VEVfSEVBREVSU19ESVJ9XCJcbmV4cG9ydCBHZW5lcmF0ZUpTQnVpbHRpbnNTY3JpcHRzPVwiJHtK
QVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSfVwiXG5cbmlmIFsgISAkQ0MgXTsgdGhl
blxuICAgIGV4cG9ydCBDQz1cImB4Y3J1biAtZmluZCBjbGFuZ2BcIlxuZmlcblxuaWYgWyAhICRH
UEVSRiBdOyB0aGVuXG4gICAgZXhwb3J0IEdQRVJGPVwiYHhjcnVuIC1maW5kIGdwZXJmYFwiXG5m
aVxuXG5pZiBbIFwiJHtBQ1RJT059XCIgPSBcImJ1aWxkXCIgLW8gXCIke0FDVElPTn1cIiA9IFwi
aW5zdGFsbFwiIC1vIFwiJHtBQ1RJT059XCIgPSBcImluc3RhbGxoZHJzXCIgXTsgdGhlblxuICAg
IG1ha2UgIC0tbm8tYnVpbHRpbi1ydWxlcyAtZiBcIldlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZVwiIC1qIGAvdXNyL3NiaW4vc3lzY3RsIC1uIGh3LmFjdGl2ZWNwdWAgU0RLUk9PVD1cIiR7U0RL
Uk9PVH1cIlxuZmlcbiI7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiR7QlVJTFRfUFJP
RFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9XZWJDb3JlXCJcbmNkIFwiJHtCVUlMVF9QUk9EVUNU
U19ESVJ9L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmVcIlxuXG4vYmluL2xuIC1zZmggXCIke1NSQ1JP
T1R9XCIgV2ViQ29yZVxuZXhwb3J0IFdlYkNvcmU9XCJXZWJDb3JlXCJcbmV4cG9ydCBJbnNwZWN0
b3JTY3JpcHRzPVwiJHtKQVZBU0NSSVBUQ09SRV9QUklWQVRFX0hFQURFUlNfRElSfVwiXG5leHBv
cnQgV2ViUmVwbGF5U2NyaXB0cz1cIiR7SkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJ
Un1cIlxuZXhwb3J0IEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSPVwiJHtKQVZBU0NSSVBUQ09S
RV9QUklWQVRFX0hFQURFUlNfRElSfVwiXG5cbmlmIFsgISAkQ0MgXTsgdGhlblxuICAgIGV4cG9y
dCBDQz1cImB4Y3J1biAtZmluZCBjbGFuZ2BcIlxuZmlcblxuaWYgWyAhICRHUEVSRiBdOyB0aGVu
XG4gICAgZXhwb3J0IEdQRVJGPVwiYHhjcnVuIC1maW5kIGdwZXJmYFwiXG5maVxuXG5pZiBbIFwi
JHtBQ1RJT059XCIgPSBcImJ1aWxkXCIgLW8gXCIke0FDVElPTn1cIiA9IFwiaW5zdGFsbFwiIC1v
IFwiJHtBQ1RJT059XCIgPSBcImluc3RhbGxoZHJzXCIgXTsgdGhlblxuICAgIG1ha2UgIC0tbm8t
YnVpbHRpbi1ydWxlcyAtZiBcIldlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZVwiIC1qIGAvdXNy
L3NiaW4vc3lzY3RsIC1uIGh3LmFjdGl2ZWNwdWAgU0RLUk9PVD1cIiR7U0RLUk9PVH1cIlxuZmlc
biI7CiAJCX07CiAvKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXgg
MmFmOTc5OWVkMWViZWQ0ZmI5Y2I4ZDk0ZjY3NjhhYzk1NjJjZmMwMi4uZTM4ZDM1MzA5MThjYzBh
ZjY5MzM5ZmE3MjE5NWE3NDQ2Y2FjZTk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSlNET01XaW5k
b3dCYXNlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTRE9NV2luZG93U2hlbGwqIHNoZWxsKQog
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oXAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbkZ1bmN0aW9ucygpLnJlYWRhYmxl
U3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMoKS5uYW1lIyNQcml2YXRlTmFtZSgpLCBcCiAgICAgICAg
ICAgICBtX3ByaXZhdGVGdW5jdGlvbnMucmVhZGFibGVTdHJlYW1JbnRlcm5hbHMoKS5tXyMjbmFt
ZSMjRnVuY3Rpb24uZ2V0KCkgLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAotICAgICAgICBXRUJD
T1JFUkVBREFCTEVTVFJFQU1JTlRFUk5BTFNfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUo
REVDTEFSRV9HTE9CQUxfU1RBVElDKQorICAgICAgICBXRUJDT1JFX0ZPUkVBQ0hfUkVBREFCTEVT
VFJFQU1JTlRFUk5BTFNfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfR0xPQkFMX1NUQVRJ
QykKICN1bmRlZiBERUNMQVJFX0dMT0JBTF9TVEFUSUMKICNlbmRpZgogICAgIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucyBiL1NvdXJjZS9XZWJDb3Jl
L2dlbmVyYXRlLWpzLWJ1aWx0aW5zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWRk
NjQyZTdjYTJmODlhNzhlMWQxYTUwM2Q4Yjk3ODJiNDA0NDgwLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2dlbmVyYXRlLWpzLWJ1
aWx0aW5zCisrKyAvZGV2L251bGwKQEAgLTEsMTgxICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9u
Ci0jIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0j
Ci0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0j
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0jIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0jIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSMgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi0KLWltcG9ydCBhcmdwYXJzZQotaW1wb3J0IGZpbGVjbXAKLWltcG9y
dCBvcwotaW1wb3J0IHN1YnByb2Nlc3MKLQotZnJvbSBzdHJpbmcgaW1wb3J0IFRlbXBsYXRlCi0K
LQotcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQotcGFyc2VyLmFkZF9hcmd1bWVu
dCgnLS1vdXRwdXRfZGlyJywgZGVmYXVsdD0nJywgaGVscD0nb3V0cHV0IGRpcmVjdG9yeScpCi1w
YXJzZXIuYWRkX2FyZ3VtZW50KCctLWlucHV0JywgaGVscD0ncGF0aCB0byBpbnB1dCBKUyBmaWxl
JykKLXBhcnNlci5hZGRfYXJndW1lbnQoJy0tZ2VuZXJhdGVfanNfYnVpbHRpbnNfcGF0aCcsIGhl
bHA9J3BhdGggdG8gZGlyZWN0b3J5IGNvbnRhaW5pbmcgSmF2YVNjcmlwdENvcmVcJ3MgZ2VuZXJh
dGUtanMtYnVpbHRpbnMnKQotCi1hcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotZmlsZW5hbWUg
PSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoYXJncy5pbnB1dCkpWzBdCi0KLSMg
Z2VuZXJhdGUgSlMgYnVpbHRpbnMKLW5hbWVzcGFjZSA9ICJXZWJDb3JlIgotcHJlZml4ID0gIldF
QkNPUkUiICsgZmlsZW5hbWUudXBwZXIoKQotb3V0cHV0ID0gb3MucGF0aC5qb2luKGFyZ3Mub3V0
cHV0X2RpciwgZmlsZW5hbWUgKyAiQnVpbHRpbnMiKQotanNjX2dlbmVyYXRlX2J1aWx0aW5fc2Ny
aXB0ID0gb3MucGF0aC5qb2luKGFyZ3MuZ2VuZXJhdGVfanNfYnVpbHRpbnNfcGF0aCwgImdlbmVy
YXRlLWpzLWJ1aWx0aW5zIikKLQotc3VicHJvY2Vzcy5jYWxsKFsicHl0aG9uIiwganNjX2dlbmVy
YXRlX2J1aWx0aW5fc2NyaXB0LCAiLS1vdXRwdXQiLCBvdXRwdXQsICItLW5hbWVzcGFjZSIsIG5h
bWVzcGFjZSwgIi0tcHJlZml4IiwgcHJlZml4LCBhcmdzLmlucHV0XSwgc3RkZXJyPXN1YnByb2Nl
c3MuU1RET1VUKQotCi0jIGdlbmVyYXRlIEpTIGJ1aWx0aW5zIHdyYXBwZXIKLW91dHB1dF9iYXNl
ID0gb3V0cHV0ICsgIldyYXBwZXIiCi0KLWJ1aWx0aW5zV3JhcHBlckhlYWRlciA9IG9wZW4ob3V0
cHV0X2Jhc2UgKyAiLmgudG1wIiwgInciKQotCi1idWlsdGluc1dyYXBwZXJIZWFkZXIud3JpdGUo
VGVtcGxhdGUoCi0iIiIKLS8qIEdlbmVyYXRlZCBieSBnZW5lcmF0ZS1qcy1idWlsdGlucyBkbyBu
b3QgaGFuZCBlZGl0LiAqLwotCi0vKgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICog
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExl
c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRl
IHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8KLQot
I2lmbmRlZiAke0ZpbGVuYW1lfUJ1aWx0aW5zV3JhcHBlcl9oCi0jZGVmaW5lICR7RmlsZW5hbWV9
QnVpbHRpbnNXcmFwcGVyX2gKLQotI2luY2x1ZGUgIiR7RmlsZW5hbWV9QnVpbHRpbnMuaCIKLSNp
bmNsdWRlIDxieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgotI2luY2x1ZGUg
PGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSWRlbnRpZmllci5o
PgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNsYXNzICR7RmlsZW5hbWV9QnVpbHRpbnNXcmFwcGVyIDogcHJpdmF0ZSBKU0M6OldlYWtI
YW5kbGVPd25lciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgJHtGaWxlbmFtZX1CdWlsdGluc1dy
YXBwZXIoSlNDOjpWTSogdm0pCi0gICAgICAgIDogbV92bSgqdm0pCi0gICAgICAgICR7UHJlZml4
fV9GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX0JVSUxUSU5fTkFNRVMp
Ci0jZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlv
bk5hbWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKEpTQzo6bWFrZVNvdXJjZShTdHJpbmdJ
bXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFtZSwgbGVuZ3RoKSkpCi0gICAgICAgICR7UHJl
Zml4fV9GT1JFQUNIX0JVSUxUSU4oSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQot
I3VuZGVmIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUwotICAgIHsKLSAgICB9Ci0K
LSNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBs
ZW5ndGgpIFxcCi0gICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhl
Y3V0YWJsZSgpOyBcXAotICAgIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkg
Y29uc3QgeyByZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQotICAgICR7UHJlZml4fV9GT1JFQUNI
X0JVSUxUSU4oRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCi0jdW5kZWYgRVhQT1NFX0JVSUxU
SU5fRVhFQ1VUQUJMRVMKLQotICAgICR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05f
TkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUikKLQotICAgIHZvaWQgZXhw
b3J0TmFtZXMoKTsKLQotcHJpdmF0ZToKLSAgICBKU0M6OlZNJiBtX3ZtOwotCi0gICAgJHtQcmVm
aXh9X0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FUykK
LQotI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25O
YW1lLCBsZW5ndGgpIFxcCi0gICAgSlNDOjpTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7XFwK
LSAgICBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4gbV8jI25hbWUj
I0V4ZWN1dGFibGU7Ci0gICAgJHtQcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTihERUNMQVJFX0JVSUxU
SU5fU09VUkNFX01FTUJFUlMpCi0jdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJT
Ci0KLX07Ci0KLSNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rp
b25OYW1lLCBsZW5ndGgpIFxcCi1pbmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogJHtGaWxlbmFtZX1CdWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4ZWN1dGFibGUoKSBcXAote1xc
Ci0gICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSlcXAotICAgICAgICBtXyMjbmFtZSMjRXhl
Y3V0YWJsZSA9IEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPihKU0M6
OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fdm0sIG1fIyNuYW1lIyNTb3VyY2UsIGZ1bmN0aW9u
TmFtZSMjUHVibGljTmFtZSgpLCBzXyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0eSksIHRoaXMsICZt
XyMjbmFtZSMjRXhlY3V0YWJsZSk7XFwKLSAgICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUu
Z2V0KCk7XFwKLX0KLSR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU4oREVGSU5FX0JVSUxUSU5fRVhF
Q1VUQUJMRVMpCi0jdW5kZWYgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMKLQotaW5saW5lIHZv
aWQgJHtGaWxlbmFtZX1CdWlsdGluc1dyYXBwZXI6OmV4cG9ydE5hbWVzKCkKLXsKLSNkZWZpbmUg
RVhQT1JUX0ZVTkNUSU9OX05BTUUobmFtZSkgbV92bS5wcm9wZXJ0eU5hbWVzLT5hcHBlbmRFeHRl
cm5hbE5hbWUobmFtZSMjUHVibGljTmFtZSgpLCBuYW1lIyNQcml2YXRlTmFtZSgpKTsKLSAgICAk
e1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoRVhQT1JUX0ZVTkNUSU9OX05B
TUUpCi0jdW5kZWYgRVhQT1JUX0ZVTkNUSU9OX05BTUUKLX0KLQotY2xhc3MgJHtGaWxlbmFtZX1C
dWlsdGluRnVuY3Rpb25zIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCAke0ZpbGVuYW1lfUJ1aWx0
aW5GdW5jdGlvbnMoSlNDOjpWTSYgdm0pIDogbV92bSh2bSkgeyB9Ci0KLSAgICB2b2lkIGluaXQo
SlNDOjpKU0dsb2JhbE9iamVjdCYpOwotICAgIHZvaWQgdmlzaXQoSlNDOjpTbG90VmlzaXRvciYp
OwotCi1wdWJsaWM6Ci0gICAgSlNDOjpWTSYgbV92bTsKLQotI2RlZmluZSBERUNMQVJFX0JVSUxU
SU5fU09VUkNFX01FTUJFUlMoZnVuY3Rpb25OYW1lKSBcXAotICAgIEpTQzo6V3JpdGVCYXJyaWVy
PEpTQzo6SlNGdW5jdGlvbj4gbV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb247Ci0gICAgJHtQcmVm
aXh9X0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0Vf
TUVNQkVSUykKLSN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKLX07Ci0KLWlu
bGluZSB2b2lkICR7RmlsZW5hbWV9QnVpbHRpbkZ1bmN0aW9uczo6aW5pdChKU0M6OkpTR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0jZGVmaW5lIEVYUE9SVF9GVU5DVElPTihjb2RlTmFt
ZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXFwKLSAgICBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlv
bi5zZXQobV92bSwgJmdsb2JhbE9iamVjdCwgSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGlu
RnVuY3Rpb24obV92bSwgY29kZU5hbWUjI0dlbmVyYXRvcihtX3ZtKSwgJmdsb2JhbE9iamVjdCkp
OwotICAgICR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU4oRVhQT1JUX0ZVTkNUSU9OKQotI3VuZGVm
IEVYUE9SVF9GVU5DVElPTgotfQotCi1pbmxpbmUgdm9pZCAke0ZpbGVuYW1lfUJ1aWx0aW5GdW5j
dGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0jZGVmaW5lIFZJU0lU
X0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFtZSMjRnVuY3Rpb24pOwotICAg
ICR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShWSVNJVF9GVU5DVElPTikK
LSN1bmRlZiBWSVNJVF9GVU5DVElPTgotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyAke0ZpbGVuYW1lfUJ1aWx0aW5zV3JhcHBlcl9oCi0iIiIpLnN1YnN0aXR1dGUoZGlj
dChGaWxlbmFtZT1maWxlbmFtZSwgUHJlZml4PXByZWZpeCkpKQotCi1idWlsdGluc1dyYXBwZXJI
ZWFkZXIuY2xvc2UoKQotCi1pZiAobm90IG9zLnBhdGguZXhpc3RzKG91dHB1dF9iYXNlICsgIi5o
IikpIG9yIChub3QgZmlsZWNtcC5jbXAob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0cHV0X2Jh
c2UgKyAiLmgiLCBzaGFsbG93PUZhbHNlKSk6Ci0gICAgaWYgKG9zLnBhdGguZXhpc3RzKG91dHB1
dF9iYXNlICsgIi5oIikpOgotICAgICAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmgiKQot
ICAgIG9zLnJlbmFtZShvdXRwdXRfYmFzZSArICIuaC50bXAiLCBvdXRwdXRfYmFzZSArICIuaCIp
Ci1lbHNlOgotICAgIG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIuaC50bXAiKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDY4ZjQ5NWEyY2NjMzY3
Yzc4NWVmNDEzYzQwZDc3NjlhMGMwZDljYTMuLjc0ODIzNzFhMGIwOWY0OGM1ZGU0NzhhMGE1ZTk3
NDQ4NjE0OTdmMjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxNS0xMC0xMyAgQnJpYW4gQnVyZyAgPGJidXJnQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXN0cnVjdHVyZSBnZW5lcmF0ZS1qcy1iaW5kaW5ncyBzY3Jp
cHQgdG8gYmUgbW9kdWxhciBhbmQgdGVzdGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTkyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHN0dWIgc2hlbGwgc2NyaXB0IGFuZCBiYXNpYyB3
ZWJraXRweSBzdXBwb3J0IGZvciBydW5uaW5nIGJ1aWx0aW5zCisgICAgICAgIGdlbmVyYXRvciB0
ZXN0cy4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWJ1aWx0aW5zLWdlbmVyYXRvci10ZXN0czog
QWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvZGVn
ZW4vX19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29kZWdl
bi9tYWluLnB5OiBBZGRlZC4KKworICAgICAgICAgICAgVGhlIG9ubHkgaW50ZXJlc3RpbmcgZGlm
ZmVyZW5jZSBoZXJlIGZyb20gdGhlIGluc3BlY3RvciBwcm90b2NvbAorICAgICAgICAgICAgZ2Vu
ZXJhdG9yIGVxdWl2YWxlbnQgaXMgdGhhdCB0aGlzIGltcGxlbWVudGF0aW9uIGRlY29kZXMgdGhl
IHRhcmdldAorICAgICAgICAgICAgZnJhbWV3b3JrIGFuZCBvdXRwdXQgbW9kZSAoY29tYmluZWQg
b3Igc2VwYXJhdGUpIGZyb20gdGhlIHRlc3QncyBmaWxlIG5hbWUuCisKKyAgICAgICAgKEJ1aWx0
aW5zR2VuZXJhdG9yVGVzdHMpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3JUZXN0cy5fX2lu
aXRfXyk6CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvclRlc3RzLmdlbmVyYXRlX2Zyb21fanNf
YnVpbHRpbnMpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3JUZXN0cy53cml0ZV9lcnJvcl9m
aWxlKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHMuZGV0ZWN0X2NoYW5nZXMpOgor
ICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3JUZXN0cy5ydW5fdGVzdHMpOgorICAgICAgICAoQnVp
bHRpbnNHZW5lcmF0b3JUZXN0cy5tYWluKToKKwogMjAxNS0xMC0xNCAgQW5kcmVhcyBLbGluZyAg
PGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTkwODgyKTogQ29uY2F0
ZW5hdGluZyBhIGNoYXJhY3RlciBhcnJheSBhbmQgYW4gZW1wdHkgc3RyaW5nIGlzIGJyb2tlbi4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWJ1aWx0aW5zLWdlbmVyYXRvci10ZXN0cyBi
L1Rvb2xzL1NjcmlwdHMvcnVuLWJ1aWx0aW5zLWdlbmVyYXRvci10ZXN0cwpuZXcgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
Mzk4Yzc4Y2ExMGVjNTk3NjI2NjEyYzg1NTUzYWJkMWE0ZTZmYmQ0Ci0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvU2NyaXB0cy9ydW4tYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzCkBAIC0wLDAgKzEs
NDIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworaW1wb3J0IHN5cworZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9y
dCBleGVjdXRpdmUKKworZGVmIG1haW4oYXJndik6CisgICAgIiIiUnVucyB0aGUgSlMgYnVpbHRp
bnMgY29kZSBnZW5lcmF0b3Igb24gdGVzdCBpbnB1dCBmaWxlcyBhbmQgY29tcGFyZXMKKyAgICB0
aGUgcmVzdWx0cyB3aXRoIHJlZmVyZW5jZSBmaWxlcy4KKworICAgIE9wdGlvbnM6CisgICAgICAg
LS1yZXNldC1yZXN1bHRzOiBPdmVyd3JpdGVzIHRoZSByZWZlcmVuY2UgZmlsZXMgd2l0aCB0aGUg
Z2VuZXJhdGVkIHJlc3VsdHMuCisKKyAgICAiIiIKKyAgICByZXNldF9yZXN1bHRzID0gIi0tcmVz
ZXQtcmVzdWx0cyIgaW4gYXJndgorCisgICAgZnJvbSB3ZWJraXRweS5jb2RlZ2VuLm1haW4gaW1w
b3J0IEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHMKKyAgICByZXR1cm4gQnVpbHRpbnNHZW5lcmF0b3JU
ZXN0cyhyZXNldF9yZXN1bHRzLCBleGVjdXRpdmUuRXhlY3V0aXZlKCkpLm1haW4oKQorCitpZiBf
X25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHN5cy5leGl0KG1haW4oc3lzLmFyZ3YpKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb2RlZ2VuL19faW5pdF9fLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb2RlZ2VuL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmNjVi
ZWU1YmI3N2U5NmViYzdjZDljNDc2NDA2OTBmYmRhOGFjMTkKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvZGVnZW4vX19pbml0X18ucHkKQEAgLTAsMCArMSBAQAor
IyBSZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxl
IGZpbGVzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvZGVnZW4vbWFpbi5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29kZWdlbi9tYWluLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAw
Mzk2ZGI5YTM4YmUwZjA3YmUxODYzYjg4YWVkNDFlZGY5N2Q5NjkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvZGVnZW4vbWFpbi5weQpAQCAtMCwwICsxLDE0NCBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMgQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUworIyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyMgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCisjIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorIyBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CitpbXBvcnQgb3MKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3lzCitp
bXBvcnQgdGVtcGZpbGUKK2Zyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5kZXRlY3Rp
b24gaW1wb3J0IGRldGVjdF9zY21fc3lzdGVtCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
ZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgorCisKK2NsYXNzIEJ1aWx0aW5zR2VuZXJhdG9y
VGVzdHM6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVzZXRfcmVzdWx0cywgZXhlY3V0aXZl
KToKKyAgICAgICAgc2VsZi5yZXNldF9yZXN1bHRzID0gcmVzZXRfcmVzdWx0cworICAgICAgICBz
ZWxmLmV4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZQorCisgICAgZGVmIGdlbmVyYXRlX2Zyb21fanNfYnVp
bHRpbnMoc2VsZiwgYnVpbHRpbnNfZmlsZSwgb3V0cHV0X2RpcmVjdG9yeSwgZnJhbWV3b3JrX25h
bWU9IiIsIGNvbWJpbmVkX291dHB1dHM9RmFsc2UpOgorICAgICAgICBjbWQgPSBbJ3B5dGhvbics
CisgICAgICAgICAgICAgICAnSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWls
dGlucy5weScsCisgICAgICAgICAgICAgICAnLS1vdXRwdXQtZGlyZWN0b3J5Jywgb3V0cHV0X2Rp
cmVjdG9yeSwKKyAgICAgICAgICAgICAgICctLWZvcmNlJywKKyAgICAgICAgICAgICAgICctLWZy
YW1ld29yaycsIGZyYW1ld29ya19uYW1lLAorICAgICAgICAgICAgICAgJy0tdGVzdCddCisKKyAg
ICAgICAgaWYgY29tYmluZWRfb3V0cHV0czoKKyAgICAgICAgICAgIGNtZC5hcHBlbmQoJy0tY29t
YmluZWQnKQorCisgICAgICAgIGNtZC5hcHBlbmQoYnVpbHRpbnNfZmlsZSkKKworICAgICAgICBl
eGl0X2NvZGUgPSAwCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN0ZGVycl9vdXRwdXQgPSBz
ZWxmLmV4ZWN1dGl2ZS5ydW5fY29tbWFuZChjbWQpCisgICAgICAgICAgICBpZiBzdGRlcnJfb3V0
cHV0OgorICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfZXJyb3JfZmlsZShidWlsdGluc19maWxl
LCBvdXRwdXRfZGlyZWN0b3J5LCBzdGRlcnJfb3V0cHV0KQorICAgICAgICBleGNlcHQgU2NyaXB0
RXJyb3IsIGU6CisgICAgICAgICAgICBwcmludCBlLm91dHB1dAorICAgICAgICAgICAgZXhpdF9j
b2RlID0gZS5leGl0X2NvZGUKKyAgICAgICAgcmV0dXJuIGV4aXRfY29kZQorCisgICAgZGVmIHdy
aXRlX2Vycm9yX2ZpbGUoc2VsZiwgaW5wdXRfZmlsZXBhdGgsIG91dHB1dF9kaXJlY3RvcnksIGVy
cm9yX291dHB1dCk6CisgICAgICAgIG91dHB1dF9maWxlcGF0aCA9IG9zLnBhdGguam9pbihvdXRw
dXRfZGlyZWN0b3J5LCBvcy5wYXRoLmJhc2VuYW1lKGlucHV0X2ZpbGVwYXRoKSArICctZXJyb3In
KQorCisgICAgICAgIHdpdGggb3BlbihvdXRwdXRfZmlsZXBhdGgsICJ3IikgYXMgb3V0cHV0X2Zp
bGU6CisgICAgICAgICAgICBvdXRwdXRfZmlsZS53cml0ZShlcnJvcl9vdXRwdXQpCisKKyAgICBk
ZWYgZGV0ZWN0X2NoYW5nZXMoc2VsZiwgd29ya19kaXJlY3RvcnksIHJlZmVyZW5jZV9kaXJlY3Rv
cnkpOgorICAgICAgICBjaGFuZ2VzX2ZvdW5kID0gRmFsc2UKKyAgICAgICAgZm9yIG91dHB1dF9m
aWxlIGluIG9zLmxpc3RkaXIod29ya19kaXJlY3RvcnkpOgorICAgICAgICAgICAgY21kID0gWydk
aWZmJywKKyAgICAgICAgICAgICAgICAgICAnLXUnLAorICAgICAgICAgICAgICAgICAgICctTics
CisgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHJlZmVyZW5jZV9kaXJlY3RvcnksIG91
dHB1dF9maWxlKSwKKyAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4od29ya19kaXJlY3Rv
cnksIG91dHB1dF9maWxlKV0KKworICAgICAgICAgICAgZXhpdF9jb2RlID0gMAorICAgICAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgICAgIG91dHB1dCA9IHNlbGYuZXhlY3V0aXZlLnJ1bl9jb21t
YW5kKGNtZCkKKyAgICAgICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciwgZToKKyAgICAgICAgICAg
ICAgICBvdXRwdXQgPSBlLm91dHB1dAorICAgICAgICAgICAgICAgIGV4aXRfY29kZSA9IGUuZXhp
dF9jb2RlCisKKyAgICAgICAgICAgIGlmIGV4aXRfY29kZSBvciBvdXRwdXQ6CisgICAgICAgICAg
ICAgICAgcHJpbnQgJ0ZBSUw6ICVzJyAlIG91dHB1dF9maWxlCisgICAgICAgICAgICAgICAgcHJp
bnQgb3V0cHV0CisgICAgICAgICAgICAgICAgY2hhbmdlc19mb3VuZCA9IFRydWUKKyAgICAgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcHJpbnQgJ1BBU1M6ICVzJyAlIG91dHB1dF9maWxl
CisgICAgICAgIHJldHVybiBjaGFuZ2VzX2ZvdW5kCisKKyAgICBkZWYgcnVuX3Rlc3RzKHNlbGYs
IGlucHV0X2RpcmVjdG9yeSwgcmVmZXJlbmNlX2RpcmVjdG9yeSk6CisgICAgICAgIHdvcmtfZGly
ZWN0b3J5ID0gcmVmZXJlbmNlX2RpcmVjdG9yeQorCisgICAgICAgIHBhc3NlZCA9IFRydWUKKyAg
ICAgICAgZm9yIGlucHV0X2ZpbGUgaW4gb3MubGlzdGRpcihpbnB1dF9kaXJlY3RvcnkpOgorICAg
ICAgICAgICAgKHRlc3RfbmFtZSwgZXh0ZW5zaW9uKSA9IG9zLnBhdGguc3BsaXRleHQoaW5wdXRf
ZmlsZSkKKyAgICAgICAgICAgIGlmIGV4dGVuc2lvbiAhPSAnLmpzJzoKKyAgICAgICAgICAgICAg
ICBjb250aW51ZQorICAgICAgICAgICAgIyBHZW5lcmF0ZSBvdXRwdXQgaW50byB0aGUgd29yayBk
aXJlY3RvcnkgKGVpdGhlciB0aGUgZ2l2ZW4gb25lIG9yIGEKKyAgICAgICAgICAgICMgdGVtcCBv
bmUgaWYgbm90IHJlc2V0X3Jlc3VsdHMgaXMgcGVyZm9ybWVkKQorICAgICAgICAgICAgaWYgbm90
IHNlbGYucmVzZXRfcmVzdWx0czoKKyAgICAgICAgICAgICAgICB3b3JrX2RpcmVjdG9yeSA9IHRl
bXBmaWxlLm1rZHRlbXAoKQorCisgICAgICAgICAgICAoZnJhbWV3b3JrX25hbWUsIHRlc3RfY2Fz
ZSwgb3V0cHV0X21vZGUpID0gdGVzdF9uYW1lLnNwbGl0KCctJykKKyAgICAgICAgICAgIGlmIG5v
dCBmcmFtZXdvcmtfbmFtZSBvciBub3Qgb3V0cHV0X21vZGUgb3Igbm90IHRlc3RfY2FzZToKKyAg
ICAgICAgICAgICAgICBwcmludCAiSW52YWxpZCB0ZXN0IGNhc2UgbmFtZTogc2hvdWxkIGJlIEZy
YW1ld29yay1UZXN0Q2FzZU5hbWUtT3V0cHV0TW9kZS5qcyIKKyAgICAgICAgICAgICAgICBjb250
aW51ZQorCisgICAgICAgICAgICBjb21iaW5lZF9vdXRwdXRzID0gb3V0cHV0X21vZGUgPT0gIkNv
bWJpbmVkIgorICAgICAgICAgICAgaWYgc2VsZi5nZW5lcmF0ZV9mcm9tX2pzX2J1aWx0aW5zKG9z
LnBhdGguam9pbihpbnB1dF9kaXJlY3RvcnksIGlucHV0X2ZpbGUpLCB3b3JrX2RpcmVjdG9yeSwg
ZnJhbWV3b3JrX25hbWU9ZnJhbWV3b3JrX25hbWUsIGNvbWJpbmVkX291dHB1dHM9Y29tYmluZWRf
b3V0cHV0cyk6CisgICAgICAgICAgICAgICAgcGFzc2VkID0gRmFsc2UKKworICAgICAgICAgICAg
aWYgc2VsZi5yZXNldF9yZXN1bHRzOgorICAgICAgICAgICAgICAgIHByaW50ICJSZXNldCByZXN1
bHRzIGZvciB0ZXN0OiAlcyIgJSAoaW5wdXRfZmlsZSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZQorCisgICAgICAgICAgICAjIERldGVjdCBjaGFuZ2VzCisgICAgICAgICAgICBpZiBzZWxmLmRl
dGVjdF9jaGFuZ2VzKHdvcmtfZGlyZWN0b3J5LCByZWZlcmVuY2VfZGlyZWN0b3J5KToKKyAgICAg
ICAgICAgICAgICBwYXNzZWQgPSBGYWxzZQorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZSh3b3Jr
X2RpcmVjdG9yeSkKKworICAgICAgICByZXR1cm4gcGFzc2VkCisKKyAgICBkZWYgbWFpbihzZWxm
KToKKyAgICAgICAgY3VycmVudF9zY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShvcy5jdXJkaXIpCisg
ICAgICAgIG9zLmNoZGlyKG9zLnBhdGguam9pbihjdXJyZW50X3NjbS5jaGVja291dF9yb290LCAn
U291cmNlJykpCisKKyAgICAgICAgYWxsX3Rlc3RzX3Bhc3NlZCA9IFRydWUKKworICAgICAgICBp
bnB1dF9kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oJ0phdmFTY3JpcHRDb3JlJywgJ1NjcmlwdHMn
LCAndGVzdHMnLCAnYnVpbHRpbnMnKQorICAgICAgICByZWZlcmVuY2VfZGlyZWN0b3J5ID0gb3Mu
cGF0aC5qb2luKCdKYXZhU2NyaXB0Q29yZScsICdTY3JpcHRzJywgJ3Rlc3RzJywgJ2J1aWx0aW5z
JywgJ2V4cGVjdGVkJykKKyAgICAgICAgaWYgbm90IHNlbGYucnVuX3Rlc3RzKGlucHV0X2RpcmVj
dG9yeSwgcmVmZXJlbmNlX2RpcmVjdG9yeSk6CisgICAgICAgICAgICBhbGxfdGVzdHNfcGFzc2Vk
ID0gRmFsc2UKKworICAgICAgICBwcmludCAnJworICAgICAgICBpZiBhbGxfdGVzdHNfcGFzc2Vk
OgorICAgICAgICAgICAgcHJpbnQgJ0FsbCB0ZXN0cyBQQVNTIScKKyAgICAgICAgICAgIHJldHVy
biAwCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcmludCAnU29tZSB0ZXN0cyBGQUlMISAo
VG8gdXBkYXRlIHRoZSByZWZlcmVuY2UgZmlsZXMsIGV4ZWN1dGUgInJ1bi1idWlsdGlucy1nZW5l
cmF0b3ItdGVzdHMgLS1yZXNldC1yZXN1bHRzIiknCisgICAgICAgICAgICByZXR1cm4gLTEK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263532</attachid>
            <date>2015-10-19 17:10:41 -0700</date>
            <delta_ts>2015-10-20 11:52:25 -0700</delta_ts>
            <desc>Proposed Fix (Rebased)</desc>
            <filename>bug-149929-20151019170959.patch</filename>
            <type>text/plain</type>
            <size>341233</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NWNjNTRkYjM5ZDMyMjg2NjdiNTlkNjk3ODRjMDRhOTMxYWYyM2I5Li5jZjgxMzc0Mzk0YmJmMTY3
ZmIyZTBhZjFhNjAzYzhlY2Q3NDg1N2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTUgQEAKKzIwMTUtMTAtMTkgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmVzdHJ1Y3R1cmUgZ2VuZXJhdGUtanMtYmluZGluZ3Mgc2NyaXB0IHRvIGJlIG1v
ZHVsYXIgYW5kIHRlc3RhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDk5MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGlzIGEgbmV3IGNvZGUgZ2VuZXJhdG9yLCBiYXNlZCBvbiB0aGUgcmVw
bGF5IGlucHV0cyBjb2RlIGdlbmVyYXRvciBhbmQKKyAgICAgICAgdGhlIGluc3BlY3RvciBwcm90
b2NvbCBjb2RlIGdlbmVyYXRvciwgd2hpY2ggcHJvZHVjZXMgdmFyaW91cyBmaWxlcyBmb3IgSlMK
KyAgICAgICAgYnVpbHRpbnMuCisKKyAgICAgICAgUmVsYXRpdmUgdG8gdGhlIGdlbmVyYXRvciBp
dCByZXBsYWNlcywgdGhpcyBvbmUgY29uc29saWRhdGVzIHR3byBzY3JpcHRzIGluCisgICAgICAg
IEphdmFTY3JpcHRDb3JlIGFuZCBXZWJDb3JlIGludG8gYSBzaW5nbGUgc2NyaXB0IHdpdGggbXVs
dGlwbGUgZmlsZXMuIFBhcnNlZAorICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnVpbHRp
bnMgZmlsZSBpcyBzdG9yZWQgaW4gYmFja2VuZC1pbmRlcGVuZGVudCBtb2RlbAorICAgICAgICBv
YmplY3RzLiBFYWNoIG91dHB1dCBmaWxlIGhhcyBpdHMgb3duIGNvZGUgZ2VuZXJhdG9yIHRoYXQg
dXNlcyB0aGUgbW9kZWwgdG8KKyAgICAgICAgcHJvZHVjZSByZXN1bHRpbmcgY29kZS4gR2VuZXJh
dG9ycyBhcmUgYWRkaXRpb25hbGx5IHBhcmFtZXRlcml6ZWQgYnkgdGhlIHRhcmdldAorICAgICAg
ICBmcmFtZXdvcmsgKHRvIGNob29zZSBjb3JyZWN0IG1hY3JvcyBhbmQgaW5jbHVkZXMpIGFuZCBv
dXRwdXQgbW9kZSAob25lCisgICAgICAgIGhlYWRlci9pbXBsZW1lbnRhdGlvbiBmaWxlIHBlciBi
dWlsdGluIG9yIHBlciBmcmFtZXdvcmspLgorCisgICAgICAgIEl0IGluY2x1ZGVzIGEgZmV3IHNp
bXBsZSB0ZXN0cyBvZiB0aGUgZ2VuZXJhdG9yJ3MgZnVuY3Rpb25hbGl0eS4gVGhlc2UgcmVzdWx0
LQorICAgICAgICBiYXNlZCB0ZXN0cyB3aWxsIGJlY29tZSBpbmNyZWFzaW5nbHkgbW9yZSBpbXBv
cnRhbnQgYXMgd2Ugc3RhcnQgdG8gYWRkIHN1cHBvcnQKKyAgICAgICAgZm9yIGJ1aWx0aW5zIGFu
bm90YXRpb24gc3VjaCBhcyBAb3B0aW9uYWwsIEBpbnRlcm5hbCwgZXRjLiB0byB0aGUgY29kZSBn
ZW5lcmF0b3IuCisKKyAgICAgICAgU29tZSBvZiB0aGVzZSBjb21wbGV4aXRpZXMsIHN1Y2ggYXMg
aGF2aW5nIHR3byBvdXRwdXQgbW9kZXMsIHdpbGwgYmUgcmVtb3ZlZCBpbgorICAgICAgICBzdWJz
ZXF1ZW50IHBhdGNoZXMuIFRoaXMgcGF0Y2ggaXMgaW50ZW5kZWQgdG8gZXhhY3RseSByZXBsYWNl
IHRoZSBleGlzdGluZworICAgICAgICBmdW5jdGlvbmFsaXR5IHdpdGggYSB1bmlmaWVkIHNjcmlw
dCB0aGF0IG1ha2VzIGFkZGl0aW9uYWwgY2xlYW51cHMgc3RyYWlnaHRmb3J3YXJkLgorCisgICAg
ICAgIEFkZGl0aW9uYWwgY2xlYW51cCBhbmQgY29uc29saWRhdGlvbiBiZXR3ZWVuIGluc3BlY3Rv
ciBjb2RlIGdlbmVyYXRvciBzY3JpcHRzCisgICAgICAgIGFuZCB0aGlzIHNjcmlwdCB3aWxsIGJl
IHB1cnN1ZWQgaW4gZm9sbG93dXAgcGF0Y2hlcy4KKworICAgICAgICBOZXcgdGVzdHM6CisKKyAg
ICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21p
c2UtQ29tYmluZWQuanMKKyAgICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0
Q29yZS1CdWlsdGluLlByb21pc2UtU2VwYXJhdGUuanMKKyAgICAgICAgU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5qcworICAg
ICAgICBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90
eXBlLVNlcGFyYXRlLmpzCisgICAgICAgIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlw
dENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpzCisgICAgICAgIFNjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFyYXRlLmpz
CisgICAgICAgIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1T
ZXBhcmF0ZS5qcworICAgICAgICBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRl
ZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcworICAgICAgICBTY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcworICAgICAgICBTY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcworCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKworICAgICAgICAgICAgRGVmaW5lIEphdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSIGV4cGxpY2l0bHkgc28gdGhlIGFkZF9jdXN0b21fY29tbWFuZCBhbmQK
KyAgICAgICAgICAgIHNoYXJlZCBmaWxlIGxpc3RzIGFyZSBpZGVudGljYWwgYmV0d2VlbiBKYXZh
U2NyaXB0Q29yZSBhbmQgV2ViQ29yZS4KKworICAgICAgICAgICAgVGhlIG91dHB1dCBmaWxlcyBh
ZGRpdGlvbmFsbHkgZGVwZW5kIG9uIGFsbCBidWlsdGluIGdlbmVyYXRvciBzY3JpcHQgZmlsZXMK
KyAgICAgICAgICAgIGFuZCBpbnB1dCBmaWxlcyB0aGF0IGFyZSBjb21iaW5lZCBpbnRvIHRoZSBz
aW5nbGUgaGVhZGVyL2ltcGxlbWVudGF0aW9uIGZpbGUuCisKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy5tYWtlOgorCisgICAgICAgICAgICBEZWZpbmUgSmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVIgZXhwbGljaXRseSBzbyB0aGUgcnVsZSBmb3IgY29kZSBnZW5lcmF0aW9uIGFuZAorICAgICAg
ICAgICAgc2hhcmVkIGZpbGUgbGlzdHMgYXJlIGlkZW50aWNhbCBiZXR3ZWVuIEphdmFTY3JpcHRD
b3JlIGFuZCBXZWJDb3JlLgorCisgICAgICAgICAgICBUaGUgb3V0cHV0IGZpbGVzIGFkZGl0aW9u
YWxseSBkZXBlbmQgb24gYWxsIGJ1aWx0aW4gZ2VuZXJhdG9yIHNjcmlwdCBmaWxlcworICAgICAg
ICAgICAgYW5kIGlucHV0IGZpbGVzIHRoYXQgYXJlIGNvbWJpbmVkIGludG8gdGhlIHNpbmdsZSBo
ZWFkZXIvaW1wbGVtZW50YXRpb24gZmlsZS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgICAgIE1hcmsgdGhlIG5ldyBidWls
dGlucyBnZW5lcmF0b3IgZmlsZXMgYXMgcHJpdmF0ZSBoZWFkZXJzIHNvIHdlIGNhbiB1c2UgdGhl
bSBmcm9tCisgICAgICAgICAgICBXZWJDb3JlLgorCisgICAgICAgICogU2NyaXB0cy9VcGRhdGVD
b250ZW50cy5weTogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9VcGRhdGVDb250
ZW50cy5weS4KKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL19faW5pdF9fLnB5OiBBZGRlZC4K
KyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zLnB5OiBBZGRlZC4KKyAgICAgICAg
KiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5weTogQWRkZWQuIFRoaXMgZmls
ZSBjb250YWlucyB0aGUgYmFzZSBnZW5lcmF0b3IuCisgICAgICAgIChXS19sY2ZpcnN0KToKKyAg
ICAgICAgKFdLX3VjZmlyc3QpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3IpOgorICAgICAg
ICAoQnVpbHRpbnNHZW5lcmF0b3IuX19pbml0X18pOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0
b3IubW9kZWwpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3IuZ2VuZXJhdGVfbGljZW5zZSk6
CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvci5nZW5lcmF0ZV9pbmNsdWRlc19mcm9tX2VudHJp
ZXMpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAg
ICAgKEJ1aWx0aW5zR2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSk6CisgICAgICAgIChCdWlsdGlu
c0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvckZ1bmN0aW9uKToKKyAgICAgICAgKEJ1aWx0aW5zR2Vu
ZXJhdG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rpb24udG9DYW1lbCk6CisgICAgICAgIChCdWlsdGlu
c0dlbmVyYXRvci5nZW5lcmF0ZV9lbWJlZGRlZF9jb2RlX3N0cmluZ19zZWN0aW9uX2Zvcl9mdW5j
dGlvbik6CisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19tb2RlbC5weTogQWRk
ZWQuIFRoaXMgZmlsZSBjb250YWlucyBidWlsdGlucyBtb2RlbCBvYmplY3RzLgorICAgICAgICAo
UGFyc2VFeGNlcHRpb24pOgorICAgICAgICAoRnJhbWV3b3JrKToKKyAgICAgICAgKEZyYW1ld29y
ay5fX2luaXRfXyk6CisgICAgICAgIChGcmFtZXdvcmsuc2V0dGluZyk6CisgICAgICAgIChGcmFt
ZXdvcmsuZnJvbVN0cmluZyk6CisgICAgICAgIChGcmFtZXdvcmtzKToKKyAgICAgICAgKEJ1aWx0
aW5PYmplY3QpOgorICAgICAgICAoQnVpbHRpbk9iamVjdC5fX2luaXRfXyk6CisgICAgICAgIChC
dWlsdGluRnVuY3Rpb24pOgorICAgICAgICAoQnVpbHRpbkZ1bmN0aW9uLl9faW5pdF9fKToKKyAg
ICAgICAgKEJ1aWx0aW5GdW5jdGlvbi5mcm9tU3RyaW5nKToKKyAgICAgICAgKEJ1aWx0aW5GdW5j
dGlvbi5fX3N0cl9fKToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbik6CisgICAgICAgIChC
dWlsdGluc0NvbGxlY3Rpb24uX19pbml0X18pOgorICAgICAgICAoQnVpbHRpbnNDb2xsZWN0aW9u
LnBhcnNlX2J1aWx0aW5zX2ZpbGUpOgorICAgICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLmNvcHly
aWdodHMpOgorICAgICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLmFsbF9mdW5jdGlvbnMpOgorICAg
ICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLl9wYXJzZV9jb3B5cmlnaHRfbGluZXMpOgorICAgICAg
ICAoQnVpbHRpbnNDb2xsZWN0aW9uLl9wYXJzZV9mdW5jdGlvbnMpOgorICAgICAgICAqIFNjcmlw
dHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5OiBBZGRlZC4KKyAgICAgICAgKEJ1aWx0
aW5zR2VuZXJhdG9yVGVtcGxhdGVzKToKKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0
aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weTogQWRkZWQuCisgICAgICAgIChCdWlsdGlu
c0NvbWJpbmVkSGVhZGVyR2VuZXJhdG9yKToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFk
ZXJHZW5lcmF0b3IuX19pbml0X18pOgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEhlYWRlckdl
bmVyYXRvci5vdXRwdXRfZmlsZW5hbWUpOgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEhlYWRl
ckdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEhl
YWRlckdlbmVyYXRvci5nZW5lcmF0ZV9mb3J3YXJkX2RlY2xhcmF0aW9ucyk6CisgICAgICAgIChG
dW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoVk0pOgorICAgICAgICAoQ29uc3RydWN0QWJp
bGl0eSk6CisgICAgICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9vYmplY3QpOgorICAgICAgICAo
Z2VuZXJhdGVfZXh0ZXJuc19mb3Jfb2JqZWN0KToKKyAgICAgICAgKGdlbmVyYXRlX21hY3Jvc19m
b3Jfb2JqZWN0KToKKyAgICAgICAgKGdlbmVyYXRlX2RlZmluZXNfZm9yX29iamVjdCk6CisgICAg
ICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX3RhYmxlX21hY3JvKToKKyAgICAgICAgKGdl
bmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfbmFtZV9tYWNybyk6CisgICAgICAgICogU2NyaXB0cy9i
dWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weTogQWRk
ZWQuCisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSW1wbGVtZW50YXRpb25HZW5lcmF0b3IpOgor
ICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9faW5pdF9f
KToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5vdXRw
dXRfZmlsZW5hbWUpOgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2Vu
ZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSW1wbGVt
ZW50YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKToKKyAgICAgICAgKiBT
Y3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weTogQWRk
ZWQuCisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlSGVhZGVyR2VuZXJhdG9yKToKKyAgICAgICAg
KEJ1aWx0aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0b3IuX19pbml0X18pOgorICAgICAgICAoQnVp
bHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvci5vdXRwdXRfZmlsZW5hbWUpOgorICAgICAgICAo
QnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvci5tYWNyb19wcmVmaXgpOgorICAgICAgICAo
QnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAg
ICAoQnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvci5nZW5lcmF0ZV9mb3J3YXJkX2RlY2xh
cmF0aW9ucyk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoZ2VuZXJh
dGVfaGVhZGVyX2luY2x1ZGVzKToKKyAgICAgICAgKGdlbmVyYXRlX3NlY3Rpb25fZm9yX29iamVj
dCk6CisgICAgICAgIChnZW5lcmF0ZV9leHRlcm5zX2Zvcl9vYmplY3QpOgorICAgICAgICAoZ2Vu
ZXJhdGVfbWFjcm9zX2Zvcl9vYmplY3QpOgorICAgICAgICAoZ2VuZXJhdGVfZGVmaW5lc19mb3Jf
b2JqZWN0KToKKyAgICAgICAgKGdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfdGFibGVfbWFjcm8p
OgorICAgICAgICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV9uYW1lX21hY3JvKToKKyAgICAg
ICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVu
dGF0aW9uLnB5OiBBZGRlZC4KKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlv
bkdlbmVyYXRvcik6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlSW1wbGVtZW50YXRpb25HZW5l
cmF0b3IuX19pbml0X18pOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9u
R2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSk6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlSW1w
bGVtZW50YXRpb25HZW5lcmF0b3IubWFjcm9fcHJlZml4KToKKyAgICAgICAgKEJ1aWx0aW5zU2Vw
YXJhdGVJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAo
QnVpbHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZXJhdG9yLmdlbmVyYXRlX2hlYWRlcl9p
bmNsdWRlcyk6CisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9z
ZXBhcmF0ZV93cmFwcGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFw
cGVyR2VuZXJhdG9yKToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9y
Ll9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9yLm91
dHB1dF9maWxlbmFtZSk6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlV3JhcHBlckdlbmVyYXRv
ci5tYWNyb19wcmVmaXgpOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZVdyYXBwZXJHZW5lcmF0
b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2Vu
ZXJhdG9yLmdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcyk6CisgICAgICAgICogU2NyaXB0cy9nZW5l
cmF0ZS1qcy1idWlsdGlucy5weTogQWRkZWQuCisKKyAgICAgICAgICAgIFBhcnNlIGNvbW1hbmQg
bGluZSBvcHRpb25zLCBkZWNpZGUgd2hpY2ggZ2VuZXJhdG9ycyBhbmQgb3V0cHV0IG1vZGVzIHRv
IHVzZS4KKworICAgICAgICAoZ2VuZXJhdGVfYmluZGluZ3NfZm9yX2J1aWx0aW5zX2ZpbGVzKToK
KyAgICAgICAgKiBTY3JpcHRzL2xhenl3cml0ZXIucHk6IENvcGllZCBmcm9tIHRoZSBpbnNwZWN0
b3IgcHJvdG9jb2wgZ2VuZXJhdG9yLgorICAgICAgICAoTGF6eUZpbGVXcml0ZXIpOgorICAgICAg
ICAoTGF6eUZpbGVXcml0ZXIuX19pbml0X18pOgorICAgICAgICAoTGF6eUZpbGVXcml0ZXIud3Jp
dGUpOgorICAgICAgICAoTGF6eUZpbGVXcml0ZXIuY2xvc2UpOgorICAgICAgICAqIFNjcmlwdHMv
dGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpz
OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3Jl
LUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS5qczogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5q
czogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29y
ZS1CdWlsdGluLnByb3RvdHlwZS1TZXBhcmF0ZS5qczogQWRkZWQuCisgICAgICAgICogU2NyaXB0
cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmlu
ZWQuanM6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlw
dENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFyYXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBT
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanM6
IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVk
SW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qczogQWRkZWQu
CisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLXhtbENhc2luZ1Rlc3Qt
U2VwYXJhdGUuanM6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhw
ZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzLXJlc3VsdDog
QWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2Ny
aXB0Q29yZS1CdWlsdGluLlByb21pc2UtU2VwYXJhdGUuanMtcmVzdWx0OiBBZGRlZC4KKyAgICAg
ICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0
aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzLXJlc3VsdDogQWRkZWQuCisgICAgICAgICogU2NyaXB0
cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlw
ZS1TZXBhcmF0ZS5qcy1yZXN1bHQ6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVk
LmpzLXJlc3VsdDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBl
Y3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItU2VwYXJhdGUuanMtcmVzdWx0
OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNv
cmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0OiBBZGRlZC4KKyAgICAgICAgKiBT
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVp
bHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQ6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMv
YnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJl
c3VsdDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9X
ZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0OiBBZGRlZC4KKyAgICAgICAg
KiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwOgorICAgICAgICAoSlNDOjpCdWlsdGlu
RXhlY3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyk6CisgICAgICAgICogYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgICogY3JlYXRlX2hhc2hfdGFibGU6CisKKyAgICAg
ICAgICAgIFVwZGF0ZSB0aGUgZ2VuZXJhdGVkIGJ1aWx0aW4gbWFjcm8gbmFtZXMuCisKKyAgICAg
ICAgKiBnZW5lcmF0ZS1qcy1idWlsdGluczogUmVtb3ZlZC4KKwogMjAxNS0xMC0xOSAgU2FhbSBi
YXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBGVEwgc2hvdWxkIGdlbmVyYXRl
IGEgdW5pcXVlIE9TUiBleGl0IGZvciBlYWNoIGR1cGxpY2F0ZWQgT1NSIGV4aXQgc3RhY2ttYXAg
aW50cmluc2ljLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGNiOTIxYzVmMDgxMzY0MjNhMTMzZTU5MzMwZDgxZjEy
YjY3YzBmOGUuLjU2OWM0ZTM5ZjA0OGU0M2MxMWFlYzRkN2NhZTcyMTQ0ZWJmNTI4MTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxNS0xMC0xOSAgQnJpYW4gQnVyZyAgPGJidXJnQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXN0cnVjdHVyZSBnZW5lcmF0ZS1qcy1iaW5kaW5ncyBzY3Jp
cHQgdG8gYmUgbW9kdWxhciBhbmQgdGVzdGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTkyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKKyAgICAgICAgICAgIERl
ZmluZSBKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUiBleHBsaWNpdGx5IHNvIHRoZSBhZGRfY3Vz
dG9tX2NvbW1hbmQgYW5kCisgICAgICAgICAgICBzaGFyZWQgZmlsZSBsaXN0cyBhcmUgaWRlbnRp
Y2FsIGJldHdlZW4gSmF2YVNjcmlwdENvcmUgYW5kIFdlYkNvcmUuCisKKyAgICAgICAgICAgIFRo
ZSBvdXRwdXQgZmlsZXMgYWRkaXRpb25hbGx5IGRlcGVuZCBvbiBhbGwgYnVpbHRpbiBnZW5lcmF0
b3Igc2NyaXB0IGZpbGVzLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKworICAg
ICAgICAgICAgVXNlIEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSIHNvIHRoYXQgdGhlIHJ1bGUg
Zm9yIGNvZGUgZ2VuZXJhdGlvbiBhbmQKKyAgICAgICAgICAgIHNoYXJlZCBmaWxlIGxpc3RzIGFy
ZSBpZGVudGljYWwgYmV0d2VlbiBKYXZhU2NyaXB0Q29yZSBhbmQgV2ViQ29yZS4KKworICAgICAg
ICAgICAgVGhlIG91dHB1dCBmaWxlcyBhZGRpdGlvbmFsbHkgZGVwZW5kIG9uIGFsbCBidWlsdGlu
IGdlbmVyYXRvciBzY3JpcHQgZmlsZXMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgICAgIERlZmluZSBKYXZhU2NyaXB0Q29yZV9TQ1JJ
UFRTX0RJUiBiZWZvcmUgY2FsbGluZyBEZXJpdmVkU291cmNlcy5tYWtlLgorICAgICAgICAgICAg
VGhpcyB3aWxsIGV2ZW50dWFsbHkgYmUgbWVyZ2VkIHdpdGggdGhlIG90aGVyIHNpbWlsYXIgc2Ny
aXB0IHBhdGhzLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6ZmluaXNoQ3JlYXRpb24pOgorCisg
ICAgICAgICAgICBVcGRhdGUgdGhlIGdlbmVyYXRlZCBidWlsdGluIG1hY3JvIG5hbWVzLgorCisg
ICAgICAgICogZ2VuZXJhdGUtanMtYnVpbHRpbnM6IFJlbW92ZWQuCisKIDIwMTUtMTAtMTkgIFRp
bSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgV0tWaWV3IGJl
aW5nIGluc2lkZSBXS1dlYlZpZXcgbGVhZHMgdG8gd2VpcmQgQVBJIGlzc3VlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDM3ZjQ2MzM1OTZhODcxNjk2NzMxZjczZjdiODFj
MzcyMmRjMGY5ZWUuLjBmNWE2YjQ1ZDU1NTFmYmQ2MTJiMDU1YmRhZWJhMDQyYzZlZTVkYWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTcwNyw2ICs3MDcsOCBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfTElCUkFSSUVTCiAgICAgJHtJQ1VfSTE4Tl9MSUJSQVJJRVN9CiApCiAK
K3NldChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUiAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L1Nj
cmlwdHMiKQorCiBpZiAoVVNFX1VESVM4NikKICAgICBzZXQoVURJU19HRU5fREVQCiAgICAgICAg
IGRpc2Fzc2VtYmxlci91ZGlzODYvdWRfb3Bjb2RlLnB5CkBAIC05NDEsNyArOTQzLDcgQEAgc2V0
KEhBU0hfTFVUX0dFTkVSQVRPUiAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vY3JlYXRlX2hh
c2hfdGFibGUpCiBtYWNybyhHRU5FUkFURV9IQVNIX0xVVCBfaW5wdXQgX291dHB1dCkKICAgICBh
ZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgICAgIE9VVFBVVCAke19vdXRwdXR9Ci0gICAgICAgIERF
UEVORFMgJHtIQVNIX0xVVF9HRU5FUkFUT1J9ICR7X2lucHV0fSAke0phdmFTY3JpcHRDb3JlX1ND
UklQVFNfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucworICAgICAgICBERVBFTkRTICR7SEFTSF9M
VVRfR0VORVJBVE9SfSAke19pbnB1dH0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vZ2Vu
ZXJhdGUtanMtYnVpbHRpbnMucHkKICAgICAgICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0g
JHtIQVNIX0xVVF9HRU5FUkFUT1J9ICR7X2lucHV0fSAtaSA+ICR7X291dHB1dH0KICAgICAgICAg
VkVSQkFUSU0pCiAgICAgbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUyAke19vdXRw
dXR9KQpAQCAtMTA4MCw2ICsxMDgyLDIxIEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBWRVJC
QVRJTSkKIAogIyBKU0NCdWlsdGlucworCitzZXQoQlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMK
KyAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucy5w
eQorICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2xhenl3cml0ZXIucHkKKyAgICAk
e0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGlucy9idWlsdGlucy5weQorICAgICR7
SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5w
eQorICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5zL2J1aWx0aW5zX21v
ZGVsLnB5CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnMvYnVpbHRp
bnNfdGVtcGxhdGVzLnB5CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRp
bnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaGVhZGVyLnB5CisgICAgJHtKYXZhU2NyaXB0
Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1w
bGVtZW50YXRpb24ucHkKKyAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGlu
cy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkKKyAgICAke0phdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSfS9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9pbXBs
ZW1lbnRhdGlvbi5weQorICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5z
L2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX3dyYXBwZXIucHkKKykKKwogc2V0KEphdmFTY3Jp
cHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRp
bnMvQXJyYXlDb25zdHJ1Y3Rvci5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlu
cy9BcnJheUl0ZXJhdG9yLnByb3RvdHlwZS5qcwpAQCAtMTEwMiwxMCArMTExOSwxMSBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUwogKQogCiBhZGRfY3VzdG9tX2NvbW1hbmQo
Ci0gICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWls
dGlucy5jcHAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlu
cy5oCi0gICBNQUlOX0RFUEVOREVOQ1kgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vZ2Vu
ZXJhdGUtanMtYnVpbHRpbnMKLSAgIERFUEVORFMgJHtKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19T
T1VSQ0VTfQotICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3Jl
X1NDUklQVFNfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucyAtLWlucHV0LWRpcmVjdG9yeSAke0NN
QUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vYnVpbHRpbnMgLS1vdXRwdXQgJHtERVJJVkVEX1NPVVJD
RVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5jcHAKKyAgIE9VVFBVVCAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcAorICAgICAgICAg
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAorICAg
TUFJTl9ERVBFTkRFTkNZICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2dlbmVyYXRlLWpz
LWJ1aWx0aW5zLnB5CisgICBERVBFTkRTICR7SmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNF
U30gJHtCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUU30KKyAgIENPTU1BTkQgJHtQWVRIT05fRVhF
Q1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRp
bnMucHkgLS1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLS1vdXRwdXQtZGlyZWN0b3J5ICR7REVS
SVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0gLS1jb21iaW5lZCAke0phdmFTY3JpcHRD
b3JlX0JVSUxUSU5TX1NPVVJDRVN9CiAgICBWRVJCQVRJTSkKIAogbGlzdChBUFBFTkQgSmF2YVNj
cmlwdENvcmVfU09VUkNFUwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQppbmRleCA5MDkxMTJkNDBmNGRmZTJkZmRlYTRkNGJjNzkwOGIyOWI0Mzk2OGYxLi40MTQ0YTdm
YTNmN2YwNzFjM2Q2MGUzNDBmMmRlM2RiMGZjNzM4YmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNzEsMTAgKzcxLDkgQEAgYWxsIDogXAogICAgIHVk
aXM4Nl9pdGFiLmggXAogICAgIEJ5dGVjb2Rlcy5oIFwKICAgICBJbml0Qnl0ZWNvZGVzLmFzbSBc
Ci0gICAgSlNDQnVpbHRpbnMgXAorICAgIEpTQ0J1aWx0aW5zLmggXAogIwogCi0jIGJ1aWx0aW4g
ZnVuY3Rpb25zCiBQWVRIT04gPSBweXRob24KIFBFUkwgPSBwZXJsCiAKQEAgLTg3LDE1ICs4Niwy
NCBAQCBlbHNlCiBlbmRpZgogIyAtLS0tLS0tLQogCi0uUEhPTlk6IEpTQ0J1aWx0aW5zCi1KU0NC
dWlsdGluczogJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGUtanMtYnVpbHRp
bnMgSlNDQnVpbHRpbnMuaCBKU0NCdWlsdGlucy5jcHAKLUpTQ0J1aWx0aW5zLmg6ICQoSmF2YVNj
cmlwdENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zICQoSmF2YVNjcmlwdENv
cmUpL2J1aWx0aW5zIEpTQ0J1aWx0aW5zU291cmNlcwotCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZS1qcy1idWlsdGlucyAtLWlucHV0LWRpcmVjdG9yeSAk
KEphdmFTY3JpcHRDb3JlKS9idWlsdGlucyAtLW91dHB1dCAkQAotCi1KU0NCdWlsdGlucy5jcHA6
IEpTQ0J1aWx0aW5zLmgKKyMgSmF2YVNjcmlwdCBidWlsdGlucy4KKworQlVJTFRJTlNfR0VORVJB
VE9SX1NDUklQVFMgPSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRp
bnMvX19pbml0X18ucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0
aW5zL2J1aWx0aW5zLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWls
dGlucy9idWlsdGluc19nZW5lcmF0b3IucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBU
U19ESVIpL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3Jl
X1NDUklQVFNfRElSKS9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHkgXAorICAgICQoSmF2
YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJp
bmVkX2hlYWRlci5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRp
bnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkgXAorICAgICQo
SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3Nl
cGFyYXRlX2hlYWRlci5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVp
bHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkgXAorICAg
ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRl
X3NlcGFyYXRlX3dyYXBwZXIucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIp
L2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNf
RElSKS9sYXp5d3JpdGVyLnB5IFwKKyMKIAotLlBIT05ZOiBKU0NCdWlsdGluc1NvdXJjZXMKLUpT
Q0J1aWx0aW5zU291cmNlczogXAorSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwK
ICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9BcnJheUNvbnN0cnVjdG9yLmpzIFwKICAg
ICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9BcnJheUl0ZXJhdG9yLnByb3RvdHlwZS5qcyBc
CiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpzIFwKQEAg
LTExMiw4ICsxMjAsMjAgQEAgSlNDQnVpbHRpbnNTb3VyY2VzOiBcCiAgICAgJChKYXZhU2NyaXB0
Q29yZSkvYnVpbHRpbnMvUmVmbGVjdE9iamVjdC5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkv
YnVpbHRpbnMvU3RyaW5nQ29uc3RydWN0b3IuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1
aWx0aW5zL1N0cmluZ0l0ZXJhdG9yLnByb3RvdHlwZS5qcyBcCisgICAgJChKYXZhU2NyaXB0Q29y
ZSkvYnVpbHRpbnMvVHlwZWRBcnJheUNvbnN0cnVjdG9yLmpzIFwKKyAgICAkKEphdmFTY3JpcHRD
b3JlKS9idWlsdGlucy9UeXBlZEFycmF5LnByb3RvdHlwZS5qcyBcCiAjCiAKKyMgVGhlIGNvbWJp
bmVkIG91dHB1dCBmaWxlIGRlcGVuZHMgb24gdGhlIGNvbnRlbnRzIG9mIGJ1aWx0aW5zIGFuZCBn
ZW5lcmF0b3Igc2NyaXB0cywgc28KKyMgYWRkaW5nLCBtb2RpZnlpbmcsIG9yIHJlbW92aW5nIGJ1
aWx0aW5zIG9yIHNjcmlwdHMgd2lsbCB0cmlnZ2VyIHJlZ2VuZXJhdGlvbiBvZiBmaWxlcy4KKwor
LlBIT05ZOiBmb3JjZQorSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfREVQRU5ERU5DSUVTX0xJU1Qg
OiAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9VcGRhdGVDb250ZW50cy5weSBmb3JjZQor
CSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9VcGRhdGVDb250ZW50cy5w
eSAnJChKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTKSAkKEJVSUxUSU5TX0dFTkVSQVRP
Ul9TQ1JJUFRTKScgJEAKKworSlNDQnVpbHRpbnMuaDogJChCVUlMVElOU19HRU5FUkFUT1JfU0NS
SVBUUykgJChKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTKSBKYXZhU2NyaXB0Q29yZV9C
VUlMVElOU19ERVBFTkRFTkNJRVNfTElTVAorCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1ND
UklQVFNfRElSKS9nZW5lcmF0ZS1qcy1idWlsdGlucy5weSAtLWNvbWJpbmVkIC0tb3V0cHV0LWRp
cmVjdG9yeSAuIC0tZnJhbWV3b3JrIEphdmFTY3JpcHRDb3JlICQoSmF2YVNjcmlwdENvcmVfQlVJ
TFRJTlNfU09VUkNFUykKKwogIyBsb29rdXAgdGFibGVzIGZvciBjbGFzc2VzCiAKICUubHV0Lmg6
IGNyZWF0ZV9oYXNoX3RhYmxlICUuY3BwCkBAIC0yMDEsOCArMjIxLDggQEAgYWxsIDogXAogIyBh
ZGRpbmcsIG1vZGlmeWluZywgb3IgcmVtb3ZpbmcgZG9tYWlucyB3aWxsIHRyaWdnZXIgcmVnZW5l
cmF0aW9uIG9mIGluc3BlY3RvciBmaWxlcy4KIAogLlBIT05ZOiBmb3JjZQotRW5hYmxlZEluc3Bl
Y3RvckRvbWFpbnMgOiAkKEphdmFTY3JpcHRDb3JlKS9VcGRhdGVDb250ZW50cy5weSBmb3JjZQot
CSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlKS9VcGRhdGVDb250ZW50cy5weSAnJChJTlNQRUNU
T1JfRE9NQUlOUyknICRACitFbmFibGVkSW5zcGVjdG9yRG9tYWlucyA6ICQoSmF2YVNjcmlwdENv
cmVfU0NSSVBUU19ESVIpL1VwZGF0ZUNvbnRlbnRzLnB5IGZvcmNlCisJJChQWVRIT04pICQoSmF2
YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL1VwZGF0ZUNvbnRlbnRzLnB5ICckKElOU1BFQ1RPUl9E
T01BSU5TKScgJEAKIAogQ29tYmluZWREb21haW5zLmpzb24gOiAkKEphdmFTY3JpcHRDb3JlX1ND
UklQVFNfRElSKS9nZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSAkKElOU1BFQ1RP
Ul9ET01BSU5TKSBFbmFibGVkSW5zcGVjdG9yRG9tYWlucwogCSQoUFlUSE9OKSAkKEphdmFTY3Jp
cHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSAk
KElOU1BFQ1RPUl9ET01BSU5TKSA+IC4vQ29tYmluZWREb21haW5zLmpzb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMTMzOGU0ODI2OGZiMTg3ZDVmZDVhM2NmOGE3MGI5ZGVlOGFl
ZjVkMy4uZTVlMTc0ZTQwMTMyNmVlZmZkM2MyMGU5MmViNzczZDc5YjFjN2E3NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMTQsNyArMTIxNCw2IEBACiAJCTk5MjhGRjNCMThB
QzRBRUMwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTI4RkYzOTE4QUM0QUVDMDBCOENGMTIgLyogSlNS
ZXBsYXlJbnB1dHMuY3BwICovOyB9OwogCQk5OTI4RkYzQzE4QUM0QUVDMDBCOENGMTIgLyogSlNS
ZXBsYXlJbnB1dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk5MjhGRjNBMThBQzRBRUMwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5NTlFOTJCMUJEMTdG
QTQwMDFBQTQxMyAvKiBjc3NtaW4ucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5OTU5RTkyNzFCRDE3RkEwMDAxQUE0MTMgLyogY3NzbWluLnB5ICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTk5NTlFOTJDMUJE
MTdGQTQwMDFBQTQxMyAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTlFOTI4MUJEMTdGQTAwMDFBQTQxMyAvKiBn
ZW5lcmF0ZS1qcy1idWlsdGlucyAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5OTU5RTkyRDFCRDE3RkE0MDAxQUE0MTMgLyoganNtaW4ucHkgaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU5RTkyOTFCRDE3RkEw
MDAxQUE0MTMgLyoganNtaW4ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJOTk1OUU5MkUxQkQxN0ZBNDAwMUFBNDEzIC8qIHh4ZC5wbCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTlFOTJBMUJEMTdGQTAw
MDFBQTQxMyAvKiB4eGQucGwgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTk1OUU5MzExQkQxODI3MjAwMUFBNDEzIC8qIGdlbmVyYXRlLWNvbWJpbmVk
LWluc3BlY3Rvci1qc29uLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTk1OUU5MkYxQkQxODFGNjAwMUFBNDEzIC8qIGdlbmVyYXRlLWNvbWJpbmVkLWlu
c3BlY3Rvci1qc29uLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0xMjIyLDYgKzEyMjEsMTggQEAKIAkJOTk2MjMxRTkxOEQxODA0MjAwQzAzRkRB
IC8qIEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcyBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MzI0Mzk2MTg1NkE0NzUwMDJFRDY5MiAvKiBJbnNwZWN0
b3JCYWNrZW5kQ29tbWFuZHMuanMgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJOTlDQzBCNjIxOEJFOTk0NjAwNkNFQkNDIC8qIENvZGVHZW5lcmF0b3JS
ZXBsYXlJbnB1dHNUZW1wbGF0ZXMucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5OUU0NUExRTE4QTFCMUU3MDAyNkQ4OEYgLyogQ29kZUdlbmVyYXRvclJl
cGxheUlucHV0c1RlbXBsYXRlcy5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5OUNDMEI2MzE4QkU5OTUwMDA2Q0VCQ0MgLyogQ29kZUdlbmVyYXRv
clJlcGxheUlucHV0cy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk5RTQ1QTFEMThBMUIxRTcwMDI2RDg4RiAvKiBDb2RlR2VuZXJhdG9yUmVwbGF5SW5w
dXRzLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTk5REEwMEEzMUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0b3IucHkgaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OURBMDA5QTFCRDU5OTI3
MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdG9yLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5REEwMEE0MUJENTk5MzEwMEY0NTc1QyAvKiBi
dWlsdGluc19tb2RlbC5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk5REEwMDlCMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19tb2RlbC5weSAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OURBMDBBNTFC
RDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfdGVtcGxhdGVzLnB5IGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlEQTAwOUMxQkQ1OTkyNzAwRjQ1NzVDIC8q
IGJ1aWx0aW5zX3RlbXBsYXRlcy5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk5OURBMDBBNjFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnMucHkg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OURBMDA5RDFC
RDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnMucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlEQTAwQTcxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0
aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5REEwMDlFMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGlu
c19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlEQTAwQTgxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0
aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlEQTAwOUYxQkQ1OTkyNzAwRjQ1NzVDIC8q
IGJ1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5ICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5REEwMEE5MUJENTk5MzEw
MEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkgaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OURBMDBBMDFCRDU5OTI3MDBG
NDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5ICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5REEwMEFBMUJENTk5MzEw
MEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weSBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5REEwMEExMUJE
NTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9pbXBsZW1lbnRhdGlv
bi5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5
OURBMDBBQjFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfd3Jh
cHBlci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5
REEwMEEyMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFw
cGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTk5REEwMEFGMUJENTk5NEUwMEY0NTc1QyAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucy5weSBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5REEwMEFDMUJENTk5
M0UwMEY0NTc1QyAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucy5weSAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OURBMDBCMDFCRDU5OTRFMDBGNDU3NUMg
LyogbGF6eXdyaXRlci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk5REEwMEFEMUJENTk5M0UwMEY0NTc1QyAvKiBsYXp5d3JpdGVyLnB5ICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5REEwMEIxMUJENTk5
NEUwMEY0NTc1QyAvKiBVcGRhdGVDb250ZW50cy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5REEwMEFFMUJENTk5M0UwMEY0NTc1QyAvKiBVcGRhdGVD
b250ZW50cy5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5OUU0NUEyNDE4QTFCMjU5MDAyNkQ4OEYgLyogRW1wdHlJbnB1dEN1cnNvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlFNDVBMUYxOEExQjI1
OTAwMjZEODhGIC8qIEVtcHR5SW5wdXRDdXJzb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OUU0NUEyNTE4QTFCMjU5MDAyNkQ4OEYgLyogRW5j
b2RlZFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk5RTQ1QTIwMThBMUIyNTkwMDI2RDg4RiAvKiBFbmNvZGVkVmFsdWUuY3BwICovOyB9Owog
CQk5OUU0NUEyNjE4QTFCMjU5MDAyNkQ4OEYgLyogRW5jb2RlZFZhbHVlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUU0NUEyMTE4QTFCMjU5MDAyNkQ4
OEYgLyogRW5jb2RlZFZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTE3OTQsNyArMTgwNSw3IEBACiAJCUZFN0M0MTk2MUI5N0ZDNEIwMEY0
RDU5OCAvKiBQaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREE1MEQ0MUI5N0Y0NDIwMDlBM0I0RiAvKiBQ
aW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcCAqLzsgfTsKIAkJRkVBMDg2MjAxODJCN0EwNDAw
RjZEODUxIC8qIEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFQTA4NjFFMTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVha3BvaW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVBMDg2MjEx
ODJCN0EwNDAwRjZEODUxIC8qIERlYnVnZ2VyUHJpbWl0aXZlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVBMDg2MUYxODJCN0EwNDAwRjZEODUxIC8q
IERlYnVnZ2VyUHJpbWl0aXZlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCUZFQjEzNzU3MUJCMTFFRjkwMENENTEwMCAvKiBNYWNyb0Fzc2VtYmxl
ckFSTTY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFQjEzNzU2MUJCMTFFRUUwMENENTEwMCAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmNwcCAqLzsg
c2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OworCQlGRUIxMzc1NzFCQjExRUY5MDBD
RDUxMDAgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUIxMzc1NjFCQjExRUVFMDBDRDUxMDAgLyogTWFjcm9B
c3NlbWJsZXJBUk02NC5jcHAgKi87IH07CiAJCUZFQjUxRjZDMUE5N0I2ODgwMDFGOTIxQyAvKiBS
ZWdyZXNzMTQxODA5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkVCNTFGNkIxQTk3QjY4ODAwMUY5MjFDIC8qIFJlZ3Jlc3MxNDE4MDkubW0gKi87IH07
CiAJCUZFQjU4QzE0MTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVCNThDMTIxODdC
OEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5jcHAgKi87IH07CiAJCUZFQjU4QzE1
MTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjU4QzEzMTg3QjhCMTYwMDk4RUYwQiAv
KiBFcnJvckhhbmRsaW5nU2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMzExOCwxMSArMzEyOSwyMyBAQAogCQk5OTI4RkYzQTE4QUM0QUVD
MDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNSZXBsYXlJbnB1dHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTky
OEZGM0QxOEFDNEIxQzAwQjhDRjEyIC8qIEpTSW5wdXRzLmpzb24gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmpz
b247IHBhdGggPSBKU0lucHV0cy5qc29uOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
OTU5RTkyNzFCRDE3RkEwMDAxQUE0MTMgLyogY3NzbWluLnB5ICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3Jp
cHQucHl0aG9uOyBwYXRoID0gY3NzbWluLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk5OTU5RTkyODFCRDE3RkEwMDAxQUE0MTMgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSAiZ2VuZXJhdGUtanMtYnVpbHRpbnMiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTU5RTkyOTFCRDE3RkEwMDAxQUE0MTMgLyog
anNtaW4ucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBqc21pbi5weTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk1OUU5MkExQkQxN0ZBMDAwMUFBNDEzIC8q
IHh4ZC5wbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IHBhdGggPSB4eGQucGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NTlFOTJGMUJEMTgxRjYwMDFBQTQxMyAvKiBnZW5l
cmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5
dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NTlFOTMwMUJEMTgxRjYwMDFBQTQxMyAvKiBpbmxp
bmUtYW5kLW1pbmlmeS1zdHlsZXNoZWV0cy1hbmQtc2NyaXB0cy5weSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
c2NyaXB0LnB5dGhvbjsgcGF0aCA9ICJpbmxpbmUtYW5kLW1pbmlmeS1zdHlsZXNoZWV0cy1hbmQt
c2NyaXB0cy5weSI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5REEwMDk5MUJENTk5
MjcwMEY0NTc1QyAvKiBfX2luaXRfXy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsg
cGF0aCA9IF9faW5pdF9fLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OURBMDA5
QTFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdG9yLnB5ICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gYnVpbHRpbnNfZ2VuZXJhdG9yLnB5OyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5OURBMDA5QjFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNf
bW9kZWwucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBidWlsdGluc19t
b2RlbC5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlEQTAwOUMxQkQ1OTkyNzAw
RjQ1NzVDIC8qIGJ1aWx0aW5zX3RlbXBsYXRlcy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5
dGhvbjsgcGF0aCA9IGJ1aWx0aW5zX3RlbXBsYXRlcy5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTlEQTAwOUQxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zLnB5ICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gYnVpbHRpbnMucHk7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTk5REEwMDlFMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19nZW5l
cmF0ZV9jb21iaW5lZF9oZWFkZXIucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBh
dGggPSBidWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHk7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTk5REEwMDlGMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19nZW5l
cmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5
dGhvbjsgcGF0aCA9IGJ1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OURBMDBBMDFCRDU5OTI3MDBGNDU3NUMg
LyogYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5ICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5z
Y3JpcHQucHl0aG9uOyBwYXRoID0gYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OURBMDBBMTFCRDU5OTI3MDBGNDU3NUMg
LyogYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9p
bXBsZW1lbnRhdGlvbi5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlEQTAwQTIx
QkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX3dyYXBwZXIucHkg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBidWlsdGluc19nZW5lcmF0ZV9z
ZXBhcmF0ZV93cmFwcGVyLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OURBMDBB
QzFCRDU5OTNFMDBGNDU3NUMgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSAiZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OURBMDBBRDFCRDU5OTNFMDBGNDU3NUMgLyogbGF6
eXdyaXRlci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGxhenl3cml0
ZXIucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5REEwMEFFMUJENTk5M0UwMEY0
NTc1QyAvKiBVcGRhdGVDb250ZW50cy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsg
cGF0aCA9IFVwZGF0ZUNvbnRlbnRzLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
OUU0NUExRDE4QTFCMUU3MDAyNkQ4OEYgLyogQ29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IENvZGVHZW5lcmF0b3JSZXBsYXlJ
bnB1dHMucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5RTQ1QTFFMThBMUIxRTcw
MDI2RDg4RiAvKiBDb2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzVGVtcGxhdGVzLnB5ICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gQ29kZUdlbmVyYXRvclJlcGxheUlucHV0c1Rl
bXBsYXRlcy5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlFNDVBMUYxOEExQjI1
OTAwMjZEODhGIC8qIEVtcHR5SW5wdXRDdXJzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRW1wdHlJbnB1dEN1cnNvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMzgxMCw5ICszODMzLDkgQEAKIAkJMDM0NzY4REZGRjM4QTUwNDExREI5QzhCIC8qIFByb2R1
Y3RzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRkY5
MjJDRjE0RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAogCQkJ
CTkzMkY1QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8s
CiAJCQkJOTMyRjVCRTEwODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAqLywKLQkJCQkwRkY5MjJDRjE0
RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAogCQkJCTBGQ0VG
QUI2MTgwNUQ2MTYwMDQ3MkNFNCAvKiBsaWJsbHZtRm9ySlNDLmR5bGliICovLAogCQkJCTE0MTIx
MTIwMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovLAogCQkJCTE0QkQ1OUJGMEEzRThGOTAw
MEJBRjU5QyAvKiB0ZXN0YXBpICovLApAQCAtNTczMiwxNiArNTc1NSwzNiBAQAogCQk5OTU5RTky
NTFCRDE3RjFFMDAxQUE0MTMgLyogU2NyaXB0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCi0JCQkJOTk1OUU5MjgxQkQxN0ZBMDAwMUFBNDEzIC8qIGdlbmVyYXRl
LWpzLWJ1aWx0aW5zICovLAorCQkJCTk5REEwMDk3MUJENTk4RTAwMEY0NTc1QyAvKiBidWlsdGlu
cyAqLywKIAkJCQk5OTU5RTkyNzFCRDE3RkEwMDAxQUE0MTMgLyogY3NzbWluLnB5ICovLAogCQkJ
CTk5NTlFOTJGMUJEMTgxRjYwMDFBQTQxMyAvKiBnZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3It
anNvbi5weSAqLywKKwkJCQk5OURBMDBBQzFCRDU5OTNFMDBGNDU3NUMgLyogZ2VuZXJhdGUtanMt
YnVpbHRpbnMucHkgKi8sCiAJCQkJOTk1OUU5MzAxQkQxODFGNjAwMUFBNDEzIC8qIGlubGluZS1h
bmQtbWluaWZ5LXN0eWxlc2hlZXRzLWFuZC1zY3JpcHRzLnB5ICovLAogCQkJCTk5NTlFOTI5MUJE
MTdGQTAwMDFBQTQxMyAvKiBqc21pbi5weSAqLywKKwkJCQk5OURBMDBBRDFCRDU5OTNFMDBGNDU3
NUMgLyogbGF6eXdyaXRlci5weSAqLywKKwkJCQk5OURBMDBBRTFCRDU5OTNFMDBGNDU3NUMgLyog
VXBkYXRlQ29udGVudHMucHkgKi8sCiAJCQkJOTk1OUU5MkExQkQxN0ZBMDAwMUFBNDEzIC8qIHh4
ZC5wbCAqLywKIAkJCSk7CiAJCQlwYXRoID0gU2NyaXB0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CiAJCX07CisJCTk5REEwMDk3MUJENTk4RTAwMEY0NTc1QyAvKiBidWlsdGlucyAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJOTlEQTAwOTkxQkQ1
OTkyNzAwRjQ1NzVDIC8qIF9faW5pdF9fLnB5ICovLAorCQkJCTk5REEwMDlEMUJENTk5MjcwMEY0
NTc1QyAvKiBidWlsdGlucy5weSAqLywKKwkJCQk5OURBMDA5RTFCRDU5OTI3MDBGNDU3NUMgLyog
YnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaGVhZGVyLnB5ICovLAorCQkJCTk5REEwMDlGMUJE
NTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlv
bi5weSAqLywKKwkJCQk5OURBMDBBMDFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJh
dGVfc2VwYXJhdGVfaGVhZGVyLnB5ICovLAorCQkJCTk5REEwMEExMUJENTk5MjcwMEY0NTc1QyAv
KiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weSAqLywKKwkJCQk5
OURBMDBBMjFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfd3Jh
cHBlci5weSAqLywKKwkJCQk5OURBMDA5QTFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2Vu
ZXJhdG9yLnB5ICovLAorCQkJCTk5REEwMDlCMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19t
b2RlbC5weSAqLywKKwkJCQk5OURBMDA5QzFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfdGVt
cGxhdGVzLnB5ICovLAorCQkJKTsKKwkJCXBhdGggPSBidWlsdGluczsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CiAJCTk5RTQ1QTBDMThBMDFFOTMwMDI2RDg4RiAvKiByZXBsYXkg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtNjAzNyw2ICs2
MDgwLDE1IEBACiAJCQkJRkVBMDg2MjAxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3RDgwMUE1MTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhl
Y3V0YWJsZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NUVFOUIyMThBQUI3RTIwMEFBRDA0MyAv
KiBCdWlsdGluTmFtZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5REEwMEE2MUJENTk5MzEwMEY0
NTc1QyAvKiBidWlsdGlucy5weSBpbiBIZWFkZXJzICovLAorCQkJCTk5REEwMEE3MUJENTk5MzEw
MEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkgaW4gSGVhZGVy
cyAqLywKKwkJCQk5OURBMDBBODFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVf
Y29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKKwkJCQk5OURBMDBBOTFC
RDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5IGlu
IEhlYWRlcnMgKi8sCisJCQkJOTlEQTAwQUExQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dl
bmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJOTlE
QTAwQUIxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX3dyYXBw
ZXIucHkgaW4gSGVhZGVycyAqLywKKwkJCQk5OURBMDBBMzFCRDU5OTMxMDBGNDU3NUMgLyogYnVp
bHRpbnNfZ2VuZXJhdG9yLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJOTlEQTAwQTQxQkQ1OTkzMTAw
RjQ1NzVDIC8qIGJ1aWx0aW5zX21vZGVsLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJOTlEQTAwQTUx
QkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX3RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovLAog
CQkJCTQxREVBMTMyMUI5RjMxNjMwMDZENjVERCAvKiBCdWlsdGluVXRpbHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTlFNzI5NDBCMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5kbGVQYXRoLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkI3RjM5NzE1RUQ4RTQ2MDBGMTY3QjIgLyogQnV0dGVyZmx5LmggaW4g
SGVhZGVycyAqLywKQEAgLTYxMDQsNiArNjE1Niw3IEBACiAJCQkJQzJGQzlCRDMxNjY0NERGQjAw
ODEwRDMzIC8qIENvcGllZEJsb2NrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJFQUEz
RkExNDlBODM1RTAwRkNFMTEyIC8qIENvcGllZFNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
MkM4RDAyRDE0QTNDNkUwMDA1NzhFNjUgLyogQ29waWVkU3BhY2VJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjdDMTFBRDFCQzM4NjJDMDBDNzRDREIgLyogQ29weUJhcnJpZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGNUE1MkQwMTdBREQ3MTcwMDhFQ0IyRCAvKiBDb3B5VG9rZW4uaCBp
biBIZWFkZXJzICovLAogCQkJCUMyMjM5RDE4MTYyNjJCREQwMDVBQzVGRCAvKiBDb3B5VmlzaXRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzIyMzlEMTkxNjI2MkJERDAwNUFDNUZEIC8qIENvcHlW
aXNpdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC02MTc0LDYgKzYyMjcsNyBAQAogCQkJ
CTBGMzhCMDFBMTdDRkU3NTUwMEIxNDREMyAvKiBERkdDb21waWxhdGlvbk1vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGM0IzQTFCMTUzRTY4RjQwMDNFRDBGRiAvKiBERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFRDY3QkExQjI2MjU2RDAwNjZDRTE1IC8q
IERGR0NvbnN0YW50SG9pc3RpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYwOTgxRjgx
QkM1RTU2NTAwNDgxNEY4IC8qIERGR0NvcHlCYXJyaWVyT3B0aW1pemF0aW9uUGhhc2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQkUwRjczMTZDMURCMDUwMDgyQzVFOCAvKiBERkdDUFNSZXRocmVh
ZGluZ1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUNGNjE3QTBCOENDMDA3NzNBRDgg
LyogREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZG
RkM5NUExNEVGOTBBOTAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmggaW4gSGVhZGVycyAqLywKQEAg
LTY0MTAsNyArNjQ2NCw3IEBACiAJCQkJQTU0RThFQjExOEJGRkJCRTAwNTU2RDI4IC8qIEdDU2Vn
bWVudGVkQXJyYXlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTU5RTkzMTFCRDE4Mjcy
MDAxQUE0MTMgLyogZ2VuZXJhdGUtY29tYmluZWQtaW5zcGVjdG9yLWpzb24ucHkgaW4gSGVhZGVy
cyAqLywKIAkJCQlDNDcwM0NDMDE5Mjg0NDk2MDAxM0ZCRUEgLyogZ2VuZXJhdGUtaW5zcGVjdG9y
LXByb3RvY29sLWJpbmRpbmdzLnB5IGluIEhlYWRlcnMgKi8sCi0JCQkJOTk1OUU5MkMxQkQxN0ZB
NDAwMUFBNDEzIC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zIGluIEhlYWRlcnMgKi8sCisJCQkJOTlE
QTAwQUYxQkQ1OTk0RTAwRjQ1NzVDIC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5IGluIEhlYWRl
cnMgKi8sCiAJCQkJQTVFQTcwRUMxOUY1QjNFQTAwOThGNUVDIC8qIGdlbmVyYXRlX2NwcF9hbHRl
cm5hdGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1
RUY5QjE0MUExRDQzRjYwMDcwMkU5MCAvKiBnZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVy
X2hlYWRlci5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1RUY5QjE1MUExRDQzRkEwMDcwMkU5MCAv
KiBnZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGluIEhl
YWRlcnMgKi8sCkBAIC02NTQyLDcgKzY1OTYsNiBAQAogCQkJCTBGNzY2RDJDMTVBOENDM0EwMDhG
MzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1RUY5MUYx
Njg3OEY3RDAwM0U1QzI1IC8qIEpJVFRodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDNzEy
RTMxN0NEODc5MzAwOENDOTNDIC8qIEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjA5ODFGODFCQzVFNTY1MDA0ODE0RjggLyogREZHQ29w
eUJhcnJpZXJPcHRpbWl6YXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2RjU0QTMx
M0IyOEFBQjAwRUYyQkNFIC8qIEpJVFdyaXRlQmFycmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODQwNDgwMTMxMDIxQTFEOTAwOEU3RjAxIC8qIEpTQVBJVmFsdWVXcmFwcGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDMkNGMzlDMjE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0
LmggaW4gSGVhZGVycyAqLywKQEAgLTY2MDEsNyArNjY1NCw2IEBACiAJCQkJNzk3RTA3QUExQjhG
Q0ZCOTAwODQwMEJBIC8qIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzE4QzQyMTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNHbG9iYWxPYmplY3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1RkQwMDg2MTg5QjFCN0UwMDYzMzIzMSAvKiBKU0dsb2JhbE9iamVj
dENvbnNvbGVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTM0QzQ1N0MxQkM3MjQxMTAwNzQ3
NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTVDM0ExQTYxOEMwNDkwMjAwQzk1OTNBIC8qIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTU5NDU1OTMxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFs
T2JqZWN0RGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU3RDIzRUExODkxQjA3NzAw
MzFDN0ZBIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCkBA
IC02NjcwLDYgKzY3MjIsNyBAQAogCQkJCTBGMkI2NkZCMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5
cGVkQXJyYXlDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkZEMTdCNkI1
QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlQcm90b3R5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJCNjZGRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5cy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTM0QzQ1N0MxQkM3MjQxMTAwNzQ3NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREVBN0UyNDUxQkJDNjc3RjAwRDc4NDQwIC8q
IEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1MDdEMjlF
MEU4NzFFNUUwMEQ3RDg5NiAvKiBKU1R5cGVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJC
NjcwMjE3QjZCNUFCMDBBN0FFM0YgLyogSlNVaW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBA
IC02Njk0LDYgKzY3NDcsNyBAQAogCQkJCTk2OUEwNzJBMEVEMUNFNjkwMEYxRjY4MSAvKiBMYWJl
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTYwMDk3QTYwRUJBQkI1ODAwN0E3Mjk3IC8qIExhYmVs
U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjU0Njc3MTRGNTlCNUMwMDJDMjk4OSAvKiBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTlEQTAwQjAxQkQ1
OTk0RTAwRjQ1NzVDIC8qIGxhenl3cml0ZXIucHkgaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1
MjBFMTZGNUNEMDBCMzQ0NjAgLyogTGVnYWN5UHJvZmlsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDNDMxMEUxNkY1Q0QwMEIzNDQ2MCAvKiBMZXhlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMxOEM1MkUwRTE2RkNFMTAwQjM0NDYwIC8qIExleGVyLmx1dC5oIGluIEhlYWRlcnMgKi8sCkBA
IC02NzkwLDcgKzY4NDQsNiBAQAogCQkJCTg2ODkxNkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQcml2
YXRlTmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NTAwRTE2RjVDRDAwQjM0NDYwIC8q
IFByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk1Q0Q0NTc3MEUxQzRGREQwMDg1MzU4RSAv
KiBQcm9maWxlR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjdDMTFBRDFCQzM4NjJD
MDBDNzRDREIgLyogQ29weUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDUxMEUx
NkY1Q0QwMEIzNDQ2MCAvKiBQcm9maWxlTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNzI5
QTUxNjZBRDM1MTAwMEY1QkEzIC8qIFByb2ZpbGVyQnl0ZWNvZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRjcyOUI5MTY2QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlckJ5dGVjb2Rlcy5oIGluIEhl
YWRlcnMgKi8sCkBAIC02OTQ5LDYgKzcwMDIsNyBAQAogCQkJCUE3QjYwMTgyMTYzOUZEMkEwMDM3
MkJBMyAvKiBVbmxpbmtlZENvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQxNDJFNTEx
Qjc5NkVDRTAwRjRCRjRCIC8qIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjJFODkyQzE2RDAyOEFEMDA5RTRGRDIgLyogVW51c2VkUG9pbnRlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTlEQTAwQjExQkQ1OTk0RTAwRjQ1NzVDIC8qIFVwZGF0ZUNvbnRl
bnRzLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NjNCMzgxM0ZDNkZFOTAwMDJEOUIyIC8qIFZh
bHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0MjZBNDgxNDYwQ0JCMzAwMTMxRjhG
IC8qIFZhbHVlUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5RUUwQzAwMUI0QUZCODUw
MDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTc0ODgs
NyArNzU0Miw2IEBACiAJCQkJMEY2Mzk0NTQxNUQwNzA1NTAwNkE1OTdDIC8qIEFycmF5UHJvZmls
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDMDEwN0VDMzc2MDA0MjdBNDggLyogQXJy
YXlQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyNEU1NDAxN0VBOUY1OTAwQUJC
MjE3IC8qIEFzc2VtYmx5SGVscGVycy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGRUIxMzc1NzFC
QjExRUY5MDBDRDUxMDAgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MjY3OEY4RTFBMDMxMDA5MDA2QTMwNkQgLyogQmFzaWNCbG9ja0xvY2F0aW9uLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNjRCMjcxMUE3ODRCQUYwMDZFNEU2NiAvKiBCaW5hcnlTd2l0
Y2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NjMxMDdFQzExQTAwMTNFN0IyIC8qIEJv
b2xlYW5Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc1MjAsNyArNzU3Myw2IEBA
CiAJCQkJQTc3RjE4MjExNjQwODhCMjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjhGOTQ0NjE2Njc2NEYxMDBENjE5NzEgLyogQ29kZU9yaWdpbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4NkI1ODI2NzE0RDI3OTZDMDBBOUMzMDYgLyogQ29kZVByb2ZpbGUu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJREU1QTBBMDAxQkEzQUMzRTAwM0Q0NDI0IC8qIEludHJp
bnNpY0VtaXR0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZCNTgyNjkxNEQyNzk3MDAwQTlD
MzA2IC8qIENvZGVQcm9maWxpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4Rjk0M0MxNjY3
NjMxMzAwRDYxOTcxIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY4Rjk0NDIxNjY3NjMzNTAwRDYxOTcxIC8qIENvZGVUeXBlLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtNzUzOCw2ICs3NTkwLDcgQEAKIAkJCQkxNDI4MDgyRTEwN0VDMDU3MDAxM0U3QjIg
LyogQ29uc3RydWN0RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTdEMjNGMTE4OTFCNUI0
MDAzMUM3RkEgLyogQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1MkI3MTdCNTFBMDU5N0UxMDA3QUY0RjMgLyogQ29udHJvbEZsb3dQcm9maWxlci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwRkJBREY1NDFCRDFGNEI4MDBFMDczQzEgLyogQ29waWVkQmxvY2su
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzI0MDMwNTUxNEI0MDRFNjAwNzlFQjY0IC8qIENvcGll
ZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyMjM5RDE3MTYyNjJCREQwMDVBQzVGRCAv
KiBDb3B5VmlzaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyQTExMTI0NTE5MkZDRTc5MDA1
RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzU4NCw2
ICs3NjM3LDcgQEAKIAkJCQkwRjM4QjAxOTE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRp
b25Nb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0IzQTFBMTUzRTY4RjIwMDNFRDBGRiAv
KiBERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVENjdC
OTFCMjYyNTZEMDA2NkNFMTUgLyogREZHQ29uc3RhbnRIb2lzdGluZ1BoYXNlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTBGMDk4MUY3MUJDNUU1NjUwMDQ4MTRGOCAvKiBERkdDb3B5QmFycmllck9w
dGltaXphdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjcyMTZDMURCMDMw
MDgyQzVFOCAvKiBERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3RDg5Q0Y1MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkZDOTU5MTRFRjkwQTYwMEM3MjUzMiAvKiBERkdD
U0VQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc4MjQsNiArNzg3OCw3IEBACiAJCQkJQTFE
NzkyRkUxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBMUQ3OTMwMDFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTJCQkZGNDFCMDQ0QTk4
MDA2NjRCNjkgLyogSW50bE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlERTVBMEEwMDFC
QTNBQzNFMDAzRDQ0MjQgLyogSW50cmluc2ljRW1pdHRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3MDExM0Q0QjFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0b3JPcGVyYXRpb25zLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTcwREMzRTA5MUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3Rv
dHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTAzRkExOTE4OEUwRkIwMDAxMTBGMTQgLyog
SmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc4NDEsNyArNzg5Niw2
IEBACiAJCQkJMEYyNEU1NEMxN0VFMjc0OTAwQUJCMjE3IC8qIEpJVE9wZXJhdGlvbnMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODZDQzg1QzQwRUU3QTg5NDAwMjg4NjgyIC8qIEpJVFByb3BlcnR5
QWNjZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3QzFFOEU0MTEyRTcyRUYwMEEzN0Y5OCAv
KiBKSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGQkFERjU0
MUJEMUY0QjgwMEUwNzNDMSAvKiBDb3BpZWRCbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
Rjc2NkQyODE1QThDQzFFMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEY3NjZEMkIxNUE4Q0MzODAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNUVGOTFFMTY4NzhGN0EwMDNFNUMyNSAvKiBKSVRUaHVu
a3MuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03OTM0LDYgKzc5ODgsNyBAQAogCQkJCTBGMkI2NkZB
MTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEYyQjY2RkMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheVByb3Rv
dHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQjY2RkUxN0I2QjVBQjAwQTdBRTNGIC8q
IEpTVHlwZWRBcnJheXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM0QzQ1N0UxQkM3MjU0OTAw
NzQ3NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlERUE3RTI0NDFCQkM2NzcyMDBENzg0NDAgLyogSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkUzQzYxQTE2N0JBQkVFMDA2RDc2MEEgLyogSlNW
YWx1ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTE0QkQ1QTMyMEEzRTkxRjYwMEJBRjU5QyAvKiBK
U1ZhbHVlUmVmLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzk2NSw2ICs4MDIwLDcgQEAKIAkJCQkx
NEI3MjNCMjEyRDdEQTQ2MDAzQkQ1RUQgLyogTWFjaGluZVN0YWNrTWFya2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRUIzRUNGMTYyMzdGNkMwMEFCNjdBRCAvKiBNYWNyb0Fzc2VtYmxlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9B
c3NlbWJsZXJBUk0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkVCMTM3NTcxQkIxMUVGOTAwQ0Q1
MTAwIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcyOTAw
OUMxNzk3NkM2MDAwMzE3Mjk4IC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRkU2OEM2MzgxQjkwREUwQjAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0E0QUUwODE3OTczQjI2MDA1NjEyQjEgLyogTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04MDQ0LDcgKzgxMDAs
NiBAQAogCQkJCTY1NDBDN0EwMUI4MkUxQzMwMDBGNkI3OSAvKiBSZWdpc3RlckF0T2Zmc2V0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTY1NDBDN0ExMUI4MkUxQzMwMDBGNkI3OSAvKiBSZWdpc3Rl
ckF0T2Zmc2V0TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkMzMTQxNTE4MTQ2RDcwMDAw
MzMyMzIgLyogUmVnaXN0ZXJTZXQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTM0QzQ1N0UxQkM3
MjU0OTAwNzQ3NkE3IC8qIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNTdEMjNFRDE4OTFCNTU0MDAzMUM3RkEgLyogUmVndWxhckV4cHJlc3Npb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVCQTE1RTkxODIzNDBCMzAwQTgyRTY5IC8qIFJlbW90
ZUluc3BlY3Rvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE1OTQ1NThGMTgyNDVFRkQwMENDMzg0
MyAvKiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtODE0
NSw3ICs4MjAwLDYgQEAKIAkJCQk3MDlGQjg2QjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFBy
b3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyQTRFQzkwQjE4NjBENkMyMDA5NEY3ODIg
LyogV3JpdGVCYXJyaWVyQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzgxNTBCMTQw
NDNDMEUwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTBGMDk4MUY3MUJDNUU1NjUwMDQ4MTRGOCAvKiBERkdDb3B5QmFycmllck9wdGltaXphdGlv
blBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RTVBQjNBMTc5OUU0QjIwMEQyODMzRCAv
KiBYODZEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODYzQzZEOUMxNTIxMTEx
QTAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxpemVVQ1MyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTg2NzA0Qjg0MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1XaW4uY21h
a2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggMDk3MWQ0
NDRiZjczM2UxMTlkNTVmYTIzMDYxY2U0MjVkNmU3ZDUzYS4uNmY2ODgxNzJjMjI3NzRkNmEwZGRl
OGZjYWQwYjM0MDNhMzExZDIyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Bs
YXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybVdpbi5j
bWFrZQpAQCAtMzAsMTUgKzMwLDI3IEBAIGZpbGUoQ09QWQogCiBmaWxlKE1BS0VfRElSRUNUT1JZ
ICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMvSmF2YVNjcmlwdENvcmUp
CiAKLWZpbGUoR0xPQiBfSmF2YVNjcmlwdENvcmVfU2NyaXB0cyAiJHtKYXZhU2NyaXB0Q29yZV9T
Q1JJUFRTX0RJUn0vKiIpCi1mb3JlYWNoIChfc2NyaXB0ICR7X0phdmFTY3JpcHRDb3JlX1Njcmlw
dHN9KQorIyBUaGUgZGlyZWN0b3J5IGZsYXR0ZW5pbmcgcGVyZm9ybWVkIGJlbG93IG1pcnJvcnMg
d2hhdCB0aGUgTWFjIHBvcnQgZG9lcyB3aXRoIHByaXZhdGUgaGVhZGVycy4KKyMgV2UgcmVseSBv
biB0aGUgZmFjdCB0aGF0IGdlbmVyYXRvci1zcGVjaWZpYyBmaWxlIG5hbWVzIGFyZSBwcmVmaXhl
ZCB3aXRoIHRoZWlyIGRpcmVjdG9yeS4KKyMgVG9wLWxldmVsIHNjcmlwdHMgc2hvdWxkIGhhdmUg
YSBmaWxlIGV4dGVuc2lvbiwgc2luY2UgdGhleSBhcmUgaW52b2tlZCBkdXJpbmcgdGhlIGJ1aWxk
LgorCitzZXQoSmF2YVNjcmlwdENvcmVfU0NSSVBUUworICAgICR7SmF2YVNjcmlwdENvcmVfU0NS
SVBUU19ESVJ9LyoucGwKKyAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS8qLnB5Cisg
ICAgJHtKYXZhU2NyaXB0Y29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnMvYnVpbHRpbnMqLnB5Cisp
CisKK2ZpbGUoR0xPQiBfc2NyaXB0c1RvQ29weSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFN9KQor
Zm9yZWFjaCAoX3NjcmlwdCAke19zY3JpcHRzVG9Db3B5fSkKICAgICBmaWxlKENPUFkgJHtfc2Ny
aXB0fSBERVNUSU5BVElPTiAke0RFUklWRURfU09VUkNFU19ESVJ9L0ZvcndhcmRpbmdIZWFkZXJz
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMpCi1lbmRmb3JlYWNoKCkKK2VuZGZvcmVhY2ggKCkKIAog
c2V0KEphdmFTY3JpcHRDb3JlX1BPU1RfQlVJTERfQ09NTUFORCAiJHtDTUFLRV9CSU5BUllfRElS
fS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9wb3N0QnVpbGQuY21kIikKIGZpbGUoV1JJ
VEUgIiR7SmF2YVNjcmlwdENvcmVfUE9TVF9CVUlMRF9DT01NQU5EfSIgIkB4Y29weSAveSAvZCAv
ZiBcIiR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vSmF2YVNjcmlwdENvcmUvKi5oXCIgXCIke0RFUklW
RURfU09VUkNFU19ESVJ9L0ZvcndhcmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlXCIgPm51bCAy
Pm51bFxuIikKIGZpbGUoQVBQRU5EICIke0phdmFTY3JpcHRDb3JlX1BPU1RfQlVJTERfQ09NTUFO
RH0iICJAeGNvcHkgL3kgL2QgL2YgXCIke0RFUklWRURfU09VUkNFU19ESVJ9L0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci8qLmhcIiBcIiR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vRm9yd2FyZGluZ0hl
YWRlcnMvSmF2YVNjcmlwdENvcmVcIiA+bnVsIDI+bnVsXG4iKQotZmlsZShBUFBFTkQgIiR7SmF2
YVNjcmlwdENvcmVfUE9TVF9CVUlMRF9DT01NQU5EfSIgIkB4Y29weSAveSAvZCAvZiBcIiR7SmF2
YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9LyouKlwiIFwiJHtERVJJVkVEX1NPVVJDRVNfRElSfS9G
b3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzXCIgPm51bCAyPm51bFxuIikK
K2ZvcmVhY2ggKF9zY3JpcHQgJHtfc2NyaXB0c1RvQ29weX0pCisgICAgZmlsZShBUFBFTkQgIiR7
SmF2YVNjcmlwdENvcmVfUE9TVF9CVUlMRF9DT01NQU5EfSIgIkB4Y29weSAveSAvZiBcIiR7X3Nj
cmlwdH1cIiBcIiR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMvSmF2YVNj
cmlwdENvcmUvU2NyaXB0c1wiID5udWwgMj5udWxcbiIpCitlbmRmb3JlYWNoICgpCiBmb3JlYWNo
IChfZGlyZWN0b3J5ICR7SmF2YVNjcmlwdENvcmVfRk9SV0FSRElOR19IRUFERVJTX0RJUkVDVE9S
SUVTfSkKICAgICBmaWxlKEFQUEVORCAiJHtKYXZhU2NyaXB0Q29yZV9QT1NUX0JVSUxEX0NPTU1B
TkR9IiAiQHhjb3B5IC95IC9kIC9mIFwiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9LyR7X2RpcmVjdG9y
eX0vKi5oXCIgXCIke0RFUklWRURfU09VUkNFU19ESVJ9L0ZvcndhcmRpbmdIZWFkZXJzL0phdmFT
Y3JpcHRDb3JlXCIgPm51bCAyPm51bFxuIikKIGVuZGZvcmVhY2ggKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL1VwZGF0ZUNvbnRlbnRzLnB5IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvVXBkYXRlQ29udGVudHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzc2ZDQ2
ZmI0YzQyMzAyYjg1ZmYxMGM4NTFlYjM0YzFlMjc4OTRjMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL1VwZGF0ZUNvbnRlbnRzLnB5CkBAIC0wLDAgKzEs
NDggQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisKKyMgQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMgMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyMgICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyMgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyMgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBzeXMKK2lt
cG9ydCBvcworCithc3NlcnQobGVuKHN5cy5hcmd2KSA9PSAzKQorCitjb21wID0gc3lzLmFyZ3Zb
MV0KK2ZpbGVuYW1lID0gc3lzLmFyZ3ZbMl0KKwordCA9IEZhbHNlCisKK2lmIG9zLnBhdGguaXNm
aWxlKGZpbGVuYW1lKToKKyAgICBmID0gb3BlbihmaWxlbmFtZSwgJ3InKQorICAgIGNvbXBhcmF0
b3IgPSBmLnJlYWQoKQorICAgIGYuY2xvc2UoKQorICAgIHQgPSBUcnVlCisKK2lmIChub3QgdCBv
ciBjb21wICE9IGNvbXBhcmF0b3IpOgorICAgIGYgPSBvcGVuKGZpbGVuYW1lLCAndycpCisgICAg
Zi53cml0ZShjb21wKQorICAgIGYuY2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvX19pbml0X18ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy9idWlsdGlucy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZGZjYmE5ODFkOGY4
ZGEwNzgxMzU4Y2ZlNjRmYTFjNzgwNzRhMTYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvX19pbml0X18ucHkKQEAgLTAsMCArMSwzIEBA
CisjIFJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1
bGUgZmlsZXMKKworZnJvbSBidWlsdGlucyBpbXBvcnQgKgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnMucHkgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGlucy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjdjZGFk
OGEzMGQ3MGNjYzQ1YTE5ZDgzZDIyNGE2NGYzYmVmZjcyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnMucHkKQEAgLTAsMCAr
MSwxMiBAQAorIyBUaGlzIGZpbGUgaXMgdXNlZCB0byBzaW11bGF0ZSB0aGUgYnVpbHRpbnMvIGRp
cmVjdG9yeSB3aGVuIGdlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisjIGlzIHJ1biBmcm9tIEphdmFT
Y3JpcHRDb3JlIGZyYW1ld29yaydzIHByaXZhdGUgaGVhZGVycyBkaXJlY3RvcnksIHdoaWNoIGlz
IGZsYXR0ZW5lZC4KKworZnJvbSBidWlsdGluc19tb2RlbCBpbXBvcnQgKgorZnJvbSBidWlsdGlu
c190ZW1wbGF0ZXMgaW1wb3J0ICoKKworZnJvbSBidWlsdGluc19nZW5lcmF0b3IgaW1wb3J0ICoK
K2Zyb20gYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaGVhZGVyIGltcG9ydCAqCitmcm9tIGJ1
aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uIGltcG9ydCAqCitmcm9tIGJ1
aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlciBpbXBvcnQgKgorZnJvbSBidWlsdGluc19n
ZW5lcmF0ZV9zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbiBpbXBvcnQgKgorZnJvbSBidWlsdGluc19n
ZW5lcmF0ZV9zZXBhcmF0ZV93cmFwcGVyIGltcG9ydCAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9o
ZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGlu
c19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTA4OWZkZjU5YTJiYWU5
NjE1ZTk4YThhNmUyY2MyOTgwNDkzZTYxMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hl
YWRlci5weQpAQCAtMCwwICsxLDE2MiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENv
cHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2lt
cG9ydCBsb2dnaW5nCitpbXBvcnQgcmUKK2ltcG9ydCBzdHJpbmcKK2Zyb20gc3RyaW5nIGltcG9y
dCBUZW1wbGF0ZQorCitmcm9tIGJ1aWx0aW5zX2dlbmVyYXRvciBpbXBvcnQgQnVpbHRpbnNHZW5l
cmF0b3IKK2Zyb20gYnVpbHRpbnNfdGVtcGxhdGVzIGltcG9ydCBCdWlsdGluc0dlbmVyYXRvclRl
bXBsYXRlcyBhcyBUZW1wbGF0ZXMKKworbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcp
CisKKworY2xhc3MgQnVpbHRpbnNDb21iaW5lZEhlYWRlckdlbmVyYXRvcihCdWlsdGluc0dlbmVy
YXRvcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZGVsKToKKyAgICAgICAgQnVpbHRpbnNH
ZW5lcmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWwpCisKKyAgICBkZWYgb3V0cHV0X2ZpbGVuYW1l
KHNlbGYpOgorICAgICAgICByZXR1cm4gIiVzQnVpbHRpbnMuaCIgJSBzZWxmLm1vZGVsKCkuZnJh
bWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpCisKKyAgICBkZWYgZ2VuZXJhdGVfb3V0cHV0KHNl
bGYpOgorICAgICAgICBhcmdzID0geworICAgICAgICAgICAgJ25hbWVzcGFjZSc6IHNlbGYubW9k
ZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNlJyksCisgICAgICAgICAgICAnaGVhZGVy
R3VhcmQnOiBzZWxmLm91dHB1dF9maWxlbmFtZSgpLnJlcGxhY2UoJy4nLCAnXycpLAorICAgICAg
ICAgICAgJ21hY3JvUHJlZml4Jzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdtYWNy
b19wcmVmaXgnKSwKKyAgICAgICAgfQorCisgICAgICAgIHNlY3Rpb25zID0gW10KKyAgICAgICAg
c2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfbGljZW5zZSgpKQorICAgICAgICBzZWN0aW9u
cy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkRvTm90RWRpdFdhcm5pbmcpLnN1YnN0aXR1dGUo
YXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuSGVhZGVy
SW5jbHVkZUd1YXJkVG9wKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBl
bmQoc2VsZi5nZW5lcmF0ZV9mb3J3YXJkX2RlY2xhcmF0aW9ucygpKQorICAgICAgICBzZWN0aW9u
cy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZVRvcCkuc3Vic3RpdHV0ZShhcmdz
KSkKKyAgICAgICAgZm9yIG9iamVjdCBpbiBzZWxmLm1vZGVsKCkub2JqZWN0czoKKyAgICAgICAg
ICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX3NlY3Rpb25fZm9yX29iamVjdChvYmpl
Y3QpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9zZWN0aW9uX2Zvcl9j
b2RlX3RhYmxlX21hY3JvKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRl
X3NlY3Rpb25fZm9yX2NvZGVfbmFtZV9tYWNybygpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQo
VGVtcGxhdGUoVGVtcGxhdGVzLkNvbWJpbmVkSGVhZGVyU3RhdGljTWFjcm9zKS5zdWJzdGl0dXRl
KGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLk5hbWVz
cGFjZUJvdHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRl
bXBsYXRlKFRlbXBsYXRlcy5IZWFkZXJJbmNsdWRlR3VhcmRCb3R0b20pLnN1YnN0aXR1dGUoYXJn
cykpCisKKyAgICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNlY3Rpb25zKQorCisgICAgZGVmIGdl
bmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gIiIibmFt
ZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBWTTsKKworZW51
bSBjbGFzcyBDb25zdHJ1Y3RBYmlsaXR5IDogdW5zaWduZWQ7Cit9IiIiCisKKyAgICBkZWYgZ2Vu
ZXJhdGVfc2VjdGlvbl9mb3Jfb2JqZWN0KHNlbGYsIG9iamVjdCk6CisgICAgICAgIGxpbmVzID0g
W10KKyAgICAgICAgbGluZXMuYXBwZW5kKCcvKiAlcyAqLycgJSBvYmplY3Qub2JqZWN0X25hbWUp
CisgICAgICAgIGxpbmVzLmV4dGVuZChzZWxmLmdlbmVyYXRlX2V4dGVybnNfZm9yX29iamVjdChv
YmplY3QpKQorICAgICAgICBsaW5lcy5hcHBlbmQoIiIpCisgICAgICAgIGxpbmVzLmV4dGVuZChz
ZWxmLmdlbmVyYXRlX21hY3Jvc19mb3Jfb2JqZWN0KG9iamVjdCkpCisgICAgICAgIGxpbmVzLmFw
cGVuZCgiIikKKyAgICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2VuZXJhdGVfZGVmaW5lc19mb3Jf
b2JqZWN0KG9iamVjdCkpCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCisKKyAgICBk
ZWYgZ2VuZXJhdGVfZXh0ZXJuc19mb3Jfb2JqZWN0KHNlbGYsIG9iamVjdCk6CisgICAgICAgIGxp
bmVzID0gW10KKworICAgICAgICBmb3IgZnVuY3Rpb24gaW4gb2JqZWN0LmZ1bmN0aW9uczoKKyAg
ICAgICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ2NvZGVOYW1lJzog
QnVpbHRpbnNHZW5lcmF0b3IubWFuZ2xlZE5hbWVGb3JGdW5jdGlvbihmdW5jdGlvbikgKyAnQ29k
ZScsCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiIiJleHRlcm4g
Y29uc3QgY2hhciogc18lKGNvZGVOYW1lKXM7CitleHRlcm4gY29uc3QgaW50IHNfJShjb2RlTmFt
ZSlzTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzXyUoY29kZU5h
bWUpc0NvbnN0cnVjdEFiaWxpdHk7IiIiICUgZnVuY3Rpb25fYXJncykKKworICAgICAgICByZXR1
cm4gbGluZXMKKworICAgIGRlZiBnZW5lcmF0ZV9tYWNyb3NfZm9yX29iamVjdChzZWxmLCBvYmpl
Y3QpOgorICAgICAgICBhcmdzID0geworICAgICAgICAgICAgJ21hY3JvUHJlZml4Jzogc2VsZi5t
b2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdtYWNyb19wcmVmaXgnKSwKKyAgICAgICAgICAgICdv
YmplY3RNYWNybyc6IG9iamVjdC5vYmplY3RfbmFtZS5yZXBsYWNlKCcuJywgJycpLnVwcGVyKCks
CisgICAgICAgIH0KKworICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZCgi
I2RlZmluZSAlKG1hY3JvUHJlZml4KXNfRk9SRUFDSF8lKG9iamVjdE1hY3JvKXNfQlVJTFRJTl9E
QVRBKG1hY3JvKSBcXCIgJSBhcmdzKQorICAgICAgICBmb3IgZnVuY3Rpb24gaW4gb2JqZWN0LmZ1
bmN0aW9uczoKKyAgICAgICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSB7CisgICAgICAgICAgICAgICAg
J2Z1bmNOYW1lJzogZnVuY3Rpb24uZnVuY3Rpb25fbmFtZSwKKyAgICAgICAgICAgICAgICAnbWFu
Z2xlZE5hbWUnOiBCdWlsdGluc0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvckZ1bmN0aW9uKGZ1bmN0
aW9uKSwKKyAgICAgICAgICAgICAgICAncGFyYW1Db3VudCc6IGxlbihmdW5jdGlvbi5wYXJhbWV0
ZXJzKSwKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIgICAgbWFj
cm8oJShmdW5jTmFtZSlzLCAlKG1hbmdsZWROYW1lKXMsICUocGFyYW1Db3VudClkKSBcXCIgJSBm
dW5jdGlvbl9hcmdzKQorICAgICAgICByZXR1cm4gbGluZXMKKworICAgIGRlZiBnZW5lcmF0ZV9k
ZWZpbmVzX2Zvcl9vYmplY3Qoc2VsZiwgb2JqZWN0KToKKyAgICAgICAgbGluZXMgPSBbXQorICAg
ICAgICBmb3IgZnVuY3Rpb24gaW4gb2JqZWN0LmZ1bmN0aW9uczoKKyAgICAgICAgICAgIGFyZ3Mg
PSB7CisgICAgICAgICAgICAgICAgJ21hY3JvUHJlZml4Jzogc2VsZi5tb2RlbCgpLmZyYW1ld29y
ay5zZXR0aW5nKCdtYWNyb19wcmVmaXgnKSwKKyAgICAgICAgICAgICAgICAnb2JqZWN0TWFjcm8n
OiBvYmplY3Qub2JqZWN0X25hbWUucmVwbGFjZSgnLicsICcnKS51cHBlcigpLAorICAgICAgICAg
ICAgICAgICdmdW5jdGlvbk1hY3JvJzogZnVuY3Rpb24uZnVuY3Rpb25fbmFtZS51cHBlcigpLAor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIjZGVmaW5lICUobWFjcm9Q
cmVmaXgpc19CVUlMVElOXyUob2JqZWN0TWFjcm8pc18lKGZ1bmN0aW9uTWFjcm8pcyAxIiAlIGFy
Z3MpCisKKyAgICAgICAgcmV0dXJuIGxpbmVzCisKKyAgICBkZWYgZ2VuZXJhdGVfc2VjdGlvbl9m
b3JfY29kZV90YWJsZV9tYWNybyhzZWxmKToKKyAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAg
ICdtYWNyb1ByZWZpeCc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbWFjcm9fcHJl
Zml4JyksCisgICAgICAgIH0KKworICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFw
cGVuZCgiI2RlZmluZSAlKG1hY3JvUHJlZml4KXNfRk9SRUFDSF9CVUlMVElOX0NPREUobWFjcm8p
IFxcIiAlIGFyZ3MpCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBzZWxmLm1vZGVsKCkuYWxsX2Z1
bmN0aW9ucygpOgorICAgICAgICAgICAgZnVuY3Rpb25fYXJncyA9IHsKKyAgICAgICAgICAgICAg
ICAnZnVuY05hbWUnOiBmdW5jdGlvbi5mdW5jdGlvbl9uYW1lLAorICAgICAgICAgICAgICAgICdj
b2RlTmFtZSc6IEJ1aWx0aW5zR2VuZXJhdG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rpb24oZnVuY3Rp
b24pICsgJ0NvZGUnLAorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQo
IiAgICBtYWNybyglKGNvZGVOYW1lKXMsICUoZnVuY05hbWUpcywgc18lKGNvZGVOYW1lKXNMZW5n
dGgpIFxcIiAlIGZ1bmN0aW9uX2FyZ3MpCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMp
CisKKyAgICBkZWYgZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV9uYW1lX21hY3JvKHNlbGYpOgor
ICAgICAgICBhcmdzID0geworICAgICAgICAgICAgJ21hY3JvUHJlZml4Jzogc2VsZi5tb2RlbCgp
LmZyYW1ld29yay5zZXR0aW5nKCdtYWNyb19wcmVmaXgnKSwKKyAgICAgICAgfQorCisgICAgICAg
IGxpbmVzID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCIjZGVmaW5lICUobWFjcm9QcmVmaXgp
c19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXFwiICUgYXJncykKKyAgICAg
ICAgdW5pcXVlX25hbWVzID0gbGlzdChzZXQoW2Z1bmN0aW9uLmZ1bmN0aW9uX25hbWUgZm9yIGZ1
bmN0aW9uIGluIHNlbGYubW9kZWwoKS5hbGxfZnVuY3Rpb25zKCldKSkKKyAgICAgICAgdW5pcXVl
X25hbWVzLnNvcnQoKQorICAgICAgICBmb3IgZnVuY3Rpb25fbmFtZSBpbiB1bmlxdWVfbmFtZXM6
CisgICAgICAgICAgICBmdW5jdGlvbl9hcmdzID0geworICAgICAgICAgICAgICAgICdmdW5jTmFt
ZSc6IGZ1bmN0aW9uX25hbWUsCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxpbmVzLmFw
cGVuZCgiICAgIG1hY3JvKCUoZnVuY05hbWUpcykgXFwiICUgZnVuY3Rpb25fYXJncykKKyAgICAg
ICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVu
dGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRp
bnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI4Nzhk
MzYxMGJjM2QxMzk3ZGMxMTU4M2I0ZDM5YjgyZjQyNmQ4OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2Nv
bWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5CkBAIC0wLDAgKzEsOTAgQEAKKyMhL3Vzci9iaW4vZW52
IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5n
dG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHJlCitpbXBvcnQgc3RyaW5nCitm
cm9tIHN0cmluZyBpbXBvcnQgVGVtcGxhdGUKKworZnJvbSBidWlsdGluc19nZW5lcmF0b3IgaW1w
b3J0IEJ1aWx0aW5zR2VuZXJhdG9yCitmcm9tIGJ1aWx0aW5zX21vZGVsIGltcG9ydCBGcmFtZXdv
cmssIEZyYW1ld29ya3MKK2Zyb20gYnVpbHRpbnNfdGVtcGxhdGVzIGltcG9ydCBCdWlsdGluc0dl
bmVyYXRvclRlbXBsYXRlcyBhcyBUZW1wbGF0ZXMKKworbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIo
J2dsb2JhbCcpCisKKworY2xhc3MgQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJh
dG9yKEJ1aWx0aW5zR2VuZXJhdG9yKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZWwpOgor
ICAgICAgICBCdWlsdGluc0dlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBtb2RlbCkKKworICAgIGRl
ZiBvdXRwdXRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiAiJXNCdWlsdGlucy5jcHAi
ICUgc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCduYW1lc3BhY2UnKQorCisgICAgZGVm
IGdlbmVyYXRlX291dHB1dChzZWxmKToKKyAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICdu
YW1lc3BhY2UnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpLAor
ICAgICAgICAgICAgJ21hY3JvUHJlZml4Jzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5n
KCdtYWNyb19wcmVmaXgnKSwKKyAgICAgICAgfQorCisgICAgICAgIHNlY3Rpb25zID0gW10KKyAg
ICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfbGljZW5zZSgpKQorICAgICAgICBz
ZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkRvTm90RWRpdFdhcm5pbmcpLnN1YnN0
aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2hlYWRl
cl9pbmNsdWRlcygpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVz
Lk5hbWVzcGFjZVRvcCkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgZm9yIGZ1bmN0aW9uIGlu
IHNlbGYubW9kZWwoKS5hbGxfZnVuY3Rpb25zKCk6CisgICAgICAgICAgICBzZWN0aW9ucy5hcHBl
bmQoc2VsZi5nZW5lcmF0ZV9lbWJlZGRlZF9jb2RlX3N0cmluZ19zZWN0aW9uX2Zvcl9mdW5jdGlv
bihmdW5jdGlvbikpCisgICAgICAgIGlmIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsgaXMgRnJhbWV3
b3Jrcy5KYXZhU2NyaXB0Q29yZToKKyAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0
ZShUZW1wbGF0ZXMuQ29tYmluZWRKU0NJbXBsZW1lbnRhdGlvblN0YXRpY01hY3Jvcykuc3Vic3Rp
dHV0ZShhcmdzKSkKKyAgICAgICAgZWxpZiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrIGlzIEZyYW1l
d29ya3MuV2ViQ29yZToKKyAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1w
bGF0ZXMuQ29tYmluZWRXZWJDb3JlSW1wbGVtZW50YXRpb25TdGF0aWNNYWNyb3MpLnN1YnN0aXR1
dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFt
ZXNwYWNlQm90dG9tKS5zdWJzdGl0dXRlKGFyZ3MpKQorCisgICAgICAgIHJldHVybiAiXG5cbiIu
am9pbihzZWN0aW9ucykKKworICAgIGRlZiBnZW5lcmF0ZV9oZWFkZXJfaW5jbHVkZXMoc2VsZik6
CisgICAgICAgIGhlYWRlcl9pbmNsdWRlcyA9IFsKKyAgICAgICAgICAgIChbIkphdmFTY3JpcHRD
b3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJidWlsdGlucy9CdWls
dGluRXhlY3V0YWJsZXMuaCIpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIChbIkphdmFT
Y3JpcHRDb3JlIiwgIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3Jl
IiwgInJ1bnRpbWUvRXhlY3V0YWJsZS5oIiksCisgICAgICAgICAgICApLAorICAgICAgICAgICAg
KFsiSmF2YVNjcmlwdENvcmUiLCAiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNj
cmlwdENvcmUiLCAicnVudGltZS9KU0NlbGxJbmxpbmVzLmgiKSwKKyAgICAgICAgICAgICksCisg
ICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29y
ZSIsICJydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCIpLAorICAgICAgICAgICAgKSwKKyAgICAg
ICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwg
InJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCIpLAorICAgICAgICAgICAgKSwKKyAgICAgICAg
ICAgIChbIkphdmFTY3JpcHRDb3JlIiwgIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkph
dmFTY3JpcHRDb3JlIiwgInJ1bnRpbWUvVk0uaCIpLAorICAgICAgICAgICAgKSwKKyAgICAgICAg
XQorCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4oc2VsZi5nZW5lcmF0ZV9pbmNsdWRlc19mcm9t
X2VudHJpZXMoaGVhZGVyX2luY2x1ZGVzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5w
eSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVy
YXRlX3NlcGFyYXRlX2hlYWRlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjFlYjdkNjcxY2ExMWMzNThhNTE5
N2RhZGFkZTc5NTE5MGQwMDMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5
CkBAIC0wLDAgKzEsMTc1IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0
IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJp
Z2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworaW1wb3J0IGxv
Z2dpbmcKK2ltcG9ydCByZQoraW1wb3J0IHN0cmluZworZnJvbSBzdHJpbmcgaW1wb3J0IFRlbXBs
YXRlCisKK2Zyb20gYnVpbHRpbnNfZ2VuZXJhdG9yIGltcG9ydCBCdWlsdGluc0dlbmVyYXRvcgor
ZnJvbSBidWlsdGluc190ZW1wbGF0ZXMgaW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVz
IGFzIFRlbXBsYXRlcworCitsb2cgPSBsb2dnaW5nLmdldExvZ2dlcignZ2xvYmFsJykKKworCitj
bGFzcyBCdWlsdGluc1NlcGFyYXRlSGVhZGVyR2VuZXJhdG9yKEJ1aWx0aW5zR2VuZXJhdG9yKToK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZWwsIG9iamVjdCk6CisgICAgICAgIEJ1aWx0aW5z
R2VuZXJhdG9yLl9faW5pdF9fKHNlbGYsIG1vZGVsKQorICAgICAgICBzZWxmLm9iamVjdCA9IG9i
amVjdAorCisgICAgZGVmIG91dHB1dF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuICIl
c0J1aWx0aW5zLmgiICUgQnVpbHRpbnNHZW5lcmF0b3IubWFuZ2xlZE5hbWVGb3JPYmplY3Qoc2Vs
Zi5vYmplY3QpCisKKyAgICBkZWYgbWFjcm9fcHJlZml4KHNlbGYpOgorICAgICAgICByZXR1cm4g
c2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdtYWNyb19wcmVmaXgnKQorCisgICAgZGVm
IGdlbmVyYXRlX291dHB1dChzZWxmKToKKyAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICdu
YW1lc3BhY2UnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpLAor
ICAgICAgICAgICAgJ2hlYWRlckd1YXJkJzogc2VsZi5vdXRwdXRfZmlsZW5hbWUoKS5yZXBsYWNl
KCcuJywgJ18nKSwKKyAgICAgICAgICAgICdtYWNyb1ByZWZpeCc6IHNlbGYubWFjcm9fcHJlZml4
KCksCisgICAgICAgICAgICAnb2JqZWN0TmFtZSc6IHNlbGYub2JqZWN0Lm9iamVjdF9uYW1lLnVw
cGVyKCksCisgICAgICAgIH0KKworICAgICAgICBzZWN0aW9ucyA9IFtdCisgICAgICAgIHNlY3Rp
b25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2xpY2Vuc2UoKSkKKyAgICAgICAgc2VjdGlvbnMuYXBw
ZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5Eb05vdEVkaXRXYXJuaW5nKS5zdWJzdGl0dXRlKGFyZ3Mp
KQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkhlYWRlckluY2x1
ZGVHdWFyZFRvcCkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNl
bGYuZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChz
ZWxmLmdlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zKCkpCisgICAgICAgIHNlY3Rpb25zLmFw
cGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlVG9wKS5zdWJzdGl0dXRlKGFyZ3MpKQor
ICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9zZWN0aW9uX2Zvcl9vYmplY3Qo
c2VsZi5vYmplY3QpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9zZWN0
aW9uX2Zvcl9jb2RlX3RhYmxlX21hY3JvKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxm
LmdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfbmFtZV9tYWNybygpKQorICAgICAgICBzZWN0aW9u
cy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLlNlcGFyYXRlSGVhZGVyU3RhdGljTWFjcm9zKS5z
dWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxh
dGVzLk5hbWVzcGFjZUJvdHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMu
YXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5IZWFkZXJJbmNsdWRlR3VhcmRCb3R0b20pLnN1YnN0
aXR1dGUoYXJncykpCisKKyAgICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNlY3Rpb25zKQorCisg
ICAgZGVmIGdlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zKHNlbGYpOgorICAgICAgICByZXR1
cm4gIiIibmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Cit9IiIiCisK
KyAgICBkZWYgZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKHNlbGYpOgorICAgICAgICBoZWFkZXJf
aW5jbHVkZXMgPSBbCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAg
KCJKYXZhU2NyaXB0Q29yZSIsICJidWlsdGlucy9CdWlsdGluVXRpbHMuaCIpLAorICAgICAgICAg
ICAgKSwKKyAgICAgICAgXQorCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4oc2VsZi5nZW5lcmF0
ZV9pbmNsdWRlc19mcm9tX2VudHJpZXMoaGVhZGVyX2luY2x1ZGVzKSkKKworICAgIGRlZiBnZW5l
cmF0ZV9zZWN0aW9uX2Zvcl9vYmplY3Qoc2VsZiwgb2JqZWN0KToKKyAgICAgICAgbGluZXMgPSBb
XQorICAgICAgICBsaW5lcy5hcHBlbmQoJy8qICVzICovJyAlIG9iamVjdC5vYmplY3RfbmFtZSkK
KyAgICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2VuZXJhdGVfZXh0ZXJuc19mb3Jfb2JqZWN0KG9i
amVjdCkpCisgICAgICAgIGxpbmVzLmFwcGVuZCgiIikKKyAgICAgICAgbGluZXMuZXh0ZW5kKHNl
bGYuZ2VuZXJhdGVfbWFjcm9zX2Zvcl9vYmplY3Qob2JqZWN0KSkKKyAgICAgICAgbGluZXMuYXBw
ZW5kKCIiKQorICAgICAgICBsaW5lcy5leHRlbmQoc2VsZi5nZW5lcmF0ZV9kZWZpbmVzX2Zvcl9v
YmplY3Qob2JqZWN0KSkKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKKworICAgIGRl
ZiBnZW5lcmF0ZV9leHRlcm5zX2Zvcl9vYmplY3Qoc2VsZiwgb2JqZWN0KToKKyAgICAgICAgbGlu
ZXMgPSBbXQorCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBvYmplY3QuZnVuY3Rpb25zOgorICAg
ICAgICAgICAgZnVuY3Rpb25fYXJncyA9IHsKKyAgICAgICAgICAgICAgICAnY29kZU5hbWUnOiBC
dWlsdGluc0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvckZ1bmN0aW9uKGZ1bmN0aW9uKSArICdDb2Rl
JywKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIiImV4dGVybiBj
b25zdCBjaGFyKiBzXyUoY29kZU5hbWUpczsKK2V4dGVybiBjb25zdCBpbnQgc18lKGNvZGVOYW1l
KXNMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfJShjb2RlTmFt
ZSlzQ29uc3RydWN0QWJpbGl0eTsiIiIgJSBmdW5jdGlvbl9hcmdzKQorCisgICAgICAgIHJldHVy
biBsaW5lcworCisgICAgZGVmIGdlbmVyYXRlX21hY3Jvc19mb3Jfb2JqZWN0KHNlbGYsIG9iamVj
dCk6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1h
Y3JvX3ByZWZpeCgpLAorICAgICAgICAgICAgJ29iamVjdE1hY3JvJzogb2JqZWN0Lm9iamVjdF9u
YW1lLnJlcGxhY2UoJy4nLCAnXycpLnVwcGVyKCksCisgICAgICAgIH0KKworICAgICAgICBsaW5l
cyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZCgiI2RlZmluZSAlKG1hY3JvUHJlZml4KXNfRk9S
RUFDSF8lKG9iamVjdE1hY3JvKXNfQlVJTFRJTl9EQVRBKG1hY3JvKSBcXCIgJSBhcmdzKQorICAg
ICAgICBmb3IgZnVuY3Rpb24gaW4gb2JqZWN0LmZ1bmN0aW9uczoKKyAgICAgICAgICAgIGZ1bmN0
aW9uX2FyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ2Z1bmNOYW1lJzogZnVuY3Rpb24uZnVuY3Rp
b25fbmFtZSwKKyAgICAgICAgICAgICAgICAnbWFuZ2xlZE5hbWUnOiBCdWlsdGluc0dlbmVyYXRv
ci5tYW5nbGVkTmFtZUZvckZ1bmN0aW9uKGZ1bmN0aW9uKSwKKyAgICAgICAgICAgICAgICAncGFy
YW1Db3VudCc6IGxlbihmdW5jdGlvbi5wYXJhbWV0ZXJzKSwKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgbGluZXMuYXBwZW5kKCIgICAgbWFjcm8oJShmdW5jTmFtZSlzLCAlKG1hbmdsZWRO
YW1lKXMsICUocGFyYW1Db3VudClkKSBcXCIgJSBmdW5jdGlvbl9hcmdzKQorICAgICAgICByZXR1
cm4gbGluZXMKKworICAgIGRlZiBnZW5lcmF0ZV9kZWZpbmVzX2Zvcl9vYmplY3Qoc2VsZiwgb2Jq
ZWN0KToKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBmb3IgZnVuY3Rpb24gaW4gb2JqZWN0
LmZ1bmN0aW9uczoKKyAgICAgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ21hY3Jv
UHJlZml4Jzogc2VsZi5tYWNyb19wcmVmaXgoKSwKKyAgICAgICAgICAgICAgICAnb2JqZWN0TWFj
cm8nOiBvYmplY3Qub2JqZWN0X25hbWUucmVwbGFjZSgnLicsICdfJykudXBwZXIoKSwKKyAgICAg
ICAgICAgICAgICAnZnVuY3Rpb25NYWNybyc6IGZ1bmN0aW9uLmZ1bmN0aW9uX25hbWUudXBwZXIo
KSwKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiI2RlZmluZSAlKG1h
Y3JvUHJlZml4KXNfQlVJTFRJTl8lKG9iamVjdE1hY3JvKXNfJShmdW5jdGlvbk1hY3JvKXMgMSIg
JSBhcmdzKQorCisgICAgICAgIHJldHVybiBsaW5lcworCisgICAgZGVmIGdlbmVyYXRlX3NlY3Rp
b25fZm9yX2NvZGVfdGFibGVfbWFjcm8oc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAg
ICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ21hY3Jv
X3ByZWZpeCcpLAorICAgICAgICAgICAgJ29iamVjdE1hY3JvJzogc2VsZi5vYmplY3Qub2JqZWN0
X25hbWUudXBwZXIoKSwKKyAgICAgICAgfQorCisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAg
bGluZXMuYXBwZW5kKCIjZGVmaW5lICUobWFjcm9QcmVmaXgpc19GT1JFQUNIXyUob2JqZWN0TWFj
cm8pc19CVUlMVElOX0NPREUobWFjcm8pIFxcIiAlIGFyZ3MpCisgICAgICAgIGZvciBmdW5jdGlv
biBpbiBzZWxmLm9iamVjdC5mdW5jdGlvbnM6CisgICAgICAgICAgICBmdW5jdGlvbl9hcmdzID0g
eworICAgICAgICAgICAgICAgICdmdW5jTmFtZSc6IGZ1bmN0aW9uLmZ1bmN0aW9uX25hbWUsCisg
ICAgICAgICAgICAgICAgJ2NvZGVOYW1lJzogQnVpbHRpbnNHZW5lcmF0b3IubWFuZ2xlZE5hbWVG
b3JGdW5jdGlvbihmdW5jdGlvbikgKyAnQ29kZScsCisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGxpbmVzLmFwcGVuZCgiICAgIG1hY3JvKCUoY29kZU5hbWUpcywgJShmdW5jTmFtZSlzLCBz
XyUoY29kZU5hbWUpc0xlbmd0aCkgXFwiICUgZnVuY3Rpb25fYXJncykKKyAgICAgICAgcmV0dXJu
ICdcbicuam9pbihsaW5lcykKKworICAgIGRlZiBnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX25h
bWVfbWFjcm8oc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbWFjcm9QcmVm
aXgnOiBzZWxmLm1hY3JvX3ByZWZpeCgpLAorICAgICAgICAgICAgJ29iamVjdE1hY3JvJzogc2Vs
Zi5vYmplY3Qub2JqZWN0X25hbWUudXBwZXIoKSwKKyAgICAgICAgfQorCisgICAgICAgIGxpbmVz
ID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCIjZGVmaW5lICUobWFjcm9QcmVmaXgpc19GT1JF
QUNIXyUob2JqZWN0TWFjcm8pc19CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFxcIiAlIGFy
Z3MpCisgICAgICAgIHVuaXF1ZV9uYW1lcyA9IGxpc3Qoc2V0KFtmdW5jdGlvbi5mdW5jdGlvbl9u
YW1lIGZvciBmdW5jdGlvbiBpbiBzZWxmLm9iamVjdC5mdW5jdGlvbnNdKSkKKyAgICAgICAgdW5p
cXVlX25hbWVzLnNvcnQoKQorICAgICAgICBmb3IgZnVuY3Rpb25fbmFtZSBpbiB1bmlxdWVfbmFt
ZXM6CisgICAgICAgICAgICBmdW5jdGlvbl9hcmdzID0geworICAgICAgICAgICAgICAgICdmdW5j
TmFtZSc6IGZ1bmN0aW9uX25hbWUsCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxpbmVz
LmFwcGVuZCgiICAgIG1hY3JvKCUoZnVuY05hbWUpcykgXFwiICUgZnVuY3Rpb25fYXJncykKKyAg
ICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxl
bWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVp
bHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmMy
MjkwNGI1Y2UwMjVkNzg2ZWM5MzM1MTA1ZWY5YmQ1Y2VkNjQ0NwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRl
X3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5CkBAIC0wLDAgKzEsOTkgQEAKKyMhL3Vzci9iaW4v
ZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNo
aW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHJlCitpbXBvcnQgc3RyaW5n
Citmcm9tIHN0cmluZyBpbXBvcnQgVGVtcGxhdGUKKworZnJvbSBidWlsdGluc19nZW5lcmF0b3Ig
aW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9yLCBXS19sY2ZpcnN0Citmcm9tIGJ1aWx0aW5zX21vZGVs
IGltcG9ydCBGcmFtZXdvcmssIEZyYW1ld29ya3MKK2Zyb20gYnVpbHRpbnNfdGVtcGxhdGVzIGlt
cG9ydCBCdWlsdGluc0dlbmVyYXRvclRlbXBsYXRlcyBhcyBUZW1wbGF0ZXMKKworbG9nID0gbG9n
Z2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcpCisKKworY2xhc3MgQnVpbHRpbnNTZXBhcmF0ZUltcGxl
bWVudGF0aW9uR2VuZXJhdG9yKEJ1aWx0aW5zR2VuZXJhdG9yKToKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgbW9kZWwsIG9iamVjdCk6CisgICAgICAgIEJ1aWx0aW5zR2VuZXJhdG9yLl9faW5pdF9f
KHNlbGYsIG1vZGVsKQorICAgICAgICBzZWxmLm9iamVjdCA9IG9iamVjdAorCisgICAgZGVmIG91
dHB1dF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuICIlc0J1aWx0aW5zLmNwcCIgJSBC
dWlsdGluc0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvck9iamVjdChzZWxmLm9iamVjdCkKKworICAg
IGRlZiBtYWNyb19wcmVmaXgoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLm1vZGVsKCkuZnJh
bWV3b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZpeCcpCisKKyAgICBkZWYgZ2VuZXJhdGVfb3V0cHV0
KHNlbGYpOgorICAgICAgICBhcmdzID0geworICAgICAgICAgICAgJ25hbWVzcGFjZSc6IHNlbGYu
bW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNlJyksCisgICAgICAgICAgICAnbWFj
cm9QcmVmaXgnOiBzZWxmLm1hY3JvX3ByZWZpeCgpLAorICAgICAgICAgICAgJ29iamVjdE1hY3Jv
Jzogc2VsZi5vYmplY3Qub2JqZWN0X25hbWUudXBwZXIoKSwKKyAgICAgICAgICAgICdvYmplY3RO
YW1lTEMnOiBXS19sY2ZpcnN0KHNlbGYub2JqZWN0Lm9iamVjdF9uYW1lKSwKKyAgICAgICAgfQor
CisgICAgICAgIHNlY3Rpb25zID0gW10KKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2Vu
ZXJhdGVfbGljZW5zZSgpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxh
dGVzLkRvTm90RWRpdFdhcm5pbmcpLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25z
LmFwcGVuZChzZWxmLmdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcygpKQorICAgICAgICBzZWN0aW9u
cy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZVRvcCkuc3Vic3RpdHV0ZShhcmdz
KSkKKyAgICAgICAgZm9yIGZ1bmN0aW9uIGluIHNlbGYub2JqZWN0LmZ1bmN0aW9uczoKKyAgICAg
ICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2VtYmVkZGVkX2NvZGVfc3RyaW5n
X3NlY3Rpb25fZm9yX2Z1bmN0aW9uKGZ1bmN0aW9uKSkKKyAgICAgICAgaWYgc2VsZi5tb2RlbCgp
LmZyYW1ld29yayBpcyBGcmFtZXdvcmtzLkphdmFTY3JpcHRDb3JlOgorICAgICAgICAgICAgc2Vj
dGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5TZXBhcmF0ZUpTQ0ltcGxlbWVudGF0aW9u
U3RhdGljTWFjcm9zKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBlbGlmIHNlbGYubW9kZWwo
KS5mcmFtZXdvcmsgaXMgRnJhbWV3b3Jrcy5XZWJDb3JlOgorICAgICAgICAgICAgc2VjdGlvbnMu
YXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5TZXBhcmF0ZVdlYkNvcmVJbXBsZW1lbnRhdGlvblN0
YXRpY01hY3Jvcykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRl
bXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VCb3R0b20pLnN1YnN0aXR1dGUoYXJncykpCisKKyAg
ICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNlY3Rpb25zKQorCisgICAgZGVmIGdlbmVyYXRlX2hl
YWRlcl9pbmNsdWRlcyhzZWxmKToKKyAgICAgICAgaGVhZGVyX2luY2x1ZGVzID0gWworICAgICAg
ICAgICAgKFsiSmF2YVNjcmlwdENvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRD
b3JlIiwgImJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIiksCisgICAgICAgICAgICApLAor
ICAgICAgICAgICAgKFsiSmF2YVNjcmlwdENvcmUiLCAiV2ViQ29yZSJdLAorICAgICAgICAgICAg
ICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9FeGVjdXRhYmxlLmgiKSwKKyAgICAgICAg
ICAgICksCisgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZSIsICJXZWJDb3JlIl0sCisgICAg
ICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL0pTQ2VsbElubGluZXMuaCIp
LAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAg
ICAgICAoIkphdmFTY3JpcHRDb3JlIiwgInJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIiksCisg
ICAgICAgICAgICApLAorICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAg
ICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIiksCisgICAg
ICAgICAgICApLAorICAgICAgICAgICAgKFsiSmF2YVNjcmlwdENvcmUiLCAiV2ViQ29yZSJdLAor
ICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9WTS5oIiksCisgICAg
ICAgICAgICApLAorICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgi
V2ViQ29yZSIsICJiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmgiKSwKKyAgICAgICAg
ICAgICksCisgICAgICAgIF0KKworICAgICAgICByZXR1cm4gJ1xuJy5qb2luKHNlbGYuZ2VuZXJh
dGVfaW5jbHVkZXNfZnJvbV9lbnRyaWVzKGhlYWRlcl9pbmNsdWRlcykpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9z
ZXBhcmF0ZV93cmFwcGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRp
bnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfd3JhcHBlci5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYWE4
OGNmNzYyMGNkYTEzNzE4NmI5OTE2NDM3YmM2ZDBiNDgxZDllCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVf
c2VwYXJhdGVfd3JhcHBlci5weQpAQCAtMCwwICsxLDk0IEBACisjIS91c3IvYmluL2VudiBweXRo
b24KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCByZQoraW1wb3J0IHN0cmluZworZnJvbSBz
dHJpbmcgaW1wb3J0IFRlbXBsYXRlCisKK2Zyb20gYnVpbHRpbnNfZ2VuZXJhdG9yIGltcG9ydCBC
dWlsdGluc0dlbmVyYXRvcgorZnJvbSBidWlsdGluc190ZW1wbGF0ZXMgaW1wb3J0IEJ1aWx0aW5z
R2VuZXJhdG9yVGVtcGxhdGVzIGFzIFRlbXBsYXRlcworCitsb2cgPSBsb2dnaW5nLmdldExvZ2dl
cignZ2xvYmFsJykKKworCitjbGFzcyBCdWlsdGluc1NlcGFyYXRlV3JhcHBlckdlbmVyYXRvcihC
dWlsdGluc0dlbmVyYXRvcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZGVsLCBvYmplY3Qp
OgorICAgICAgICBCdWlsdGluc0dlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBtb2RlbCkKKyAgICAg
ICAgc2VsZi5vYmplY3QgPSBvYmplY3QKKworICAgIGRlZiBvdXRwdXRfZmlsZW5hbWUoc2VsZik6
CisgICAgICAgIHJldHVybiAiJXNCdWlsdGluc1dyYXBwZXIuaCIgJSBCdWlsdGluc0dlbmVyYXRv
ci5tYW5nbGVkTmFtZUZvck9iamVjdChzZWxmLm9iamVjdCkKKworICAgIGRlZiBtYWNyb19wcmVm
aXgoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmco
J21hY3JvX3ByZWZpeCcpCisKKyAgICBkZWYgZ2VuZXJhdGVfb3V0cHV0KHNlbGYpOgorICAgICAg
ICBhcmdzID0geworICAgICAgICAgICAgJ25hbWVzcGFjZSc6IHNlbGYubW9kZWwoKS5mcmFtZXdv
cmsuc2V0dGluZygnbmFtZXNwYWNlJyksCisgICAgICAgICAgICAnaGVhZGVyR3VhcmQnOiBzZWxm
Lm91dHB1dF9maWxlbmFtZSgpLnJlcGxhY2UoJy4nLCAnXycpLAorICAgICAgICAgICAgJ21hY3Jv
UHJlZml4Jzogc2VsZi5tYWNyb19wcmVmaXgoKSwKKyAgICAgICAgICAgICdvYmplY3ROYW1lJzog
c2VsZi5vYmplY3Qub2JqZWN0X25hbWUsCisgICAgICAgICAgICAnb2JqZWN0TWFjcm8nOiBzZWxm
Lm9iamVjdC5vYmplY3RfbmFtZS51cHBlcigpLAorICAgICAgICB9CisKKyAgICAgICAgc2VjdGlv
bnMgPSBbXQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9saWNlbnNlKCkp
CisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuRG9Ob3RFZGl0V2Fy
bmluZykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRl
KFRlbXBsYXRlcy5IZWFkZXJJbmNsdWRlR3VhcmRUb3ApLnN1YnN0aXR1dGUoYXJncykpCisgICAg
ICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcygpKQorICAg
ICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZVRvcCkuc3Vi
c3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRl
cy5TZXBhcmF0ZVdyYXBwZXJIZWFkZXJCb2lsZXJwbGF0ZSkuc3Vic3RpdHV0ZShhcmdzKSkKKyAg
ICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VCb3R0b20p
LnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1w
bGF0ZXMuSGVhZGVySW5jbHVkZUd1YXJkQm90dG9tKS5zdWJzdGl0dXRlKGFyZ3MpKQorCisgICAg
ICAgIHJldHVybiAiXG5cbiIuam9pbihzZWN0aW9ucykKKworICAgIGRlZiBnZW5lcmF0ZV9oZWFk
ZXJfaW5jbHVkZXMoc2VsZik6CisgICAgICAgIGhlYWRlcl9pbmNsdWRlcyA9IFsKKyAgICAgICAg
ICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIldlYkNvcmUiLCAiJXNCdWlsdGlu
cy5oIiAlIHNlbGYub2JqZWN0Lm9iamVjdF9uYW1lKSwKKyAgICAgICAgICAgICksCisKKyAgICAg
ICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwg
ImJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgiKSwKKyAgICAgICAgICAgICks
CisKKyAgICAgICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3Jp
cHRDb3JlIiwgImJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oIiksCisgICAgICAgICAgICApLAorCisg
ICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29y
ZSIsICJydW50aW1lL0lkZW50aWZpZXIuaCIpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAg
ICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVu
dGltZS9KU0Z1bmN0aW9uLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAgIF0KKworICAgICAg
ICByZXR1cm4gJ1xuJy5qb2luKHNlbGYuZ2VuZXJhdGVfaW5jbHVkZXNfZnJvbV9lbnRyaWVzKGhl
YWRlcl9pbmNsdWRlcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0b3IucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0b3IucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTg0ODNl
MGMyMjMxNWY3N2RiYWE5NzZkNGJhZGNmNzdkZTJkM2YxOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5w
eQpAQCAtMCwwICsxLDE3MSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdo
dCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHly
aWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgbG9n
Z2luZworaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCByZQorZnJvbSBzdHJpbmcgaW1wb3J0IFRlbXBs
YXRlCitpbXBvcnQganNvbgorCitmcm9tIGJ1aWx0aW5zX21vZGVsIGltcG9ydCBCdWlsdGluRnVu
Y3Rpb24sIEJ1aWx0aW5PYmplY3QKK2Zyb20gYnVpbHRpbnNfdGVtcGxhdGVzIGltcG9ydCBCdWls
dGluc0dlbmVyYXRvclRlbXBsYXRlcyBhcyBUZW1wbGF0ZXMKKworbG9nID0gbG9nZ2luZy5nZXRM
b2dnZXIoJ2dsb2JhbCcpCisKKyMgVGhlc2UgbWF0Y2ggV0tfbGNmaXJzdCBhbmQgV0tfdWNmaXJz
dCBkZWZpbmVkIGluIENvZGVHZW5lcmF0b3IucG0uCitkZWYgV0tfbGNmaXJzdChzdHIpOgorICAg
IHN0ciA9IHN0cls6MV0ubG93ZXIoKSArIHN0clsxOl0KKyAgICBzdHIgPSBzdHIucmVwbGFjZSgn
aFRNTCcsICdodG1sJykKKyAgICBzdHIgPSBzdHIucmVwbGFjZSgndVJMJywgJ3VybCcpCisgICAg
c3RyID0gc3RyLnJlcGxhY2UoJ2pTJywgJ2pzJykKKyAgICBzdHIgPSBzdHIucmVwbGFjZSgneE1M
JywgJ3htbCcpCisgICAgc3RyID0gc3RyLnJlcGxhY2UoJ3hTTFQnLCAneHNsdCcpCisgICAgc3Ry
ID0gc3RyLnJlcGxhY2UoJ2NTUycsICdjc3MnKQorICAgIHJldHVybiBzdHIKKworZGVmIFdLX3Vj
Zmlyc3Qoc3RyKToKKyAgICBzdHIgPSBzdHJbOjFdLnVwcGVyKCkgKyBzdHJbMTpdCisgICAgc3Ry
ID0gc3RyLnJlcGxhY2UoJ1htbCcsICdYTUwnKQorICAgIHN0ciA9IHN0ci5yZXBsYWNlKCdTdmcn
LCAnU1ZHJykKKyAgICByZXR1cm4gc3RyCisKK2NsYXNzIEJ1aWx0aW5zR2VuZXJhdG9yOgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCk6CisgICAgICAgIHNlbGYuX21vZGVsID0gbW9kZWwK
KworICAgIGRlZiBtb2RlbChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX21vZGVsCisKKyAg
ICAjIFRoZXNlIG1ldGhvZHMgYXJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nlcy4KKworICAgIGRl
ZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBvdXRwdXRf
ZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHBhc3MKKworCisgICAgIyBTaGFyZWQgY29kZSBnZW5l
cmF0aW9uIG1ldGhvZHMuCisgICAgZGVmIGdlbmVyYXRlX2xpY2Vuc2Uoc2VsZik6CisgICAgICAg
IHJhd19saWNlbnNlID0gVGVtcGxhdGUoVGVtcGxhdGVzLkxpY2Vuc2VUZXh0KS5zdWJzdGl0dXRl
KE5vbmUpCisgICAgICAgIGNvcHlyaWdodHMgPSBzZWxmLl9tb2RlbC5jb3B5cmlnaHRzKCkKKyAg
ICAgICAgY29weXJpZ2h0cy5zb3J0KCkKKworICAgICAgICBsaWNlbnNlX2Jsb2NrID0gW10KKyAg
ICAgICAgbGljZW5zZV9ibG9jay5hcHBlbmQoIi8qIikKKyAgICAgICAgZm9yIGNvcHlyaWdodCBp
biBjb3B5cmlnaHRzOgorICAgICAgICAgICAgbGljZW5zZV9ibG9jay5hcHBlbmQoIiAqIENvcHly
aWdodCAoYykgJXMiICUgY29weXJpZ2h0KQorICAgICAgICBpZiBsZW4oY29weXJpZ2h0cykgPiAw
OgorICAgICAgICAgICAgbGljZW5zZV9ibG9jay5hcHBlbmQoIiAqICIpCisKKyAgICAgICAgZm9y
IGxpbmUgaW4gcmF3X2xpY2Vuc2Uuc3BsaXQoJ1xuJyk6CisgICAgICAgICAgICBsaWNlbnNlX2Js
b2NrLmFwcGVuZCgiICogIiArIGxpbmUpCisKKyAgICAgICAgbGljZW5zZV9ibG9jay5hcHBlbmQo
IiAqLyIpCisKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaWNlbnNlX2Jsb2NrKQorCisgICAg
ZGVmIGdlbmVyYXRlX2luY2x1ZGVzX2Zyb21fZW50cmllcyhzZWxmLCBlbnRyaWVzKToKKyAgICAg
ICAgaW5jbHVkZXMgPSBzZXQoKQorICAgICAgICBmb3IgZW50cnkgaW4gZW50cmllczoKKyAgICAg
ICAgICAgIChhbGxvd2VkX2ZyYW1ld29ya19uYW1lcywgZGF0YSkgPSBlbnRyeQorICAgICAgICAg
ICAgKGZyYW1ld29ya19uYW1lLCBoZWFkZXJfcGF0aCkgPSBkYXRhCisKKyAgICAgICAgICAgIGlm
IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsubmFtZSBub3QgaW4gYWxsb3dlZF9mcmFtZXdvcmtfbmFt
ZXM6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIHNlbGYubW9kZWwo
KS5mcmFtZXdvcmsubmFtZSAhPSBmcmFtZXdvcmtfbmFtZToKKyAgICAgICAgICAgICAgICBpbmNs
dWRlcy5hZGQoIiNpbmNsdWRlIDwlcz4iICUgaGVhZGVyX3BhdGgpCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIGluY2x1ZGVzLmFkZCgiI2luY2x1ZGUgXCIlc1wiIiAlIG9zLnBh
dGguYmFzZW5hbWUoaGVhZGVyX3BhdGgpKQorCisgICAgICAgIHNvcnRlZF9pbmNsdWRlcyA9IHNv
cnRlZChsaXN0KGluY2x1ZGVzKSkKKyAgICAgICAgIyBBbHdheXMgaW5jbHVkZSBjb25maWcuaCBh
bmQgdGhlIGNvdW50ZXJwYXJ0IGhlYWRlciBiZWZvcmUgb3RoZXIgaGVhZGVycy4KKyAgICAgICAg
bmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChzZWxmLm91dHB1dF9maWxlbmFtZSgpKQorICAg
ICAgICBpZiBleHQgIT0gJy5oJzoKKyAgICAgICAgICAgIHNvcnRlZF9pbmNsdWRlc1s6MF0gPSBb
CisgICAgICAgICAgICAgICAgIiNpbmNsdWRlIFwiY29uZmlnLmhcIiIsCisgICAgICAgICAgICAg
ICAgIiNpbmNsdWRlIFwiJXMuaFwiIiAlIG5hbWUsCisgICAgICAgICAgICAgICAgIiIsCisgICAg
ICAgICAgICBdCisKKyAgICAgICAgcmV0dXJuIHNvcnRlZF9pbmNsdWRlcworCisgICAgZGVmIGdl
bmVyYXRlX2VtYmVkZGVkX2NvZGVfc3RyaW5nX3NlY3Rpb25fZm9yX2Z1bmN0aW9uKHNlbGYsIGZ1
bmN0aW9uKToKKyAgICAgICAgdGV4dCA9IGZ1bmN0aW9uLmZ1bmN0aW9uX3NvdXJjZQorICAgICAg
ICAjIFdyYXAgaXQgaW4gcGFyZW5zIHRvIGF2b2lkIGFkZGluZyB0byBnbG9iYWwgc2NvcGUuCisg
ICAgICAgIHRleHQgPSAiKGZ1bmN0aW9uICIgKyB0ZXh0W3RleHQuaW5kZXgoIigiKTpdICsgIiki
CisgICAgICAgIGVtYmVkZGVkU291cmNlTGVuZ3RoID0gbGVuKHRleHQpICsgMSAgIyBGb3IgZXh0
cmEgXG4uCisgICAgICAgICMgTGF6eSB3YXkgdG8gZXNjYXBlIHF1b3RlcywgSSB0aGluaz8KKyAg
ICAgICAgdGV4dExpbmVzID0ganNvbi5kdW1wcyh0ZXh0KVsxOi0xXS5zcGxpdCgiXFxuIikKKyAg
ICAgICAgIyBUaGlzIGxvb2tzIHNjYXJ5IGJlY2F1c2Ugd2UgbmVlZCB0aGUgSlMgc291cmNlIGl0
c2VsZiB0byBoYXZlIG5ld2xpbmVzLgorICAgICAgICBlbWJlZGRlZFNvdXJjZSA9ICdcbicuam9p
bihbJyAgICAiJXNcXG4iIFxcJyAlIGxpbmUgZm9yIGxpbmUgaW4gdGV4dExpbmVzXSkKKworICAg
ICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gIkNhbm5vdENvbnN0cnVjdCIKKyAgICAgICAgaWYgZnVu
Y3Rpb24uaXNfY29uc3RydWN0b3I6CisgICAgICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gIkNh
bkNvbnN0cnVjdCIKKworICAgICAgICBhcmdzID0geworICAgICAgICAgICAgJ2NvZGVOYW1lJzog
QnVpbHRpbnNHZW5lcmF0b3IubWFuZ2xlZE5hbWVGb3JGdW5jdGlvbihmdW5jdGlvbikgKyAnQ29k
ZScsCisgICAgICAgICAgICAnZW1iZWRkZWRTb3VyY2UnOiBlbWJlZGRlZFNvdXJjZSwKKyAgICAg
ICAgICAgICdlbWJlZGRlZFNvdXJjZUxlbmd0aCc6IGVtYmVkZGVkU291cmNlTGVuZ3RoLAorICAg
ICAgICAgICAgJ2NhbkNvbnN0cnVjdCc6IGNvbnN0cnVjdEFiaWxpdHkKKyAgICAgICAgfQorCisg
ICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCJjb25zdCBKU0M6OkNvbnN0
cnVjdEFiaWxpdHkgc18lKGNvZGVOYW1lKXNDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5OjolKGNhbkNvbnN0cnVjdClzOyIgJSBhcmdzKTsKKyAgICAgICAgbGluZXMuYXBw
ZW5kKCJjb25zdCBpbnQgc18lKGNvZGVOYW1lKXNMZW5ndGggPSAlKGVtYmVkZGVkU291cmNlTGVu
Z3RoKWQ7IiAlIGFyZ3MpOworICAgICAgICBsaW5lcy5hcHBlbmQoImNvbnN0IGNoYXIqIHNfJShj
b2RlTmFtZSlzID1cbiUoZW1iZWRkZWRTb3VyY2Upc1xuOyIgJSBhcmdzKTsKKyAgICAgICAgcmV0
dXJuICdcbicuam9pbihsaW5lcykKKworICAgICMgSGVscGVyIG1ldGhvZHMuCisKKyAgICBAc3Rh
dGljbWV0aG9kCisgICAgZGVmIG1hbmdsZWROYW1lRm9yT2JqZWN0KG9iamVjdCk6CisgICAgICAg
IGlmIG5vdCBpc2luc3RhbmNlKG9iamVjdCwgQnVpbHRpbk9iamVjdCk6CisgICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oIkludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIG1hbmdsZWROYW1lRm9y
T2JqZWN0KCkiKQorCisgICAgICAgIGRlZiB0b0NhbWVsKG1hdGNoKToKKyAgICAgICAgICAgIHN0
ciA9IG1hdGNoLmdyb3VwKDApCisgICAgICAgICAgICByZXR1cm4gc3RyWzFdLnVwcGVyKCkKKyAg
ICAgICAgcmV0dXJuIHJlLnN1YihyJ1wuW2Etel0nLCB0b0NhbWVsLCBvYmplY3Qub2JqZWN0X25h
bWUsIGZsYWdzPXJlLklHTk9SRUNBU0UpCisKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYg
bWFuZ2xlZE5hbWVGb3JGdW5jdGlvbihmdW5jdGlvbik6CisgICAgICAgIGlmIG5vdCBpc2luc3Rh
bmNlKGZ1bmN0aW9uLCBCdWlsdGluRnVuY3Rpb24pOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0
aW9uKCJJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBtYW5nbGVkTmFtZUZvckZ1bmN0aW9uKCki
KQorCisgICAgICAgIGZ1bmN0aW9uX25hbWUgPSBXS191Y2ZpcnN0KGZ1bmN0aW9uLmZ1bmN0aW9u
X25hbWUpCisKKyAgICAgICAgZGVmIHRvQ2FtZWwobWF0Y2gpOgorICAgICAgICAgICAgc3RyID0g
bWF0Y2guZ3JvdXAoMCkKKyAgICAgICAgICAgIHJldHVybiBzdHJbMV0udXBwZXIoKQorICAgICAg
ICBmdW5jdGlvbl9uYW1lID0gcmUuc3ViKHInXC5bYS16XScsIHRvQ2FtZWwsIGZ1bmN0aW9uX25h
bWUsIGZsYWdzPXJlLklHTk9SRUNBU0UpCisgICAgICAgIGlmIGZ1bmN0aW9uLmlzX2NvbnN0cnVj
dG9yOgorICAgICAgICAgICAgZnVuY3Rpb25fbmFtZSA9IGZ1bmN0aW9uX25hbWUgKyAiQ29uc3Ry
dWN0b3IiCisKKyAgICAgICAgb2JqZWN0X25hbWUgPSBCdWlsdGluc0dlbmVyYXRvci5tYW5nbGVk
TmFtZUZvck9iamVjdChmdW5jdGlvbi5vYmplY3QpCisgICAgICAgIHJldHVybiBXS19sY2ZpcnN0
KG9iamVjdF9uYW1lICsgZnVuY3Rpb25fbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjVkNGJkZTY0ZDZiYTZjZDFkMDczNTNkNGYyYmQ1ZWExNDUwYWEzZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVs
LnB5CkBAIC0wLDAgKzEsMjMzIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJp
Z2h0IChjKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgcmUK
K2ltcG9ydCBvcworCitsb2cgPSBsb2dnaW5nLmdldExvZ2dlcignZ2xvYmFsJykKKworX0ZSQU1F
V09SS19DT05GSUdfTUFQID0geworICAgICJKYXZhU2NyaXB0Q29yZSI6IHsKKyAgICAgICAgIm1h
Y3JvX3ByZWZpeCI6ICJKU0MiLAorICAgICAgICAibmFtZXNwYWNlIjogIkpTQyIsCisgICAgfSwK
KyAgICAiV2ViQ29yZSI6IHsKKyAgICAgICAgIm1hY3JvX3ByZWZpeCI6ICJXRUJDT1JFIiwKKyAg
ICAgICAgIm5hbWVzcGFjZSI6ICJXZWJDb3JlIiwKKyAgICB9LAorfQorCitmdW5jdGlvbkhlYWRS
ZWdFeHAgPSByZS5jb21waWxlKHIiKD86ZnVuY3Rpb258Y29uc3RydWN0b3IpXHMrXHcrXHMqXCgu
Kj9cKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitmdW5jdGlvbk5hbWVSZWdFeHAgPSByZS5jb21w
aWxlKHIiKD86ZnVuY3Rpb258Y29uc3RydWN0b3IpXHMrKFx3KylccypcKCIsIHJlLk1VTFRJTElO
RSB8IHJlLlMpCitmdW5jdGlvbklzQ29uc3RydWN0b3JSZWdFeHAgPSByZS5jb21waWxlKHIiXmNv
bnN0cnVjdG9yIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uUGFyYW1ldGVyRmluZGVy
ID0gcmUuY29tcGlsZShyIl4oPzpmdW5jdGlvbnxjb25zdHJ1Y3RvcilccysoPzpcdyspXHMqXCgo
KD86XHMqXHcrKT9ccyooPzpccyosXHMqXHcrKSopP1xzKlwpIiwgcmUuTVVMVElMSU5FIHwgcmUu
UykKKworbXVsdGlsaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wqLio/XCpcLyIs
IHJlLk1VTFRJTElORSB8IHJlLlMpCitzaW5nbGVMaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBp
bGUociJcL1wvLio/XG4iLCByZS5NVUxUSUxJTkUgfCByZS5TKQorCisKK2NsYXNzIFBhcnNlRXhj
ZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgcGFzcworCisKK2NsYXNzIEZyYW1ld29yazoKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CisgICAgICAgIHNlbGYuX3NldHRpbmdzID0gX0ZSQU1F
V09SS19DT05GSUdfTUFQW25hbWVdCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgIGRl
ZiBzZXR0aW5nKHNlbGYsIGtleSwgZGVmYXVsdD0nJyk6CisgICAgICAgIHJldHVybiBzZWxmLl9z
ZXR0aW5ncy5nZXQoa2V5LCBkZWZhdWx0KQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBm
cm9tU3RyaW5nKGZyYW1ld29ya1N0cmluZyk6CisgICAgICAgIGlmIGZyYW1ld29ya1N0cmluZyA9
PSAiSmF2YVNjcmlwdENvcmUiOgorICAgICAgICAgICAgcmV0dXJuIEZyYW1ld29ya3MuSmF2YVNj
cmlwdENvcmUKKworICAgICAgICBpZiBmcmFtZXdvcmtTdHJpbmcgPT0gIldlYkNvcmUiOgorICAg
ICAgICAgICAgcmV0dXJuIEZyYW1ld29ya3MuV2ViQ29yZQorCisgICAgICAgIHJhaXNlIFBhcnNl
RXhjZXB0aW9uKCJVbmtub3duIGZyYW1ld29yazogJXMiICUgZnJhbWV3b3JrU3RyaW5nKQorCisK
K2NsYXNzIEZyYW1ld29ya3M6CisgICAgSmF2YVNjcmlwdENvcmUgPSBGcmFtZXdvcmsoIkphdmFT
Y3JpcHRDb3JlIikKKyAgICBXZWJDb3JlID0gRnJhbWV3b3JrKCJXZWJDb3JlIikKKworCitjbGFz
cyBCdWlsdGluT2JqZWN0OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvYmplY3RfbmFtZSwgZnVu
Y3Rpb25zKToKKyAgICAgICAgc2VsZi5vYmplY3RfbmFtZSA9IG9iamVjdF9uYW1lCisgICAgICAg
IHNlbGYuZnVuY3Rpb25zID0gZnVuY3Rpb25zCisgICAgICAgIHNlbGYuY29sbGVjdGlvbiA9IE5v
bmUgICMgU2V0IGJ5IHRoZSBvd25pbmcgQnVpbHRpbnNDb2xsZWN0aW9uCisKKyAgICAgICAgZm9y
IGZ1bmN0aW9uIGluIHNlbGYuZnVuY3Rpb25zOgorICAgICAgICAgICAgZnVuY3Rpb24ub2JqZWN0
ID0gc2VsZgorCisKK2NsYXNzIEJ1aWx0aW5GdW5jdGlvbjoKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgZnVuY3Rpb25fbmFtZSwgZnVuY3Rpb25fc291cmNlLCBpc19jb25zdHJ1Y3RvciwgcGFyYW1l
dGVycyk6CisgICAgICAgIHNlbGYuZnVuY3Rpb25fbmFtZSA9IGZ1bmN0aW9uX25hbWUKKyAgICAg
ICAgc2VsZi5mdW5jdGlvbl9zb3VyY2UgPSBmdW5jdGlvbl9zb3VyY2UKKyAgICAgICAgc2VsZi5p
c19jb25zdHJ1Y3RvciA9IGlzX2NvbnN0cnVjdG9yCisgICAgICAgIHNlbGYucGFyYW1ldGVycyA9
IHBhcmFtZXRlcnMKKyAgICAgICAgc2VsZi5vYmplY3QgPSBOb25lICAjIFNldCBieSB0aGUgb3du
aW5nIEJ1aWx0aW5PYmplY3QKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZnJvbVN0cmlu
ZyhmdW5jdGlvbl9zdHJpbmcpOgorICAgICAgICBmdW5jdGlvbl9zb3VyY2UgPSBtdWx0aWxpbmVD
b21tZW50UmVnRXhwLnN1YigiIiwgZnVuY3Rpb25fc3RyaW5nKQorICAgICAgICBmdW5jdGlvbl9u
YW1lID0gZnVuY3Rpb25OYW1lUmVnRXhwLmZpbmRhbGwoZnVuY3Rpb25fc291cmNlKVswXQorICAg
ICAgICBpc19jb25zdHJ1Y3RvciA9IGZ1bmN0aW9uSXNDb25zdHJ1Y3RvclJlZ0V4cC5tYXRjaChm
dW5jdGlvbl9zb3VyY2UpICE9IE5vbmUKKyAgICAgICAgcGFyYW1ldGVycyA9IFtzLnN0cmlwKCkg
Zm9yIHMgaW4gZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlvbl9zb3VyY2Up
WzBdLnNwbGl0KCcsJyldCisgICAgICAgIGlmIGxlbihwYXJhbWV0ZXJzWzBdKSA9PSAwOgorICAg
ICAgICAgICAgcGFyYW1ldGVycyA9IFtdCisKKyAgICAgICAgcmV0dXJuIEJ1aWx0aW5GdW5jdGlv
bihmdW5jdGlvbl9uYW1lLCBmdW5jdGlvbl9zb3VyY2UsIGlzX2NvbnN0cnVjdG9yLCBwYXJhbWV0
ZXJzKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIGludGVyZmFjZSA9ICIlcygl
cykiICUgKHNlbGYuZnVuY3Rpb25fbmFtZSwgJywgJy5qb2luKHNlbGYucGFyYW1ldGVycykpCisg
ICAgICAgIGlmIHNlbGYuaXNfY29uc3RydWN0b3I6CisgICAgICAgICAgICBpbnRlcmZhY2UgPSBp
bnRlcmZhY2UgKyAiIFtDb25zdHJ1Y3Rvcl0iCisKKyAgICAgICAgcmV0dXJuIGludGVyZmFjZQor
CisKK2NsYXNzIEJ1aWx0aW5zQ29sbGVjdGlvbjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnJh
bWV3b3JrX25hbWUpOgorICAgICAgICBzZWxmLl9jb3B5cmlnaHRfbGluZXMgPSBzZXQoKQorICAg
ICAgICBzZWxmLm9iamVjdHMgPSBbXQorICAgICAgICBzZWxmLmZyYW1ld29yayA9IEZyYW1ld29y
ay5mcm9tU3RyaW5nKGZyYW1ld29ya19uYW1lKQorICAgICAgICBsb2cuZGVidWcoIkNyZWF0ZWQg
bmV3IEJ1aWx0aW5zIGNvbGxlY3Rpb24uIikKKworICAgIGRlZiBwYXJzZV9idWlsdGluc19maWxl
KHNlbGYsIGZpbGVuYW1lLCB0ZXh0KToKKyAgICAgICAgbG9nLmRlYnVnKCJQYXJzaW5nIGJ1aWx0
aW5zIGZpbGU6ICVzIiAlIGZpbGVuYW1lKQorCisgICAgICAgIHBhcnNlZF9jb3B5cmlnaHRzID0g
c2V0KHNlbGYuX3BhcnNlX2NvcHlyaWdodF9saW5lcyh0ZXh0KSkKKyAgICAgICAgc2VsZi5fY29w
eXJpZ2h0X2xpbmVzID0gc2VsZi5fY29weXJpZ2h0X2xpbmVzLnVuaW9uKHBhcnNlZF9jb3B5cmln
aHRzKQorCisgICAgICAgIGxvZy5kZWJ1ZygiRm91bmQgY29weXJpZ2h0IGxpbmVzOiIpCisgICAg
ICAgIGZvciBsaW5lIGluIHNlbGYuX2NvcHlyaWdodF9saW5lczoKKyAgICAgICAgICAgIGxvZy5k
ZWJ1ZyhsaW5lKQorICAgICAgICBsb2cuZGVidWcoIiIpCisKKyAgICAgICAgb2JqZWN0X25hbWUs
IGV4dCA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSkpCisgICAg
ICAgIGxvZy5kZWJ1ZygiUGFyc2luZyBvYmplY3Q6ICVzIiAlIG9iamVjdF9uYW1lKQorCisgICAg
ICAgIHBhcnNlZF9mdW5jdGlvbnMgPSBzZWxmLl9wYXJzZV9mdW5jdGlvbnModGV4dCkKKyAgICAg
ICAgZm9yIGZ1bmN0aW9uIGluIHBhcnNlZF9mdW5jdGlvbnM6CisgICAgICAgICAgICBmdW5jdGlv
bi5vYmplY3QgPSBvYmplY3RfbmFtZQorCisgICAgICAgIGxvZy5kZWJ1ZygiUGFyc2VkIGZ1bmN0
aW9uczoiKQorICAgICAgICBmb3IgZnVuYyBpbiBwYXJzZWRfZnVuY3Rpb25zOgorICAgICAgICAg
ICAgbG9nLmRlYnVnKGZ1bmMpCisgICAgICAgIGxvZy5kZWJ1ZygiIikKKworICAgICAgICBuZXdf
b2JqZWN0ID0gQnVpbHRpbk9iamVjdChvYmplY3RfbmFtZSwgcGFyc2VkX2Z1bmN0aW9ucykKKyAg
ICAgICAgbmV3X29iamVjdC5jb2xsZWN0aW9uID0gc2VsZgorICAgICAgICBzZWxmLm9iamVjdHMu
YXBwZW5kKG5ld19vYmplY3QpCisKKyAgICBkZWYgY29weXJpZ2h0cyhzZWxmKToKKyAgICAgICAg
b3duZXJfdG9feWVhcnMgPSBkaWN0KCkKKyAgICAgICAgY29weXJpZ2h0WWVhclJlZ0V4cCA9IHJl
LmNvbXBpbGUociIoXGR7NH0pWywgXXswLDJ9IikKKyAgICAgICAgb3duZXJTdGFydFJlZ0V4cCA9
IHJlLmNvbXBpbGUociJbXlxkLCBdIikKKworICAgICAgICAjIFJldHVybnMgZGVkdXBsaWNhdGVk
IGNvcHlyaWdodHMga2V5ZWQgb24gdGhlIG93bmVyLgorICAgICAgICBmb3IgbGluZSBpbiBzZWxm
Ll9jb3B5cmlnaHRfbGluZXM6CisgICAgICAgICAgICB5ZWFycyA9IHNldChjb3B5cmlnaHRZZWFy
UmVnRXhwLmZpbmRhbGwobGluZSkpCisgICAgICAgICAgICBvd25lckluZGV4ID0gb3duZXJTdGFy
dFJlZ0V4cC5zZWFyY2gobGluZSkuc3RhcnQoKQorICAgICAgICAgICAgb3duZXIgPSBsaW5lW293
bmVySW5kZXg6XQorICAgICAgICAgICAgbG9nLmRlYnVnKCJGb3VuZCB5ZWFyczogJXMgYW5kIG93
bmVyOiAlcyIgJSAoeWVhcnMsIG93bmVyKSkKKyAgICAgICAgICAgIGlmIG93bmVyIG5vdCBpbiBv
d25lcl90b195ZWFyczoKKyAgICAgICAgICAgICAgICBvd25lcl90b195ZWFyc1tvd25lcl0gPSBz
ZXQoKQorCisgICAgICAgICAgICBvd25lcl90b195ZWFyc1tvd25lcl0gPSBvd25lcl90b195ZWFy
c1tvd25lcl0udW5pb24oeWVhcnMpCisKKyAgICAgICAgcmVzdWx0ID0gW10KKworICAgICAgICBm
b3Igb3duZXIsIHllYXJzIGluIG93bmVyX3RvX3llYXJzLml0ZW1zKCk6CisgICAgICAgICAgICBz
b3J0ZWRfeWVhcnMgPSBsaXN0KHllYXJzKQorICAgICAgICAgICAgc29ydGVkX3llYXJzLnNvcnQo
KQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiJXMgJXMiICUgKCcsICcuam9pbihzb3J0ZWRf
eWVhcnMpLCBvd25lcikpCisKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIGFsbF9m
dW5jdGlvbnMoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgIGZvciBvYmplY3Qg
aW4gc2VsZi5vYmplY3RzOgorICAgICAgICAgICAgcmVzdWx0LmV4dGVuZChvYmplY3QuZnVuY3Rp
b25zKQorCisgICAgICAgIHJlc3VsdC5zb3J0KCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisg
ICAgIyBQcml2YXRlIG1ldGhvZHMuCisKKyAgICBkZWYgX3BhcnNlX2NvcHlyaWdodF9saW5lcyhz
ZWxmLCB0ZXh0KToKKyAgICAgICAgbGljZW5zZUJsb2NrID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4
cC5maW5kYWxsKHRleHQpWzBdCisgICAgICAgIGxpY2Vuc2VCbG9jayA9IGxpY2Vuc2VCbG9ja1s6
bGljZW5zZUJsb2NrLmluZGV4KCJSZWRpc3RyaWJ1dGlvbiIpXQorCisgICAgICAgIGNvcHlyaWdo
dExpbmVzID0gW10KKyAgICAgICAgZm9yIGxpbmUgaW4gbGljZW5zZUJsb2NrLnNwbGl0KCJcbiIp
OgorICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiLyoiLCAiIikKKyAgICAgICAgICAg
IGxpbmUgPSBsaW5lLnJlcGxhY2UoIiovIiwgIiIpCisgICAgICAgICAgICBsaW5lID0gbGluZS5y
ZXBsYWNlKCIqIiwgIiIpCisgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJDb3B5cmln
aHQiLCAiIikKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoImNvcHlyaWdodCIsICIi
KQorICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKEMpIiwgIiIpCisgICAgICAgICAg
ICBsaW5lID0gbGluZS5yZXBsYWNlKCIoYykiLCAiIikKKyAgICAgICAgICAgIGxpbmUgPSBsaW5l
LnN0cmlwKCkKKworICAgICAgICAgICAgaWYgbGVuKGxpbmUpID09IDA6CisgICAgICAgICAgICAg
ICAgY29udGludWUKKworICAgICAgICAgICAgY29weXJpZ2h0TGluZXMuYXBwZW5kKGxpbmUpCisK
KyAgICAgICAgcmV0dXJuIGNvcHlyaWdodExpbmVzCisKKyAgICBkZWYgX3BhcnNlX2Z1bmN0aW9u
cyhzZWxmLCB0ZXh0KToKKyAgICAgICAgdGV4dCA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuc3Vi
KCIvKiovIiwgc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAuc3ViKCIvL1xuIiwgdGV4dCkpCisKKyAg
ICAgICAgbWF0Y2hlcyA9IFtmdW5jIGZvciBmdW5jIGluIGZ1bmN0aW9uSGVhZFJlZ0V4cC5maW5k
aXRlcih0ZXh0KV0KKyAgICAgICAgZnVuY3Rpb25Cb3VuZHMgPSBbXQorICAgICAgICBzdGFydCA9
IDAKKyAgICAgICAgZW5kID0gMAorICAgICAgICBmb3IgbWF0Y2ggaW4gbWF0Y2hlczoKKyAgICAg
ICAgICAgIHN0YXJ0ID0gbWF0Y2guc3RhcnQoKQorICAgICAgICAgICAgaWYgc3RhcnQgPCBlbmQ6
CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGVuZCA9IG1hdGNoLmVuZCgp
CisgICAgICAgICAgICB3aGlsZSB0ZXh0W2VuZF0gIT0gJ3snOgorICAgICAgICAgICAgICAgIGVu
ZCA9IGVuZCArIDEKKyAgICAgICAgICAgIGRlcHRoID0gMQorICAgICAgICAgICAgZW5kID0gZW5k
ICsgMQorICAgICAgICAgICAgd2hpbGUgZGVwdGggPiAwOgorICAgICAgICAgICAgICAgIGlmIHRl
eHRbZW5kXSA9PSAneyc6CisgICAgICAgICAgICAgICAgICAgIGRlcHRoID0gZGVwdGggKyAxCisg
ICAgICAgICAgICAgICAgZWxpZiB0ZXh0W2VuZF0gPT0gJ30nOgorICAgICAgICAgICAgICAgICAg
ICBkZXB0aCA9IGRlcHRoIC0gMQorICAgICAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAg
ICAgICAgIGZ1bmN0aW9uQm91bmRzLmFwcGVuZCgoc3RhcnQsIGVuZCkpCisKKyAgICAgICAgZnVu
Y3Rpb25TdHJpbmdzID0gW3RleHRbc3RhcnQ6ZW5kXS5zdHJpcCgpIGZvciAoc3RhcnQsIGVuZCkg
aW4gZnVuY3Rpb25Cb3VuZHNdCisgICAgICAgIHJldHVybiBtYXAoQnVpbHRpbkZ1bmN0aW9uLmZy
b21TdHJpbmcsIGZ1bmN0aW9uU3RyaW5ncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yNWVkZjY1NmVhMmNlYTRkMGQ0ZjFmNjkyNWQzNGE4ZTEwYWYzZDgzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNf
dGVtcGxhdGVzLnB5CkBAIC0wLDAgKzEsMjE5IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMK
KyMgQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgQnVpbHRpbnMgZ2Vu
ZXJhdG9yIHRlbXBsYXRlcywgd2hpY2ggY2FuIGJlIGZpbGxlZCB3aXRoIHN0cmluZy5UZW1wbGF0
ZS4KKworCitjbGFzcyBCdWlsdGluc0dlbmVyYXRvclRlbXBsYXRlczoKKworICAgIExpY2Vuc2VU
ZXh0ID0gKAorICAgICIiIlJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCithcmUgbWV0OgorMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKzIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCitU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCitBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKK1RIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKK1BVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKK1NVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KK0NPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCitBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCitUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisiIiIpCisKKyAgICBEb05vdEVkaXRXYXJuaW5nID0gKAorICAgICIiIi8v
IERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJv
bSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkiIiIpCisKKyAg
ICBIZWFkZXJJbmNsdWRlR3VhcmRUb3AgPSAoCisgICAgIiIiI2lmbmRlZiAke2hlYWRlckd1YXJk
fQorI2RlZmluZSAke2hlYWRlckd1YXJkfSIiIikKKworICAgIEhlYWRlckluY2x1ZGVHdWFyZEJv
dHRvbSA9ICgKKyAgICAiIiIjZW5kaWYgLy8gJHtoZWFkZXJHdWFyZH0KKyIiIikKKworICAgIE5h
bWVzcGFjZVRvcCA9ICgKKyAgICAiIiJuYW1lc3BhY2UgJHtuYW1lc3BhY2V9IHsiIiIpCisKKyAg
ICBOYW1lc3BhY2VCb3R0b20gPSAoCisgICAgIiIifSAvLyBuYW1lc3BhY2UgJHtuYW1lc3BhY2V9
IiIiKQorCisgICAgQ29tYmluZWRIZWFkZXJTdGF0aWNNYWNyb3MgPSAoCisgICAgIiIiI2RlZmlu
ZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3Vt
ZW50Q291bnQpIFxcCisgICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5l
cmF0b3IoSlNDOjpWTSYpOworCiske21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShE
RUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFU
T1IKKworI2RlZmluZSAke21hY3JvUHJlZml4fV9CVUlMVElOX0VYSVNUUyhvYmplY3QsIGZ1bmMp
IGRlZmluZWQgJHttYWNyb1ByZWZpeH1fQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVuYyIi
IikKKworICAgIFNlcGFyYXRlSGVhZGVyU3RhdGljTWFjcm9zID0gKAorICAgICIiIiNkZWZpbmUg
REVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVu
dENvdW50KSBcXAorICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJh
dG9yKEpTQzo6Vk0mKTsKKworJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE5hbWV9X0JV
SUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJ
TFRJTl9HRU5FUkFUT1IKKworI2RlZmluZSAke21hY3JvUHJlZml4fV9CVUlMVElOXyR7b2JqZWN0
TmFtZX1fRVhJU1RTKG9iamVjdCwgZnVuYykgZGVmaW5lZCAke21hY3JvUHJlZml4fV9CVUlMVElO
XyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jIiIiKQorCisgICAgQ29tYmluZWRKU0NJbXBsZW1lbnRh
dGlvblN0YXRpY01hY3JvcyA9ICgKKyAgICAiIiIKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VO
RVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCitKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKK3tc
XAorICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFi
bGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2Uo
KSk7IFwKK30KKyR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlM
VElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKyIiIikKKwor
ICAgIFNlcGFyYXRlSlNDSW1wbGVtZW50YXRpb25TdGF0aWNNYWNyb3MgPSAoCisgICAgIiIiCisj
ZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBh
cmd1bWVudENvdW50KSBcXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5l
cmF0b3IoSlNDOjpWTSYgdm0pIFxcCit7XFwKKyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFi
bGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRh
YmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyBcCit9Ciske21hY3JvUHJlZml4fV9GT1JFQUNI
XyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisj
dW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCisiIiIpCisKKyAgICBDb21iaW5lZFdlYkNv
cmVJbXBsZW1lbnRhdGlvblN0YXRpY01hY3JvcyA9ICgKKyAgICAgICAgIiIiCisjZGVmaW5lIERF
RklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENv
dW50KSBcXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlND
OjpWTSYgdm0pIFxcCit7XFwKKyAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFxcCisgICAgcmV0dXJuIGNs
aWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNv
ZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlv
bnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCit9
Ciske21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5F
UkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCisiIiIpCisKKyAgICBTZXBh
cmF0ZVdlYkNvcmVJbXBsZW1lbnRhdGlvblN0YXRpY01hY3JvcyA9ICgKKyAgICAgICAgIiIiCisj
ZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBh
cmd1bWVudENvdW50KSBcXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5l
cmF0b3IoSlNDOjpWTSYgdm0pIFxcCit7XFwKKyAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0
YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFxcCisgICAg
cmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWls
dGlucygpLmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0
aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2Uo
KSk7IFxcCit9Ciske21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5f
Q09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VO
RVJBVE9SCisiIiIpCisKKyAgICBTZXBhcmF0ZVdyYXBwZXJIZWFkZXJCb2lsZXJwbGF0ZSA9ICgK
KyAgICAiIiJjbGFzcyAke29iamVjdE5hbWV9QnVpbHRpbnNXcmFwcGVyIDogcHJpdmF0ZSBKU0M6
OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgJHtvYmplY3ROYW1lfUJ1
aWx0aW5zV3JhcHBlcihKU0M6OlZNKiB2bSkKKyAgICAgICAgOiBtX3ZtKCp2bSkKKyAgICAgICAg
JHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0ZVTkNUSU9OX05B
TUUoSU5JVElBTElaRV9CVUlMVElOX05BTUVTKQorI2RlZmluZSBJTklUSUFMSVpFX0JVSUxUSU5f
U09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpICwgbV8jI25hbWUjI1Nv
dXJjZShKU0M6Om1ha2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc18jI25h
bWUsIGxlbmd0aCkpKQorICAgICAgICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFj
cm99X0JVSUxUSU5fQ09ERShJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5k
ZWYgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCisgICAgeworICAgIH0KKworI2Rl
ZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0
aCkgXFwKKyAgICBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRh
YmxlKCk7IFxcCisgICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSBjb25z
dCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CisgICAgJHttYWNyb1ByZWZpeH1fRk9SRUFD
SF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMp
CisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMKKworICAgICR7bWFjcm9QcmVmaXh9
X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJ
TFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKQorCisgICAgdm9pZCBleHBvcnROYW1lcygpOworCitw
cml2YXRlOgorICAgIEpTQzo6Vk0mIG1fdm07CisKKyAgICAke21hY3JvUHJlZml4fV9GT1JFQUNI
XyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fTkFN
RVMpCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0
aW9uTmFtZSwgbGVuZ3RoKSBcXAorICAgIEpTQzo6U291cmNlQ29kZSBtXyMjbmFtZSMjU291cmNl
O1xcCisgICAgSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fIyNu
YW1lIyNFeGVjdXRhYmxlOworICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNy
b31fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBE
RUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKKworfTsKKworI2RlZmluZSBERUZJTkVfQlVJ
TFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXFwKK2lubGluZSBK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiAke29iamVjdE5hbWV9QnVpbHRpbnNXcmFw
cGVyOjpuYW1lIyNFeGVjdXRhYmxlKCkgXFwKK3tcXAorICAgIGlmICghbV8jI25hbWUjI0V4ZWN1
dGFibGUpXFwKKyAgICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUgPSBKU0M6OldlYWs8SlNDOjpV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4oSlNDOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZSht
X3ZtLCBtXyMjbmFtZSMjU291cmNlLCBmdW5jdGlvbk5hbWUjI1B1YmxpY05hbWUoKSwgc18jI25h
bWUjI0NvbnN0cnVjdEFiaWxpdHkpLCB0aGlzLCAmbV8jI25hbWUjI0V4ZWN1dGFibGUpO1xcCisg
ICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1xcCit9Ciske21hY3JvUHJlZml4
fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9FWEVD
VVRBQkxFUykKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUworCitpbmxpbmUgdm9p
ZCAke29iamVjdE5hbWV9QnVpbHRpbnNXcmFwcGVyOjpleHBvcnROYW1lcygpCit7CisjZGVmaW5l
IEVYUE9SVF9GVU5DVElPTl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+YXBwZW5kRXh0
ZXJuYWxOYW1lKG5hbWUjI1B1YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUoKSk7CisgICAg
JHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0ZVTkNUSU9OX05B
TUUoRVhQT1JUX0ZVTkNUSU9OX05BTUUpCisjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OX05BTUUKK30K
KworY2xhc3MgJHtvYmplY3ROYW1lfUJ1aWx0aW5GdW5jdGlvbnMgeworcHVibGljOgorICAgIGV4
cGxpY2l0ICR7b2JqZWN0TmFtZX1CdWlsdGluRnVuY3Rpb25zKEpTQzo6Vk0mIHZtKSA6IG1fdm0o
dm0pIHsgfQorCisgICAgdm9pZCBpbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKKyAgICB2b2lk
IHZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImKTsKKworcHVibGljOgorICAgIEpTQzo6Vk0mIG1fdm07
CisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKGZ1bmN0aW9uTmFtZSkg
XFwKKyAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5h
bWUjI0Z1bmN0aW9uOworICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31f
QlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1
bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKK307CisKK2lubGluZSB2b2lkICR7
b2JqZWN0TmFtZX1CdWlsdGluRnVuY3Rpb25zOjppbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKK3sKKyNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9OKGNvZGVOYW1lLCBmdW5jdGlv
bk5hbWUsIGxlbmd0aClcXAorICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3Zt
LCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbiht
X3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7CisgICAgJHtt
YWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoRVhQT1JUX0ZV
TkNUSU9OKQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTgorfQorCitpbmxpbmUgdm9pZCAke29iamVj
dE5hbWV9QnVpbHRpbkZ1bmN0aW9uczo6dmlzaXQoSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikK
K3sKKyNkZWZpbmUgVklTSVRfRlVOQ1RJT04obmFtZSkgdmlzaXRvci5hcHBlbmQoJm1fIyNuYW1l
IyNGdW5jdGlvbik7CisgICAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9C
VUlMVElOX0ZVTkNUSU9OX05BTUUoVklTSVRfRlVOQ1RJT04pCisjdW5kZWYgVklTSVRfRlVOQ1RJ
T04KK30KKyIiIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dl
bmVyYXRlLWpzLWJ1aWx0aW5zIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJh
dGUtanMtYnVpbHRpbnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmZjQxODczZGEy
YjY1YTc3MTE0Y2Y1ZDQxZTg3YTRjMGQzMDYzN2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJh
dGUtanMtYnVpbHRpbnMKKysrIC9kZXYvbnVsbApAQCAtMSwzNDMgKzAsMCBAQAotIyEvdXNyL2Jp
bi9weXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotIyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotIyBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBhcmdwYXJzZQotaW1wb3J0IGZpbGVjbXAK
LWltcG9ydCBmbm1hdGNoCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHNodXRpbAotaW1w
b3J0IHN5cwotaW1wb3J0IGRhdGV0aW1lCi1pbXBvcnQganNvbgotCi1wYXJzZXIgPSBhcmdwYXJz
ZS5Bcmd1bWVudFBhcnNlcigpCi1wYXJzZXIuYWRkX2FyZ3VtZW50KCdpbnB1dF9maWxlJywgbmFy
Z3M9JyonLCBoZWxwPSdJbnB1dCBKUyBmaWxlcyB3aGljaCBidWlsdGlucyBnZW5lcmF0ZWQgZnJv
bScpCi1wYXJzZXIuYWRkX2FyZ3VtZW50KCctLWlucHV0LWRpcmVjdG9yeScsIGhlbHA9J0FsbCBK
UyBmaWxlcyB3aWxsIGJlIHVzZWQgYXMgaW5wdXQgZnJvbSB0aGlzIGRpcmVjdG9yeS4nKQotcGFy
c2VyLmFkZF9hcmd1bWVudCgnLS1vdXRwdXQnLCBoZWxwPSdwYXRoIHRvIG91dHB1dCBjcHAgb3Ig
aCBmaWxlJykKLXBhcnNlci5hZGRfYXJndW1lbnQoJy0tcHJlZml4JywgZGVmYXVsdD0nSlNDJywg
aGVscD0ncHJlZml4IHVzZWQgZm9yIHB1YmxpYyBtYWNyb3MnKQotcGFyc2VyLmFkZF9hcmd1bWVu
dCgnLS1uYW1lc3BhY2UnLCBkZWZhdWx0PSdKU0MnLCBoZWxwPSdDKysgbmFtZXNwYWNlJykKLWFy
Z3MgPSBwYXJzZXIucGFyc2VfYXJncygpCi0KLWNvcHlyaWdodFRleHQgPSAiIiIgKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqL1xuCi0iIiIKLQotZ2VuZXJhdG9yU3RyaW5n
ID0gIi8qIEdlbmVyYXRlZCBieSAlcyBkbyBub3QgaGFuZCBlZGl0LiAqL1xuIiAlIG9zLnBhdGgu
YmFzZW5hbWUoX19maWxlX18pCi0KLWZ1bmN0aW9uSGVhZFJlZ0V4cCA9IHJlLmNvbXBpbGUociIo
PzpmdW5jdGlvbnxjb25zdHJ1Y3RvcilccytcdytccypcKC4qP1wpIiwgcmUuTVVMVElMSU5FIHwg
cmUuUykKLWZ1bmN0aW9uTmFtZVJlZ0V4cCA9IHJlLmNvbXBpbGUociIoPzpmdW5jdGlvbnxjb25z
dHJ1Y3RvcilccysoXHcrKVxzKlwoIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKLWZ1bmN0aW9uSXND
b25zdHJ1Y3RvclJlZ0V4cCA9IHJlLmNvbXBpbGUociJeY29uc3RydWN0b3IiLCByZS5NVUxUSUxJ
TkUgfCByZS5TKQotZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIgPSByZS5jb21waWxlKHIiXig/OmZ1
bmN0aW9ufGNvbnN0cnVjdG9yKVxzKyg/Olx3KylccypcKCgoPzpccypcdyspP1xzKig/OlxzKixc
cypcdyspKik/XHMqXCkiLCByZS5NVUxUSUxJTkUgfCByZS5TKQotCi1tdWx0aWxpbmVDb21tZW50
UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXCouKj9cKlwvIiwgcmUuTVVMVElMSU5FIHwgcmUuUykK
LXNpbmdsZUxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXC8uKj9cbiIsIHJlLk1V
TFRJTElORSB8IHJlLlMpCi0KLWRlZiBnZXRDb3B5cmlnaHQoc291cmNlKToKLSAgICBjb3B5cmln
aHRCbG9jayA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuZmluZGFsbChzb3VyY2UpWzBdCi0gICAg
Y29weXJpZ2h0QmxvY2sgPSBjb3B5cmlnaHRCbG9ja1s6Y29weXJpZ2h0QmxvY2suaW5kZXgoIlJl
ZGlzdHJpYnV0aW9uIildCi0gICAgY29weVJpZ2h0TGluZXMgPSBbXQotCi0gICAgZm9yIGxpbmUg
aW4gY29weXJpZ2h0QmxvY2suc3BsaXQoIlxuIik6Ci0gICAgICAgIGxpbmUgPSBsaW5lLnJlcGxh
Y2UoIi8qIiwgIiIpCi0gICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIiovIiwgIiIpCi0gICAg
ICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIioiLCAiIikKLSAgICAgICAgbGluZSA9IGxpbmUucmVw
bGFjZSgiQ29weXJpZ2h0IiwgIiIpCi0gICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoImNvcHly
aWdodCIsICIiKQotICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIoQykiLCAiIikKLSAgICAg
ICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKGMpIiwgIiIpCi0gICAgICAgIGxpbmUgPSBsaW5lLnN0
cmlwKCkKLSAgICAgICAgaWYgbGVuKGxpbmUpID09IDA6Ci0gICAgICAgICAgICBjb250aW51ZQot
Ci0gICAgICAgIGNvcHlSaWdodExpbmVzLmFwcGVuZChsaW5lKQotICAgIAotICAgIHJldHVybiBs
aXN0KHNldChjb3B5UmlnaHRMaW5lcykpCi0KLWNsYXNzIEZ1bmN0aW9uKG9iamVjdCk6Ci0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHNvdXJjZSwgaXNDb25zdHJ1Y3RvciwgcGFyYW1ldGVy
cyk6Ci0gICAgICAgIHNlbGYubmFtZSA9IG5hbWUKLSAgICAgICAgc2VsZi5zb3VyY2UgPSBzb3Vy
Y2UKLSAgICAgICAgc2VsZi5pc0NvbnN0cnVjdG9yID0gaXNDb25zdHJ1Y3RvcgotICAgICAgICBz
ZWxmLnBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzCi0KLSAgICBkZWYgbWFuZ2xlTmFtZShzZWxmLCBv
YmplY3QpOgotICAgICAgICBxTmFtZSA9IG9iamVjdCArICIuIiArIHNlbGYubmFtZQotICAgICAg
ICBtYW5nbGVkTmFtZSA9ICIiCi0gICAgICAgIGkgPSAwCi0gICAgICAgIHdoaWxlIGkgPCBsZW4o
cU5hbWUpOgotICAgICAgICAgICAgaWYgcU5hbWVbaV0gPT0gJy4nOgotICAgICAgICAgICAgICAg
IG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtpICsgMV0udXBwZXIoKQotICAgICAg
ICAgICAgICAgIGkgPSBpICsgMQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBt
YW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lICsgcU5hbWVbaV0KLSAgICAgICAgICAgIGkgPSBpICsg
MQotICAgICAgICBpZiBzZWxmLmlzQ29uc3RydWN0b3I6Ci0gICAgICAgICAgICBtYW5nbGVkTmFt
ZSA9IG1hbmdsZWROYW1lICsgIkNvbnN0cnVjdG9yIgotICAgICAgICByZXR1cm4gbWFuZ2xlZE5h
bWUKLQotZGVmIGdldEZ1bmN0aW9ucyhzb3VyY2UpOgotCi0gICAgc291cmNlID0gbXVsdGlsaW5l
Q29tbWVudFJlZ0V4cC5zdWIoIi8qKi8iLCBzaW5nbGVMaW5lQ29tbWVudFJlZ0V4cC5zdWIoIi8v
XG4iLCBzb3VyY2UpKQotCi0gICAgbWF0Y2hlcyA9IFsgZiBmb3IgZiBpbiBmdW5jdGlvbkhlYWRS
ZWdFeHAuZmluZGl0ZXIoc291cmNlKV0KLSAgICBmdW5jdGlvbkJvdW5kcyA9IFtdCi0gICAgc3Rh
cnQgPSAwCi0gICAgZW5kID0gMAotICAgIGZvciBtYXRjaCBpbiBtYXRjaGVzOgotICAgICAgICBz
dGFydCA9IG1hdGNoLnN0YXJ0KCkKLSAgICAgICAgaWYgc3RhcnQgPCBlbmQ6Ci0gICAgICAgICAg
ICBjb250aW51ZQotICAgICAgICBlbmQgPSBtYXRjaC5lbmQoKQotICAgICAgICB3aGlsZSBzb3Vy
Y2VbZW5kXSAhPSAneyc6Ci0gICAgICAgICAgICBlbmQgPSBlbmQgKyAxCi0gICAgICAgIGRlcHRo
ID0gMQotICAgICAgICBlbmQgPSBlbmQgKyAxCi0gICAgICAgIHdoaWxlIGRlcHRoID4gMDoKLSAg
ICAgICAgICAgIGlmIHNvdXJjZVtlbmRdID09ICd7JzoKLSAgICAgICAgICAgICAgICBkZXB0aCA9
IGRlcHRoICsgMQotICAgICAgICAgICAgZWxpZiBzb3VyY2VbZW5kXSA9PSAnfSc6Ci0gICAgICAg
ICAgICAgICAgZGVwdGggPSBkZXB0aCAtIDEKLSAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKLSAg
ICAgICAgZnVuY3Rpb25Cb3VuZHMuYXBwZW5kKChzdGFydCwgZW5kKSkKLQotICAgIGZ1bmN0aW9u
cyA9IFtzb3VyY2Vbc3RhcnQ6ZW5kXS5zdHJpcCgpIGZvciAoc3RhcnQsIGVuZCkgaW4gZnVuY3Rp
b25Cb3VuZHNdCi0gICAgcmVzdWx0ID0gW10KLSAgICBmb3IgZnVuY3Rpb24gaW4gZnVuY3Rpb25z
OgotICAgICAgICBmdW5jdGlvbiA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuc3ViKCIiLCBmdW5j
dGlvbikKLSAgICAgICAgZnVuY3Rpb25OYW1lID0gZnVuY3Rpb25OYW1lUmVnRXhwLmZpbmRhbGwo
ZnVuY3Rpb24pWzBdCi0gICAgICAgIGZ1bmN0aW9uSXNDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uSXND
b25zdHJ1Y3RvclJlZ0V4cC5tYXRjaChmdW5jdGlvbikgIT0gTm9uZQotICAgICAgICBmdW5jdGlv
blBhcmFtZXRlcnMgPSBmdW5jdGlvblBhcmFtZXRlckZpbmRlci5maW5kYWxsKGZ1bmN0aW9uKVsw
XS5zcGxpdCgnLCcpCi0gICAgICAgIGlmIGxlbihmdW5jdGlvblBhcmFtZXRlcnNbMF0pID09IDA6
Ci0gICAgICAgICAgICBmdW5jdGlvblBhcmFtZXRlcnMgPSBbXQotCi0gICAgICAgIHJlc3VsdC5h
cHBlbmQoRnVuY3Rpb24oZnVuY3Rpb25OYW1lLCBmdW5jdGlvbiwgZnVuY3Rpb25Jc0NvbnN0cnVj
dG9yLCBmdW5jdGlvblBhcmFtZXRlcnMpKQotICAgIHJldHVybiByZXN1bHQKLQotZGVmIHdyaXRl
SW5jbHVkZURpcmVjdGl2ZXMod3JpdGVyLCBoZWFkZXJOYW1lcyk6Ci0gICAgZm9yIGhlYWRlck5h
bWUgaW4gaGVhZGVyTmFtZXM6Ci0gICAgICAgIHdyaXRlci53cml0ZSgiI2luY2x1ZGUgIiArIGhl
YWRlck5hbWUgKyAiXG4iKQotCi1kZWYgZ2VuZXJhdGVDb2RlKHNvdXJjZSk6Ci0gICAgaW5wdXRG
aWxlID0gb3Blbihzb3VyY2UsICJyIikKLSAgICBiYXNlTmFtZSA9IG9zLnBhdGguYmFzZW5hbWUo
c291cmNlKS5yZXBsYWNlKCIuanMiLCAiIikKLSAgICAKLSAgICBzb3VyY2UgPSAiIgotICAgIGZv
ciBsaW5lIGluIGlucHV0RmlsZToKLSAgICAgICAgc291cmNlID0gc291cmNlICsgbGluZQotICAg
IAotICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAiY3lnd2luIjoKLSAgICAgICAgc291cmNlID0gc291
cmNlLnJlcGxhY2UoIlxyXG4iLCAiXG4iKQotICAgIHJldHVybiAoYmFzZU5hbWUsIGdldEZ1bmN0
aW9ucyhzb3VyY2UpLCBnZXRDb3B5cmlnaHQoc291cmNlKSkKLQotYnVpbHRpbnMgPSBbXQotY29w
eXJpZ2h0cyA9IFtdCi0ob3V0cHV0X2Jhc2UsIF8pID0gb3MucGF0aC5zcGxpdGV4dChhcmdzLm91
dHB1dCkKLQotaWYgYXJncy5pbnB1dF9kaXJlY3Rvcnk6Ci0gICAgZm9yIGZpbGUgaW4gb3MubGlz
dGRpcihhcmdzLmlucHV0X2RpcmVjdG9yeSk6Ci0gICAgICAgIGFyZ3MuaW5wdXRfZmlsZS5hcHBl
bmQob3MucGF0aC5qb2luKGFyZ3MuaW5wdXRfZGlyZWN0b3J5LCBmaWxlKSkKLQotZm9yIGZpbGUg
aW4gYXJncy5pbnB1dF9maWxlOgotICAgIGlmIGZubWF0Y2guZm5tYXRjaChmaWxlLCAnKi5qcycp
OgotICAgICAgICAoYmFzZU5hbWUsIGZ1bmN0aW9ucywgb2JqZWN0Q29weXJpZ2h0cykgPSBnZW5l
cmF0ZUNvZGUoZmlsZSkKLSAgICAgICAgY29weXJpZ2h0cy5leHRlbmQob2JqZWN0Q29weXJpZ2h0
cykKLSAgICAgICAgYnVpbHRpbnMuYXBwZW5kKChiYXNlTmFtZSwgZnVuY3Rpb25zKSkKLW5hbWVz
cGFjZSA9IGFyZ3MubmFtZXNwYWNlCi1tYWNyb1ByZWZpeCA9IGFyZ3MucHJlZml4Ci1zY29wZU5h
bWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoYXJncy5vdXRwdXQpKVswXQot
aW5jbHVkZUd1YXJkID0gc2NvcGVOYW1lICsgIl9IIgotaGVhZGVyTmFtZSA9IHNjb3BlTmFtZSAr
ICIuaCIKLQotaGVhZGVySW5jbHVkZXMgPSBbIlwiQnVpbHRpblV0aWxzLmhcIiJdIGlmIG5hbWVz
cGFjZSA9PSAiSlNDIiBlbHNlIFsiPGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oPiJdCi1jb250ZW50
SW5jbHVkZXMgPSBbIlwiQnVpbHRpbkV4ZWN1dGFibGVzLmhcIiIsICJcIkV4ZWN1dGFibGUuaFwi
IiwgIlwiSlNDZWxsSW5saW5lcy5oXCIiLCAiXCJWTS5oXCIiXSBpZiBuYW1lc3BhY2UgPT0gIkpT
QyIgZWxzZSBbIjxydW50aW1lL0V4ZWN1dGFibGUuaD4iLCAiPHJ1bnRpbWUvU3RydWN0dXJlSW5s
aW5lcy5oPiIsICI8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPiIsICI8cnVudGltZS9KU0Nl
bGxJbmxpbmVzLmg+IiwgIjxydW50aW1lL1ZNLmg+IiwgIlwiV2ViQ29yZUpTQ2xpZW50RGF0YS5o
XCIiXQotCi1jb3B5cmlnaHRzID0gbGlzdChzZXQoY29weXJpZ2h0cykpCi0KLWNvcHlyaWdodEJv
ZHkgPSAiIgotZm9yIGNvcHlyaWdodCBpbiBjb3B5cmlnaHRzOgotICAgIGNvcHlyaWdodEJvZHkg
PSBjb3B5cmlnaHRCb2R5ICsiICogQ29weXJpZ2h0IChDKSAiICsgY29weXJpZ2h0ICsgIlxuIgot
Ci1idWlsdGluc0hlYWRlciA9IG9wZW4ob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgInciKQotYnVp
bHRpbnNJbXBsZW1lbnRhdGlvbiA9IG9wZW4ob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCAidyIp
Ci1jb3B5cmlnaHRUZXh0ID0gIi8qXG4iICsgY29weXJpZ2h0Qm9keSArIGNvcHlyaWdodFRleHQK
LWJ1aWx0aW5zSGVhZGVyLndyaXRlKCIiIiVzCi0lcwotCi0jaWZuZGVmICVzCi0jZGVmaW5lICVz
Ci0KLSIiIiAlIChnZW5lcmF0b3JTdHJpbmcsIGNvcHlyaWdodFRleHQsIGluY2x1ZGVHdWFyZCwg
aW5jbHVkZUd1YXJkKSkKLQotd3JpdGVJbmNsdWRlRGlyZWN0aXZlcyhidWlsdGluc0hlYWRlciwg
aGVhZGVySW5jbHVkZXMpCi0KLWJ1aWx0aW5zSGVhZGVyLndyaXRlKCIiIgotbmFtZXNwYWNlIEpT
QyB7Ci0gICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwotfQotCi1uYW1lc3BhY2UgJXMgewot
Ci0iIiIgJSBuYW1lc3BhY2UpCi0KLWNvZGVSZWZlcmVuY2VzID0gW10KLQotZm9yIChvYmplY3RO
YW1lLCBmdW5jdGlvbnMpIGluIGJ1aWx0aW5zOgotICAgIHByaW50KCJHZW5lcmF0aW5nIGJpbmRp
bmdzIGZvciB0aGUgJXMgYnVpbHRpbi4iICUgb2JqZWN0TmFtZSkKLSAgICBidWlsdGluc0hlYWRl
ci53cml0ZSgiLyogJXMgZnVuY3Rpb25zICovXG4iICUgb2JqZWN0TmFtZSkKLSAgICBmb3IgZnVu
Y3Rpb24gaW4gZnVuY3Rpb25zOgotICAgICAgICBuYW1lID0gZnVuY3Rpb24ubmFtZQotICAgICAg
ICBtYW5nbGVkTmFtZSA9IGZ1bmN0aW9uLm1hbmdsZU5hbWUob2JqZWN0TmFtZSkKLSAgICAgICAg
bWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZVswXS5sb3dlcigpICsgbWFuZ2xlZE5hbWVbMTpdICsg
IkNvZGUiCi0gICAgICAgIGNvZGVSZWZlcmVuY2VzLmFwcGVuZCgobWFuZ2xlZE5hbWUsIGZ1bmN0
aW9uKSkKLSAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoImV4dGVybiBjb25zdCBjaGFyKiBz
XyVzO1xuIiAlIG1hbmdsZWROYW1lKQotICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiZXh0
ZXJuIGNvbnN0IGludCBzXyVzTGVuZ3RoO1xuIiAlIG1hbmdsZWROYW1lKQotICAgICAgICBidWls
dGluc0hlYWRlci53cml0ZSgiZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzXyVz
Q29uc3RydWN0QWJpbGl0eTtcbiIgJSBtYW5nbGVkTmFtZSkKLSAgICBidWlsdGluc0hlYWRlci53
cml0ZSgiXG4iKQotICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lICVzX0ZPUkVBQ0hf
JXNfQlVJTFRJTihtYWNybykgXFxcbiIgJSAobWFjcm9QcmVmaXgsIG9iamVjdE5hbWUucmVwbGFj
ZSgiLiIsICJfIikudXBwZXIoKSkpCi0gICAgZm9yIGZ1bmN0aW9uIGluIGZ1bmN0aW9uczoKLSAg
ICAgICAgbWFuZ2xlZE5hbWUgPSBmdW5jdGlvbi5tYW5nbGVOYW1lKG9iamVjdE5hbWUpCi0gICAg
ICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIgICAgbWFjcm8oJXMsICVzLCAlZCkgXFxcbiIgJSAo
ZnVuY3Rpb24ubmFtZSwgbWFuZ2xlZE5hbWUsIGxlbihmdW5jdGlvbi5wYXJhbWV0ZXJzKSkpCi0g
ICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuIikKLSAgICBmb3IgZnVuY3Rpb24gaW4gZnVuY3Rp
b25zOgotICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSAlc19CVUlMVElOXyVz
IDFcbiIgJSAobWFjcm9QcmVmaXgsIGZ1bmN0aW9uLm1hbmdsZU5hbWUob2JqZWN0TmFtZSkudXBw
ZXIoKSkpCi0gICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuXG4iKQotbmFtZXMgPSBbXQotYnVp
bHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgJXNfRk9SRUFDSF9CVUlMVElOKG1hY3JvKVxcXG4i
ICUgbWFjcm9QcmVmaXgpCi1mb3IgKGNvZGVSZWZlcmVuY2UsIGZ1bmN0aW9uKSBpbiBjb2RlUmVm
ZXJlbmNlczoKLSAgICBidWlsdGluc0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzLCAlcywgc18l
c0xlbmd0aCkgXFxcbiIgJSAoY29kZVJlZmVyZW5jZSwgZnVuY3Rpb24ubmFtZSwgY29kZVJlZmVy
ZW5jZSkpCi0gICAgbmFtZXMuYXBwZW5kKGZ1bmN0aW9uLm5hbWUpCi0KLWJ1aWx0aW5zSGVhZGVy
LndyaXRlKCJcblxuIikKLWJ1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lICVzX0ZPUkVBQ0hf
QlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcXFxuIiAlIG1hY3JvUHJlZml4KQotZm9yIG5h
bWUgaW4gc29ydGVkKHNldChuYW1lcykpOgotICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIgICAg
bWFjcm8oJXMpIFxcXG4iICUgbmFtZSkKLWJ1aWx0aW5zSGVhZGVyLndyaXRlKCIiIgotCi0jZGVm
aW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJn
dW1lbnRDb3VudCkgXFwKLSAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dl
bmVyYXRvcihKU0M6OlZNJik7Ci0KLSVzX0ZPUkVBQ0hfQlVJTFRJTihERUNMQVJFX0JVSUxUSU5f
R0VORVJBVE9SKQotI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKLQotI2RlZmluZSAl
c19CVUlMVElOX0VYSVNUUyhuYW1lKSBkZWZpbmVkICVzX0JVSUxUSU5fICMjIG5hbWUKLQotfQot
Ci0jZW5kaWYgLy8gJXMKLQotIiIiICUgKG1hY3JvUHJlZml4LCBtYWNyb1ByZWZpeCwgbWFjcm9Q
cmVmaXgsIGluY2x1ZGVHdWFyZCkpCi0KLWJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIi
JXMKLSVzCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgIiVzIgotCi0iIiIgICUg
KGdlbmVyYXRvclN0cmluZywgY29weXJpZ2h0VGV4dCwgaGVhZGVyTmFtZSkpCi0KLXdyaXRlSW5j
bHVkZURpcmVjdGl2ZXMoYnVpbHRpbnNJbXBsZW1lbnRhdGlvbiwgY29udGVudEluY2x1ZGVzKQot
Ci1idWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIgotbmFtZXNwYWNlICVzIHsKLQotIiIi
ICAlIChuYW1lc3BhY2UpKQotCi0KLQotZm9yIChjb2RlUmVmZXJlbmNlLCBmdW5jdGlvbikgaW4g
Y29kZVJlZmVyZW5jZXM6Ci0gICAgc291cmNlID0gZnVuY3Rpb24uc291cmNlCi0gICAgc291cmNl
ID0gIihmdW5jdGlvbiAiICsgc291cmNlW3NvdXJjZS5pbmRleCgiKCIpOl0gKyAiKSIKLSAgICBs
aW5lcyA9IGpzb24uZHVtcHMoc291cmNlKVsxOi0xXS5zcGxpdCgiXFxuIikKLSAgICBzb3VyY2VM
ZW5ndGggPSBsZW4oc291cmNlKQotICAgIHNvdXJjZSA9ICIiCi0gICAgZm9yIGxpbmUgaW4gbGlu
ZXM6Ci0gICAgICAgIHNvdXJjZSA9IHNvdXJjZSArICgiICAgIFwiJXNcXG5cIiBcXFxuIiAlIGxp
bmUpCi0gICAgYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiY29uc3QgY2hhciogc18lcyA9
XG4lcztcblxuIiAlIChjb2RlUmVmZXJlbmNlLCBzb3VyY2UpKQotICAgIGJ1aWx0aW5zSW1wbGVt
ZW50YXRpb24ud3JpdGUoImNvbnN0IGludCBzXyVzTGVuZ3RoID0gJWQ7XG5cbiIgJSAoY29kZVJl
ZmVyZW5jZSwgc291cmNlTGVuZ3RoICsgMSkpICMgKyAxIGZvciBcbgotICAgIGNvbnN0cnVjdEFi
aWxpdHkgPSAiSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QiCi0gICAgaWYg
ZnVuY3Rpb24uaXNDb25zdHJ1Y3RvcjoKLSAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9ICJKU0M6
OkNvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCIKLSAgICBidWlsdGluc0ltcGxlbWVudGF0
aW9uLndyaXRlKCJjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc18lc0NvbnN0cnVjdEFiaWxp
dHkgPSAlcztcblxuIiAlIChjb2RlUmVmZXJlbmNlLCBjb25zdHJ1Y3RBYmlsaXR5KSkgIyArIDEg
Zm9yIFxuCi0KLWJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIiCi0jZGVmaW5lIERFRklO
RV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50
KSBcXAotSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpW
TSYgdm0pIFxcCi0iIiIpOwotCi1pZiAobmFtZXNwYWNlID09ICJKU0MiKToKLSAgICBidWlsdGlu
c0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIntcXAotICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0
YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1
dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCi0iIiIpCi1lbHNlOgotICAgIGJ1aWx0
aW5OYW1lID0gc2NvcGVOYW1lWzBdLmxvd2VyKCkgKyBzY29wZU5hbWVbMTpdCi0gICAgYnVpbHRp
bnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiIiJ7XFwKLSAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50
RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFxcCi0g
ICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4lcygpLmNvZGVOYW1lIyNF
eGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4lcygp
LmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCi0iIiIlIChidWlsdGluTmFtZSwgYnVpbHRpbk5hbWUp
KQotCi1idWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIn0KLSVzX0ZPUkVBQ0hfQlVJTFRJ
TihERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCi0jdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJB
VE9SCi19Ci0KLSIiIiUgKG1hY3JvUHJlZml4KSkKLQotYnVpbHRpbnNIZWFkZXIuY2xvc2UoKQot
YnVpbHRpbnNJbXBsZW1lbnRhdGlvbi5jbG9zZSgpCi0KLWlmIChub3Qgb3MucGF0aC5leGlzdHMo
b3V0cHV0X2Jhc2UgKyAiLmgiKSkgb3IgKG5vdCBmaWxlY21wLmNtcChvdXRwdXRfYmFzZSArICIu
aC50bXAiLCBvdXRwdXRfYmFzZSArICIuaCIsIHNoYWxsb3c9RmFsc2UpKToKLSAgICBpZiAob3Mu
cGF0aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmgiKSk6Ci0gICAgICAgIG9zLnJlbW92ZShvdXRw
dXRfYmFzZSArICIuaCIpCi0gICAgb3MucmVuYW1lKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsIG91
dHB1dF9iYXNlICsgIi5oIikKLWVsc2U6Ci0gICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5o
LnRtcCIpCi0KLWlmIChub3Qgb3MucGF0aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmNwcCIpKSBv
ciAobm90IGZpbGVjbXAuY21wKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIiwgb3V0cHV0X2Jhc2Ug
KyAiLmNwcCIsIHNoYWxsb3c9RmFsc2UpKToKLSAgICBpZiAob3MucGF0aC5leGlzdHMob3V0cHV0
X2Jhc2UgKyAiLmNwcCIpKToKLSAgICAgICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5jcHAi
KQotICAgIG9zLnJlbmFtZShvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIsIG91dHB1dF9iYXNlICsg
Ii5jcHAiKQotZWxzZToKLSAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVp
bHRpbnMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWls
dGlucy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wNzA3MDliNDgwODM4OGU2NzhmM2RiMjM4MmY0NmEzZDYzMzM5
MDZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2Vu
ZXJhdGUtanMtYnVpbHRpbnMucHkKQEAgLTAsMCArMSwxNjQgQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisj
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworIyBUaGlzIHNjcmlwdCBnZW5lcmF0ZXMgQysrIGJpbmRpbmdzIGZvciBKYXZhU2Ny
aXB0IGJ1aWx0aW5zLgorIyBHZW5lcmF0b3JzIGZvciBpbmRpdmlkdWFsIGZpbGVzIGFyZSBsb2Nh
dGVkIGluIHRoZSBidWlsdGlucy8gZGlyZWN0b3J5LgorCitpbXBvcnQgZm5tYXRjaAoraW1wb3J0
IGxvZ2dpbmcKK2ltcG9ydCBvcHRwYXJzZQoraW1wb3J0IG9zCisKK2xvZ2dpbmcuYmFzaWNDb25m
aWcoZm9ybWF0PSclKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcycsIGxldmVsPWxvZ2dpbmcuRVJS
T1IpCitsb2cgPSBsb2dnaW5nLmdldExvZ2dlcignZ2xvYmFsJykKKworZnJvbSBsYXp5d3JpdGVy
IGltcG9ydCBMYXp5RmlsZVdyaXRlcgorCitpbXBvcnQgYnVpbHRpbnMKK2Zyb20gYnVpbHRpbnMg
aW1wb3J0ICoKKworCitkZWYgZ2VuZXJhdGVfYmluZGluZ3NfZm9yX2J1aWx0aW5zX2ZpbGVzKGJ1
aWx0aW5zX2ZpbGVzPVtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvdXRwdXRfcGF0aD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25jYXRlbmF0ZV9vdXRwdXQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbWJpbmVkX291dHB1dD1GYWxzZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWV3b3JrX25hbWU9IiIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlX291dHB1dD1GYWxzZSk6CisKKyAgICBn
ZW5lcmF0b3JzID0gW10KKworICAgIG1vZGVsID0gQnVpbHRpbnNDb2xsZWN0aW9uKGZyYW1ld29y
a19uYW1lPWZyYW1ld29ya19uYW1lKQorCisgICAgZm9yIGZpbGVwYXRoIGluIGJ1aWx0aW5zX2Zp
bGVzOgorICAgICAgICB3aXRoIG9wZW4oZmlsZXBhdGgsICJyIikgYXMgZmlsZToKKyAgICAgICAg
ICAgIGZpbGVfdGV4dCA9IGZpbGUucmVhZCgpCisgICAgICAgICAgICBmaWxlX25hbWUgPSBvcy5w
YXRoLmJhc2VuYW1lKGZpbGVwYXRoKQorCisgICAgICAgICAgICAjIElmIHRoaXMgaXMgYSB0ZXN0
IGZpbGUsIHRoZW4gcmV3cml0ZSB0aGUgZmlsZW5hbWUgdG8gcmVtb3ZlIHRoZQorICAgICAgICAg
ICAgIyB0ZXN0IHJ1bm5pbmcgb3B0aW9ucyBlbmNvZGVkIGludG8gdGhlIGZpbGVuYW1lLgorICAg
ICAgICAgICAgaWYgZmlsZV9uYW1lLnN0YXJ0c3dpdGgoZnJhbWV3b3JrX25hbWUpOgorICAgICAg
ICAgICAgICAgIChfLCBvYmplY3RfbmFtZSwgXykgPSBmaWxlX25hbWUuc3BsaXQoJy0nKQorICAg
ICAgICAgICAgICAgIGZpbGVfbmFtZSA9IG9iamVjdF9uYW1lICsgJy5qcycKKyAgICAgICAgICAg
IG1vZGVsLnBhcnNlX2J1aWx0aW5zX2ZpbGUoZmlsZV9uYW1lLCBmaWxlX3RleHQpCisKKyAgICBp
ZiBjb21iaW5lZF9vdXRwdXQ6CisgICAgICAgIGxvZy5kZWJ1ZygiVXNpbmcgZ2VuZXJhdG9yIHN0
eWxlOiBjb21iaW5lZCBmaWxlcyBmb3IgYWxsIGJ1aWx0aW5zLiIpCisgICAgICAgIGdlbmVyYXRv
cnMuYXBwZW5kKEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJHZW5lcmF0b3IobW9kZWwpKQorICAgICAg
ICBnZW5lcmF0b3JzLmFwcGVuZChCdWlsdGluc0NvbWJpbmVkSW1wbGVtZW50YXRpb25HZW5lcmF0
b3IobW9kZWwpKQorICAgIGVsc2U6CisgICAgICAgIGxvZy5kZWJ1ZygiVXNpbmcgZ2VuZXJhdG9y
IHN0eWxlOiBzaW5nbGUgZmlsZXMgZm9yIGVhY2ggYnVpbHRpbi4iKQorICAgICAgICBmb3Igb2Jq
ZWN0IGluIG1vZGVsLm9iamVjdHM6CisgICAgICAgICAgICBnZW5lcmF0b3JzLmFwcGVuZChCdWls
dGluc1NlcGFyYXRlSGVhZGVyR2VuZXJhdG9yKG1vZGVsLCBvYmplY3QpKQorICAgICAgICAgICAg
Z2VuZXJhdG9ycy5hcHBlbmQoQnVpbHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZXJhdG9y
KG1vZGVsLCBvYmplY3QpKQorCisgICAgICAgICAgICBpZiBtb2RlbC5mcmFtZXdvcmsgaXMgRnJh
bWV3b3Jrcy5XZWJDb3JlOgorICAgICAgICAgICAgICAgIGdlbmVyYXRvcnMuYXBwZW5kKEJ1aWx0
aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9yKG1vZGVsLCBvYmplY3QpKQorCisgICAgbG9nLmRl
YnVnKCIiKQorICAgIGxvZy5kZWJ1ZygiR2VuZXJhdGluZyBiaW5kaW5ncyBmb3IgYnVpbHRpbnMu
IikKKworICAgIHRlc3RfcmVzdWx0X2ZpbGVfY29udGVudHMgPSBbXQorCisgICAgZm9yIGdlbmVy
YXRvciBpbiBnZW5lcmF0b3JzOgorICAgICAgICBvdXRwdXRfZmlsZXBhdGggPSBvcy5wYXRoLmpv
aW4ob3V0cHV0X3BhdGgsIGdlbmVyYXRvci5vdXRwdXRfZmlsZW5hbWUoKSkKKyAgICAgICAgbG9n
LmRlYnVnKCJHZW5lcmF0aW5nIG91dHB1dCBmaWxlOiAlcyIgJSBnZW5lcmF0b3Iub3V0cHV0X2Zp
bGVuYW1lKCkpCisgICAgICAgIG91dHB1dCA9IGdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQoKQor
CisgICAgICAgIGxvZy5kZWJ1ZygiLS0tIikKKyAgICAgICAgbG9nLmRlYnVnKCJcbiIgKyBvdXRw
dXQpCisgICAgICAgIGxvZy5kZWJ1ZygiLS0tIikKKyAgICAgICAgaWYgY29uY2F0ZW5hdGVfb3V0
cHV0OgorICAgICAgICAgICAgdGVzdF9yZXN1bHRfZmlsZV9jb250ZW50cy5hcHBlbmQoJyMjIyBC
ZWdpbiBGaWxlOiAlcycgJSBnZW5lcmF0b3Iub3V0cHV0X2ZpbGVuYW1lKCkpCisgICAgICAgICAg
ICB0ZXN0X3Jlc3VsdF9maWxlX2NvbnRlbnRzLmFwcGVuZChvdXRwdXQpCisgICAgICAgICAgICB0
ZXN0X3Jlc3VsdF9maWxlX2NvbnRlbnRzLmFwcGVuZCgnIyMjIEVuZCBGaWxlOiAlcycgJSBnZW5l
cmF0b3Iub3V0cHV0X2ZpbGVuYW1lKCkpCisgICAgICAgICAgICB0ZXN0X3Jlc3VsdF9maWxlX2Nv
bnRlbnRzLmFwcGVuZCgnJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvZy5kZWJ1Zygi
V3JpdGluZyBmaWxlOiAlcyIgJSBvdXRwdXRfZmlsZXBhdGgpCisgICAgICAgICAgICBvdXRwdXRf
ZmlsZSA9IExhenlGaWxlV3JpdGVyKG91dHB1dF9maWxlcGF0aCwgZm9yY2Vfb3V0cHV0KQorICAg
ICAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUob3V0cHV0KQorICAgICAgICAgICAgb3V0cHV0X2Zp
bGUuY2xvc2UoKQorCisgICAgaWYgY29uY2F0ZW5hdGVfb3V0cHV0OgorICAgICAgICBmaWxlbmFt
ZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmJhc2VuYW1lKGJ1aWx0aW5zX2ZpbGVzWzBdKSArICct
cmVzdWx0JykKKyAgICAgICAgb3V0cHV0X2ZpbGVwYXRoID0gb3MucGF0aC5qb2luKG91dHB1dF9w
YXRoLCBmaWxlbmFtZSkKKyAgICAgICAgbG9nLmRlYnVnKCJXcml0aW5nIGZpbGU6ICVzIiAlIG91
dHB1dF9maWxlcGF0aCkgCisgICAgICAgIG91dHB1dF9maWxlID0gTGF6eUZpbGVXcml0ZXIob3V0
cHV0X2ZpbGVwYXRoLCBmb3JjZV9vdXRwdXQpCisgICAgICAgIG91dHB1dF9maWxlLndyaXRlKCdc
bicuam9pbih0ZXN0X3Jlc3VsdF9maWxlX2NvbnRlbnRzKSkKKyAgICAgICAgb3V0cHV0X2ZpbGUu
Y2xvc2UoKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGFsbG93ZWRfZnJhbWV3
b3JrX25hbWVzID0gWydKYXZhU2NyaXB0Q29yZScsICdXZWJDb3JlJ10KKyAgICBjbGlfcGFyc2Vy
ID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlPSJ1c2FnZTogJXByb2cgW29wdGlvbnNdIEJ1
aWx0aW4xLmpzIFssIEJ1aWx0aW4yLmpzLCAuLi5dIikKKyAgICBjbGlfcGFyc2VyLmFkZF9vcHRp
b24oIi1pIiwgIi0taW5wdXQtZGlyZWN0b3J5IiwgaGVscD0iSWYgc3BlY2lmaWVkLCBnZW5lcmF0
ZXMgYnVpbHRpbnMgZnJvbSBhbGwgSmF2YVNjcmlwdCBmaWxlcyBpbiB0aGUgc3BlY2lmaWVkIGRp
cmVjdG9yeSBpbiBhZGRpdGlvbiB0byBzcGVjaWZpYyBmaWxlcyBwYXNzZWQgYXMgYXJndW1lbnRz
LiIpCisgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9uKCItbyIsICItLW91dHB1dC1kaXJlY3Rvcnki
LCBoZWxwPSJEaXJlY3Rvcnkgd2hlcmUgZ2VuZXJhdGVkIGZpbGVzIHNob3VsZCBiZSB3cml0dGVu
LiIpCisgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9uKCItLWZyYW1ld29yayIsIHR5cGU9ImNob2lj
ZSIsIGNob2ljZXM9YWxsb3dlZF9mcmFtZXdvcmtfbmFtZXMsIGhlbHA9IkRlc3RpbmF0aW9uIGZy
YW1ld29yayBmb3IgZ2VuZXJhdGVkIGZpbGVzLiIpCisgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9u
KCItLWZvcmNlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iRm9yY2Ugb3V0cHV0IG9mIGdl
bmVyYXRlZCBzY3JpcHRzLCBldmVuIGlmIG5vdGhpbmcgY2hhbmdlZC4iKQorICAgIGNsaV9wYXJz
ZXIuYWRkX29wdGlvbigiLS1jb21iaW5lZCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IlBy
b2R1Y2Ugb25lIC5oLy5jcHAgZmlsZSBpbnN0ZWFkIG9mIHByb2R1Y2luZyBvbmUgcGVyIGJ1aWx0
aW4gb2JqZWN0LiIpCisgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9uKCItdiIsICItLWRlYnVnIiwg
YWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iTG9nIGV4dHJhIG91dHB1dCBmb3IgZGVidWdnaW5n
IHRoZSBnZW5lcmF0b3IgaXRzZWxmLiIpCisgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9uKCItdCIs
ICItLXRlc3QiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJFbmFibGUgdGVzdCBtb2RlLiIp
CisKKyAgICBhcmdfb3B0aW9ucywgYXJnX3ZhbHVlcyA9IGNsaV9wYXJzZXIucGFyc2VfYXJncygp
CisgICAgaWYgbGVuKGFyZ192YWx1ZXMpIGlzIDAgYW5kIG5vdCBhcmdfb3B0aW9ucy5pbnB1dF9k
aXJlY3Rvcnk6CisgICAgICAgIHJhaXNlIFBhcnNlRXhjZXB0aW9uKCJBdCBsZWFzdCBvbmUgaW5w
dXQgZmlsZSBvciBkaXJlY3RvcnkgZXhwZWN0ZWQuIikKKworICAgIGlmIG5vdCBhcmdfb3B0aW9u
cy5vdXRwdXRfZGlyZWN0b3J5OgorICAgICAgICByYWlzZSBQYXJzZUV4Y2VwdGlvbigiTWlzc2lu
ZyBvdXRwdXQgZGlyZWN0b3J5LiIpCisKKyAgICBpZiBhcmdfb3B0aW9ucy5kZWJ1ZzoKKyAgICAg
ICAgbG9nLnNldExldmVsKGxvZ2dpbmcuREVCVUcpCisKKyAgICBpbnB1dF9maWxlcGF0aHMgPSBh
cmdfdmFsdWVzWzpdCisgICAgaWYgYXJnX29wdGlvbnMuaW5wdXRfZGlyZWN0b3J5OgorICAgICAg
ICBmb3IgZmlsZXBhdGggaW4gb3MubGlzdGRpcihhcmdfb3B0aW9ucy5pbnB1dF9kaXJlY3Rvcnkp
OgorICAgICAgICAgICAgaW5wdXRfZmlsZXBhdGhzLmFwcGVuZChvcy5wYXRoLmpvaW4oYXJnX29w
dGlvbnMuaW5wdXRfZGlyZWN0b3J5LCBmaWxlcGF0aCkpCisKKyAgICBpbnB1dF9maWxlcGF0aHMg
PSBmaWx0ZXIobGFtYmRhIG5hbWU6IGZubWF0Y2guZm5tYXRjaChuYW1lLCAnKi5qcycpLCBpbnB1
dF9maWxlcGF0aHMpCisKKyAgICBvcHRpb25zID0geworICAgICAgICAnb3V0cHV0X3BhdGgnOiBh
cmdfb3B0aW9ucy5vdXRwdXRfZGlyZWN0b3J5LAorICAgICAgICAnZnJhbWV3b3JrX25hbWUnOiBh
cmdfb3B0aW9ucy5mcmFtZXdvcmssCisgICAgICAgICdjb21iaW5lZF9vdXRwdXQnOiBhcmdfb3B0
aW9ucy5jb21iaW5lZCwKKyAgICAgICAgJ2ZvcmNlX291dHB1dCc6IGFyZ19vcHRpb25zLmZvcmNl
LAorICAgICAgICAnY29uY2F0ZW5hdGVfb3V0cHV0JzogYXJnX29wdGlvbnMudGVzdCwKKyAgICB9
CisKKyAgICBsb2cuZGVidWcoIkdlbmVyYXRpbmcgY29kZSBmb3IgYnVpbHRpbnMuIikKKyAgICBs
b2cuZGVidWcoIlBhcnNlZCBvcHRpb25zOiIpCisgICAgZm9yIG9wdGlvbiwgdmFsdWUgaW4gb3B0
aW9ucy5pdGVtcygpOgorICAgICAgICBsb2cuZGVidWcoIiAgICAlczogJXMiICUgKG9wdGlvbiwg
dmFsdWUpKQorICAgIGxvZy5kZWJ1ZygiIikKKyAgICBsb2cuZGVidWcoIklucHV0IGZpbGVzOiIp
CisgICAgZm9yIGZpbGVwYXRoIGluIGlucHV0X2ZpbGVwYXRoczoKKyAgICAgICAgbG9nLmRlYnVn
KCIgICAgJXMiICUgZmlsZXBhdGgpCisgICAgbG9nLmRlYnVnKCIiKQorCisgICAgdHJ5OgorICAg
ICAgICBnZW5lcmF0ZV9iaW5kaW5nc19mb3JfYnVpbHRpbnNfZmlsZXMoYnVpbHRpbnNfZmlsZXM9
aW5wdXRfZmlsZXBhdGhzLCAqKm9wdGlvbnMpCisgICAgZXhjZXB0IFBhcnNlRXhjZXB0aW9uIGFz
IGU6CisgICAgICAgIGlmIGFyZ19vcHRpb25zLnRlc3Q6CisgICAgICAgICAgICBsb2cuZXJyb3Io
ZS5tZXNzYWdlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgICMgRm9yY2UgdGhl
IGJ1aWxkIHRvIGZhaWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy9sYXp5d3JpdGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvbGF6eXdyaXRl
ci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mOTNhMmM2OTdjYWNiZDc3NDFmZTk5OGVmMTkwZWIxY2Q2ZjI0NTM5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvbGF6eXdy
aXRlci5weQpAQCAtMCwwICsxLDU4IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29w
eXJpZ2h0IChjKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJp
Z2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisj
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIEEgd3JpdGVyIHRoYXQgb25seSB1cGRh
dGVzIGZpbGUgaWYgaXQgYWN0dWFsbHkgY2hhbmdlZC4KKworCitjbGFzcyBMYXp5RmlsZVdyaXRl
cjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZXBhdGgsIGZvcmNlX291dHB1dCk6CisgICAg
ICAgIHNlbGYuX2ZpbGVwYXRoID0gZmlsZXBhdGgKKyAgICAgICAgc2VsZi5fb3V0cHV0ID0gIiIK
KyAgICAgICAgc2VsZi5mb3JjZV9vdXRwdXQgPSBmb3JjZV9vdXRwdXQKKworICAgIGRlZiB3cml0
ZShzZWxmLCB0ZXh0KToKKyAgICAgICAgc2VsZi5fb3V0cHV0ICs9IHRleHQKKworICAgIGRlZiBj
bG9zZShzZWxmKToKKyAgICAgICAgdGV4dF9jaGFuZ2VkID0gVHJ1ZQorICAgICAgICBzZWxmLl9v
dXRwdXQgPSBzZWxmLl9vdXRwdXQucnN0cmlwKCkgKyAiXG4iCisKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgaWYgc2VsZi5mb3JjZV9vdXRwdXQ6CisgICAgICAgICAgICAgICAgcmFpc2UKKwor
ICAgICAgICAgICAgcmVhZF9maWxlID0gb3BlbihzZWxmLl9maWxlcGF0aCwgInIiKQorICAgICAg
ICAgICAgb2xkX3RleHQgPSByZWFkX2ZpbGUucmVhZCgpCisgICAgICAgICAgICByZWFkX2ZpbGUu
Y2xvc2UoKQorICAgICAgICAgICAgdGV4dF9jaGFuZ2VkID0gb2xkX3RleHQgIT0gc2VsZi5fb3V0
cHV0CisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICMgSWdub3JlLCBqdXN0IG92ZXJ3cml0
ZSBieSBkZWZhdWx0CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgaWYgdGV4dF9jaGFuZ2Vk
IG9yIHNlbGYuZm9yY2Vfb3V0cHV0OgorICAgICAgICAgICAgb3V0X2ZpbGUgPSBvcGVuKHNlbGYu
X2ZpbGVwYXRoLCAidyIpCisgICAgICAgICAgICBvdXRfZmlsZS53cml0ZShzZWxmLl9vdXRwdXQp
CisgICAgICAgICAgICBvdXRfZmlsZS5jbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlBy
b21pc2UtQ29tYmluZWQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtQ29tYmluZWQuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjQ1ZDgxY2ViOWVkOTA2NDI1ODRmYTBiYjQ1OGRjZjBkYmFkYzNhMgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0ph
dmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1Db21iaW5lZC5qcwpAQCAtMCwwICsxLDU0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1
bmN0aW9uIHJlamVjdFByb21pc2UocHJvbWlzZSwgcmVhc29uKQoreworICAgICJ1c2Ugc3RyaWN0
IjsKKworICAgIHZhciByZWFjdGlvbnMgPSBwcm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25z
OworICAgIHByb21pc2UuQHByb21pc2VSZXN1bHQgPSByZWFzb247CisgICAgcHJvbWlzZS5AcHJv
bWlzZUZ1bGZpbGxSZWFjdGlvbnMgPSB1bmRlZmluZWQ7CisgICAgcHJvbWlzZS5AcHJvbWlzZVJl
amVjdFJlYWN0aW9ucyA9IHVuZGVmaW5lZDsKKyAgICBwcm9taXNlLkBwcm9taXNlU3RhdGUgPSBA
cHJvbWlzZVJlamVjdGVkOworCisgICAgQEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5wcm9taXNl
UmVqZWN0ZWQocHJvbWlzZSwgcmVhc29uLCByZWFjdGlvbnMpOworCisgICAgQHRyaWdnZXJQcm9t
aXNlUmVhY3Rpb25zKHJlYWN0aW9ucywgcmVhc29uKTsKK30KKworZnVuY3Rpb24gZnVsZmlsbFBy
b21pc2UocHJvbWlzZSwgdmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIHJl
YWN0aW9ucyA9IHByb21pc2UuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zOworICAgIHByb21pc2Uu
QHByb21pc2VSZXN1bHQgPSB2YWx1ZTsKKyAgICBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0
aW9ucyA9IHVuZGVmaW5lZDsKKyAgICBwcm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25zID0g
dW5kZWZpbmVkOworICAgIHByb21pc2UuQHByb21pc2VTdGF0ZSA9IEBwcm9taXNlRnVsZmlsbGVk
OworCisgICAgQEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5wcm9taXNlRnVsZmlsbGVkKHByb21p
c2UsIHZhbHVlLCByZWFjdGlvbnMpOworCisgICAgQHRyaWdnZXJQcm9taXNlUmVhY3Rpb25zKHJl
YWN0aW9ucywgdmFsdWUpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLVNlcGFy
YXRlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2
YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLVNlcGFyYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0NWQ4
MWNlYjllZDkwNjQyNTg0ZmEwYmI0NThkY2YwZGJhZGMzYTIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29y
ZS1CdWlsdGluLlByb21pc2UtU2VwYXJhdGUuanMKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Lgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiByZWpl
Y3RQcm9taXNlKHByb21pc2UsIHJlYXNvbikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2
YXIgcmVhY3Rpb25zID0gcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0aW9uczsKKyAgICBwcm9t
aXNlLkBwcm9taXNlUmVzdWx0ID0gcmVhc29uOworICAgIHByb21pc2UuQHByb21pc2VGdWxmaWxs
UmVhY3Rpb25zID0gdW5kZWZpbmVkOworICAgIHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlv
bnMgPSB1bmRlZmluZWQ7CisgICAgcHJvbWlzZS5AcHJvbWlzZVN0YXRlID0gQHByb21pc2VSZWpl
Y3RlZDsKKworICAgIEBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24ucHJvbWlzZVJlamVjdGVkKHBy
b21pc2UsIHJlYXNvbiwgcmVhY3Rpb25zKTsKKworICAgIEB0cmlnZ2VyUHJvbWlzZVJlYWN0aW9u
cyhyZWFjdGlvbnMsIHJlYXNvbik7Cit9CisKK2Z1bmN0aW9uIGZ1bGZpbGxQcm9taXNlKHByb21p
c2UsIHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciByZWFjdGlvbnMgPSBw
cm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9uczsKKyAgICBwcm9taXNlLkBwcm9taXNlUmVz
dWx0ID0gdmFsdWU7CisgICAgcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlvbnMgPSB1bmRl
ZmluZWQ7CisgICAgcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucyA9IHVuZGVmaW5lZDsK
KyAgICBwcm9taXNlLkBwcm9taXNlU3RhdGUgPSBAcHJvbWlzZUZ1bGZpbGxlZDsKKworICAgIEBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24ucHJvbWlzZUZ1bGZpbGxlZChwcm9taXNlLCB2YWx1ZSwg
cmVhY3Rpb25zKTsKKworICAgIEB0cmlnZ2VyUHJvbWlzZVJlYWN0aW9ucyhyZWFjdGlvbnMsIHZh
bHVlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3Rz
L2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENv
cmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQ0OGI5ODMyYjY2
YTRiZGYwZmUyYzRiZDg3MDEwZjYwYWQ3MmRmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0
aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworZnVuY3Rpb24gZXZl
cnkoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAg
aWYgKHRoaXMgPT09IG51bGwpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5w
cm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwiKTsKKyAgICAK
KyAgICBpZiAodGhpcyA9PT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJv
cigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRl
ZmluZWQiKTsKKyAgICAKKyAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMpOworICAgIHZhciBs
ZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsKKworICAgIGlmICh0eXBlb2YgY2FsbGJh
Y2sgIT09ICJmdW5jdGlvbiIpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5w
cm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CisgICAgCisgICAg
dmFyIHRoaXNBcmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVm
aW5lZDsKKyAgICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIGlmICghKGkgaW4gYXJyYXkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlm
ICghY2FsbGJhY2suQGNhbGwodGhpc0FyZywgYXJyYXlbaV0sIGksIGFycmF5KSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Z1
bmN0aW9uIGZvckVhY2goY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCit7CisgICAgInVzZSBzdHJp
Y3QiOworCisgICAgaWYgKHRoaXMgPT09IG51bGwpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVy
cm9yKCJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUg
bnVsbCIpOworICAgIAorICAgIGlmICh0aGlzID09PSB1bmRlZmluZWQpCisgICAgICAgIHRocm93
IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCByZXF1aXJlcyB0aGF0IHx0
aGlzfCBub3QgYmUgdW5kZWZpbmVkIik7CisgICAgCisgICAgdmFyIGFycmF5ID0gQE9iamVjdCh0
aGlzKTsKKyAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7CisKKyAgICBp
ZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQorICAgICAgICB0aHJvdyBuZXcgQFR5
cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmZvckVhY2ggY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0
aW9uIik7CisgICAgCisgICAgdmFyIHRoaXNBcmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFy
Z3VtZW50c1sxXSA6IHVuZGVmaW5lZDsKKyAgICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxl
bmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChpIGluIGFycmF5KQorICAgICAgICAgICAgY2FsbGJh
Y2suQGNhbGwodGhpc0FyZywgYXJyYXlbaV0sIGksIGFycmF5KTsKKyAgICB9Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2Ny
aXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1TZXBhcmF0ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90
eXBlLVNlcGFyYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0NDhiOTgzMmI2NmE0YmRmMGZlMmM0YmQ4NzAx
MGY2MGFkNzJkZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1TZXBh
cmF0ZS5qcwpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKK2Z1bmN0aW9uIGV2ZXJ5KGNhbGxiYWNrIC8qLCB0
aGlzQXJnICovKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICh0aGlzID09PSBudWxs
KQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJl
cXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIik7CisgICAgCisgICAgaWYgKHRoaXMgPT09
IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlw
ZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkIik7CisgICAgCisg
ICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTsKKyAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3Ro
KGFycmF5Lmxlbmd0aCk7CisKKyAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24i
KQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNh
bGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOworICAgIAorICAgIHZhciB0aGlzQXJnID0gYXJn
dW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7CisgICAgCisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoIShpIGluIGFy
cmF5KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIWNhbGxiYWNrLkBjYWxs
KHRoaXNBcmcsIGFycmF5W2ldLCBpLCBhcnJheSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiBmb3JFYWNoKGNh
bGxiYWNrIC8qLCB0aGlzQXJnICovKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICh0
aGlzID09PSBudWxsKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90
eXBlLmZvckVhY2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwiKTsKKyAgICAKKyAg
ICBpZiAodGhpcyA9PT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigi
QXJyYXkucHJvdG90eXBlLmZvckVhY2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVm
aW5lZCIpOworICAgIAorICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7CisgICAgdmFyIGxl
bmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpOworCisgICAgaWYgKHR5cGVvZiBjYWxsYmFj
ayAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnBy
b3RvdHlwZS5mb3JFYWNoIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOworICAgIAorICAg
IHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRl
ZmluZWQ7CisgICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAg
ICAgICBpZiAoaSBpbiBhcnJheSkKKyAgICAgICAgICAgIGNhbGxiYWNrLkBjYWxsKHRoaXNBcmcs
IGFycmF5W2ldLCBpLCBhcnJheSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNv
bnN0cnVjdG9yLUNvbWJpbmVkLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjllOGMxYjQ0OTZjYzU0NGY0MDc3Mzk1MDQyY2ZkMjRlOGEzOTQ2NjEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWls
dGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmluZWQuanMKQEAgLTAs
MCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CitmdW5jdGlvbiBvZigvKiBpdGVtcy4uLiAqLykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAg
ICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsKKyAgICAvLyBUT0RPOiBOZWVkIGlzQ29u
c3RydWN0b3IodGhpcykgaW5zdGVhZCBvZiB0eXBlb2YgImZ1bmN0aW9uIiBjaGVjay4KKyAgICB2
YXIgYXJyYXkgPSB0eXBlb2YgdGhpcyA9PT0gJ2Z1bmN0aW9uJyA/IG5ldyB0aGlzKGxlbmd0aCkg
OiBuZXcgQEFycmF5KGxlbmd0aCk7CisgICAgZm9yICh2YXIgayA9IDA7IGsgPCBsZW5ndGg7ICsr
aykKKyAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGFycmF5LCBrLCBhcmd1bWVudHNba10pOworICAg
IGFycmF5Lmxlbmd0aCA9IGxlbmd0aDsKKyAgICByZXR1cm4gYXJyYXk7Cit9CisKK2Z1bmN0aW9u
IGZyb20oaXRlbXMgLyosIG1hcEZuLCB0aGlzQXJnICovKQoreworICAgICJ1c2Ugc3RyaWN0IjsK
KworICAgIHZhciB0aGlzT2JqID0gdGhpczsKKworICAgIHZhciBtYXBGbiA9IGFyZ3VtZW50cy5s
ZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkOworCisgICAgdmFyIHRoaXNBcmc7
CisKKyAgICBpZiAobWFwRm4gIT09IHVuZGVmaW5lZCkgeworICAgICAgICBpZiAodHlwZW9mIG1h
cEZuICE9PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFy
cmF5LmZyb20gcmVxdWlyZXMgdGhhdCB0aGUgc2Vjb25kIGFyZ3VtZW50LCB3aGVuIHByb3ZpZGVk
LCBiZSBhIGZ1bmN0aW9uIik7CisKKyAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKQor
ICAgICAgICAgICAgdGhpc0FyZyA9IGFyZ3VtZW50c1syXTsKKyAgICB9CisKKyAgICBpZiAoaXRl
bXMgPT0gbnVsbCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LmZyb20gcmVx
dWlyZXMgYW4gYXJyYXktbGlrZSBvYmplY3QgLSBub3QgbnVsbCBvciB1bmRlZmluZWQiKTsKKwor
ICAgIHZhciBpdGVyYXRvck1ldGhvZCA9IGl0ZW1zW0BzeW1ib2xJdGVyYXRvcl07CisgICAgaWYg
KGl0ZXJhdG9yTWV0aG9kICE9IG51bGwpIHsKKyAgICAgICAgaWYgKHR5cGVvZiBpdGVyYXRvck1l
dGhvZCAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJB
cnJheS5mcm9tIHJlcXVpcmVzIHRoYXQgdGhlIHByb3BlcnR5IG9mIHRoZSBmaXJzdCBhcmd1bWVu
dCwgaXRlbXNbU3ltYm9sLml0ZXJhdG9yXSwgd2hlbiBleGlzdHMsIGJlIGEgZnVuY3Rpb24iKTsK
KworICAgICAgICAvLyBUT0RPOiBOZWVkIGlzQ29uc3RydWN0b3IodGhpc09iaikgaW5zdGVhZCBv
ZiB0eXBlb2YgImZ1bmN0aW9uIiBjaGVjay4KKyAgICAgICAgdmFyIHJlc3VsdCA9ICh0eXBlb2Yg
dGhpc09iaiA9PT0gImZ1bmN0aW9uIikgPyBAT2JqZWN0KG5ldyB0aGlzT2JqKCkpIDogW107CisK
KyAgICAgICAgdmFyIGsgPSAwOworICAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvck1ldGhv
ZC5AY2FsbChpdGVtcyk7CisKKyAgICAgICAgLy8gU2luY2UgZm9yLW9mIGxvb3Agb25jZSBtb3Jl
IGxvb2tzIHVwIHRoZSBAQGl0ZXJhdG9yIHByb3BlcnR5IG9mIGEgZ2l2ZW4gaXRlcmFibGUsCisg
ICAgICAgIC8vIGl0IGNvdWxkIGJlIG9ic2VydmFibGUgaWYgdGhlIHVzZXIgZGVmaW5lcyBhIGdl
dHRlciBmb3IgQEBpdGVyYXRvci4KKyAgICAgICAgLy8gVG8gYXZvaWQgdGhpcyBzaXR1YXRpb24s
IHdlIGRlZmluZSBhIHdyYXBwZXIgb2JqZWN0IHRoYXQgQEBpdGVyYXRvciBqdXN0IHJldHVybnMg
YSBnaXZlbiBpdGVyYXRvci4KKyAgICAgICAgdmFyIHdyYXBwZXIgPSB7CisgICAgICAgICAgICBb
QHN5bWJvbEl0ZXJhdG9yXSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcmF0b3I7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgZm9yICh2YXIgdmFsdWUgb2Ygd3Jh
cHBlcikgeworICAgICAgICAgICAgaWYgKG1hcEZuKQorICAgICAgICAgICAgICAgIEBwdXRCeVZh
bERpcmVjdChyZXN1bHQsIGssIHRoaXNBcmcgPT09IHVuZGVmaW5lZCA/IG1hcEZuKHZhbHVlLCBr
KSA6IG1hcEZuLkBjYWxsKHRoaXNBcmcsIHZhbHVlLCBrKSk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywgdmFsdWUpOworICAgICAg
ICAgICAgayArPSAxOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IGs7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdmFyIGFycmF5TGlrZSA9IEBPYmpl
Y3QoaXRlbXMpOworICAgIHZhciBhcnJheUxpa2VMZW5ndGggPSBAdG9MZW5ndGgoYXJyYXlMaWtl
Lmxlbmd0aCk7CisKKyAgICAvLyBUT0RPOiBOZWVkIGlzQ29uc3RydWN0b3IodGhpc09iaikgaW5z
dGVhZCBvZiB0eXBlb2YgImZ1bmN0aW9uIiBjaGVjay4KKyAgICB2YXIgcmVzdWx0ID0gKHR5cGVv
ZiB0aGlzT2JqID09PSAiZnVuY3Rpb24iKSA/IEBPYmplY3QobmV3IHRoaXNPYmooYXJyYXlMaWtl
TGVuZ3RoKSkgOiBuZXcgQEFycmF5KGFycmF5TGlrZUxlbmd0aCk7CisKKyAgICB2YXIgayA9IDA7
CisgICAgd2hpbGUgKGsgPCBhcnJheUxpa2VMZW5ndGgpIHsKKyAgICAgICAgdmFyIHZhbHVlID0g
YXJyYXlMaWtlW2tdOworICAgICAgICBpZiAobWFwRm4pCisgICAgICAgICAgICBAcHV0QnlWYWxE
aXJlY3QocmVzdWx0LCBrLCB0aGlzQXJnID09PSB1bmRlZmluZWQgPyBtYXBGbih2YWx1ZSwgaykg
OiBtYXBGbi5AY2FsbCh0aGlzQXJnLCB2YWx1ZSwgaykpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB2YWx1ZSk7CisgICAgICAgIGsgKz0gMTsK
KyAgICB9CisKKyAgICByZXN1bHQubGVuZ3RoID0gYXJyYXlMaWtlTGVuZ3RoOworICAgIHJldHVy
biByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItU2VwYXJhdGUu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2Ny
aXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItU2VwYXJhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWU4YzFi
NDQ5NmNjNTQ0ZjQwNzczOTUwNDJjZmQyNGU4YTM5NDY2MQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3Jl
LUJ1aWx0aW5Db25zdHJ1Y3Rvci1TZXBhcmF0ZS5qcwpAQCAtMCwwICsxLDExMCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIG9mKC8qIGl0
ZW1zLi4uICovKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciBsZW5ndGggPSBhcmd1
bWVudHMubGVuZ3RoOworICAgIC8vIFRPRE86IE5lZWQgaXNDb25zdHJ1Y3Rvcih0aGlzKSBpbnN0
ZWFkIG9mIHR5cGVvZiAiZnVuY3Rpb24iIGNoZWNrLgorICAgIHZhciBhcnJheSA9IHR5cGVvZiB0
aGlzID09PSAnZnVuY3Rpb24nID8gbmV3IHRoaXMobGVuZ3RoKSA6IG5ldyBAQXJyYXkobGVuZ3Ro
KTsKKyAgICBmb3IgKHZhciBrID0gMDsgayA8IGxlbmd0aDsgKytrKQorICAgICAgICBAcHV0QnlW
YWxEaXJlY3QoYXJyYXksIGssIGFyZ3VtZW50c1trXSk7CisgICAgYXJyYXkubGVuZ3RoID0gbGVu
Z3RoOworICAgIHJldHVybiBhcnJheTsKK30KKworZnVuY3Rpb24gZnJvbShpdGVtcyAvKiwgbWFw
Rm4sIHRoaXNBcmcgKi8pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIHRoaXNPYmog
PSB0aGlzOworCisgICAgdmFyIG1hcEZuID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVu
dHNbMV0gOiB1bmRlZmluZWQ7CisKKyAgICB2YXIgdGhpc0FyZzsKKworICAgIGlmIChtYXBGbiAh
PT0gdW5kZWZpbmVkKSB7CisgICAgICAgIGlmICh0eXBlb2YgbWFwRm4gIT09ICJmdW5jdGlvbiIp
CisgICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkuZnJvbSByZXF1aXJlcyB0
aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQsIHdoZW4gcHJvdmlkZWQsIGJlIGEgZnVuY3Rpb24iKTsK
KworICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpCisgICAgICAgICAgICB0aGlzQXJn
ID0gYXJndW1lbnRzWzJdOworICAgIH0KKworICAgIGlmIChpdGVtcyA9PSBudWxsKQorICAgICAg
ICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkuZnJvbSByZXF1aXJlcyBhbiBhcnJheS1saWtl
IG9iamVjdCAtIG5vdCBudWxsIG9yIHVuZGVmaW5lZCIpOworCisgICAgdmFyIGl0ZXJhdG9yTWV0
aG9kID0gaXRlbXNbQHN5bWJvbEl0ZXJhdG9yXTsKKyAgICBpZiAoaXRlcmF0b3JNZXRob2QgIT0g
bnVsbCkgeworICAgICAgICBpZiAodHlwZW9mIGl0ZXJhdG9yTWV0aG9kICE9PSAiZnVuY3Rpb24i
KQorICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LmZyb20gcmVxdWlyZXMg
dGhhdCB0aGUgcHJvcGVydHkgb2YgdGhlIGZpcnN0IGFyZ3VtZW50LCBpdGVtc1tTeW1ib2wuaXRl
cmF0b3JdLCB3aGVuIGV4aXN0cywgYmUgYSBmdW5jdGlvbiIpOworCisgICAgICAgIC8vIFRPRE86
IE5lZWQgaXNDb25zdHJ1Y3Rvcih0aGlzT2JqKSBpbnN0ZWFkIG9mIHR5cGVvZiAiZnVuY3Rpb24i
IGNoZWNrLgorICAgICAgICB2YXIgcmVzdWx0ID0gKHR5cGVvZiB0aGlzT2JqID09PSAiZnVuY3Rp
b24iKSA/IEBPYmplY3QobmV3IHRoaXNPYmooKSkgOiBbXTsKKworICAgICAgICB2YXIgayA9IDA7
CisgICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yTWV0aG9kLkBjYWxsKGl0ZW1zKTsKKwor
ICAgICAgICAvLyBTaW5jZSBmb3Itb2YgbG9vcCBvbmNlIG1vcmUgbG9va3MgdXAgdGhlIEBAaXRl
cmF0b3IgcHJvcGVydHkgb2YgYSBnaXZlbiBpdGVyYWJsZSwKKyAgICAgICAgLy8gaXQgY291bGQg
YmUgb2JzZXJ2YWJsZSBpZiB0aGUgdXNlciBkZWZpbmVzIGEgZ2V0dGVyIGZvciBAQGl0ZXJhdG9y
LgorICAgICAgICAvLyBUbyBhdm9pZCB0aGlzIHNpdHVhdGlvbiwgd2UgZGVmaW5lIGEgd3JhcHBl
ciBvYmplY3QgdGhhdCBAQGl0ZXJhdG9yIGp1c3QgcmV0dXJucyBhIGdpdmVuIGl0ZXJhdG9yLgor
ICAgICAgICB2YXIgd3JhcHBlciA9IHsKKyAgICAgICAgICAgIFtAc3ltYm9sSXRlcmF0b3JdKCkg
eworICAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfTsKKworICAgICAgICBmb3IgKHZhciB2YWx1ZSBvZiB3cmFwcGVyKSB7CisgICAgICAgICAg
ICBpZiAobWFwRm4pCisgICAgICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywg
dGhpc0FyZyA9PT0gdW5kZWZpbmVkID8gbWFwRm4odmFsdWUsIGspIDogbWFwRm4uQGNhbGwodGhp
c0FyZywgdmFsdWUsIGspKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBAcHV0
QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB2YWx1ZSk7CisgICAgICAgICAgICBrICs9IDE7CisgICAg
ICAgIH0KKworICAgICAgICByZXN1bHQubGVuZ3RoID0gazsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CisKKyAgICB2YXIgYXJyYXlMaWtlID0gQE9iamVjdChpdGVtcyk7CisgICAgdmFy
IGFycmF5TGlrZUxlbmd0aCA9IEB0b0xlbmd0aChhcnJheUxpa2UubGVuZ3RoKTsKKworICAgIC8v
IFRPRE86IE5lZWQgaXNDb25zdHJ1Y3Rvcih0aGlzT2JqKSBpbnN0ZWFkIG9mIHR5cGVvZiAiZnVu
Y3Rpb24iIGNoZWNrLgorICAgIHZhciByZXN1bHQgPSAodHlwZW9mIHRoaXNPYmogPT09ICJmdW5j
dGlvbiIpID8gQE9iamVjdChuZXcgdGhpc09iaihhcnJheUxpa2VMZW5ndGgpKSA6IG5ldyBAQXJy
YXkoYXJyYXlMaWtlTGVuZ3RoKTsKKworICAgIHZhciBrID0gMDsKKyAgICB3aGlsZSAoayA8IGFy
cmF5TGlrZUxlbmd0aCkgeworICAgICAgICB2YXIgdmFsdWUgPSBhcnJheUxpa2Vba107CisgICAg
ICAgIGlmIChtYXBGbikKKyAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHRo
aXNBcmcgPT09IHVuZGVmaW5lZCA/IG1hcEZuKHZhbHVlLCBrKSA6IG1hcEZuLkBjYWxsKHRoaXNB
cmcsIHZhbHVlLCBrKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEBwdXRCeVZhbERpcmVj
dChyZXN1bHQsIGssIHZhbHVlKTsKKyAgICAgICAgayArPSAxOworICAgIH0KKworICAgIHJlc3Vs
dC5sZW5ndGggPSBhcnJheUxpa2VMZW5ndGg7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNv
cmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ2ODg3ZTdlZGNhZDZiMmE4N2VmNWU3ODI5ZDI5M2NlZjAxZTM3MjIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlu
cy9XZWJDb3JlLUd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzCkBAIC0wLDAgKzEsNjQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBAb3B0aW9uYWw9
U1RSRUFNU19BUEkKKworZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbUxvY2tlZChzdHJlYW0pCit7
CisgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjsKK30KKwor
CitmdW5jdGlvbiBjYW5jZWxSZWFkYWJsZVN0cmVhbShzdHJlYW0sIHJlYXNvbikKK3sKKyAgICAi
dXNlIHN0cmljdCI7CisKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFt
Q2xvc2VkKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgaWYgKHN0cmVh
bS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpCisgICAgICAgIHJldHVybiBQcm9t
aXNlLnJlamVjdChzdHJlYW0uQHN0b3JlZEVycm9yKTsKKyAgICBzdHJlYW0uQHF1ZXVlID0gW107
CisgICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pOworICAgIHJldHVybiBA
cHJvbWlzZUludm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsICJjYW5jZWwiLCBb
cmVhc29uXSkudGhlbihmdW5jdGlvbigpIHsgfSk7Cit9CisKKworZnVuY3Rpb24gcHJvbWlzZUlu
dm9rZU9yTm9vcChvYmplY3QsIGtleSwgYXJncykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAg
ICB0cnkgeworICAgICAgICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07CisgICAgICAgIGlmICh0
eXBlb2YgbWV0aG9kID09PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNl
LnJlc29sdmUoKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBh
cmdzKTsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpOworICAgIH0KKyAg
ICBjYXRjaChlcnJvcikgeworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpOwor
ICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3Rz
L2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRl
ZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZjVlN2IzYjg0MWQ1MTBh
MjlmNTc2Zjk0MzYwOTllOGUyNzYyNjU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxC
dWlsdGluLVNlcGFyYXRlLmpzCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBAb3B0aW9uYWw9U1RSRUFNU19BUEkKKy8vIEBp
bnRlcm5hbAorCitmdW5jdGlvbiBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKHN0cmVhbSkKK3sKKyAg
ICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiAhIXN0cmVhbS5AcmVhZGVyOworfQorCisKK2Z1
bmN0aW9uIGNhbmNlbFJlYWRhYmxlU3RyZWFtKHN0cmVhbSwgcmVhc29uKQoreworICAgICJ1c2Ug
c3RyaWN0IjsKKworICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1DbG9z
ZWQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAgICBpZiAoc3RyZWFtLkBz
dGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZCkKKyAgICAgICAgcmV0dXJuIFByb21pc2Uu
cmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpOworICAgIHN0cmVhbS5AcXVldWUgPSBbXTsKKyAg
ICBAZmluaXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7CisgICAgcmV0dXJuIEBwcm9t
aXNlSW52b2tlT3JOb29wKHN0cmVhbS5AdW5kZXJseWluZ1NvdXJjZSwgImNhbmNlbCIsIFtyZWFz
b25dKS50aGVuKGZ1bmN0aW9uKCkgeyB9KTsKK30KKworCitmdW5jdGlvbiBwcm9taXNlSW52b2tl
T3JOb29wKG9iamVjdCwga2V5LCBhcmdzKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHRy
eSB7CisgICAgICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTsKKyAgICAgICAgaWYgKHR5cGVv
ZiBtZXRob2QgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVz
b2x2ZSgpOworICAgICAgICB2YXIgcmVzdWx0ID0gbWV0aG9kLkBhcHBseShvYmplY3QsIGFyZ3Mp
OworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7CisgICAgfQorICAgIGNh
dGNoKGVycm9yKSB7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7CisgICAg
fQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGlu
LVNlcGFyYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliZGM4ZDNiN2U5YmUyOTgwYWZkZDZiNjEzOGMwNDg4
ZmViMjZhMGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMKQEAg
LTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKK2Z1bmN0aW9uIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQoc3RyZWFtKQoreworICAgInVzZSBz
dHJpY3QiOworCisgICAgcmV0dXJuICEhc3RyZWFtLkByZWFkZXI7Cit9CisKKworZnVuY3Rpb24g
Y2FuY2VsUmVhZGFibGVTdHJlYW0oc3RyZWFtLCByZWFzb24pCit7CisgICAgInVzZSBzdHJpY3Qi
OworCisgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUNsb3NlZCkKKyAg
ICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgIGlmIChzdHJlYW0uQHN0YXRlID09
PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qo
c3RyZWFtLkBzdG9yZWRFcnJvcik7CisgICAgc3RyZWFtLkBxdWV1ZSA9IFtdOworICAgIEBmaW5p
c2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTsKKyAgICByZXR1cm4gQHByb21pc2VJbnZv
a2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCAiY2FuY2VsIiwgW3JlYXNvbl0pLnRo
ZW4oZnVuY3Rpb24oKSB7IH0pOworfQorCisKK2Z1bmN0aW9uIHByb21pc2VJbnZva2VPck5vb3Ao
b2JqZWN0LCBrZXksIGFyZ3MpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdHJ5IHsKKyAg
ICAgICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldOworICAgICAgICBpZiAodHlwZW9mIG1ldGhv
ZCA9PT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7
CisgICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9iamVjdCwgYXJncyk7CisgICAg
ICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTsKKyAgICB9CisgICAgY2F0Y2goZXJy
b3IpIHsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTsKKyAgICB9Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9X
ZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGUzOTNiYzU5ODE0MjgyODdlMGYwNDMxOWRiNmU0MjAyYjU1ZTI2OAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcwpAQCAtMCwwICsxLDY1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gQG9wdGlvbmFs
PVNUUkVBTVNfQVBJCisvLyBAaW50ZXJuYWwKKworZnVuY3Rpb24geG1sQ2FzaW5nVGVzdChzdHJl
YW0pCit7CisgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjsK
K30KKworCitmdW5jdGlvbiBjc3NDYXNpbmdUZXN0KHN0cmVhbSwgcmVhc29uKQoreworICAgICJ1
c2Ugc3RyaWN0IjsKKworICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1D
bG9zZWQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAgICBpZiAoc3RyZWFt
LkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZCkKKyAgICAgICAgcmV0dXJuIFByb21p
c2UucmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpOworICAgIHN0cmVhbS5AcXVldWUgPSBbXTsK
KyAgICBAZmluaXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7CisgICAgcmV0dXJuIEBw
cm9taXNlSW52b2tlT3JOb29wKHN0cmVhbS5AdW5kZXJseWluZ1NvdXJjZSwgImNhbmNlbCIsIFty
ZWFzb25dKS50aGVuKGZ1bmN0aW9uKCkgeyB9KTsKK30KKworCitmdW5jdGlvbiB1cmxDYXNpbmdU
ZXN0KG9iamVjdCwga2V5LCBhcmdzKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHRyeSB7
CisgICAgICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTsKKyAgICAgICAgaWYgKHR5cGVvZiBt
ZXRob2QgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2
ZSgpOworICAgICAgICB2YXIgcmVzdWx0ID0gbWV0aG9kLkBhcHBseShvYmplY3QsIGFyZ3MpOwor
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7CisgICAgfQorICAgIGNhdGNo
KGVycm9yKSB7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7CisgICAgfQor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRp
bnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzLXJl
c3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVj
dGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1Db21iaW5lZC5qcy1yZXN1bHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzMyYThjODlmNWFhNWQ2Yzk1MjNkYTBlNjQ4MDExZjViZTk4OGRiZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5z
L2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1Db21iaW5lZC5qcy1yZXN1
bHQKQEAgLTAsMCArMSwxNjggQEAKKyMjIyBCZWdpbiBGaWxlOiBKU0NCdWlsdGlucy5oCisvKgor
ICogQ29weXJpZ2h0IChjKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4uCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1
dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0
aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRl
LWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgSlNDQnVpbHRpbnNfaAorI2RlZmluZSBKU0NCdWls
dGluc19oCisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOworY2xh
c3MgVk07CisKK2VudW0gY2xhc3MgQ29uc3RydWN0QWJpbGl0eSA6IHVuc2lnbmVkOworfQorCitu
YW1lc3BhY2UgSlNDIHsKKworLyogQnVpbHRpbi5Qcm9taXNlICovCitleHRlcm4gY29uc3QgY2hh
ciogc19idWlsdGluUHJvbWlzZVJlamVjdFByb21pc2VDb2RlOworZXh0ZXJuIGNvbnN0IGludCBz
X2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlND
OjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNlQ29kZUNvbnN0
cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQ
cm9taXNlQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9t
aXNlQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWls
dGluUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHk7CisKKyNkZWZpbmUg
SlNDX0ZPUkVBQ0hfQlVJTFRJTlBST01JU0VfQlVJTFRJTl9EQVRBKG1hY3JvKSBcCisgICAgbWFj
cm8ocmVqZWN0UHJvbWlzZSwgYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNlLCAyKSBcCisgICAg
bWFjcm8oZnVsZmlsbFByb21pc2UsIGJ1aWx0aW5Qcm9taXNlRnVsZmlsbFByb21pc2UsIDIpIFwK
KworI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOUFJPTUlTRV9SRUpFQ1RQUk9NSVNFIDEKKyNk
ZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTlBST01JU0VfRlVMRklMTFBST01JU0UgMQorCisjZGVm
aW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShtYWNybykgXAorICAgIG1hY3JvKGJ1aWx0aW5Q
cm9taXNlUmVqZWN0UHJvbWlzZUNvZGUsIHJlamVjdFByb21pc2UsIHNfYnVpbHRpblByb21pc2VS
ZWplY3RQcm9taXNlQ29kZUxlbmd0aCkgXAorICAgIG1hY3JvKGJ1aWx0aW5Qcm9taXNlRnVsZmls
bFByb21pc2VDb2RlLCBmdWxmaWxsUHJvbWlzZSwgc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9t
aXNlQ29kZUxlbmd0aCkgXAorCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05f
TkFNRShtYWNybykgXAorICAgIG1hY3JvKGZ1bGZpbGxQcm9taXNlKSBcCisgICAgbWFjcm8ocmVq
ZWN0UHJvbWlzZSkgXAorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5h
bWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorICAgIEpTQzo6RnVuY3Rpb25FeGVj
dXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKworSlNDX0ZPUkVBQ0hfQlVJ
TFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlM
VElOX0dFTkVSQVRPUgorCisjZGVmaW5lIEpTQ19CVUlMVElOX0VYSVNUUyhvYmplY3QsIGZ1bmMp
IGRlZmluZWQgSlNDX0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMKKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0NCdWlsdGluc19oCisKKyMjIyBFbmQgRmlsZTogSlND
QnVpbHRpbnMuaAorCisjIyMgQmVnaW4gRmlsZTogSlNDQnVpbHRpbnMuY3BwCisvKgorICogQ29w
eXJpZ2h0IChjKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisg
KiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRp
Y2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5
IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1
aWx0aW5zLnB5CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5o
IgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJs
ZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb21p
c2VSZWplY3RQcm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxp
dHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJv
bWlzZUNvZGVMZW5ndGggPSA0MTM7Citjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0
UHJvbWlzZUNvZGUgPQorICAgICIoZnVuY3Rpb24gKHByb21pc2UsIHJlYXNvbilcbiIgXAorICAg
ICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAg
IiAgICB2YXIgcmVhY3Rpb25zID0gcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucztcbiIg
XAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlc3VsdCA9IHJlYXNvbjtcbiIgXAorICAgICIg
ICAgcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlvbnMgPSB1bmRlZmluZWQ7XG4iIFwKKyAg
ICAiICAgIHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnMgPSB1bmRlZmluZWQ7XG4iIFwK
KyAgICAiICAgIHByb21pc2UuQHByb21pc2VTdGF0ZSA9IEBwcm9taXNlUmVqZWN0ZWQ7XG4iIFwK
KyAgICAiXG4iIFwKKyAgICAiICAgIEBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24ucHJvbWlzZVJl
amVjdGVkKHByb21pc2UsIHJlYXNvbiwgcmVhY3Rpb25zKTtcbiIgXAorICAgICJcbiIgXAorICAg
ICIgICAgQHRyaWdnZXJQcm9taXNlUmVhY3Rpb25zKHJlYWN0aW9ucywgcmVhc29uKTtcbiIgXAor
ICAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Q
cm9taXNlRnVsZmlsbFByb21pc2VDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0
QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfYnVpbHRpblByb21pc2VGdWxm
aWxsUHJvbWlzZUNvZGVMZW5ndGggPSA0MTI7Citjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm9taXNl
RnVsZmlsbFByb21pc2VDb2RlID0KKyAgICAiKGZ1bmN0aW9uIChwcm9taXNlLCB2YWx1ZSlcbiIg
XAorICAgICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBc
CisgICAgIiAgICB2YXIgcmVhY3Rpb25zID0gcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlv
bnM7XG4iIFwKKyAgICAiICAgIHByb21pc2UuQHByb21pc2VSZXN1bHQgPSB2YWx1ZTtcbiIgXAor
ICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlvbnMgPSB1bmRlZmluZWQ7XG4i
IFwKKyAgICAiICAgIHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnMgPSB1bmRlZmluZWQ7
XG4iIFwKKyAgICAiICAgIHByb21pc2UuQHByb21pc2VTdGF0ZSA9IEBwcm9taXNlRnVsZmlsbGVk
O1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICBASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLnBy
b21pc2VGdWxmaWxsZWQocHJvbWlzZSwgdmFsdWUsIHJlYWN0aW9ucyk7XG4iIFwKKyAgICAiXG4i
IFwKKyAgICAiICAgIEB0cmlnZ2VyUHJvbWlzZVJlYWN0aW9ucyhyZWFjdGlvbnMsIHZhbHVlKTtc
biIgXAorICAgICJ9KVxuIiBcCis7CisKKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFU
T1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKK3tcCisgICAg
cmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5s
aW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsgfQor
SlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRl
ZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKworCit9IC8vIG5hbWVzcGFjZSBKU0MKKyMjIyBF
bmQgRmlsZTogSlNDQnVpbHRpbnMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGlu
LlByb21pc2UtU2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNl
LVNlcGFyYXRlLmpzLXJlc3VsdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjdiYTI0YzVjYzI5ZTVlMjliMWRiOWY1
NDYyNWZlMGYyOTUxODIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Q
cm9taXNlLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMCwwICsxLDE2NyBAQAorIyMjIEJlZ2luIEZp
bGU6IEJ1aWx0aW5Qcm9taXNlQnVpbHRpbnMuaAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKwor
Ly8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBm
cm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaWZu
ZGVmIEJ1aWx0aW5Qcm9taXNlQnVpbHRpbnNfaAorI2RlZmluZSBCdWlsdGluUHJvbWlzZUJ1aWx0
aW5zX2gKKworCisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwor
fQorCituYW1lc3BhY2UgSlNDIHsKKworLyogQnVpbHRpbi5Qcm9taXNlICovCitleHRlcm4gY29u
c3QgY2hhciogc19idWlsdGluUHJvbWlzZVJlamVjdFByb21pc2VDb2RlOworZXh0ZXJuIGNvbnN0
IGludCBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNvZGVMZW5ndGg7CitleHRlcm4gY29u
c3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNlQ29k
ZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19idWlsdGluUHJvbWlzZUZ1
bGZpbGxQcm9taXNlQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19idWlsdGluUHJvbWlzZUZ1bGZp
bGxQcm9taXNlQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkg
c19idWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHk7CisKKyNk
ZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9QUk9NSVNFX0JVSUxUSU5fREFUQShtYWNybykgXAor
ICAgIG1hY3JvKHJlamVjdFByb21pc2UsIGJ1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZSwgMikg
XAorICAgIG1hY3JvKGZ1bGZpbGxQcm9taXNlLCBidWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNl
LCAyKSBcCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTl9QUk9NSVNFX1JFSkVDVFBST01J
U0UgMQorI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOX1BST01JU0VfRlVMRklMTFBST01JU0Ug
MQorCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU4uUFJPTUlTRV9CVUlMVElOX0NPREUobWFj
cm8pIFwKKyAgICBtYWNybyhidWlsdGluUHJvbWlzZVJlamVjdFByb21pc2VDb2RlLCByZWplY3RQ
cm9taXNlLCBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNvZGVMZW5ndGgpIFwKKyAgICBt
YWNybyhidWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZSwgZnVsZmlsbFByb21pc2UsIHNf
YnVpbHRpblByb21pc2VGdWxmaWxsUHJvbWlzZUNvZGVMZW5ndGgpIFwKKworI2RlZmluZSBKU0Nf
Rk9SRUFDSF9CVUlMVElOLlBST01JU0VfQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcCisg
ICAgbWFjcm8oZnVsZmlsbFByb21pc2UpIFwKKyAgICBtYWNybyhyZWplY3RQcm9taXNlKSBcCisK
KyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1l
LCBhcmd1bWVudENvdW50KSBcCisgICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1l
IyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCitKU0NfRk9SRUFDSF9CVUlMVElOLlBST01JU0VfQlVJ
TFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlM
VElOX0dFTkVSQVRPUgorCisjZGVmaW5lIEpTQ19CVUlMVElOX0JVSUxUSU4uUFJPTUlTRV9FWElT
VFMob2JqZWN0LCBmdW5jKSBkZWZpbmVkIEpTQ19CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBm
dW5jCisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQnVpbHRpblByb21pc2VCdWls
dGluc19oCisKKyMjIyBFbmQgRmlsZTogQnVpbHRpblByb21pc2VCdWlsdGlucy5oCisKKyMjIyBC
ZWdpbiBGaWxlOiBCdWlsdGluUHJvbWlzZUJ1aWx0aW5zLmNwcAorLyoKKyAqIENvcHlyaWdodCAo
YykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICog
CisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdl
bmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2Ny
aXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5w
eQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnVpbHRpblByb21pc2VCdWlsdGlu
cy5oIgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiRXhlY3V0
YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJWTS5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblBy
b21pc2VSZWplY3RQcm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFi
aWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0
UHJvbWlzZUNvZGVMZW5ndGggPSA0MTM7Citjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm9taXNlUmVq
ZWN0UHJvbWlzZUNvZGUgPQorICAgICIoZnVuY3Rpb24gKHByb21pc2UsIHJlYXNvbilcbiIgXAor
ICAgICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBcCisg
ICAgIiAgICB2YXIgcmVhY3Rpb25zID0gcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucztc
biIgXAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlc3VsdCA9IHJlYXNvbjtcbiIgXAorICAg
ICIgICAgcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlvbnMgPSB1bmRlZmluZWQ7XG4iIFwK
KyAgICAiICAgIHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnMgPSB1bmRlZmluZWQ7XG4i
IFwKKyAgICAiICAgIHByb21pc2UuQHByb21pc2VTdGF0ZSA9IEBwcm9taXNlUmVqZWN0ZWQ7XG4i
IFwKKyAgICAiXG4iIFwKKyAgICAiICAgIEBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24ucHJvbWlz
ZVJlamVjdGVkKHByb21pc2UsIHJlYXNvbiwgcmVhY3Rpb25zKTtcbiIgXAorICAgICJcbiIgXAor
ICAgICIgICAgQHRyaWdnZXJQcm9taXNlUmVhY3Rpb25zKHJlYWN0aW9ucywgcmVhc29uKTtcbiIg
XAorICAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0
aW5Qcm9taXNlRnVsZmlsbFByb21pc2VDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3Ry
dWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfYnVpbHRpblByb21pc2VG
dWxmaWxsUHJvbWlzZUNvZGVMZW5ndGggPSA0MTI7Citjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm9t
aXNlRnVsZmlsbFByb21pc2VDb2RlID0KKyAgICAiKGZ1bmN0aW9uIChwcm9taXNlLCB2YWx1ZSlc
biIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxu
IiBcCisgICAgIiAgICB2YXIgcmVhY3Rpb25zID0gcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxSZWFj
dGlvbnM7XG4iIFwKKyAgICAiICAgIHByb21pc2UuQHByb21pc2VSZXN1bHQgPSB2YWx1ZTtcbiIg
XAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlvbnMgPSB1bmRlZmluZWQ7
XG4iIFwKKyAgICAiICAgIHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnMgPSB1bmRlZmlu
ZWQ7XG4iIFwKKyAgICAiICAgIHByb21pc2UuQHByb21pc2VTdGF0ZSA9IEBwcm9taXNlRnVsZmls
bGVkO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICBASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LnByb21pc2VGdWxmaWxsZWQocHJvbWlzZSwgdmFsdWUsIHJlYWN0aW9ucyk7XG4iIFwKKyAgICAi
XG4iIFwKKyAgICAiICAgIEB0cmlnZ2VyUHJvbWlzZVJlYWN0aW9ucyhyZWFjdGlvbnMsIHZhbHVl
KTtcbiIgXAorICAgICJ9KVxuIiBcCis7CisKKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5F
UkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKK3tcCisg
ICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgp
LT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsg
fQorSlNDX0ZPUkVBQ0hfQlVJTFRJTi5QUk9NSVNFX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJ
Tl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCisKKworfSAvLyBu
YW1lc3BhY2UgSlNDCisjIyMgRW5kIEZpbGU6IEJ1aWx0aW5Qcm9taXNlQnVpbHRpbnMuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9l
eHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5qcy1yZXN1
bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3Rl
ZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5qcy1yZXN1bHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTRmNjdjNWFjMDFkZGEzZGJmOWIxZDllNzc5ODM5ZmQ3ODYzYzZiNQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5z
L2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzLXJl
c3VsdApAQCAtMCwwICsxLDE5MiBAQAorIyMjIEJlZ2luIEZpbGU6IEpTQ0J1aWx0aW5zLmgKKy8q
CisgKiBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChjKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4uCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0
IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8v
IGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dl
bmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgSlNDQnVpbHRpbnNfaAorI2RlZmluZSBK
U0NCdWlsdGluc19oCisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxl
OworY2xhc3MgVk07CisKK2VudW0gY2xhc3MgQ29uc3RydWN0QWJpbGl0eSA6IHVuc2lnbmVkOwor
fQorCituYW1lc3BhY2UgSlNDIHsKKworLyogQnVpbHRpbi5wcm90b3R5cGUgKi8KK2V4dGVybiBj
b25zdCBjaGFyKiBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGU7CitleHRlcm4gY29uc3QgaW50
IHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNv
bnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvdG90eXBlRXZlcnlDb2RlQ29uc3RydWN0QWJpbGl0
eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZTsKK2V4
dGVybiBjb25zdCBpbnQgc19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGVMZW5ndGg7CitleHRl
cm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb3RvdHlwZUZvckVhY2hD
b2RlQ29uc3RydWN0QWJpbGl0eTsKKworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOUFJPVE9U
WVBFX0JVSUxUSU5fREFUQShtYWNybykgXAorICAgIG1hY3JvKGV2ZXJ5LCBidWlsdGluUHJvdG90
eXBlRXZlcnksIDEpIFwKKyAgICBtYWNybyhmb3JFYWNoLCBidWlsdGluUHJvdG90eXBlRm9yRWFj
aCwgMSkgXAorCisjZGVmaW5lIEpTQ19CVUlMVElOX0JVSUxUSU5QUk9UT1RZUEVfRVZFUlkgMQor
I2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOUFJPVE9UWVBFX0ZPUkVBQ0ggMQorCisjZGVmaW5l
IEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShtYWNybykgXAorICAgIG1hY3JvKGJ1aWx0aW5Qcm90
b3R5cGVFdmVyeUNvZGUsIGV2ZXJ5LCBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGVMZW5ndGgp
IFwKKyAgICBtYWNybyhidWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGUsIGZvckVhY2gsIHNfYnVp
bHRpblByb3RvdHlwZUZvckVhY2hDb2RlTGVuZ3RoKSBcCisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hf
QlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcCisgICAgbWFjcm8oZXZlcnkpIFwKKyAgICBt
YWNybyhmb3JFYWNoKSBcCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2Rl
TmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCisgICAgSlNDOjpGdW5jdGlvbkV4
ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCitKU0NfRk9SRUFDSF9C
VUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUNMQVJFX0JV
SUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fRVhJU1RTKG9iamVjdCwgZnVu
YykgZGVmaW5lZCBKU0NfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVuYworCit9IC8vIG5h
bWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTQ0J1aWx0aW5zX2gKKworIyMjIEVuZCBGaWxlOiBK
U0NCdWlsdGlucy5oCisKKyMjIyBCZWdpbiBGaWxlOiBKU0NCdWlsdGlucy5jcHAKKy8qCisgKiBD
b3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChjKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4uCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1
dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0
aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRl
LWpzLWJ1aWx0aW5zLnB5CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0NCdWls
dGlucy5oIgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiRXhl
Y3V0YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJWTS5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRp
blByb3RvdHlwZUV2ZXJ5Q29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxp
dHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNv
ZGVMZW5ndGggPSA3NjI7Citjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGUg
PQorICAgICIoZnVuY3Rpb24gKGNhbGxiYWNrIClcbiIgXAorICAgICJ7XG4iIFwKKyAgICAiICAg
IFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICBpZiAodGhpcyA9PT0g
bnVsbClcbiIgXAorICAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkucHJv
dG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsXCIpO1xuIiBcCisg
ICAgIiAgICBcbiIgXAorICAgICIgICAgaWYgKHRoaXMgPT09IHVuZGVmaW5lZClcbiIgXAorICAg
ICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJl
cXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWRcIik7XG4iIFwKKyAgICAiICAgIFxu
IiBcCisgICAgIiAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMpO1xuIiBcCisgICAgIiAgICB2
YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7XG4iIFwKKyAgICAiXG4iIFwKKyAg
ICAiICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rpb25cIilcbiIgXAorICAgICIg
ICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxi
YWNrIG11c3QgYmUgYSBmdW5jdGlvblwiKTtcbiIgXAorICAgICIgICAgXG4iIFwKKyAgICAiICAg
IHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRl
ZmluZWQ7XG4iIFwKKyAgICAiICAgIFxuIiBcCisgICAgIiAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGxlbmd0aDsgaSsrKSB7XG4iIFwKKyAgICAiICAgICAgICBpZiAoIShpIGluIGFycmF5KSlcbiIg
XAorICAgICIgICAgICAgICAgICBjb250aW51ZTtcbiIgXAorICAgICIgICAgICAgIGlmICghY2Fs
bGJhY2suQGNhbGwodGhpc0FyZywgYXJyYXlbaV0sIGksIGFycmF5KSlcbiIgXAorICAgICIgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7XG4iIFwKKyAgICAiICAgIH1cbiIgXAorICAgICIgICAgXG4i
IFwKKyAgICAiICAgIHJldHVybiB0cnVlO1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworY29uc3Qg
SlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb3RvdHlwZUZvckVhY2hDb2RlQ29uc3Ry
dWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29u
c3QgaW50IHNfYnVpbHRpblByb3RvdHlwZUZvckVhY2hDb2RlTGVuZ3RoID0gNjk0OworY29uc3Qg
Y2hhciogc19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGUgPQorICAgICIoZnVuY3Rpb24gKGNh
bGxiYWNrIClcbiIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBc
CisgICAgIlxuIiBcCisgICAgIiAgICBpZiAodGhpcyA9PT0gbnVsbClcbiIgXAorICAgICIgICAg
ICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkucHJvdG90eXBlLmZvckVhY2ggcmVxdWly
ZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGxcIik7XG4iIFwKKyAgICAiICAgIFxuIiBcCisgICAg
IiAgICBpZiAodGhpcyA9PT0gdW5kZWZpbmVkKVxuIiBcCisgICAgIiAgICAgICAgdGhyb3cgbmV3
IEBUeXBlRXJyb3IoXCJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCByZXF1aXJlcyB0aGF0IHx0aGlz
fCBub3QgYmUgdW5kZWZpbmVkXCIpO1xuIiBcCisgICAgIiAgICBcbiIgXAorICAgICIgICAgdmFy
IGFycmF5ID0gQE9iamVjdCh0aGlzKTtcbiIgXAorICAgICIgICAgdmFyIGxlbmd0aCA9IEB0b0xl
bmd0aChhcnJheS5sZW5ndGgpO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICBpZiAodHlwZW9m
IGNhbGxiYWNrICE9PSBcImZ1bmN0aW9uXCIpXG4iIFwKKyAgICAiICAgICAgICB0aHJvdyBuZXcg
QFR5cGVFcnJvcihcIkFycmF5LnByb3RvdHlwZS5mb3JFYWNoIGNhbGxiYWNrIG11c3QgYmUgYSBm
dW5jdGlvblwiKTtcbiIgXAorICAgICIgICAgXG4iIFwKKyAgICAiICAgIHZhciB0aGlzQXJnID0g
YXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4iIFwKKyAg
ICAiICAgIFxuIiBcCisgICAgIiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7
XG4iIFwKKyAgICAiICAgICAgICBpZiAoaSBpbiBhcnJheSlcbiIgXAorICAgICIgICAgICAgICAg
ICBjYWxsYmFjay5AY2FsbCh0aGlzQXJnLCBhcnJheVtpXSwgaSwgYXJyYXkpO1xuIiBcCisgICAg
IiAgICB9XG4iIFwKKyAgICAifSlcbiIgXAorOworCisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5f
R0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKK0pTQzo6
RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCit7
XAorICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFi
bGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2Uo
KSk7IH0KK0pTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1Ip
CisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCisKKworfSAvLyBuYW1lc3BhY2UgSlND
CisjIyMgRW5kIEZpbGU6IEpTQ0J1aWx0aW5zLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUt
QnVpbHRpbi5wcm90b3R5cGUtU2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRp
bi5wcm90b3R5cGUtU2VwYXJhdGUuanMtcmVzdWx0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5MzgzZjRmN2FhZjkw
Y2M4MTRkNDExOGRkMmNmY2M0ZjdkODZlNjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29y
ZS1CdWlsdGluLnByb3RvdHlwZS1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTAsMCArMSwxOTEgQEAK
KyMjIyBCZWdpbiBGaWxlOiBCdWlsdGluUHJvdG90eXBlQnVpbHRpbnMuaAorLyoKKyAqIENvcHly
aWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKGMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4K
KyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21h
dGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMg
YnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMt
YnVpbHRpbnMucHkKKworI2lmbmRlZiBCdWlsdGluUHJvdG90eXBlQnVpbHRpbnNfaAorI2RlZmlu
ZSBCdWlsdGluUHJvdG90eXBlQnVpbHRpbnNfaAorCisKKworbmFtZXNwYWNlIEpTQyB7CitjbGFz
cyBGdW5jdGlvbkV4ZWN1dGFibGU7Cit9CisKK25hbWVzcGFjZSBKU0MgeworCisvKiBCdWlsdGlu
LnByb3RvdHlwZSAqLworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5
Q29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19idWlsdGluUHJvdG90eXBlRXZlcnlDb2RlTGVuZ3Ro
OworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm90b3R5cGVF
dmVyeUNvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfYnVpbHRpblBy
b3RvdHlwZUZvckVhY2hDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2J1aWx0aW5Qcm90b3R5cGVG
b3JFYWNoQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19i
dWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGVDb25zdHJ1Y3RBYmlsaXR5OworCisjZGVmaW5lIEpT
Q19GT1JFQUNIX0JVSUxUSU5fUFJPVE9UWVBFX0JVSUxUSU5fREFUQShtYWNybykgXAorICAgIG1h
Y3JvKGV2ZXJ5LCBidWlsdGluUHJvdG90eXBlRXZlcnksIDEpIFwKKyAgICBtYWNybyhmb3JFYWNo
LCBidWlsdGluUHJvdG90eXBlRm9yRWFjaCwgMSkgXAorCisjZGVmaW5lIEpTQ19CVUlMVElOX0JV
SUxUSU5fUFJPVE9UWVBFX0VWRVJZIDEKKyNkZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTl9QUk9U
T1RZUEVfRk9SRUFDSCAxCisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTi5QUk9UT1RZUEVf
QlVJTFRJTl9DT0RFKG1hY3JvKSBcCisgICAgbWFjcm8oYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29k
ZSwgZXZlcnksIHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZUxlbmd0aCkgXAorICAgIG1hY3Jv
KGJ1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZSwgZm9yRWFjaCwgc19idWlsdGluUHJvdG90eXBl
Rm9yRWFjaENvZGVMZW5ndGgpIFwKKworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOLlBST1RP
VFlQRV9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFwKKyAgICBtYWNybyhldmVyeSkgXAor
ICAgIG1hY3JvKGZvckVhY2gpIFwKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9S
KGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKKyAgICBKU0M6OkZ1bmN0
aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisKK0pTQ19GT1JF
QUNIX0JVSUxUSU4uUFJPVE9UWVBFX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJB
VE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKKworI2RlZmluZSBKU0NfQlVJ
TFRJTl9CVUlMVElOLlBST1RPVFlQRV9FWElTVFMob2JqZWN0LCBmdW5jKSBkZWZpbmVkIEpTQ19C
VUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gQnVpbHRpblByb3RvdHlwZUJ1aWx0aW5zX2gKKworIyMjIEVuZCBGaWxlOiBCdWls
dGluUHJvdG90eXBlQnVpbHRpbnMuaAorCisjIyMgQmVnaW4gRmlsZTogQnVpbHRpblByb3RvdHlw
ZUJ1aWx0aW5zLmNwcAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBF
RElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2Ny
aXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkJ1aWx0aW5Qcm90b3R5cGVCdWlsdGlucy5oIgorCisjaW5jbHVkZSAi
QnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUg
IkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZUNv
bnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsK
K2NvbnN0IGludCBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGVMZW5ndGggPSA3NjI7Citjb25z
dCBjaGFyKiBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGUgPQorICAgICIoZnVuY3Rpb24gKGNh
bGxiYWNrIClcbiIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBc
CisgICAgIlxuIiBcCisgICAgIiAgICBpZiAodGhpcyA9PT0gbnVsbClcbiIgXAorICAgICIgICAg
ICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVz
IHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsXCIpO1xuIiBcCisgICAgIiAgICBcbiIgXAorICAgICIg
ICAgaWYgKHRoaXMgPT09IHVuZGVmaW5lZClcbiIgXAorICAgICIgICAgICAgIHRocm93IG5ldyBA
VHlwZUVycm9yKFwiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5v
dCBiZSB1bmRlZmluZWRcIik7XG4iIFwKKyAgICAiICAgIFxuIiBcCisgICAgIiAgICB2YXIgYXJy
YXkgPSBAT2JqZWN0KHRoaXMpO1xuIiBcCisgICAgIiAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3Ro
KGFycmF5Lmxlbmd0aCk7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIGlmICh0eXBlb2YgY2Fs
bGJhY2sgIT09IFwiZnVuY3Rpb25cIilcbiIgXAorICAgICIgICAgICAgIHRocm93IG5ldyBAVHlw
ZUVycm9yKFwiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlv
blwiKTtcbiIgXAorICAgICIgICAgXG4iIFwKKyAgICAiICAgIHZhciB0aGlzQXJnID0gYXJndW1l
bnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4iIFwKKyAgICAiICAg
IFxuIiBcCisgICAgIiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4iIFwK
KyAgICAiICAgICAgICBpZiAoIShpIGluIGFycmF5KSlcbiIgXAorICAgICIgICAgICAgICAgICBj
b250aW51ZTtcbiIgXAorICAgICIgICAgICAgIGlmICghY2FsbGJhY2suQGNhbGwodGhpc0FyZywg
YXJyYXlbaV0sIGksIGFycmF5KSlcbiIgXAorICAgICIgICAgICAgICAgICByZXR1cm4gZmFsc2U7
XG4iIFwKKyAgICAiICAgIH1cbiIgXAorICAgICIgICAgXG4iIFwKKyAgICAiICAgIHJldHVybiB0
cnVlO1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
IHNfYnVpbHRpblByb3RvdHlwZUZvckVhY2hDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29u
c3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfYnVpbHRpblByb3Rv
dHlwZUZvckVhY2hDb2RlTGVuZ3RoID0gNjk0OworY29uc3QgY2hhciogc19idWlsdGluUHJvdG90
eXBlRm9yRWFjaENvZGUgPQorICAgICIoZnVuY3Rpb24gKGNhbGxiYWNrIClcbiIgXAorICAgICJ7
XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAg
ICBpZiAodGhpcyA9PT0gbnVsbClcbiIgXAorICAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVy
cm9yKFwiQXJyYXkucHJvdG90eXBlLmZvckVhY2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJl
IG51bGxcIik7XG4iIFwKKyAgICAiICAgIFxuIiBcCisgICAgIiAgICBpZiAodGhpcyA9PT0gdW5k
ZWZpbmVkKVxuIiBcCisgICAgIiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5w
cm90b3R5cGUuZm9yRWFjaCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkXCIp
O1xuIiBcCisgICAgIiAgICBcbiIgXAorICAgICIgICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlz
KTtcbiIgXAorICAgICIgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpO1xu
IiBcCisgICAgIlxuIiBcCisgICAgIiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSBcImZ1bmN0
aW9uXCIpXG4iIFwKKyAgICAiICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LnBy
b3RvdHlwZS5mb3JFYWNoIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvblwiKTtcbiIgXAorICAg
ICIgICAgXG4iIFwKKyAgICAiICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEg
PyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4iIFwKKyAgICAiICAgIFxuIiBcCisgICAgIiAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4iIFwKKyAgICAiICAgICAgICBp
ZiAoaSBpbiBhcnJheSlcbiIgXAorICAgICIgICAgICAgICAgICBjYWxsYmFjay5AY2FsbCh0aGlz
QXJnLCBhcnJheVtpXSwgaSwgYXJyYXkpO1xuIiBcCisgICAgIiAgICB9XG4iIFwKKyAgICAifSlc
biIgXAorOworCisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBm
dW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBj
b2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCit7XAorICAgIHJldHVybiB2bS5idWls
dGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVp
bHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IH0KK0pTQ19GT1JFQUNIX0JV
SUxUSU4uUFJPVE9UWVBFX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisj
dW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCisKKworfSAvLyBuYW1lc3BhY2UgSlNDCisj
IyMgRW5kIEZpbGU6IEJ1aWx0aW5Qcm90b3R5cGVCdWlsdGlucy5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFT
Y3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qcy1yZXN1bHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0
Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmluZWQuanMtcmVzdWx0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUz
MzcxMzM4NWUxNjIxNzAwMDI4ZWU3ZDgxYTIzMDBhNzgyMmFlNmYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9K
YXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmluZWQuanMtcmVzdWx0CkBAIC0w
LDAgKzEsMjI0IEBACisjIyMgQmVnaW4gRmlsZTogSlNDQnVpbHRpbnMuaAorLyoKKyAqIENvcHly
aWdodCAoYykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAK
KyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2Vu
ZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3Jp
cHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5
CisKKyNpZm5kZWYgSlNDQnVpbHRpbnNfaAorI2RlZmluZSBKU0NCdWlsdGluc19oCisKK25hbWVz
cGFjZSBKU0MgeworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgVk07CisKK2VudW0g
Y2xhc3MgQ29uc3RydWN0QWJpbGl0eSA6IHVuc2lnbmVkOworfQorCituYW1lc3BhY2UgSlNDIHsK
KworLyogQnVpbHRpbkNvbnN0cnVjdG9yICovCitleHRlcm4gY29uc3QgY2hhciogc19idWlsdGlu
Q29uc3RydWN0b3JPZkNvZGU7CitleHRlcm4gY29uc3QgaW50IHNfYnVpbHRpbkNvbnN0cnVjdG9y
T2ZDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0
aW5Db25zdHJ1Y3Rvck9mQ29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciog
c19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19idWlsdGlu
Q29uc3RydWN0b3JGcm9tQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFi
aWxpdHkgc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZUNvbnN0cnVjdEFiaWxpdHk7CisKKyNk
ZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTkNPTlNUUlVDVE9SX0JVSUxUSU5fREFUQShtYWNybykg
XAorICAgIG1hY3JvKG9mLCBidWlsdGluQ29uc3RydWN0b3JPZiwgMCkgXAorICAgIG1hY3JvKGZy
b20sIGJ1aWx0aW5Db25zdHJ1Y3RvckZyb20sIDEpIFwKKworI2RlZmluZSBKU0NfQlVJTFRJTl9C
VUlMVElOQ09OU1RSVUNUT1JfT0YgMQorI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOQ09OU1RS
VUNUT1JfRlJPTSAxCisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKG1hY3JvKSBc
CisgICAgbWFjcm8oYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2RlLCBvZiwgc19idWlsdGluQ29uc3Ry
dWN0b3JPZkNvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhidWlsdGluQ29uc3RydWN0b3JGcm9tQ29k
ZSwgZnJvbSwgc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZUxlbmd0aCkgXAorCisjZGVmaW5l
IEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXAorICAgIG1hY3JvKGZy
b20pIFwKKyAgICBtYWNybyhvZikgXAorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFU
T1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorICAgIEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKworSlNDX0ZP
UkVBQ0hfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVD
TEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIEpTQ19CVUlMVElOX0VYSVNUUyhvYmpl
Y3QsIGZ1bmMpIGRlZmluZWQgSlNDX0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0NCdWlsdGluc19oCisKKyMjIyBFbmQg
RmlsZTogSlNDQnVpbHRpbnMuaAorCisjIyMgQmVnaW4gRmlsZTogSlNDQnVpbHRpbnMuY3BwCisv
KgorICogQ29weXJpZ2h0IChjKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21h
dGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMg
YnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMt
YnVpbHRpbnMucHkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQ0J1aWx0aW5z
LmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJFeGVjdXRh
YmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluQ29u
c3RydWN0b3JPZkNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpD
YW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19idWlsdGluQ29uc3RydWN0b3JPZkNvZGVMZW5n
dGggPSAyOTQ7Citjb25zdCBjaGFyKiBzX2J1aWx0aW5Db25zdHJ1Y3Rvck9mQ29kZSA9CisgICAg
IihmdW5jdGlvbiAoKVxuIiBcCisgICAgIntcbiIgXAorICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7
XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3Ro
O1xuIiBcCisgICAgIiAgICAvL1xuIiBcCisgICAgIiAgICB2YXIgYXJyYXkgPSB0eXBlb2YgdGhp
cyA9PT0gJ2Z1bmN0aW9uJyA/IG5ldyB0aGlzKGxlbmd0aCkgOiBuZXcgQEFycmF5KGxlbmd0aCk7
XG4iIFwKKyAgICAiICAgIGZvciAodmFyIGsgPSAwOyBrIDwgbGVuZ3RoOyArK2spXG4iIFwKKyAg
ICAiICAgICAgICBAcHV0QnlWYWxEaXJlY3QoYXJyYXksIGssIGFyZ3VtZW50c1trXSk7XG4iIFwK
KyAgICAiICAgIGFycmF5Lmxlbmd0aCA9IGxlbmd0aDtcbiIgXAorICAgICIgICAgcmV0dXJuIGFy
cmF5O1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
IHNfYnVpbHRpbkNvbnN0cnVjdG9yRnJvbUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25z
dHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19idWlsdGluQ29uc3Ry
dWN0b3JGcm9tQ29kZUxlbmd0aCA9IDIwNDY7Citjb25zdCBjaGFyKiBzX2J1aWx0aW5Db25zdHJ1
Y3RvckZyb21Db2RlID0KKyAgICAiKGZ1bmN0aW9uIChpdGVtcyApXG4iIFwKKyAgICAie1xuIiBc
CisgICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdmFy
IHRoaXNPYmogPSB0aGlzO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICB2YXIgbWFwRm4gPSBh
cmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiIgXAorICAg
ICJcbiIgXAorICAgICIgICAgdmFyIHRoaXNBcmc7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAg
IGlmIChtYXBGbiAhPT0gdW5kZWZpbmVkKSB7XG4iIFwKKyAgICAiICAgICAgICBpZiAodHlwZW9m
IG1hcEZuICE9PSBcImZ1bmN0aW9uXCIpXG4iIFwKKyAgICAiICAgICAgICAgICAgdGhyb3cgbmV3
IEBUeXBlRXJyb3IoXCJBcnJheS5mcm9tIHJlcXVpcmVzIHRoYXQgdGhlIHNlY29uZCBhcmd1bWVu
dCwgd2hlbiBwcm92aWRlZCwgYmUgYSBmdW5jdGlvblwiKTtcbiIgXAorICAgICJcbiIgXAorICAg
ICIgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMilcbiIgXAorICAgICIgICAgICAgICAg
ICB0aGlzQXJnID0gYXJndW1lbnRzWzJdO1xuIiBcCisgICAgIiAgICB9XG4iIFwKKyAgICAiXG4i
IFwKKyAgICAiICAgIGlmIChpdGVtcyA9PSBudWxsKVxuIiBcCisgICAgIiAgICAgICAgdGhyb3cg
bmV3IEBUeXBlRXJyb3IoXCJBcnJheS5mcm9tIHJlcXVpcmVzIGFuIGFycmF5LWxpa2Ugb2JqZWN0
IC0gbm90IG51bGwgb3IgdW5kZWZpbmVkXCIpO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICB2
YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVtc1tAc3ltYm9sSXRlcmF0b3JdO1xuIiBcCisgICAgIiAg
ICBpZiAoaXRlcmF0b3JNZXRob2QgIT0gbnVsbCkge1xuIiBcCisgICAgIiAgICAgICAgaWYgKHR5
cGVvZiBpdGVyYXRvck1ldGhvZCAhPT0gXCJmdW5jdGlvblwiKVxuIiBcCisgICAgIiAgICAgICAg
ICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkuZnJvbSByZXF1aXJlcyB0aGF0IHRoZSBw
cm9wZXJ0eSBvZiB0aGUgZmlyc3QgYXJndW1lbnQsIGl0ZW1zW1N5bWJvbC5pdGVyYXRvcl0sIHdo
ZW4gZXhpc3RzLCBiZSBhIGZ1bmN0aW9uXCIpO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICAg
ICAgLy9cbiIgXAorICAgICIgICAgICAgIHZhciByZXN1bHQgPSAodHlwZW9mIHRoaXNPYmogPT09
IFwiZnVuY3Rpb25cIikgPyBAT2JqZWN0KG5ldyB0aGlzT2JqKCkpIDogW107XG4iIFwKKyAgICAi
XG4iIFwKKyAgICAiICAgICAgICB2YXIgayA9IDA7XG4iIFwKKyAgICAiICAgICAgICB2YXIgaXRl
cmF0b3IgPSBpdGVyYXRvck1ldGhvZC5AY2FsbChpdGVtcyk7XG4iIFwKKyAgICAiXG4iIFwKKyAg
ICAiICAgICAgICAvL1xuIiBcCisgICAgIiAgICAgICAgLy9cbiIgXAorICAgICIgICAgICAgIC8v
XG4iIFwKKyAgICAiICAgICAgICB2YXIgd3JhcHBlciA9IHtcbiIgXAorICAgICIgICAgICAgICAg
ICBbQHN5bWJvbEl0ZXJhdG9yXSgpIHtcbiIgXAorICAgICIgICAgICAgICAgICAgICAgcmV0dXJu
IGl0ZXJhdG9yO1xuIiBcCisgICAgIiAgICAgICAgICAgIH1cbiIgXAorICAgICIgICAgICAgIH07
XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgICAgICBmb3IgKHZhciB2YWx1ZSBvZiB3cmFwcGVy
KSB7XG4iIFwKKyAgICAiICAgICAgICAgICAgaWYgKG1hcEZuKVxuIiBcCisgICAgIiAgICAgICAg
ICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB0aGlzQXJnID09PSB1bmRlZmluZWQg
PyBtYXBGbih2YWx1ZSwgaykgOiBtYXBGbi5AY2FsbCh0aGlzQXJnLCB2YWx1ZSwgaykpO1xuIiBc
CisgICAgIiAgICAgICAgICAgIGVsc2VcbiIgXAorICAgICIgICAgICAgICAgICAgICAgQHB1dEJ5
VmFsRGlyZWN0KHJlc3VsdCwgaywgdmFsdWUpO1xuIiBcCisgICAgIiAgICAgICAgICAgIGsgKz0g
MTtcbiIgXAorICAgICIgICAgICAgIH1cbiIgXAorICAgICJcbiIgXAorICAgICIgICAgICAgIHJl
c3VsdC5sZW5ndGggPSBrO1xuIiBcCisgICAgIiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiIgXAor
ICAgICIgICAgfVxuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICB2YXIgYXJyYXlMaWtlID0gQE9i
amVjdChpdGVtcyk7XG4iIFwKKyAgICAiICAgIHZhciBhcnJheUxpa2VMZW5ndGggPSBAdG9MZW5n
dGgoYXJyYXlMaWtlLmxlbmd0aCk7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIC8vXG4iIFwK
KyAgICAiICAgIHZhciByZXN1bHQgPSAodHlwZW9mIHRoaXNPYmogPT09IFwiZnVuY3Rpb25cIikg
PyBAT2JqZWN0KG5ldyB0aGlzT2JqKGFycmF5TGlrZUxlbmd0aCkpIDogbmV3IEBBcnJheShhcnJh
eUxpa2VMZW5ndGgpO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICB2YXIgayA9IDA7XG4iIFwK
KyAgICAiICAgIHdoaWxlIChrIDwgYXJyYXlMaWtlTGVuZ3RoKSB7XG4iIFwKKyAgICAiICAgICAg
ICB2YXIgdmFsdWUgPSBhcnJheUxpa2Vba107XG4iIFwKKyAgICAiICAgICAgICBpZiAobWFwRm4p
XG4iIFwKKyAgICAiICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywgdGhpc0Fy
ZyA9PT0gdW5kZWZpbmVkID8gbWFwRm4odmFsdWUsIGspIDogbWFwRm4uQGNhbGwodGhpc0FyZywg
dmFsdWUsIGspKTtcbiIgXAorICAgICIgICAgICAgIGVsc2VcbiIgXAorICAgICIgICAgICAgICAg
ICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB2YWx1ZSk7XG4iIFwKKyAgICAiICAgICAgICBr
ICs9IDE7XG4iIFwKKyAgICAiICAgIH1cbiIgXAorICAgICJcbiIgXAorICAgICIgICAgcmVzdWx0
Lmxlbmd0aCA9IGFycmF5TGlrZUxlbmd0aDtcbiIgXAorICAgICIgICAgcmV0dXJuIHJlc3VsdDtc
biIgXAorICAgICJ9KVxuIiBcCis7CisKKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFU
T1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKK3tcCisgICAg
cmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5s
aW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsgfQor
SlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRl
ZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKworCit9IC8vIG5hbWVzcGFjZSBKU0MKKyMjIyBF
bmQgRmlsZTogSlNDQnVpbHRpbnMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGlu
Q29uc3RydWN0b3ItU2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0
cnVjdG9yLVNlcGFyYXRlLmpzLXJlc3VsdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjY2ZDA1ZDQwMGQ1ZDc2NGJm
MmRkNjdjMmI4NjViY2E1NzlkM2IwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVp
bHRpbkNvbnN0cnVjdG9yLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMCwwICsxLDIyMyBAQAorIyMj
IEJlZ2luIEZpbGU6IEJ1aWx0aW5Db25zdHJ1Y3RvckJ1aWx0aW5zLmgKKy8qCisgKiBDb3B5cmln
aHQgKGMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisg
Ki8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVy
YXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQor
CisjaWZuZGVmIEJ1aWx0aW5Db25zdHJ1Y3RvckJ1aWx0aW5zX2gKKyNkZWZpbmUgQnVpbHRpbkNv
bnN0cnVjdG9yQnVpbHRpbnNfaAorCisKKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlv
bkV4ZWN1dGFibGU7Cit9CisKK25hbWVzcGFjZSBKU0MgeworCisvKiBCdWlsdGluQ29uc3RydWN0
b3IgKi8KK2V4dGVybiBjb25zdCBjaGFyKiBzX2J1aWx0aW5Db25zdHJ1Y3Rvck9mQ29kZTsKK2V4
dGVybiBjb25zdCBpbnQgc19idWlsdGluQ29uc3RydWN0b3JPZkNvZGVMZW5ndGg7CitleHRlcm4g
Y29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2RlQ29u
c3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX2J1aWx0aW5Db25zdHJ1Y3RvckZy
b21Db2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2J1aWx0aW5Db25zdHJ1Y3RvckZyb21Db2RlTGVu
Z3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Db25zdHJ1
Y3RvckZyb21Db2RlQ29uc3RydWN0QWJpbGl0eTsKKworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlM
VElOQ09OU1RSVUNUT1JfQlVJTFRJTl9EQVRBKG1hY3JvKSBcCisgICAgbWFjcm8ob2YsIGJ1aWx0
aW5Db25zdHJ1Y3Rvck9mLCAwKSBcCisgICAgbWFjcm8oZnJvbSwgYnVpbHRpbkNvbnN0cnVjdG9y
RnJvbSwgMSkgXAorCisjZGVmaW5lIEpTQ19CVUlMVElOX0JVSUxUSU5DT05TVFJVQ1RPUl9PRiAx
CisjZGVmaW5lIEpTQ19CVUlMVElOX0JVSUxUSU5DT05TVFJVQ1RPUl9GUk9NIDEKKworI2RlZmlu
ZSBKU0NfRk9SRUFDSF9CVUlMVElOQ09OU1RSVUNUT1JfQlVJTFRJTl9DT0RFKG1hY3JvKSBcCisg
ICAgbWFjcm8oYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2RlLCBvZiwgc19idWlsdGluQ29uc3RydWN0
b3JPZkNvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhidWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZSwg
ZnJvbSwgc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZUxlbmd0aCkgXAorCisjZGVmaW5lIEpT
Q19GT1JFQUNIX0JVSUxUSU5DT05TVFJVQ1RPUl9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8p
IFwKKyAgICBtYWNybyhmcm9tKSBcCisgICAgbWFjcm8ob2YpIFwKKworI2RlZmluZSBERUNMQVJF
X0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQp
IFwKKyAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6
OlZNJik7CisKK0pTQ19GT1JFQUNIX0JVSUxUSU5DT05TVFJVQ1RPUl9CVUlMVElOX0NPREUoREVD
TEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9S
CisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTkNPTlNUUlVDVE9SX0VYSVNUUyhvYmplY3Qs
IGZ1bmMpIGRlZmluZWQgSlNDX0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMKKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBCdWlsdGluQ29uc3RydWN0b3JCdWlsdGluc19o
CisKKyMjIyBFbmQgRmlsZTogQnVpbHRpbkNvbnN0cnVjdG9yQnVpbHRpbnMuaAorCisjIyMgQmVn
aW4gRmlsZTogQnVpbHRpbkNvbnN0cnVjdG9yQnVpbHRpbnMuY3BwCisvKgorICogQ29weXJpZ2h0
IChjKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICov
CisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0
ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDog
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ1aWx0aW5Db25zdHJ1Y3RvckJ1aWx0aW5z
LmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJFeGVjdXRh
YmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluQ29u
c3RydWN0b3JPZkNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpD
YW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19idWlsdGluQ29uc3RydWN0b3JPZkNvZGVMZW5n
dGggPSAyOTQ7Citjb25zdCBjaGFyKiBzX2J1aWx0aW5Db25zdHJ1Y3Rvck9mQ29kZSA9CisgICAg
IihmdW5jdGlvbiAoKVxuIiBcCisgICAgIntcbiIgXAorICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7
XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3Ro
O1xuIiBcCisgICAgIiAgICAvL1xuIiBcCisgICAgIiAgICB2YXIgYXJyYXkgPSB0eXBlb2YgdGhp
cyA9PT0gJ2Z1bmN0aW9uJyA/IG5ldyB0aGlzKGxlbmd0aCkgOiBuZXcgQEFycmF5KGxlbmd0aCk7
XG4iIFwKKyAgICAiICAgIGZvciAodmFyIGsgPSAwOyBrIDwgbGVuZ3RoOyArK2spXG4iIFwKKyAg
ICAiICAgICAgICBAcHV0QnlWYWxEaXJlY3QoYXJyYXksIGssIGFyZ3VtZW50c1trXSk7XG4iIFwK
KyAgICAiICAgIGFycmF5Lmxlbmd0aCA9IGxlbmd0aDtcbiIgXAorICAgICIgICAgcmV0dXJuIGFy
cmF5O1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
IHNfYnVpbHRpbkNvbnN0cnVjdG9yRnJvbUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25z
dHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19idWlsdGluQ29uc3Ry
dWN0b3JGcm9tQ29kZUxlbmd0aCA9IDIwNDY7Citjb25zdCBjaGFyKiBzX2J1aWx0aW5Db25zdHJ1
Y3RvckZyb21Db2RlID0KKyAgICAiKGZ1bmN0aW9uIChpdGVtcyApXG4iIFwKKyAgICAie1xuIiBc
CisgICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdmFy
IHRoaXNPYmogPSB0aGlzO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICB2YXIgbWFwRm4gPSBh
cmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiIgXAorICAg
ICJcbiIgXAorICAgICIgICAgdmFyIHRoaXNBcmc7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAg
IGlmIChtYXBGbiAhPT0gdW5kZWZpbmVkKSB7XG4iIFwKKyAgICAiICAgICAgICBpZiAodHlwZW9m
IG1hcEZuICE9PSBcImZ1bmN0aW9uXCIpXG4iIFwKKyAgICAiICAgICAgICAgICAgdGhyb3cgbmV3
IEBUeXBlRXJyb3IoXCJBcnJheS5mcm9tIHJlcXVpcmVzIHRoYXQgdGhlIHNlY29uZCBhcmd1bWVu
dCwgd2hlbiBwcm92aWRlZCwgYmUgYSBmdW5jdGlvblwiKTtcbiIgXAorICAgICJcbiIgXAorICAg
ICIgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMilcbiIgXAorICAgICIgICAgICAgICAg
ICB0aGlzQXJnID0gYXJndW1lbnRzWzJdO1xuIiBcCisgICAgIiAgICB9XG4iIFwKKyAgICAiXG4i
IFwKKyAgICAiICAgIGlmIChpdGVtcyA9PSBudWxsKVxuIiBcCisgICAgIiAgICAgICAgdGhyb3cg
bmV3IEBUeXBlRXJyb3IoXCJBcnJheS5mcm9tIHJlcXVpcmVzIGFuIGFycmF5LWxpa2Ugb2JqZWN0
IC0gbm90IG51bGwgb3IgdW5kZWZpbmVkXCIpO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICB2
YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVtc1tAc3ltYm9sSXRlcmF0b3JdO1xuIiBcCisgICAgIiAg
ICBpZiAoaXRlcmF0b3JNZXRob2QgIT0gbnVsbCkge1xuIiBcCisgICAgIiAgICAgICAgaWYgKHR5
cGVvZiBpdGVyYXRvck1ldGhvZCAhPT0gXCJmdW5jdGlvblwiKVxuIiBcCisgICAgIiAgICAgICAg
ICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkuZnJvbSByZXF1aXJlcyB0aGF0IHRoZSBw
cm9wZXJ0eSBvZiB0aGUgZmlyc3QgYXJndW1lbnQsIGl0ZW1zW1N5bWJvbC5pdGVyYXRvcl0sIHdo
ZW4gZXhpc3RzLCBiZSBhIGZ1bmN0aW9uXCIpO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICAg
ICAgLy9cbiIgXAorICAgICIgICAgICAgIHZhciByZXN1bHQgPSAodHlwZW9mIHRoaXNPYmogPT09
IFwiZnVuY3Rpb25cIikgPyBAT2JqZWN0KG5ldyB0aGlzT2JqKCkpIDogW107XG4iIFwKKyAgICAi
XG4iIFwKKyAgICAiICAgICAgICB2YXIgayA9IDA7XG4iIFwKKyAgICAiICAgICAgICB2YXIgaXRl
cmF0b3IgPSBpdGVyYXRvck1ldGhvZC5AY2FsbChpdGVtcyk7XG4iIFwKKyAgICAiXG4iIFwKKyAg
ICAiICAgICAgICAvL1xuIiBcCisgICAgIiAgICAgICAgLy9cbiIgXAorICAgICIgICAgICAgIC8v
XG4iIFwKKyAgICAiICAgICAgICB2YXIgd3JhcHBlciA9IHtcbiIgXAorICAgICIgICAgICAgICAg
ICBbQHN5bWJvbEl0ZXJhdG9yXSgpIHtcbiIgXAorICAgICIgICAgICAgICAgICAgICAgcmV0dXJu
IGl0ZXJhdG9yO1xuIiBcCisgICAgIiAgICAgICAgICAgIH1cbiIgXAorICAgICIgICAgICAgIH07
XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgICAgICBmb3IgKHZhciB2YWx1ZSBvZiB3cmFwcGVy
KSB7XG4iIFwKKyAgICAiICAgICAgICAgICAgaWYgKG1hcEZuKVxuIiBcCisgICAgIiAgICAgICAg
ICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB0aGlzQXJnID09PSB1bmRlZmluZWQg
PyBtYXBGbih2YWx1ZSwgaykgOiBtYXBGbi5AY2FsbCh0aGlzQXJnLCB2YWx1ZSwgaykpO1xuIiBc
CisgICAgIiAgICAgICAgICAgIGVsc2VcbiIgXAorICAgICIgICAgICAgICAgICAgICAgQHB1dEJ5
VmFsRGlyZWN0KHJlc3VsdCwgaywgdmFsdWUpO1xuIiBcCisgICAgIiAgICAgICAgICAgIGsgKz0g
MTtcbiIgXAorICAgICIgICAgICAgIH1cbiIgXAorICAgICJcbiIgXAorICAgICIgICAgICAgIHJl
c3VsdC5sZW5ndGggPSBrO1xuIiBcCisgICAgIiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiIgXAor
ICAgICIgICAgfVxuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICB2YXIgYXJyYXlMaWtlID0gQE9i
amVjdChpdGVtcyk7XG4iIFwKKyAgICAiICAgIHZhciBhcnJheUxpa2VMZW5ndGggPSBAdG9MZW5n
dGgoYXJyYXlMaWtlLmxlbmd0aCk7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIC8vXG4iIFwK
KyAgICAiICAgIHZhciByZXN1bHQgPSAodHlwZW9mIHRoaXNPYmogPT09IFwiZnVuY3Rpb25cIikg
PyBAT2JqZWN0KG5ldyB0aGlzT2JqKGFycmF5TGlrZUxlbmd0aCkpIDogbmV3IEBBcnJheShhcnJh
eUxpa2VMZW5ndGgpO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICB2YXIgayA9IDA7XG4iIFwK
KyAgICAiICAgIHdoaWxlIChrIDwgYXJyYXlMaWtlTGVuZ3RoKSB7XG4iIFwKKyAgICAiICAgICAg
ICB2YXIgdmFsdWUgPSBhcnJheUxpa2Vba107XG4iIFwKKyAgICAiICAgICAgICBpZiAobWFwRm4p
XG4iIFwKKyAgICAiICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywgdGhpc0Fy
ZyA9PT0gdW5kZWZpbmVkID8gbWFwRm4odmFsdWUsIGspIDogbWFwRm4uQGNhbGwodGhpc0FyZywg
dmFsdWUsIGspKTtcbiIgXAorICAgICIgICAgICAgIGVsc2VcbiIgXAorICAgICIgICAgICAgICAg
ICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB2YWx1ZSk7XG4iIFwKKyAgICAiICAgICAgICBr
ICs9IDE7XG4iIFwKKyAgICAiICAgIH1cbiIgXAorICAgICJcbiIgXAorICAgICIgICAgcmVzdWx0
Lmxlbmd0aCA9IGFycmF5TGlrZUxlbmd0aDtcbiIgXAorICAgICIgICAgcmV0dXJuIHJlc3VsdDtc
biIgXAorICAgICJ9KVxuIiBcCis7CisKKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFU
T1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKK3tcCisgICAg
cmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5s
aW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsgfQor
SlNDX0ZPUkVBQ0hfQlVJTFRJTkNPTlNUUlVDVE9SX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJ
Tl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCisKKworfSAvLyBu
YW1lc3BhY2UgSlNDCisjIyMgRW5kIEZpbGU6IEJ1aWx0aW5Db25zdHJ1Y3RvckJ1aWx0aW5zLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRp
bnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtT3BlcmF0aW9ucy5Qcm9taXNlLUNvbWJpbmVkLmpz
LXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4
cGVjdGVkL0phdmFTY3JpcHRDb3JlLU9wZXJhdGlvbnMuUHJvbWlzZS1Db21iaW5lZC5qcy1yZXN1
bHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzE0NTExMTFjYTdkNjc1NWZlMjc1YTM5NDRlNzcxNjQxYjNiOWRmNgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1
aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLU9wZXJhdGlvbnMuUHJvbWlzZS1Db21iaW5l
ZC5qcy1yZXN1bHQKQEAgLTAsMCArMSw0MTUgQEAKKyMjIyBCZWdpbiBGaWxlOiBKU0NCdWlsdGlu
cy5oCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4uCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUu
IEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IK
Ky8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgSlNDQnVpbHRpbnNfaAorI2RlZmlu
ZSBKU0NCdWlsdGluc19oCisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRnVuY3Rpb25FeGVjdXRh
YmxlOworY2xhc3MgVk07CisKK2VudW0gY2xhc3MgQ29uc3RydWN0QWJpbGl0eSA6IHVuc2lnbmVk
OworfQorCituYW1lc3BhY2UgSlNDIHsKKworLyogT3BlcmF0aW9ucy5Qcm9taXNlICovCitleHRl
cm4gY29uc3QgY2hhciogc19vcGVyYXRpb25zUHJvbWlzZUlzUHJvbWlzZUNvZGU7CitleHRlcm4g
Y29uc3QgaW50IHNfb3BlcmF0aW9uc1Byb21pc2VJc1Byb21pc2VDb2RlTGVuZ3RoOworZXh0ZXJu
IGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9taXNlSXNQcm9taXNl
Q29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19vcGVyYXRpb25zUHJv
bWlzZU5ld1Byb21pc2VSZWFjdGlvbkNvZGU7CitleHRlcm4gY29uc3QgaW50IHNfb3BlcmF0aW9u
c1Byb21pc2VOZXdQcm9taXNlUmVhY3Rpb25Db2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6
Q29uc3RydWN0QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9taXNlTmV3UHJvbWlzZVJlYWN0aW9uQ29k
ZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19vcGVyYXRpb25zUHJvbWlz
ZU5ld1Byb21pc2VDYXBhYmlsaXR5Q29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19vcGVyYXRpb25z
UHJvbWlzZU5ld1Byb21pc2VDYXBhYmlsaXR5Q29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6
OkNvbnN0cnVjdEFiaWxpdHkgc19vcGVyYXRpb25zUHJvbWlzZU5ld1Byb21pc2VDYXBhYmlsaXR5
Q29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19vcGVyYXRpb25zUHJv
bWlzZVRyaWdnZXJQcm9taXNlUmVhY3Rpb25zQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19vcGVy
YXRpb25zUHJvbWlzZVRyaWdnZXJQcm9taXNlUmVhY3Rpb25zQ29kZUxlbmd0aDsKK2V4dGVybiBj
b25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19vcGVyYXRpb25zUHJvbWlzZVRyaWdnZXJQcm9t
aXNlUmVhY3Rpb25zQ29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19v
cGVyYXRpb25zUHJvbWlzZVJlamVjdFByb21pc2VDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX29w
ZXJhdGlvbnNQcm9taXNlUmVqZWN0UHJvbWlzZUNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlND
OjpDb25zdHJ1Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VSZWplY3RQcm9taXNlQ29kZUNv
bnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19vcGVyYXRpb25zUHJvbWlzZUZ1
bGZpbGxQcm9taXNlQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19vcGVyYXRpb25zUHJvbWlzZUZ1
bGZpbGxQcm9taXNlQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxp
dHkgc19vcGVyYXRpb25zUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHk7
CitleHRlcm4gY29uc3QgY2hhciogc19vcGVyYXRpb25zUHJvbWlzZUNyZWF0ZVJlc29sdmluZ0Z1
bmN0aW9uc0NvZGU7CitleHRlcm4gY29uc3QgaW50IHNfb3BlcmF0aW9uc1Byb21pc2VDcmVhdGVS
ZXNvbHZpbmdGdW5jdGlvbnNDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0
QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9taXNlQ3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zQ29kZUNv
bnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19vcGVyYXRpb25zUHJvbWlzZVBy
b21pc2VSZWFjdGlvbkpvYkNvZGU7CitleHRlcm4gY29uc3QgaW50IHNfb3BlcmF0aW9uc1Byb21p
c2VQcm9taXNlUmVhY3Rpb25Kb2JDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3Ry
dWN0QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJlYWN0aW9uSm9iQ29kZUNvbnN0
cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19vcGVyYXRpb25zUHJvbWlzZVByb21p
c2VSZXNvbHZlVGhlbmFibGVKb2JDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX29wZXJhdGlvbnNQ
cm9taXNlUHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYkNvZGVMZW5ndGg7CitleHRlcm4gY29uc3Qg
SlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVzb2x2ZVRo
ZW5hYmxlSm9iQ29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19vcGVy
YXRpb25zUHJvbWlzZUluaXRpYWxpemVQcm9taXNlQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19v
cGVyYXRpb25zUHJvbWlzZUluaXRpYWxpemVQcm9taXNlQ29kZUxlbmd0aDsKK2V4dGVybiBjb25z
dCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19vcGVyYXRpb25zUHJvbWlzZUluaXRpYWxpemVQcm9t
aXNlQ29kZUNvbnN0cnVjdEFiaWxpdHk7CisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hfT1BFUkFUSU9O
U1BST01JU0VfQlVJTFRJTl9EQVRBKG1hY3JvKSBcCisgICAgbWFjcm8oaXNQcm9taXNlLCBvcGVy
YXRpb25zUHJvbWlzZUlzUHJvbWlzZSwgMSkgXAorICAgIG1hY3JvKG5ld1Byb21pc2VSZWFjdGlv
biwgb3BlcmF0aW9uc1Byb21pc2VOZXdQcm9taXNlUmVhY3Rpb24sIDIpIFwKKyAgICBtYWNybyhu
ZXdQcm9taXNlQ2FwYWJpbGl0eSwgb3BlcmF0aW9uc1Byb21pc2VOZXdQcm9taXNlQ2FwYWJpbGl0
eSwgMSkgXAorICAgIG1hY3JvKHRyaWdnZXJQcm9taXNlUmVhY3Rpb25zLCBvcGVyYXRpb25zUHJv
bWlzZVRyaWdnZXJQcm9taXNlUmVhY3Rpb25zLCAyKSBcCisgICAgbWFjcm8ocmVqZWN0UHJvbWlz
ZSwgb3BlcmF0aW9uc1Byb21pc2VSZWplY3RQcm9taXNlLCAyKSBcCisgICAgbWFjcm8oZnVsZmls
bFByb21pc2UsIG9wZXJhdGlvbnNQcm9taXNlRnVsZmlsbFByb21pc2UsIDIpIFwKKyAgICBtYWNy
byhjcmVhdGVSZXNvbHZpbmdGdW5jdGlvbnMsIG9wZXJhdGlvbnNQcm9taXNlQ3JlYXRlUmVzb2x2
aW5nRnVuY3Rpb25zLCAxKSBcCisgICAgbWFjcm8ocHJvbWlzZVJlYWN0aW9uSm9iLCBvcGVyYXRp
b25zUHJvbWlzZVByb21pc2VSZWFjdGlvbkpvYiwgMikgXAorICAgIG1hY3JvKHByb21pc2VSZXNv
bHZlVGhlbmFibGVKb2IsIG9wZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJlc29sdmVUaGVuYWJsZUpv
YiwgMykgXAorICAgIG1hY3JvKGluaXRpYWxpemVQcm9taXNlLCBvcGVyYXRpb25zUHJvbWlzZUlu
aXRpYWxpemVQcm9taXNlLCAxKSBcCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fT1BFUkFUSU9OU1BS
T01JU0VfSVNQUk9NSVNFIDEKKyNkZWZpbmUgSlNDX0JVSUxUSU5fT1BFUkFUSU9OU1BST01JU0Vf
TkVXUFJPTUlTRVJFQUNUSU9OIDEKKyNkZWZpbmUgSlNDX0JVSUxUSU5fT1BFUkFUSU9OU1BST01J
U0VfTkVXUFJPTUlTRUNBUEFCSUxJVFkgMQorI2RlZmluZSBKU0NfQlVJTFRJTl9PUEVSQVRJT05T
UFJPTUlTRV9UUklHR0VSUFJPTUlTRVJFQUNUSU9OUyAxCisjZGVmaW5lIEpTQ19CVUlMVElOX09Q
RVJBVElPTlNQUk9NSVNFX1JFSkVDVFBST01JU0UgMQorI2RlZmluZSBKU0NfQlVJTFRJTl9PUEVS
QVRJT05TUFJPTUlTRV9GVUxGSUxMUFJPTUlTRSAxCisjZGVmaW5lIEpTQ19CVUlMVElOX09QRVJB
VElPTlNQUk9NSVNFX0NSRUFURVJFU09MVklOR0ZVTkNUSU9OUyAxCisjZGVmaW5lIEpTQ19CVUlM
VElOX09QRVJBVElPTlNQUk9NSVNFX1BST01JU0VSRUFDVElPTkpPQiAxCisjZGVmaW5lIEpTQ19C
VUlMVElOX09QRVJBVElPTlNQUk9NSVNFX1BST01JU0VSRVNPTFZFVEhFTkFCTEVKT0IgMQorI2Rl
ZmluZSBKU0NfQlVJTFRJTl9PUEVSQVRJT05TUFJPTUlTRV9JTklUSUFMSVpFUFJPTUlTRSAxCisK
KyNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKG1hY3JvKSBcCisgICAgbWFjcm8ob3Bl
cmF0aW9uc1Byb21pc2VJc1Byb21pc2VDb2RlLCBpc1Byb21pc2UsIHNfb3BlcmF0aW9uc1Byb21p
c2VJc1Byb21pc2VDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8ob3BlcmF0aW9uc1Byb21pc2VOZXdQ
cm9taXNlUmVhY3Rpb25Db2RlLCBuZXdQcm9taXNlUmVhY3Rpb24sIHNfb3BlcmF0aW9uc1Byb21p
c2VOZXdQcm9taXNlUmVhY3Rpb25Db2RlTGVuZ3RoKSBcCisgICAgbWFjcm8ob3BlcmF0aW9uc1By
b21pc2VOZXdQcm9taXNlQ2FwYWJpbGl0eUNvZGUsIG5ld1Byb21pc2VDYXBhYmlsaXR5LCBzX29w
ZXJhdGlvbnNQcm9taXNlTmV3UHJvbWlzZUNhcGFiaWxpdHlDb2RlTGVuZ3RoKSBcCisgICAgbWFj
cm8ob3BlcmF0aW9uc1Byb21pc2VUcmlnZ2VyUHJvbWlzZVJlYWN0aW9uc0NvZGUsIHRyaWdnZXJQ
cm9taXNlUmVhY3Rpb25zLCBzX29wZXJhdGlvbnNQcm9taXNlVHJpZ2dlclByb21pc2VSZWFjdGlv
bnNDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8ob3BlcmF0aW9uc1Byb21pc2VSZWplY3RQcm9taXNl
Q29kZSwgcmVqZWN0UHJvbWlzZSwgc19vcGVyYXRpb25zUHJvbWlzZVJlamVjdFByb21pc2VDb2Rl
TGVuZ3RoKSBcCisgICAgbWFjcm8ob3BlcmF0aW9uc1Byb21pc2VGdWxmaWxsUHJvbWlzZUNvZGUs
IGZ1bGZpbGxQcm9taXNlLCBzX29wZXJhdGlvbnNQcm9taXNlRnVsZmlsbFByb21pc2VDb2RlTGVu
Z3RoKSBcCisgICAgbWFjcm8ob3BlcmF0aW9uc1Byb21pc2VDcmVhdGVSZXNvbHZpbmdGdW5jdGlv
bnNDb2RlLCBjcmVhdGVSZXNvbHZpbmdGdW5jdGlvbnMsIHNfb3BlcmF0aW9uc1Byb21pc2VDcmVh
dGVSZXNvbHZpbmdGdW5jdGlvbnNDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8ob3BlcmF0aW9uc1By
b21pc2VQcm9taXNlUmVhY3Rpb25Kb2JDb2RlLCBwcm9taXNlUmVhY3Rpb25Kb2IsIHNfb3BlcmF0
aW9uc1Byb21pc2VQcm9taXNlUmVhY3Rpb25Kb2JDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8ob3Bl
cmF0aW9uc1Byb21pc2VQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZSwgcHJvbWlzZVJlc29s
dmVUaGVuYWJsZUpvYiwgc19vcGVyYXRpb25zUHJvbWlzZVByb21pc2VSZXNvbHZlVGhlbmFibGVK
b2JDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8ob3BlcmF0aW9uc1Byb21pc2VJbml0aWFsaXplUHJv
bWlzZUNvZGUsIGluaXRpYWxpemVQcm9taXNlLCBzX29wZXJhdGlvbnNQcm9taXNlSW5pdGlhbGl6
ZVByb21pc2VDb2RlTGVuZ3RoKSBcCisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5D
VElPTl9OQU1FKG1hY3JvKSBcCisgICAgbWFjcm8oY3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zKSBc
CisgICAgbWFjcm8oZnVsZmlsbFByb21pc2UpIFwKKyAgICBtYWNybyhpbml0aWFsaXplUHJvbWlz
ZSkgXAorICAgIG1hY3JvKGlzUHJvbWlzZSkgXAorICAgIG1hY3JvKG5ld1Byb21pc2VDYXBhYmls
aXR5KSBcCisgICAgbWFjcm8obmV3UHJvbWlzZVJlYWN0aW9uKSBcCisgICAgbWFjcm8ocHJvbWlz
ZVJlYWN0aW9uSm9iKSBcCisgICAgbWFjcm8ocHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYikgXAor
ICAgIG1hY3JvKHJlamVjdFByb21pc2UpIFwKKyAgICBtYWNybyh0cmlnZ2VyUHJvbWlzZVJlYWN0
aW9ucykgXAorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1
bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
KiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKworSlNDX0ZPUkVBQ0hfQlVJTFRJTl9D
T0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dF
TkVSQVRPUgorCisjZGVmaW5lIEpTQ19CVUlMVElOX0VYSVNUUyhvYmplY3QsIGZ1bmMpIGRlZmlu
ZWQgSlNDX0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBKU0NCdWlsdGluc19oCisKKyMjIyBFbmQgRmlsZTogSlNDQnVpbHRp
bnMuaAorCisjIyMgQmVnaW4gRmlsZTogSlNDQnVpbHRpbnMuY3BwCisvKgorICogQ29weXJpZ2h0
IChjKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKiAKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
KiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkg
Z2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBz
Y3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5z
LnB5CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorCisj
aW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgor
I2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VJ
c1Byb21pc2VDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fu
bm90Q29uc3RydWN0OworY29uc3QgaW50IHNfb3BlcmF0aW9uc1Byb21pc2VJc1Byb21pc2VDb2Rl
TGVuZ3RoID0gMTU4OworY29uc3QgY2hhciogc19vcGVyYXRpb25zUHJvbWlzZUlzUHJvbWlzZUNv
ZGUgPQorICAgIihmdW5jdGlvbiAocHJvbWlzZSlcbiIgXAorICAgIntcbiIgXAorICAgIiAgICBc
InVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHJldHVybiBAaXNPYmplY3Qo
cHJvbWlzZSkgJiYgISFwcm9taXNlLkBwcm9taXNlU3RhdGU7XG4iIFwKKyAgICJ9KVxuIiBcCis7
CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9taXNlTmV3UHJv
bWlzZVJlYWN0aW9uQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6
OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX29wZXJhdGlvbnNQcm9taXNlTmV3UHJvbWlz
ZVJlYWN0aW9uQ29kZUxlbmd0aCA9IDIyMDsKK2NvbnN0IGNoYXIqIHNfb3BlcmF0aW9uc1Byb21p
c2VOZXdQcm9taXNlUmVhY3Rpb25Db2RlID0KKyAgICIoZnVuY3Rpb24gKGNhcGFiaWxpdHksIGhh
bmRsZXIpXG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAg
ICJcbiIgXAorICAgIiAgICByZXR1cm4ge1xuIiBcCisgICAiICAgICAgICBAY2FwYWJpbGl0aWVz
OiBjYXBhYmlsaXR5LFxuIiBcCisgICAiICAgICAgICBAaGFuZGxlcjogaGFuZGxlclxuIiBcCisg
ICAiICAgIH07XG4iIFwKKyAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJp
bGl0eSBzX29wZXJhdGlvbnNQcm9taXNlTmV3UHJvbWlzZUNhcGFiaWxpdHlDb2RlQ29uc3RydWN0
QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3Qg
aW50IHNfb3BlcmF0aW9uc1Byb21pc2VOZXdQcm9taXNlQ2FwYWJpbGl0eUNvZGVMZW5ndGggPSAx
NDI3OworY29uc3QgY2hhciogc19vcGVyYXRpb25zUHJvbWlzZU5ld1Byb21pc2VDYXBhYmlsaXR5
Q29kZSA9CisgICAiKGZ1bmN0aW9uIChjb25zdHJ1Y3RvcilcbiIgXAorICAgIntcbiIgXAorICAg
IiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIC8vXG4iIFwKKyAg
ICIgICAgaWYgKHR5cGVvZiBjb25zdHJ1Y3RvciAhPT0gXCJmdW5jdGlvblwiKVxuIiBcCisgICAi
ICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcInByb21pc2UgY2FwYWJpbGl0eSByZXF1aXJl
cyBhIGNvbnN0cnVjdG9yIGZ1bmN0aW9uXCIpO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdmFy
IHByb21pc2VDYXBhYmlsaXR5ID0ge1xuIiBcCisgICAiICAgICAgICBAcHJvbWlzZTogdW5kZWZp
bmVkLFxuIiBcCisgICAiICAgICAgICBAcmVzb2x2ZTogdW5kZWZpbmVkLFxuIiBcCisgICAiICAg
ICAgICBAcmVqZWN0OiB1bmRlZmluZWRcbiIgXAorICAgIiAgICB9O1xuIiBcCisgICAiXG4iIFwK
KyAgICIgICAgZnVuY3Rpb24gZXhlY3V0b3IocmVzb2x2ZSwgcmVqZWN0KVxuIiBcCisgICAiICAg
IHtcbiIgXAorICAgIiAgICAgICAgaWYgKHByb21pc2VDYXBhYmlsaXR5LkByZXNvbHZlICE9PSB1
bmRlZmluZWQpXG4iIFwKKyAgICIgICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcInJl
c29sdmUgZnVuY3Rpb24gaXMgYWxyZWFkeSBzZXRcIik7XG4iIFwKKyAgICIgICAgICAgIGlmIChw
cm9taXNlQ2FwYWJpbGl0eS5AcmVqZWN0ICE9PSB1bmRlZmluZWQpXG4iIFwKKyAgICIgICAgICAg
ICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcInJlamVjdCBmdW5jdGlvbiBpcyBhbHJlYWR5IHNl
dFwiKTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgICAgICBwcm9taXNlQ2FwYWJpbGl0eS5AcmVz
b2x2ZSA9IHJlc29sdmU7XG4iIFwKKyAgICIgICAgICAgIHByb21pc2VDYXBhYmlsaXR5LkByZWpl
Y3QgPSByZWplY3Q7XG4iIFwKKyAgICIgICAgfVxuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdmFy
IHByb21pc2UgPSBuZXcgY29uc3RydWN0b3IoZXhlY3V0b3IpO1xuIiBcCisgICAiXG4iIFwKKyAg
ICIgICAgaWYgKHR5cGVvZiBwcm9taXNlQ2FwYWJpbGl0eS5AcmVzb2x2ZSAhPT0gXCJmdW5jdGlv
blwiKVxuIiBcCisgICAiICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcImV4ZWN1dG9yIGRp
ZCBub3QgdGFrZSBhIHJlc29sdmUgZnVuY3Rpb25cIik7XG4iIFwKKyAgICJcbiIgXAorICAgIiAg
ICBpZiAodHlwZW9mIHByb21pc2VDYXBhYmlsaXR5LkByZWplY3QgIT09IFwiZnVuY3Rpb25cIilc
biIgXAorICAgIiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJleGVjdXRvciBkaWQgbm90
IHRha2UgYSByZWplY3QgZnVuY3Rpb25cIik7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICBwcm9t
aXNlQ2FwYWJpbGl0eS5AcHJvbWlzZSA9IHByb21pc2U7XG4iIFwKKyAgICJcbiIgXAorICAgIiAg
ICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHk7XG4iIFwKKyAgICJ9KVxuIiBcCis7CisKK2NvbnN0
IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9taXNlVHJpZ2dlclByb21pc2VS
ZWFjdGlvbnNDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fu
bm90Q29uc3RydWN0OworY29uc3QgaW50IHNfb3BlcmF0aW9uc1Byb21pc2VUcmlnZ2VyUHJvbWlz
ZVJlYWN0aW9uc0NvZGVMZW5ndGggPSAyNjk7Citjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQcm9t
aXNlVHJpZ2dlclByb21pc2VSZWFjdGlvbnNDb2RlID0KKyAgICIoZnVuY3Rpb24gKHJlYWN0aW9u
cywgYXJndW1lbnQpXG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4i
IFwKKyAgICJcbiIgXAorICAgIiAgICBmb3IgKHZhciBpbmRleCA9IDAsIGxlbmd0aCA9IHJlYWN0
aW9ucy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyArK2luZGV4KVxuIiBcCisgICAiICAgICAgICBA
ZW5xdWV1ZUpvYihAcHJvbWlzZVJlYWN0aW9uSm9iLCBbcmVhY3Rpb25zW2luZGV4XSwgYXJndW1l
bnRdKTtcbiIgXAorICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
IHNfb3BlcmF0aW9uc1Byb21pc2VSZWplY3RQcm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBK
U0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX29wZXJh
dGlvbnNQcm9taXNlUmVqZWN0UHJvbWlzZUNvZGVMZW5ndGggPSA1NDE7Citjb25zdCBjaGFyKiBz
X29wZXJhdGlvbnNQcm9taXNlUmVqZWN0UHJvbWlzZUNvZGUgPQorICAgIihmdW5jdGlvbiAocHJv
bWlzZSwgcmVhc29uKVxuIiBcCisgICAie1xuIiBcCisgICAiICAgIFwidXNlIHN0cmljdFwiO1xu
IiBcCisgICAiXG4iIFwKKyAgICIgICAgdmFyIHJlYWN0aW9ucyA9IHByb21pc2UuQHByb21pc2VS
ZWplY3RSZWFjdGlvbnM7XG4iIFwKKyAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlc3VsdCA9IHJl
YXNvbjtcbiIgXAorICAgIiAgICBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucyA9IHVu
ZGVmaW5lZDtcbiIgXAorICAgIiAgICBwcm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25zID0g
dW5kZWZpbmVkO1xuIiBcCisgICAiICAgIHByb21pc2UuQHByb21pc2VTdGF0ZSA9IEBwcm9taXNl
UmVqZWN0ZWQ7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICBASW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLnByb21pc2VSZWplY3RlZChwcm9taXNlLCByZWFzb24sIHJlYWN0aW9ucyk7XG4iIFwKKyAg
ICJcbiIgXAorICAgIiAgICBAdHJpZ2dlclByb21pc2VSZWFjdGlvbnMocmVhY3Rpb25zLCByZWFz
b24pO1xuIiBcCisgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkg
c19vcGVyYXRpb25zUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBK
U0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX29wZXJh
dGlvbnNQcm9taXNlRnVsZmlsbFByb21pc2VDb2RlTGVuZ3RoID0gNTQwOworY29uc3QgY2hhciog
c19vcGVyYXRpb25zUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZSA9CisgICAiKGZ1bmN0aW9uIChw
cm9taXNlLCB2YWx1ZSlcbiIgXAorICAgIntcbiIgXAorICAgIiAgICBcInVzZSBzdHJpY3RcIjtc
biIgXAorICAgIlxuIiBcCisgICAiICAgIHZhciByZWFjdGlvbnMgPSBwcm9taXNlLkBwcm9taXNl
RnVsZmlsbFJlYWN0aW9ucztcbiIgXAorICAgIiAgICBwcm9taXNlLkBwcm9taXNlUmVzdWx0ID0g
dmFsdWU7XG4iIFwKKyAgICIgICAgcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlvbnMgPSB1
bmRlZmluZWQ7XG4iIFwKKyAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucyA9
IHVuZGVmaW5lZDtcbiIgXAorICAgIiAgICBwcm9taXNlLkBwcm9taXNlU3RhdGUgPSBAcHJvbWlz
ZUZ1bGZpbGxlZDtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIEBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24ucHJvbWlzZUZ1bGZpbGxlZChwcm9taXNlLCB2YWx1ZSwgcmVhY3Rpb25zKTtcbiIgXAor
ICAgIlxuIiBcCisgICAiICAgIEB0cmlnZ2VyUHJvbWlzZVJlYWN0aW9ucyhyZWFjdGlvbnMsIHZh
bHVlKTtcbiIgXAorICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
IHNfb3BlcmF0aW9uc1Byb21pc2VDcmVhdGVSZXNvbHZpbmdGdW5jdGlvbnNDb2RlQ29uc3RydWN0
QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3Qg
aW50IHNfb3BlcmF0aW9uc1Byb21pc2VDcmVhdGVSZXNvbHZpbmdGdW5jdGlvbnNDb2RlTGVuZ3Ro
ID0gMTQ2ODsKK2NvbnN0IGNoYXIqIHNfb3BlcmF0aW9uc1Byb21pc2VDcmVhdGVSZXNvbHZpbmdG
dW5jdGlvbnNDb2RlID0KKyAgICIoZnVuY3Rpb24gKHByb21pc2UpXG4iIFwKKyAgICJ7XG4iIFwK
KyAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICB2YXIgYWxy
ZWFkeVJlc29sdmVkID0gZmFsc2U7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICB2YXIgcmVzb2x2
ZSA9IGZ1bmN0aW9uIChyZXNvbHV0aW9uKSB7XG4iIFwKKyAgICIgICAgICAgIGlmIChhbHJlYWR5
UmVzb2x2ZWQpXG4iIFwKKyAgICIgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuIiBcCisg
ICAiICAgICAgICBhbHJlYWR5UmVzb2x2ZWQgPSB0cnVlO1xuIiBcCisgICAiXG4iIFwKKyAgICIg
ICAgICAgIGlmIChyZXNvbHV0aW9uID09PSBwcm9taXNlKVxuIiBcCisgICAiICAgICAgICAgICAg
cmV0dXJuIEByZWplY3RQcm9taXNlKHByb21pc2UsIG5ldyBAVHlwZUVycm9yKFwiUmVzb2x2ZSBh
IHByb21pc2Ugd2l0aCBpdHNlbGZcIikpO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgICAgIGlm
ICghQGlzT2JqZWN0KHJlc29sdXRpb24pKVxuIiBcCisgICAiICAgICAgICAgICAgcmV0dXJuIEBm
dWxmaWxsUHJvbWlzZShwcm9taXNlLCByZXNvbHV0aW9uKTtcbiIgXAorICAgIlxuIiBcCisgICAi
ICAgICAgICB2YXIgdGhlbjtcbiIgXAorICAgIiAgICAgICAgdHJ5IHtcbiIgXAorICAgIiAgICAg
ICAgICAgIHRoZW4gPSByZXNvbHV0aW9uLnRoZW47XG4iIFwKKyAgICIgICAgICAgIH0gY2F0Y2gg
KGVycm9yKSB7XG4iIFwKKyAgICIgICAgICAgICAgICByZXR1cm4gQHJlamVjdFByb21pc2UocHJv
bWlzZSwgZXJyb3IpO1xuIiBcCisgICAiICAgICAgICB9XG4iIFwKKyAgICJcbiIgXAorICAgIiAg
ICAgICAgaWYgKHR5cGVvZiB0aGVuICE9PSAnZnVuY3Rpb24nKVxuIiBcCisgICAiICAgICAgICAg
ICAgcmV0dXJuIEBmdWxmaWxsUHJvbWlzZShwcm9taXNlLCByZXNvbHV0aW9uKTtcbiIgXAorICAg
IlxuIiBcCisgICAiICAgICAgICBAZW5xdWV1ZUpvYihAcHJvbWlzZVJlc29sdmVUaGVuYWJsZUpv
YiwgW3Byb21pc2UsIHJlc29sdXRpb24sIHRoZW5dKTtcbiIgXAorICAgIlxuIiBcCisgICAiICAg
ICAgICByZXR1cm4gdW5kZWZpbmVkO1xuIiBcCisgICAiICAgIH07XG4iIFwKKyAgICJcbiIgXAor
ICAgIiAgICB2YXIgcmVqZWN0ID0gZnVuY3Rpb24gKHJlYXNvbikge1xuIiBcCisgICAiICAgICAg
ICBpZiAoYWxyZWFkeVJlc29sdmVkKVxuIiBcCisgICAiICAgICAgICAgICAgcmV0dXJuIHVuZGVm
aW5lZDtcbiIgXAorICAgIiAgICAgICAgYWxyZWFkeVJlc29sdmVkID0gdHJ1ZTtcbiIgXAorICAg
IlxuIiBcCisgICAiICAgICAgICByZXR1cm4gQHJlamVjdFByb21pc2UocHJvbWlzZSwgcmVhc29u
KTtcbiIgXAorICAgIiAgICB9O1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgcmV0dXJuIHtcbiIg
XAorICAgIiAgICAgICAgQHJlc29sdmU6IHJlc29sdmUsXG4iIFwKKyAgICIgICAgICAgIEByZWpl
Y3Q6IHJlamVjdFxuIiBcCisgICAiICAgIH07XG4iIFwKKyAgICJ9KVxuIiBcCis7CisKK2NvbnN0
IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJlYWN0aW9u
Sm9iQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENv
bnN0cnVjdDsKK2NvbnN0IGludCBzX29wZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJlYWN0aW9uSm9i
Q29kZUxlbmd0aCA9IDQ5MzsKK2NvbnN0IGNoYXIqIHNfb3BlcmF0aW9uc1Byb21pc2VQcm9taXNl
UmVhY3Rpb25Kb2JDb2RlID0KKyAgICIoZnVuY3Rpb24gKHJlYWN0aW9uLCBhcmd1bWVudClcbiIg
XAorICAgIntcbiIgXAorICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBcCisg
ICAiICAgIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IHJlYWN0aW9uLkBjYXBhYmlsaXRpZXM7XG4i
IFwKKyAgICJcbiIgXAorICAgIiAgICB2YXIgcmVzdWx0O1xuIiBcCisgICAiICAgIHRyeSB7XG4i
IFwKKyAgICIgICAgICAgIHJlc3VsdCA9IHJlYWN0aW9uLkBoYW5kbGVyLkBjYWxsKHVuZGVmaW5l
ZCwgYXJndW1lbnQpO1xuIiBcCisgICAiICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4iIFwKKyAgICIg
ICAgICAgIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5AcmVqZWN0LkBjYWxsKHVuZGVmaW5lZCwg
ZXJyb3IpO1xuIiBcCisgICAiICAgIH1cbiIgXAorICAgIlxuIiBcCisgICAiICAgIHJldHVybiBw
cm9taXNlQ2FwYWJpbGl0eS5AcmVzb2x2ZS5AY2FsbCh1bmRlZmluZWQsIHJlc3VsdCk7XG4iIFwK
KyAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJhdGlv
bnNQcm9taXNlUHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYkNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0g
SlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19vcGVy
YXRpb25zUHJvbWlzZVByb21pc2VSZXNvbHZlVGhlbmFibGVKb2JDb2RlTGVuZ3RoID0gNDUzOwor
Y29uc3QgY2hhciogc19vcGVyYXRpb25zUHJvbWlzZVByb21pc2VSZXNvbHZlVGhlbmFibGVKb2JD
b2RlID0KKyAgICIoZnVuY3Rpb24gKHByb21pc2VUb1Jlc29sdmUsIHRoZW5hYmxlLCB0aGVuKVxu
IiBcCisgICAie1xuIiBcCisgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwK
KyAgICIgICAgdmFyIHJlc29sdmluZ0Z1bmN0aW9ucyA9IEBjcmVhdGVSZXNvbHZpbmdGdW5jdGlv
bnMocHJvbWlzZVRvUmVzb2x2ZSk7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICB0cnkge1xuIiBc
CisgICAiICAgICAgICByZXR1cm4gdGhlbi5AY2FsbCh0aGVuYWJsZSwgcmVzb2x2aW5nRnVuY3Rp
b25zLkByZXNvbHZlLCByZXNvbHZpbmdGdW5jdGlvbnMuQHJlamVjdCk7XG4iIFwKKyAgICIgICAg
fSBjYXRjaCAoZXJyb3IpIHtcbiIgXAorICAgIiAgICAgICAgcmV0dXJuIHJlc29sdmluZ0Z1bmN0
aW9ucy5AcmVqZWN0LkBjYWxsKHVuZGVmaW5lZCwgZXJyb3IpO1xuIiBcCisgICAiICAgIH1cbiIg
XAorICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfb3BlcmF0
aW9uc1Byb21pc2VJbml0aWFsaXplUHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpD
b25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19vcGVyYXRpb25z
UHJvbWlzZUluaXRpYWxpemVQcm9taXNlQ29kZUxlbmd0aCA9IDczMTsKK2NvbnN0IGNoYXIqIHNf
b3BlcmF0aW9uc1Byb21pc2VJbml0aWFsaXplUHJvbWlzZUNvZGUgPQorICAgIihmdW5jdGlvbiAo
ZXhlY3V0b3IpXG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwK
KyAgICJcbiIgXAorICAgIiAgICBpZiAodHlwZW9mIGV4ZWN1dG9yICE9PSAnZnVuY3Rpb24nKVxu
IiBcCisgICAiICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcIlByb21pc2UgY29uc3RydWN0
b3IgdGFrZXMgYSBmdW5jdGlvbiBhcmd1bWVudFwiKTtcbiIgXAorICAgIlxuIiBcCisgICAiICAg
IHRoaXMuQHByb21pc2VTdGF0ZSA9IEBwcm9taXNlUGVuZGluZztcbiIgXAorICAgIiAgICB0aGlz
LkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucyA9IFtdO1xuIiBcCisgICAiICAgIHRoaXMuQHByb21p
c2VSZWplY3RSZWFjdGlvbnMgPSBbXTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHZhciByZXNv
bHZpbmdGdW5jdGlvbnMgPSBAY3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zKHRoaXMpO1xuIiBcCisg
ICAiICAgIHRyeSB7XG4iIFwKKyAgICIgICAgICAgIGV4ZWN1dG9yKHJlc29sdmluZ0Z1bmN0aW9u
cy5AcmVzb2x2ZSwgcmVzb2x2aW5nRnVuY3Rpb25zLkByZWplY3QpO1xuIiBcCisgICAiICAgIH0g
Y2F0Y2ggKGVycm9yKSB7XG4iIFwKKyAgICIgICAgICAgIHJldHVybiByZXNvbHZpbmdGdW5jdGlv
bnMuQHJlamVjdC5AY2FsbCh1bmRlZmluZWQsIGVycm9yKTtcbiIgXAorICAgIiAgICB9XG4iIFwK
KyAgICJcbiIgXAorICAgIiAgICByZXR1cm4gdGhpcztcbiIgXAorICAgIn0pXG4iIFwKKzsKKwor
CisjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1l
LCBhcmd1bWVudENvdW50KSBcCitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dl
bmVyYXRvcihKU0M6OlZNJiB2bSkgXAore1wKKyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFi
bGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRh
YmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyB9CitKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUo
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRP
UgorCisKK30gLy8gbmFtZXNwYWNlIEpTQworIyMjIEVuZCBGaWxlOiBKU0NCdWlsdGlucy5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5z
L2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29y
ZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVhMjFkNDY1
Njg2NmZlOGY3MzdmMTgzMDdiMTI2MjRhNzQ0ODJhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUt
R3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0wLDAgKzEsMzE4IEBACisjIyMg
QmVnaW4gRmlsZTogR3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5oCisvKgorICogQ29weXJpZ2h0IChj
KSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisK
Ky8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQg
ZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lm
bmRlZiBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zX2gKKyNkZWZpbmUgR3VhcmRlZEJ1aWx0aW5CdWls
dGluc19oCisKKyNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4KKworbmFtZXNwYWNl
IEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworLyogR3VhcmRlZEJ1aWx0aW4gKi8KK2V4dGVybiBjb25zdCBjaGFyKiBzX2d1YXJkZWRC
dWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGU7CitleHRlcm4gY29uc3QgaW50IHNfZ3Vh
cmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUxlbmd0aDsKK2V4dGVybiBjb25z
dCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1M
b2NrZWRDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX2d1YXJkZWRC
dWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2d1YXJk
ZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpT
Qzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1D
b2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX2d1YXJkZWRCdWlsdGlu
UHJvbWlzZUludm9rZU9yTm9vcENvZGU7CitleHRlcm4gY29uc3QgaW50IHNfZ3VhcmRlZEJ1aWx0
aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0
cnVjdEFiaWxpdHkgc19ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlQ29uc3Ry
dWN0QWJpbGl0eTsKKworI2RlZmluZSBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJ
TFRJTl9EQVRBKG1hY3JvKSBcCisgICAgbWFjcm8oaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCwgZ3Vh
cmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkLCAxKSBcCisgICAgbWFjcm8oY2FuY2Vs
UmVhZGFibGVTdHJlYW0sIGd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW0sIDIpIFwK
KyAgICBtYWNybyhwcm9taXNlSW52b2tlT3JOb29wLCBndWFyZGVkQnVpbHRpblByb21pc2VJbnZv
a2VPck5vb3AsIDMpIFwKKworI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fR1VBUkRFREJVSUxUSU5f
SVNSRUFEQUJMRVNUUkVBTUxPQ0tFRCAxCisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9HVUFSREVE
QlVJTFRJTl9DQU5DRUxSRUFEQUJMRVNUUkVBTSAxCisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9H
VUFSREVEQlVJTFRJTl9QUk9NSVNFSU5WT0tFT1JOT09QIDEKKworI2RlZmluZSBXRUJDT1JFX0ZP
UkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKG1hY3JvKSBcCisgICAgbWFjcm8oZ3Vh
cmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZSwgaXNSZWFkYWJsZVN0cmVhbUxv
Y2tlZCwgc19ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlTGVuZ3RoKSBc
CisgICAgbWFjcm8oZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGUsIGNhbmNl
bFJlYWRhYmxlU3RyZWFtLCBzX2d1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2Rl
TGVuZ3RoKSBcCisgICAgbWFjcm8oZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29k
ZSwgcHJvbWlzZUludm9rZU9yTm9vcCwgc19ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5v
b3BDb2RlTGVuZ3RoKSBcCisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElO
X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXAorICAgIG1hY3JvKGNhbmNlbFJlYWRhYmxl
U3RyZWFtKSBcCisgICAgbWFjcm8oaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCkgXAorICAgIG1hY3Jv
KHByb21pc2VJbnZva2VPck5vb3ApIFwKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJB
VE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKKyAgICBKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisKK1dFQkNP
UkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dF
TkVSQVRPUikKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgV0VC
Q09SRV9CVUlMVElOX0dVQVJERURCVUlMVElOX0VYSVNUUyhvYmplY3QsIGZ1bmMpIGRlZmluZWQg
V0VCQ09SRV9CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNfaAorCisjIyMgRW5k
IEZpbGU6IEd1YXJkZWRCdWlsdGluQnVpbHRpbnMuaAorCisjIyMgQmVnaW4gRmlsZTogR3VhcmRl
ZEJ1aWx0aW5CdWlsdGlucy5jcHAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ2Fub24gSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQg
VEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQg
ZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiR3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5oIgorCisjaW5jbHVkZSAiV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXhlY3V0YWJsZS5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ2Vs
bElubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaD4KKyNpbmNs
dWRlIDxydW50aW1lL1ZNLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgSlNDOjpD
b25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29k
ZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVj
dDsKK2NvbnN0IGludCBzX2d1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVM
ZW5ndGggPSA3MTsKK2NvbnN0IGNoYXIqIHNfZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFt
TG9ja2VkQ29kZSA9CisgICAgIihmdW5jdGlvbiAoc3RyZWFtKVxuIiBcCisgICAgIntcbiIgXAor
ICAgICIgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgcmV0dXJu
ICEhc3RyZWFtLkByZWFkZXI7XG4iIFwKKyAgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNv
bnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUNv
bnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsK
K2NvbnN0IGludCBzX2d1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlTGVuZ3Ro
ID0gNDAyOworY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFt
Q29kZSA9CisgICAgIihmdW5jdGlvbiAoc3RyZWFtLCByZWFzb24pXG4iIFwKKyAgICAie1xuIiBc
CisgICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgaWYg
KHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUNsb3NlZClcbiIgXAorICAgICIgICAg
ICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiIgXAorICAgICIgICAgaWYgKHN0cmVhbS5A
c3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpXG4iIFwKKyAgICAiICAgICAgICByZXR1
cm4gUHJvbWlzZS5yZWplY3Qoc3RyZWFtLkBzdG9yZWRFcnJvcik7XG4iIFwKKyAgICAiICAgIHN0
cmVhbS5AcXVldWUgPSBbXTtcbiIgXAorICAgICIgICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0
cmVhbShzdHJlYW0pO1xuIiBcCisgICAgIiAgICByZXR1cm4gQHByb21pc2VJbnZva2VPck5vb3Ao
c3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCBcImNhbmNlbFwiLCBbcmVhc29uXSkudGhlbihmdW5j
dGlvbigpIHsgfSk7XG4iIFwKKyAgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVj
dEFiaWxpdHkgc19ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlQ29uc3RydWN0
QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3Qg
aW50IHNfZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUxlbmd0aCA9IDMzODsK
K2NvbnN0IGNoYXIqIHNfZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZSA9Cisg
ICAgIihmdW5jdGlvbiAob2JqZWN0LCBrZXksIGFyZ3MpXG4iIFwKKyAgICAie1xuIiBcCisgICAg
IiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdHJ5IHtcbiIg
XAorICAgICIgICAgICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTtcbiIgXAorICAgICIgICAg
ICAgIGlmICh0eXBlb2YgbWV0aG9kID09PSBcInVuZGVmaW5lZFwiKVxuIiBcCisgICAgIiAgICAg
ICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiIgXAorICAgICIgICAgICAgIHZhciBy
ZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9iamVjdCwgYXJncyk7XG4iIFwKKyAgICAiICAgICAgICBy
ZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XG4iIFwKKyAgICAiICAgIH1cbiIgXAorICAg
ICIgICAgY2F0Y2goZXJyb3IpIHtcbiIgXAorICAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJl
amVjdChlcnJvcik7XG4iIFwKKyAgICAiICAgIH1cbiIgXAorICAgICJ9KVxuIiBcCis7CisKKwor
I2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwg
YXJndW1lbnRDb3VudCkgXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5l
cmF0b3IoSlNDOjpWTSYgdm0pIFwKK3tcCisgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEg
PSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcCisgICAgcmV0
dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5z
KCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1
bmN0aW9ucygpLmd1YXJkZWRCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCkpOyBc
Cit9CitXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9C
VUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjIyMgRW5kIEZpbGU6IEd1YXJkZWRCdWlsdGluQnVpbHRp
bnMuY3BwCisKKyMjIyBCZWdpbiBGaWxlOiBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlci5o
CisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0
b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRp
bnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUt
anMtYnVpbHRpbnMucHkKKworI2lmbmRlZiBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9o
CisjZGVmaW5lIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyX2gKKworI2luY2x1ZGUgIkd1
YXJkZWRCdWlsdGluQnVpbHRpbnMuaCIKKyNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMu
aD4KKyNpbmNsdWRlIDxieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgorI2lu
Y2x1ZGUgPHJ1bnRpbWUvSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlv
bi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEd1YXJkZWRCdWlsdGluQnVpbHRp
bnNXcmFwcGVyIDogcHJpdmF0ZSBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIoSlNDOjpWTSogdm0pCisgICAg
ICAgIDogbV92bSgqdm0pCisgICAgICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9C
VUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElaRV9CVUlMVElOX05BTUVTKQorI2RlZmluZSBJ
TklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5n
dGgpICwgbV8jI25hbWUjI1NvdXJjZShKU0M6Om1ha2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRl
RnJvbUxpdGVyYWwoc18jI25hbWUsIGxlbmd0aCkpKQorICAgICAgICBXRUJDT1JFX0ZPUkVBQ0hf
R1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVN
QkVSUykKKyN1bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKKyAgICB7Cisg
ICAgfQorCisjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9u
TmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFt
ZSMjRXhlY3V0YWJsZSgpOyBcCisgICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNTb3Vy
Y2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CisgICAgV0VCQ09SRV9GT1JF
QUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxF
UykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUworCisgICAgV0VCQ09SRV9GT1JF
QUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5f
SURFTlRJRklFUl9BQ0NFU1NPUikKKworICAgIHZvaWQgZXhwb3J0TmFtZXMoKTsKKworcHJpdmF0
ZToKKyAgICBKU0M6OlZNJiBtX3ZtOworCisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlM
VElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fTkFNRVMpCisKKyNkZWZp
bmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVu
Z3RoKSBcCisgICAgSlNDOjpTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7XAorICAgIEpTQzo6
V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJs
ZTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKERFQ0xB
UkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNF
X01FTUJFUlMKKworfTsKKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1l
LCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAoraW5saW5lIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyOjpuYW1lIyNFeGVjdXRhYmxl
KCkgXAore1wKKyAgICBpZiAoIW1fIyNuYW1lIyNFeGVjdXRhYmxlKVwKKyAgICAgICAgbV8jI25h
bWUjI0V4ZWN1dGFibGUgPSBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZT4oSlNDOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShtX3ZtLCBtXyMjbmFtZSMjU291cmNlLCBm
dW5jdGlvbk5hbWUjI1B1YmxpY05hbWUoKSwgc18jI25hbWUjI0NvbnN0cnVjdEFiaWxpdHkpLCB0
aGlzLCAmbV8jI25hbWUjI0V4ZWN1dGFibGUpO1wKKyAgICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1
dGFibGUuZ2V0KCk7XAorfQorV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5f
Q09ERShERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9F
WEVDVVRBQkxFUworCitpbmxpbmUgdm9pZCBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcjo6
ZXhwb3J0TmFtZXMoKQoreworI2RlZmluZSBFWFBPUlRfRlVOQ1RJT05fTkFNRShuYW1lKSBtX3Zt
LnByb3BlcnR5TmFtZXMtPmFwcGVuZEV4dGVybmFsTmFtZShuYW1lIyNQdWJsaWNOYW1lKCksIG5h
bWUjI1ByaXZhdGVOYW1lKCkpOworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9C
VUlMVElOX0ZVTkNUSU9OX05BTUUoRVhQT1JUX0ZVTkNUSU9OX05BTUUpCisjdW5kZWYgRVhQT1JU
X0ZVTkNUSU9OX05BTUUKK30KKworY2xhc3MgR3VhcmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25z
IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnMo
SlNDOjpWTSYgdm0pIDogbV92bSh2bSkgeyB9CisKKyAgICB2b2lkIGluaXQoSlNDOjpKU0dsb2Jh
bE9iamVjdCYpOworICAgIHZvaWQgdmlzaXQoSlNDOjpTbG90VmlzaXRvciYpOworCitwdWJsaWM6
CisgICAgSlNDOjpWTSYgbV92bTsKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01F
TUJFUlMoZnVuY3Rpb25OYW1lKSBcCisgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU0Z1bmN0
aW9uPiBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbjsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VB
UkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0Vf
TUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKK307CisKK2lu
bGluZSB2b2lkIEd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9uczo6aW5pdChKU0M6OkpTR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTihjb2Rl
TmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXAorICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0
aW9uLnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0
aW5GdW5jdGlvbihtX3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0
KSk7CisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShFWFBP
UlRfRlVOQ1RJT04pCisjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OCit9CisKK2lubGluZSB2b2lkIEd1
YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9uczo6dmlzaXQoSlNDOjpTbG90VmlzaXRvciYgdmlz
aXRvcikKK3sKKyNkZWZpbmUgVklTSVRfRlVOQ1RJT04obmFtZSkgdmlzaXRvci5hcHBlbmQoJm1f
IyNuYW1lIyNGdW5jdGlvbik7CisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JV
SUxUSU5fRlVOQ1RJT05fTkFNRShWSVNJVF9GVU5DVElPTikKKyN1bmRlZiBWSVNJVF9GVU5DVElP
TgorfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEd1YXJkZWRCdWls
dGluQnVpbHRpbnNXcmFwcGVyX2gKKworIyMjIEVuZCBGaWxlOiBHdWFyZGVkQnVpbHRpbkJ1aWx0
aW5zV3JhcHBlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2Vw
YXJhdGUuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpz
LXJlc3VsdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zNDhhMWNmYzQ0ODRhZWYzZjc2MGU4Nzk0NjZlZmJhYjk2NmU1
MGY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFy
YXRlLmpzLXJlc3VsdApAQCAtMCwwICsxLDMxOCBAQAorIyMjIEJlZ2luIEZpbGU6IEd1YXJkZWRJ
bnRlcm5hbEJ1aWx0aW5CdWlsdGlucy5oCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IENhbm9u
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBF
RElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2Ny
aXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lmbmRlZiBHdWFyZGVk
SW50ZXJuYWxCdWlsdGluQnVpbHRpbnNfaAorI2RlZmluZSBHdWFyZGVkSW50ZXJuYWxCdWlsdGlu
QnVpbHRpbnNfaAorCisjaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+CisKK25hbWVz
cGFjZSBKU0MgeworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOworfQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKKy8qIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4gKi8KK2V4dGVybiBjb25zdCBjaGFy
KiBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZTsKK2V4
dGVybiBjb25zdCBpbnQgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxv
Y2tlZENvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3Vh
cmRlZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlQ29uc3RydWN0QWJp
bGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxS
ZWFkYWJsZVN0cmVhbUNvZGU7CitleHRlcm4gY29uc3QgaW50IHNfZ3VhcmRlZEludGVybmFsQnVp
bHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNv
bnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJl
YW1Db2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX2d1YXJkZWRJbnRl
cm5hbEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19n
dWFyZGVkSW50ZXJuYWxCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVMZW5ndGg7CitleHRl
cm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpblBy
b21pc2VJbnZva2VPck5vb3BDb2RlQ29uc3RydWN0QWJpbGl0eTsKKworI2RlZmluZSBXRUJDT1JF
X0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0RBVEEobWFjcm8pIFwKKyAg
ICBtYWNybyhpc1JlYWRhYmxlU3RyZWFtTG9ja2VkLCBndWFyZGVkSW50ZXJuYWxCdWlsdGluSXNS
ZWFkYWJsZVN0cmVhbUxvY2tlZCwgMSkgXAorICAgIG1hY3JvKGNhbmNlbFJlYWRhYmxlU3RyZWFt
LCBndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW0sIDIpIFwKKyAgICBt
YWNybyhwcm9taXNlSW52b2tlT3JOb29wLCBndWFyZGVkSW50ZXJuYWxCdWlsdGluUHJvbWlzZUlu
dm9rZU9yTm9vcCwgMykgXAorCisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9HVUFSREVESU5URVJO
QUxCVUlMVElOX0lTUkVBREFCTEVTVFJFQU1MT0NLRUQgMQorI2RlZmluZSBXRUJDT1JFX0JVSUxU
SU5fR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9DQU5DRUxSRUFEQUJMRVNUUkVBTSAxCisjZGVmaW5l
IFdFQkNPUkVfQlVJTFRJTl9HVUFSREVESU5URVJOQUxCVUlMVElOX1BST01JU0VJTlZPS0VPUk5P
T1AgMQorCisjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JV
SUxUSU5fQ09ERShtYWNybykgXAorICAgIG1hY3JvKGd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1Jl
YWRhYmxlU3RyZWFtTG9ja2VkQ29kZSwgaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCwgc19ndWFyZGVk
SW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5ndGgpIFwKKyAgICBt
YWNybyhndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlLCBjYW5j
ZWxSZWFkYWJsZVN0cmVhbSwgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVT
dHJlYW1Db2RlTGVuZ3RoKSBcCisgICAgbWFjcm8oZ3VhcmRlZEludGVybmFsQnVpbHRpblByb21p
c2VJbnZva2VPck5vb3BDb2RlLCBwcm9taXNlSW52b2tlT3JOb29wLCBzX2d1YXJkZWRJbnRlcm5h
bEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUxlbmd0aCkgXAorCisjZGVmaW5lIFdFQkNP
UkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRSht
YWNybykgXAorICAgIG1hY3JvKGNhbmNlbFJlYWRhYmxlU3RyZWFtKSBcCisgICAgbWFjcm8oaXNS
ZWFkYWJsZVN0cmVhbUxvY2tlZCkgXAorICAgIG1hY3JvKHByb21pc2VJbnZva2VPck5vb3ApIFwK
KworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5h
bWUsIGFyZ3VtZW50Q291bnQpIFwKKyAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5h
bWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisKK1dFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJO
QUxCVUlMVElOX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVm
IERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKKworI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fR1VB
UkRFRElOVEVSTkFMQlVJTFRJTl9FWElTVFMob2JqZWN0LCBmdW5jKSBkZWZpbmVkIFdFQkNPUkVf
QlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVuYworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNfaAorCisjIyMgRW5k
IEZpbGU6IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucy5oCisKKyMjIyBCZWdpbiBGaWxl
OiBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnMuY3BwCisvKgorICogQ29weXJpZ2h0IChj
KSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisK
Ky8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQg
ZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlu
cy5oIgorCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgPHJ1bnRp
bWUvRXhlY3V0YWJsZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4K
KyNpbmNsdWRlIDxydW50aW1lL0pTQ2VsbElubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL1N0
cnVjdHVyZUlubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL1ZNLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEludGVybmFs
QnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6
Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfZ3VhcmRlZElu
dGVybmFsQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlTGVuZ3RoID0gNzE7Citjb25z
dCBjaGFyKiBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29k
ZSA9CisgICAgIihmdW5jdGlvbiAoc3RyZWFtKVxuIiBcCisgICAgIntcbiIgXAorICAgICIgICBc
InVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgcmV0dXJuICEhc3RyZWFt
LkByZWFkZXI7XG4iIFwKKyAgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFi
aWxpdHkgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlQ29u
c3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0Owor
Y29uc3QgaW50IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29k
ZUxlbmd0aCA9IDQwMjsKK2NvbnN0IGNoYXIqIHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbkNhbmNl
bFJlYWRhYmxlU3RyZWFtQ29kZSA9CisgICAgIihmdW5jdGlvbiAoc3RyZWFtLCByZWFzb24pXG4i
IFwKKyAgICAie1xuIiBcCisgICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIg
XAorICAgICIgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUNsb3NlZClc
biIgXAorICAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiIgXAorICAgICIg
ICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpXG4iIFwKKyAg
ICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoc3RyZWFtLkBzdG9yZWRFcnJvcik7XG4i
IFwKKyAgICAiICAgIHN0cmVhbS5AcXVldWUgPSBbXTtcbiIgXAorICAgICIgICAgQGZpbmlzaENs
b3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pO1xuIiBcCisgICAgIiAgICByZXR1cm4gQHByb21p
c2VJbnZva2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCBcImNhbmNlbFwiLCBbcmVh
c29uXSkudGhlbihmdW5jdGlvbigpIHsgfSk7XG4iIFwKKyAgICAifSlcbiIgXAorOworCitjb25z
dCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluUHJvbWlzZUlu
dm9rZU9yTm9vcENvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpD
YW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluUHJvbWlz
ZUludm9rZU9yTm9vcENvZGVMZW5ndGggPSAzMzg7Citjb25zdCBjaGFyKiBzX2d1YXJkZWRJbnRl
cm5hbEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZSA9CisgICAgIihmdW5jdGlvbiAob2Jq
ZWN0LCBrZXksIGFyZ3MpXG4iIFwKKyAgICAie1xuIiBcCisgICAgIiAgICBcInVzZSBzdHJpY3Rc
IjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdHJ5IHtcbiIgXAorICAgICIgICAgICAgIHZh
ciBtZXRob2QgPSBvYmplY3Rba2V5XTtcbiIgXAorICAgICIgICAgICAgIGlmICh0eXBlb2YgbWV0
aG9kID09PSBcInVuZGVmaW5lZFwiKVxuIiBcCisgICAgIiAgICAgICAgICAgIHJldHVybiBQcm9t
aXNlLnJlc29sdmUoKTtcbiIgXAorICAgICIgICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFw
cGx5KG9iamVjdCwgYXJncyk7XG4iIFwKKyAgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNv
bHZlKHJlc3VsdCk7XG4iIFwKKyAgICAiICAgIH1cbiIgXAorICAgICIgICAgY2F0Y2goZXJyb3Ip
IHtcbiIgXAorICAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4iIFwK
KyAgICAiICAgIH1cbiIgXAorICAgICJ9KVxuIiBcCis7CisKKworI2RlZmluZSBERUZJTkVfQlVJ
TFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAor
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0p
IFwKK3tcCisgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZN
Q2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcCisgICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1
aWx0aW5GdW5jdGlvbnMoKS5ndWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFt
ZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCku
Z3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpKTsgXAor
fQorV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKERF
RklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IK
KworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjIyMgRW5kIEZpbGU6IEd1YXJkZWRJbnRlcm5h
bEJ1aWx0aW5CdWlsdGlucy5jcHAKKworIyMjIEJlZ2luIEZpbGU6IEd1YXJkZWRJbnRlcm5hbEJ1
aWx0aW5CdWlsdGluc1dyYXBwZXIuaAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJ
VCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlw
dCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgR3VhcmRlZElu
dGVybmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9oCisjZGVmaW5lIEd1YXJkZWRJbnRlcm5hbEJ1
aWx0aW5CdWlsdGluc1dyYXBwZXJfaAorCisjaW5jbHVkZSAiR3VhcmRlZEludGVybmFsQnVpbHRp
bkJ1aWx0aW5zLmgiCisjaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+CisjaW5jbHVk
ZSA8Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaD4KKyNpbmNsdWRlIDxydW50
aW1lL0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNX
cmFwcGVyIDogcHJpdmF0ZSBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcihKU0M6OlZNKiB2bSkK
KyAgICAgICAgOiBtX3ZtKCp2bSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRF
Uk5BTEJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJWkVfQlVJTFRJTl9OQU1F
UykKKyNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0
aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UoSlNDOjptYWtlU291cmNlKFN0cmlu
Z0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpKSkKKyAgICAgICAgV0VC
Q09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKElOSVRJQUxJ
WkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5fU09V
UkNFX01FTUJFUlMKKyAgICB7CisgICAgfQorCisjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNV
VEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCisgICAgY29uc3QgSlNDOjpT
b3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNl
OyB9CisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9D
T0RFKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VY
RUNVVEFCTEVTCisKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9C
VUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1Ip
CisKKyAgICB2b2lkIGV4cG9ydE5hbWVzKCk7CisKK3ByaXZhdGU6CisgICAgSlNDOjpWTSYgbV92
bTsKKworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5f
RlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fTkFNRVMpCisKKyNkZWZpbmUgREVDTEFSRV9C
VUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAg
SlNDOjpTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7XAorICAgIEpTQzo6V2VhazxKU0M6OlVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKKyAgICBXRUJD
T1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9C
VUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVN
QkVSUworCit9OworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1
bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitpbmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0
YWJsZSgpIFwKK3tcCisgICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSlcCisgICAgICAgIG1f
IyNuYW1lIyNFeGVjdXRhYmxlID0gSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU+KEpTQzo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUobV92bSwgbV8jI25hbWUjI1NvdXJj
ZSwgZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCksIHNfIyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5
KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRhYmxlKTtcCisgICAgcmV0dXJuIG1fIyNuYW1lIyNF
eGVjdXRhYmxlLmdldCgpO1wKK30KK1dFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlM
VElOX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBERUZJ
TkVfQlVJTFRJTl9FWEVDVVRBQkxFUworCitpbmxpbmUgdm9pZCBHdWFyZGVkSW50ZXJuYWxCdWls
dGluQnVpbHRpbnNXcmFwcGVyOjpleHBvcnROYW1lcygpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5D
VElPTl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+YXBwZW5kRXh0ZXJuYWxOYW1lKG5h
bWUjI1B1YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUoKSk7CisgICAgV0VCQ09SRV9GT1JF
QUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKEVYUE9SVF9G
VU5DVElPTl9OQU1FKQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTl9OQU1FCit9CisKK2NsYXNzIEd1
YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zIHsKK3B1YmxpYzoKKyAgICBleHBs
aWNpdCBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbkZ1bmN0aW9ucyhKU0M6OlZNJiB2bSkg
OiBtX3ZtKHZtKSB7IH0KKworICAgIHZvaWQgaW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0Jik7Cisg
ICAgdm9pZCB2aXNpdChKU0M6OlNsb3RWaXNpdG9yJik7CisKK3B1YmxpYzoKKyAgICBKU0M6OlZN
JiBtX3ZtOworCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhmdW5jdGlv
bk5hbWUpIFwKKyAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5j
dGlvbk5hbWUjI0Z1bmN0aW9uOworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxC
VUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJF
UlMpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCit9OworCitpbmxpbmUg
dm9pZCBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbkZ1bmN0aW9uczo6aW5pdChKU0M6OkpT
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTihj
b2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXAorICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1
bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1
aWx0aW5GdW5jdGlvbihtX3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2Jq
ZWN0KSk7CisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJ
Tl9DT0RFKEVYUE9SVF9GVU5DVElPTikKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT04KK30KKworaW5s
aW5lIHZvaWQgR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnM6OnZpc2l0KEpT
Qzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisjZGVmaW5lIFZJU0lUX0ZVTkNUSU9OKG5hbWUp
IHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFtZSMjRnVuY3Rpb24pOworICAgIFdFQkNPUkVfRk9SRUFD
SF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShWSVNJVF9GVU5D
VElPTikKKyN1bmRlZiBWSVNJVF9GVU5DVElPTgorfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAor
CisjIyMgRW5kIEZpbGU6IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIuaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
ZXhwZWN0ZWQvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNv
cmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNThlZTJk
YWJiYWM5YzFhNmI2NTlhYjEzMmIwYTZjNDcxZTYzZTQ1OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNv
cmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTAsMCArMSwzMTggQEAK
KyMjIyBCZWdpbiBGaWxlOiBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnMuaAorLyoKKyAqIENvcHly
aWdodCAoYykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAK
KyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2Vu
ZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3Jp
cHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5
CisKKyNpZm5kZWYgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zX2gKKyNkZWZpbmUgVW5ndWFyZGVk
QnVpbHRpbkJ1aWx0aW5zX2gKKworI2luY2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oPgor
CituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK30KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisvKiBVbmd1YXJkZWRCdWlsdGluICovCitleHRlcm4gY29uc3QgY2hh
ciogc191bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGU7CitleHRlcm4g
Y29uc3QgaW50IHNfdW5ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlTGVu
Z3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3VuZ3VhcmRlZEJ1aWx0
aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29u
c3QgY2hhciogc191bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlOworZXh0
ZXJuIGNvbnN0IGludCBzX3VuZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGVM
ZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfdW5ndWFyZGVkQnVp
bHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29u
c3QgY2hhciogc191bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGU7CitleHRl
cm4gY29uc3QgaW50IHNfdW5ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlTGVu
Z3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3VuZ3VhcmRlZEJ1aWx0
aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUNvbnN0cnVjdEFiaWxpdHk7CisKKyNkZWZpbmUgV0VC
Q09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9EQVRBKG1hY3JvKSBcCisgICAg
bWFjcm8oaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCwgdW5ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVT
dHJlYW1Mb2NrZWQsIDEpIFwKKyAgICBtYWNybyhjYW5jZWxSZWFkYWJsZVN0cmVhbSwgdW5ndWFy
ZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtLCAyKSBcCisgICAgbWFjcm8ocHJvbWlzZUlu
dm9rZU9yTm9vcCwgdW5ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3AsIDMpIFwKKwor
I2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fVU5HVUFSREVEQlVJTFRJTl9JU1JFQURBQkxFU1RSRUFN
TE9DS0VEIDEKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX1VOR1VBUkRFREJVSUxUSU5fQ0FOQ0VM
UkVBREFCTEVTVFJFQU0gMQorI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fVU5HVUFSREVEQlVJTFRJ
Tl9QUk9NSVNFSU5WT0tFT1JOT09QIDEKKworI2RlZmluZSBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFS
REVEQlVJTFRJTl9CVUlMVElOX0NPREUobWFjcm8pIFwKKyAgICBtYWNybyh1bmd1YXJkZWRCdWls
dGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGUsIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIHNf
dW5ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlTGVuZ3RoKSBcCisgICAg
bWFjcm8odW5ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZSwgY2FuY2VsUmVh
ZGFibGVTdHJlYW0sIHNfdW5ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUxl
bmd0aCkgXAorICAgIG1hY3JvKHVuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29k
ZSwgcHJvbWlzZUludm9rZU9yTm9vcCwgc191bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9y
Tm9vcENvZGVMZW5ndGgpIFwKKworI2RlZmluZSBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJ
TFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFwKKyAgICBtYWNybyhjYW5jZWxSZWFk
YWJsZVN0cmVhbSkgXAorICAgIG1hY3JvKGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQpIFwKKyAgICBt
YWNybyhwcm9taXNlSW52b2tlT3JOb29wKSBcCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dF
TkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCisgICAgSlND
OjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCitX
RUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlM
VElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZp
bmUgV0VCQ09SRV9CVUlMVElOX1VOR1VBUkRFREJVSUxUSU5fRVhJU1RTKG9iamVjdCwgZnVuYykg
ZGVmaW5lZCBXRUJDT1JFX0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zX2gK
KworIyMjIEVuZCBGaWxlOiBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnMuaAorCisjIyMgQmVnaW4g
RmlsZTogVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmNwcAorLyoKKyAqIENvcHlyaWdodCAoYykg
MjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisv
LyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZy
b20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnMuaCIKKwor
I2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlIDxydW50aW1lL0V4ZWN1
dGFibGUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisjaW5jbHVk
ZSA8cnVudGltZS9KU0NlbGxJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9TdHJ1Y3R1cmVJ
bmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9WTS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3VuZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRh
YmxlU3RyZWFtTG9ja2VkQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxp
dHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX3VuZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRh
YmxlU3RyZWFtTG9ja2VkQ29kZUxlbmd0aCA9IDcxOworY29uc3QgY2hhciogc191bmd1YXJkZWRC
dWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGUgPQorICAgICIoZnVuY3Rpb24gKHN0cmVh
bSlcbiIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAi
XG4iIFwKKyAgICAiICAgIHJldHVybiAhIXN0cmVhbS5AcmVhZGVyO1xuIiBcCisgICAgIn0pXG4i
IFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfdW5ndWFyZGVkQnVpbHRpbkNh
bmNlbFJlYWRhYmxlU3RyZWFtQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFi
aWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX3VuZ3VhcmRlZEJ1aWx0aW5DYW5j
ZWxSZWFkYWJsZVN0cmVhbUNvZGVMZW5ndGggPSA0MDI7Citjb25zdCBjaGFyKiBzX3VuZ3VhcmRl
ZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGUgPQorICAgICIoZnVuY3Rpb24gKHN0cmVh
bSwgcmVhc29uKVxuIiBcCisgICAgIntcbiIgXAorICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4i
IFwKKyAgICAiXG4iIFwKKyAgICAiICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVT
dHJlYW1DbG9zZWQpXG4iIFwKKyAgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7
XG4iIFwKKyAgICAiICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1FcnJv
cmVkKVxuIiBcCisgICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHN0cmVhbS5Ac3Rv
cmVkRXJyb3IpO1xuIiBcCisgICAgIiAgICBzdHJlYW0uQHF1ZXVlID0gW107XG4iIFwKKyAgICAi
ICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTtcbiIgXAorICAgICIgICAg
cmV0dXJuIEBwcm9taXNlSW52b2tlT3JOb29wKHN0cmVhbS5AdW5kZXJseWluZ1NvdXJjZSwgXCJj
YW5jZWxcIiwgW3JlYXNvbl0pLnRoZW4oZnVuY3Rpb24oKSB7IH0pO1xuIiBcCisgICAgIn0pXG4i
IFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfdW5ndWFyZGVkQnVpbHRpblBy
b21pc2VJbnZva2VPck5vb3BDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJp
bGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfdW5ndWFyZGVkQnVpbHRpblByb21p
c2VJbnZva2VPck5vb3BDb2RlTGVuZ3RoID0gMzM4OworY29uc3QgY2hhciogc191bmd1YXJkZWRC
dWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGUgPQorICAgICIoZnVuY3Rpb24gKG9iamVjdCwg
a2V5LCBhcmdzKVxuIiBcCisgICAgIntcbiIgXAorICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4i
IFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHRyeSB7XG4iIFwKKyAgICAiICAgICAgICB2YXIgbWV0
aG9kID0gb2JqZWN0W2tleV07XG4iIFwKKyAgICAiICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCA9
PT0gXCJ1bmRlZmluZWRcIilcbiIgXAorICAgICIgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5y
ZXNvbHZlKCk7XG4iIFwKKyAgICAiICAgICAgICB2YXIgcmVzdWx0ID0gbWV0aG9kLkBhcHBseShv
YmplY3QsIGFyZ3MpO1xuIiBcCisgICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShy
ZXN1bHQpO1xuIiBcCisgICAgIiAgICB9XG4iIFwKKyAgICAiICAgIGNhdGNoKGVycm9yKSB7XG4i
IFwKKyAgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuIiBcCisgICAg
IiAgICB9XG4iIFwKKyAgICAifSlcbiIgXAorOworCisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5f
R0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKK0pTQzo6
RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCit7
XAorICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVu
dERhdGEqPih2bS5jbGllbnREYXRhKTsgXAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGlu
RnVuY3Rpb25zKCkudW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFi
bGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLnVuZ3VhcmRlZEJ1
aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSk7IFwKK30KK1dFQkNPUkVfRk9SRUFD
SF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1Ip
CisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCisKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorIyMjIEVuZCBGaWxlOiBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnMuY3BwCisKKyMjIyBC
ZWdpbiBGaWxlOiBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyLmgKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICog
CisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdl
bmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2Ny
aXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5w
eQorCisjaWZuZGVmIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAorI2RlZmluZSBV
bmd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyX2gKKworI2luY2x1ZGUgIlVuZ3VhcmRlZEJ1
aWx0aW5CdWlsdGlucy5oIgorI2luY2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oPgorI2lu
Y2x1ZGUgPGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg+CisjaW5jbHVkZSA8
cnVudGltZS9JZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0Z1bmN0aW9uLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3Jh
cHBlciA6IHByaXZhdGUgSlNDOjpXZWFrSGFuZGxlT3duZXIgeworcHVibGljOgorICAgIGV4cGxp
Y2l0IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIoSlNDOjpWTSogdm0pCisgICAgICAg
IDogbV92bSgqdm0pCisgICAgICAgIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JV
SUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX0JVSUxUSU5fTkFNRVMpCisjZGVmaW5lIElO
SVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0
aCkgLCBtXyMjbmFtZSMjU291cmNlKEpTQzo6bWFrZVNvdXJjZShTdHJpbmdJbXBsOjpjcmVhdGVG
cm9tTGl0ZXJhbChzXyMjbmFtZSwgbGVuZ3RoKSkpCisgICAgICAgIFdFQkNPUkVfRk9SRUFDSF9V
TkdVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01F
TUJFUlMpCisjdW5kZWYgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCisgICAgewor
ICAgIH0KKworI2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlv
bk5hbWUsIGxlbmd0aCkgXAorICAgIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5h
bWUjI0V4ZWN1dGFibGUoKTsgXAorICAgIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgbmFtZSMjU291
cmNlKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQorICAgIFdFQkNPUkVfRk9S
RUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShFWFBPU0VfQlVJTFRJTl9FWEVDVVRB
QkxFUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUworCisgICAgV0VCQ09SRV9G
T1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJ
TFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKQorCisgICAgdm9pZCBleHBvcnROYW1lcygpOworCitw
cml2YXRlOgorICAgIEpTQzo6Vk0mIG1fdm07CisKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFS
REVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX05BTUVTKQor
CisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5h
bWUsIGxlbmd0aCkgXAorICAgIEpTQzo6U291cmNlQ29kZSBtXyMjbmFtZSMjU291cmNlO1wKKyAg
ICBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4gbV8jI25hbWUjI0V4
ZWN1dGFibGU7CisgICAgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9D
T0RFKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JVSUxU
SU5fU09VUkNFX01FTUJFUlMKKworfTsKKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRB
QkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAoraW5saW5lIEpTQzo6VW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXI6Om5hbWUj
I0V4ZWN1dGFibGUoKSBcCit7XAorICAgIGlmICghbV8jI25hbWUjI0V4ZWN1dGFibGUpXAorICAg
ICAgICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9IEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlPihKU0M6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fdm0sIG1fIyNuYW1l
IyNTb3VyY2UsIGZ1bmN0aW9uTmFtZSMjUHVibGljTmFtZSgpLCBzXyMjbmFtZSMjQ29uc3RydWN0
QWJpbGl0eSksIHRoaXMsICZtXyMjbmFtZSMjRXhlY3V0YWJsZSk7XAorICAgIHJldHVybiBtXyMj
bmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtcCit9CitXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJ
TFRJTl9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgREVG
SU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMKKworaW5saW5lIHZvaWQgVW5ndWFyZGVkQnVpbHRpbkJ1
aWx0aW5zV3JhcHBlcjo6ZXhwb3J0TmFtZXMoKQoreworI2RlZmluZSBFWFBPUlRfRlVOQ1RJT05f
TkFNRShuYW1lKSBtX3ZtLnByb3BlcnR5TmFtZXMtPmFwcGVuZEV4dGVybmFsTmFtZShuYW1lIyNQ
dWJsaWNOYW1lKCksIG5hbWUjI1ByaXZhdGVOYW1lKCkpOworICAgIFdFQkNPUkVfRk9SRUFDSF9V
TkdVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShFWFBPUlRfRlVOQ1RJT05fTkFN
RSkKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT05fTkFNRQorfQorCitjbGFzcyBVbmd1YXJkZWRCdWls
dGluQnVpbHRpbkZ1bmN0aW9ucyB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgVW5ndWFyZGVkQnVp
bHRpbkJ1aWx0aW5GdW5jdGlvbnMoSlNDOjpWTSYgdm0pIDogbV92bSh2bSkgeyB9CisKKyAgICB2
b2lkIGluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYpOworICAgIHZvaWQgdmlzaXQoSlNDOjpTbG90
VmlzaXRvciYpOworCitwdWJsaWM6CisgICAgSlNDOjpWTSYgbV92bTsKKworI2RlZmluZSBERUNM
QVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMoZnVuY3Rpb25OYW1lKSBcCisgICAgSlNDOjpXcml0
ZUJhcnJpZXI8SlNDOjpKU0Z1bmN0aW9uPiBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbjsKKyAg
ICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUo
REVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9T
T1VSQ0VfTUVNQkVSUworfTsKKworaW5saW5lIHZvaWQgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5G
dW5jdGlvbnM6OmluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworI2Rl
ZmluZSBFWFBPUlRfRlVOQ1RJT04oY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKVwKKyAg
ICBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbi5zZXQobV92bSwgJmdsb2JhbE9iamVjdCwgSlND
OjpKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24obV92bSwgY29kZU5hbWUjI0dlbmVy
YXRvcihtX3ZtKSwgJmdsb2JhbE9iamVjdCkpOworICAgIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJE
RURCVUlMVElOX0JVSUxUSU5fQ09ERShFWFBPUlRfRlVOQ1RJT04pCisjdW5kZWYgRVhQT1JUX0ZV
TkNUSU9OCit9CisKK2lubGluZSB2b2lkIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25z
Ojp2aXNpdChKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworI2RlZmluZSBWSVNJVF9GVU5D
VElPTihuYW1lKSB2aXNpdG9yLmFwcGVuZCgmbV8jI25hbWUjI0Z1bmN0aW9uKTsKKyAgICBXRUJD
T1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoVklTSVRf
RlVOQ1RJT04pCisjdW5kZWYgVklTSVRfRlVOQ1RJT04KK30KKworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyX2gKKwor
IyMjIEVuZCBGaWxlOiBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVk
L1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLXhtbENhc2lu
Z1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2OGZjNmZjNmZiZjg1ZWRkN2I4
ZDNjODhlYzZkMjI2NjdlMWU3N2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLXhtbENhc2luZ1Rl
c3QtU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0wLDAgKzEsMzE4IEBACisjIyMgQmVnaW4gRmlsZTog
eG1sQ2FzaW5nVGVzdEJ1aWx0aW5zLmgKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ2Fub24g
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVE
SVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3Jp
cHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaWZuZGVmIHhtbENhc2lu
Z1Rlc3RCdWlsdGluc19oCisjZGVmaW5lIHhtbENhc2luZ1Rlc3RCdWlsdGluc19oCisKKyNpbmNs
dWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBG
dW5jdGlvbkV4ZWN1dGFibGU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLyogeG1sQ2Fz
aW5nVGVzdCAqLworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfeG1sQ2FzaW5nVGVzdFhNTENhc2luZ1Rl
c3RDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX3htbENhc2luZ1Rlc3RYTUxDYXNpbmdUZXN0Q29k
ZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc194bWxDYXNpbmdU
ZXN0WE1MQ2FzaW5nVGVzdENvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIq
IHNfeG1sQ2FzaW5nVGVzdENzc0Nhc2luZ1Rlc3RDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX3ht
bENhc2luZ1Rlc3RDc3NDYXNpbmdUZXN0Q29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNv
bnN0cnVjdEFiaWxpdHkgc194bWxDYXNpbmdUZXN0Q3NzQ2FzaW5nVGVzdENvZGVDb25zdHJ1Y3RB
YmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfeG1sQ2FzaW5nVGVzdFVybENhc2luZ1Rlc3RD
b2RlOworZXh0ZXJuIGNvbnN0IGludCBzX3htbENhc2luZ1Rlc3RVcmxDYXNpbmdUZXN0Q29kZUxl
bmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc194bWxDYXNpbmdUZXN0
VXJsQ2FzaW5nVGVzdENvZGVDb25zdHJ1Y3RBYmlsaXR5OworCisjZGVmaW5lIFdFQkNPUkVfRk9S
RUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fREFUQShtYWNybykgXAorICAgIG1hY3JvKHhtbENh
c2luZ1Rlc3QsIHhtbENhc2luZ1Rlc3RYTUxDYXNpbmdUZXN0LCAxKSBcCisgICAgbWFjcm8oY3Nz
Q2FzaW5nVGVzdCwgeG1sQ2FzaW5nVGVzdENzc0Nhc2luZ1Rlc3QsIDIpIFwKKyAgICBtYWNybyh1
cmxDYXNpbmdUZXN0LCB4bWxDYXNpbmdUZXN0VXJsQ2FzaW5nVGVzdCwgMykgXAorCisjZGVmaW5l
IFdFQkNPUkVfQlVJTFRJTl9YTUxDQVNJTkdURVNUX1hNTENBU0lOR1RFU1QgMQorI2RlZmluZSBX
RUJDT1JFX0JVSUxUSU5fWE1MQ0FTSU5HVEVTVF9DU1NDQVNJTkdURVNUIDEKKyNkZWZpbmUgV0VC
Q09SRV9CVUlMVElOX1hNTENBU0lOR1RFU1RfVVJMQ0FTSU5HVEVTVCAxCisKKyNkZWZpbmUgV0VC
Q09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKG1hY3JvKSBcCisgICAgbWFj
cm8oeG1sQ2FzaW5nVGVzdFhNTENhc2luZ1Rlc3RDb2RlLCB4bWxDYXNpbmdUZXN0LCBzX3htbENh
c2luZ1Rlc3RYTUxDYXNpbmdUZXN0Q29kZUxlbmd0aCkgXAorICAgIG1hY3JvKHhtbENhc2luZ1Rl
c3RDc3NDYXNpbmdUZXN0Q29kZSwgY3NzQ2FzaW5nVGVzdCwgc194bWxDYXNpbmdUZXN0Q3NzQ2Fz
aW5nVGVzdENvZGVMZW5ndGgpIFwKKyAgICBtYWNybyh4bWxDYXNpbmdUZXN0VXJsQ2FzaW5nVGVz
dENvZGUsIHVybENhc2luZ1Rlc3QsIHNfeG1sQ2FzaW5nVGVzdFVybENhc2luZ1Rlc3RDb2RlTGVu
Z3RoKSBcCisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9G
VU5DVElPTl9OQU1FKG1hY3JvKSBcCisgICAgbWFjcm8oY3NzQ2FzaW5nVGVzdCkgXAorICAgIG1h
Y3JvKHVybENhc2luZ1Rlc3QpIFwKKyAgICBtYWNybyh4bWxDYXNpbmdUZXN0KSBcCisKKyNkZWZp
bmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1
bWVudENvdW50KSBcCisgICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5l
cmF0b3IoSlNDOjpWTSYpOworCitXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElO
X0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5f
R0VORVJBVE9SCisKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX1hNTENBU0lOR1RFU1RfRVhJU1RT
KG9iamVjdCwgZnVuYykgZGVmaW5lZCBXRUJDT1JFX0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMj
IGZ1bmMKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8geG1sQ2FzaW5nVGVz
dEJ1aWx0aW5zX2gKKworIyMjIEVuZCBGaWxlOiB4bWxDYXNpbmdUZXN0QnVpbHRpbnMuaAorCisj
IyMgQmVnaW4gRmlsZTogeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zLmNwcAorLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAq
LworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJh
dGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJ4bWxDYXNpbmdUZXN0QnVpbHRpbnMuaCIK
KworI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlIDxydW50aW1lL0V4
ZWN1dGFibGUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisjaW5j
bHVkZSA8cnVudGltZS9KU0NlbGxJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9TdHJ1Y3R1
cmVJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9WTS5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3htbENhc2luZ1Rlc3RYTUxDYXNp
bmdUZXN0Q29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5v
dENvbnN0cnVjdDsKK2NvbnN0IGludCBzX3htbENhc2luZ1Rlc3RYTUxDYXNpbmdUZXN0Q29kZUxl
bmd0aCA9IDcxOworY29uc3QgY2hhciogc194bWxDYXNpbmdUZXN0WE1MQ2FzaW5nVGVzdENvZGUg
PQorICAgICIoZnVuY3Rpb24gKHN0cmVhbSlcbiIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgXCJ1
c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHJldHVybiAhIXN0cmVhbS5A
cmVhZGVyO1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmls
aXR5IHNfeG1sQ2FzaW5nVGVzdENzc0Nhc2luZ1Rlc3RDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpT
Qzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfeG1sQ2Fz
aW5nVGVzdENzc0Nhc2luZ1Rlc3RDb2RlTGVuZ3RoID0gNDAyOworY29uc3QgY2hhciogc194bWxD
YXNpbmdUZXN0Q3NzQ2FzaW5nVGVzdENvZGUgPQorICAgICIoZnVuY3Rpb24gKHN0cmVhbSwgcmVh
c29uKVxuIiBcCisgICAgIntcbiIgXAorICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAg
ICAiXG4iIFwKKyAgICAiICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1D
bG9zZWQpXG4iIFwKKyAgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4iIFwK
KyAgICAiICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKVxu
IiBcCisgICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJy
b3IpO1xuIiBcCisgICAgIiAgICBzdHJlYW0uQHF1ZXVlID0gW107XG4iIFwKKyAgICAiICAgIEBm
aW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTtcbiIgXAorICAgICIgICAgcmV0dXJu
IEBwcm9taXNlSW52b2tlT3JOb29wKHN0cmVhbS5AdW5kZXJseWluZ1NvdXJjZSwgXCJjYW5jZWxc
IiwgW3JlYXNvbl0pLnRoZW4oZnVuY3Rpb24oKSB7IH0pO1xuIiBcCisgICAgIn0pXG4iIFwKKzsK
KworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfeG1sQ2FzaW5nVGVzdFVybENhc2luZ1Rl
c3RDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29u
c3RydWN0OworY29uc3QgaW50IHNfeG1sQ2FzaW5nVGVzdFVybENhc2luZ1Rlc3RDb2RlTGVuZ3Ro
ID0gMzM4OworY29uc3QgY2hhciogc194bWxDYXNpbmdUZXN0VXJsQ2FzaW5nVGVzdENvZGUgPQor
ICAgICIoZnVuY3Rpb24gKG9iamVjdCwga2V5LCBhcmdzKVxuIiBcCisgICAgIntcbiIgXAorICAg
ICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHRyeSB7XG4i
IFwKKyAgICAiICAgICAgICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07XG4iIFwKKyAgICAiICAg
ICAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gXCJ1bmRlZmluZWRcIilcbiIgXAorICAgICIgICAg
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4iIFwKKyAgICAiICAgICAgICB2YXIg
cmVzdWx0ID0gbWV0aG9kLkBhcHBseShvYmplY3QsIGFyZ3MpO1xuIiBcCisgICAgIiAgICAgICAg
cmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xuIiBcCisgICAgIiAgICB9XG4iIFwKKyAg
ICAiICAgIGNhdGNoKGVycm9yKSB7XG4iIFwKKyAgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5y
ZWplY3QoZXJyb3IpO1xuIiBcCisgICAgIiAgICB9XG4iIFwKKyAgICAifSlcbiIgXAorOworCisK
KyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUs
IGFyZ3VtZW50Q291bnQpIFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2Vu
ZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCit7XAorICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRh
ID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXAorICAgIHJl
dHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkueG1sQ2FzaW5nVGVzdEJ1aWx0aW5z
KCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1
bmN0aW9ucygpLnhtbENhc2luZ1Rlc3RCdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSk7IFwK
K30KK1dFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJ
TFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCisKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorIyMjIEVuZCBGaWxlOiB4bWxDYXNpbmdUZXN0QnVpbHRpbnMu
Y3BwCisKKyMjIyBCZWdpbiBGaWxlOiB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyLmgKKy8q
CisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0
aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBi
eSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1i
dWlsdGlucy5weQorCisjaWZuZGVmIHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXJfaAorI2Rl
ZmluZSB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyX2gKKworI2luY2x1ZGUgInhtbENhc2lu
Z1Rlc3RCdWlsdGlucy5oIgorI2luY2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oPgorI2lu
Y2x1ZGUgPGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg+CisjaW5jbHVkZSA8
cnVudGltZS9JZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0Z1bmN0aW9uLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBl
ciA6IHByaXZhdGUgSlNDOjpXZWFrSGFuZGxlT3duZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0
IHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXIoSlNDOjpWTSogdm0pCisgICAgICAgIDogbV92
bSgqdm0pCisgICAgICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fRlVO
Q1RJT05fTkFNRShJTklUSUFMSVpFX0JVSUxUSU5fTkFNRVMpCisjZGVmaW5lIElOSVRJQUxJWkVf
QlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgLCBtXyMj
bmFtZSMjU291cmNlKEpTQzo6bWFrZVNvdXJjZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJh
bChzXyMjbmFtZSwgbGVuZ3RoKSkpCisgICAgICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdU
RVNUX0JVSUxUSU5fQ09ERShJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5k
ZWYgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCisgICAgeworICAgIH0KKworI2Rl
ZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0
aCkgXAorICAgIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFi
bGUoKTsgXAorICAgIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgY29uc3Qg
eyByZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQorICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJ
TkdURVNUX0JVSUxUSU5fQ09ERShFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBF
WFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUworCisgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lO
R1RFU1RfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FD
Q0VTU09SKQorCisgICAgdm9pZCBleHBvcnROYW1lcygpOworCitwcml2YXRlOgorICAgIEpTQzo6
Vk0mIG1fdm07CisKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0ZV
TkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX05BTUVTKQorCisjZGVmaW5lIERFQ0xBUkVfQlVJ
TFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorICAgIEpT
Qzo6U291cmNlQ29kZSBtXyMjbmFtZSMjU291cmNlO1wKKyAgICBKU0M6OldlYWs8SlNDOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4gbV8jI25hbWUjI0V4ZWN1dGFibGU7CisgICAgV0VCQ09S
RV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9TT1VS
Q0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKKworfTsK
KworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUs
IGxlbmd0aCkgXAoraW5saW5lIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHhtbENh
c2luZ1Rlc3RCdWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4ZWN1dGFibGUoKSBcCit7XAorICAgIGlm
ICghbV8jI25hbWUjI0V4ZWN1dGFibGUpXAorICAgICAgICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9
IEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPihKU0M6OmNyZWF0ZUJ1
aWx0aW5FeGVjdXRhYmxlKG1fdm0sIG1fIyNuYW1lIyNTb3VyY2UsIGZ1bmN0aW9uTmFtZSMjUHVi
bGljTmFtZSgpLCBzXyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0eSksIHRoaXMsICZtXyMjbmFtZSMj
RXhlY3V0YWJsZSk7XAorICAgIHJldHVybiBtXyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtcCit9
CitXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxU
SU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMKKworaW5s
aW5lIHZvaWQgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcjo6ZXhwb3J0TmFtZXMoKQorewor
I2RlZmluZSBFWFBPUlRfRlVOQ1RJT05fTkFNRShuYW1lKSBtX3ZtLnByb3BlcnR5TmFtZXMtPmFw
cGVuZEV4dGVybmFsTmFtZShuYW1lIyNQdWJsaWNOYW1lKCksIG5hbWUjI1ByaXZhdGVOYW1lKCkp
OworICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fRlVOQ1RJT05fTkFN
RShFWFBPUlRfRlVOQ1RJT05fTkFNRSkKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT05fTkFNRQorfQor
CitjbGFzcyB4bWxDYXNpbmdUZXN0QnVpbHRpbkZ1bmN0aW9ucyB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5GdW5jdGlvbnMoSlNDOjpWTSYgdm0pIDogbV92bSh2
bSkgeyB9CisKKyAgICB2b2lkIGluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYpOworICAgIHZvaWQg
dmlzaXQoSlNDOjpTbG90VmlzaXRvciYpOworCitwdWJsaWM6CisgICAgSlNDOjpWTSYgbV92bTsK
KworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMoZnVuY3Rpb25OYW1lKSBc
CisgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU0Z1bmN0aW9uPiBtXyMjZnVuY3Rpb25OYW1l
IyNGdW5jdGlvbjsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0ZV
TkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xB
UkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworfTsKKworaW5saW5lIHZvaWQgeG1sQ2FzaW5nVGVz
dEJ1aWx0aW5GdW5jdGlvbnM6OmluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQoreworI2RlZmluZSBFWFBPUlRfRlVOQ1RJT04oY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVu
Z3RoKVwKKyAgICBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbi5zZXQobV92bSwgJmdsb2JhbE9i
amVjdCwgSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24obV92bSwgY29kZU5h
bWUjI0dlbmVyYXRvcihtX3ZtKSwgJmdsb2JhbE9iamVjdCkpOworICAgIFdFQkNPUkVfRk9SRUFD
SF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fQ09ERShFWFBPUlRfRlVOQ1RJT04pCisjdW5kZWYgRVhQ
T1JUX0ZVTkNUSU9OCit9CisKK2lubGluZSB2b2lkIHhtbENhc2luZ1Rlc3RCdWlsdGluRnVuY3Rp
b25zOjp2aXNpdChKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworI2RlZmluZSBWSVNJVF9G
VU5DVElPTihuYW1lKSB2aXNpdG9yLmFwcGVuZCgmbV8jI25hbWUjI0Z1bmN0aW9uKTsKKyAgICBX
RUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoVklTSVRf
RlVOQ1RJT04pCisjdW5kZWYgVklTSVRfRlVOQ1RJT04KK30KKworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyX2gKKworIyMj
IEVuZCBGaWxlOiB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyLmgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9VcGRhdGVDb250ZW50cy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9VcGRhdGVDb250ZW50cy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTJm
OTUzMmNiNmZiMGFiYWY1MjBkYWUwNDg1OGFjOTJhNGZjNjI0MS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVXBkYXRl
Q29udGVudHMucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0jIS91c3IvYmluL3B5
dGhvbgotCi0jIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0jIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIHB1dGVyLCBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0jICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0jICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0jIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0jIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0jIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgotIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgc3lzCi1pbXBvcnQgb3MKLQotYXNz
ZXJ0KGxlbihzeXMuYXJndikgPT0gMykKLQotY29tcCA9IHN5cy5hcmd2WzFdCi1maWxlbmFtZSA9
IHN5cy5hcmd2WzJdCi0KLXQgPSBGYWxzZQotCi1pZiBvcy5wYXRoLmlzZmlsZShmaWxlbmFtZSk6
Ci0gICAgZiA9IG9wZW4oZmlsZW5hbWUsICdyJykKLSAgICBjb21wYXJhdG9yID0gZi5yZWFkKCkK
LSAgICBmLmNsb3NlKCkKLSAgICB0ID0gVHJ1ZQotCi1pZiAobm90IHQgb3IgY29tcCAhPSBjb21w
YXJhdG9yKToKLSAgICBmID0gb3BlbihmaWxlbmFtZSwgJ3cnKQotICAgIGYud3JpdGUoY29tcCkK
LSAgICBmLmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggNzNlYmU0Nzk5MzVmY2E3NDA5ZmQ5MzJmODg5
YjY1ODRiZTU4YjYxNC4uODE2YjRhNWQzMGI1MjBiNWQxZGZlYWVhYjJmOTM5NGM2OGJkYzBhMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRh
Ymxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBjcmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwoVk0mLCBjb25zdCBTb3VyY2VDb2QKIEJ1
aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKFZNJiB2bSkKICAgICA6IG1fdm0o
dm0pCiAjZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5j
dGlvbk5hbWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKG1ha2VTb3VyY2UoU3RyaW5nSW1w
bDo6Y3JlYXRlRnJvbUxpdGVyYWwoc18jI25hbWUsIGxlbmd0aCkpKQotICAgIEpTQ19GT1JFQUNI
X0JVSUxUSU4oSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorICAgIEpTQ19GT1JF
QUNIX0JVSUxUSU5fQ09ERShJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCiAjdW5k
ZWYgRVhQT1NFX0JVSUxUSU5fU1RSSU5HUwogewogfQpAQCAtMTMyLDcgKzEzMiw3IEBAIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6Om5hbWUjI0V4ZWN1dGFi
bGUoKSBcCiAgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gV2VhazxVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZT4oY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUobV8jI25hbWUjI1NvdXJjZSwg
bV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5mdW5jdGlvbk5hbWUjI1B1YmxpY05h
bWUoKSwgc18jI25hbWUjI0NvbnN0cnVjdEFiaWxpdHkpLCB0aGlzLCAmbV8jI25hbWUjI0V4ZWN1
dGFibGUpO1wKICAgICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7XAogfQotSlND
X0ZPUkVBQ0hfQlVJTFRJTihERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKK0pTQ19GT1JFQUNI
X0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKICN1bmRlZiBFWFBPU0Vf
QlVJTFRJTl9TT1VSQ0VTCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaAppbmRleCA2YTk4MzIxN2EwYTg4NDU3ZWYwOThmYmNi
OTUxMjNkNTlhNTI1MTc1Li5lYzhkNTc3MDRiODdjNTg0YTkzNmRkZTQxN2Q2MjlmODU3YjM2NTcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFwKIGNvbnN0IFNvdXJjZUNvZGUmIG5hbWUjI1Nv
dXJjZSgpIHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KICAgICAKLSAgICBKU0NfRk9SRUFD
SF9CVUlMVElOKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQorICAgIEpTQ19GT1JFQUNIX0JV
SUxUSU5fQ09ERShFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKICN1bmRlZiBFWFBPU0VfQlVJ
TFRJTl9TT1VSQ0VTCiAKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRGVm
YXVsdENvbnN0cnVjdG9yKENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7
CkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VS
Q0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aClcCiAgICAgU291cmNlQ29kZSBt
XyMjbmFtZSMjU291cmNlOyBcCiAgICAgV2VhazxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4g
bV8jI25hbWUjI0V4ZWN1dGFibGU7Ci0gICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTihERUNMQVJFX0JV
SUxUSU5fU09VUkNFX01FTUJFUlMpCisgICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFQ0xB
UkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKICN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNF
X01FTUJFUlMKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVf
aGFzaF90YWJsZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQppbmRl
eCA2ZmE3OGNlYTI4NzM4YzBmMTc0NTE0N2YwNDk3M2FjYjZjYTgzNmQ4Li5hMjI1Y2JlNjdkODBk
YWEyZmQzZTk4ZjE5MDUyZWMwOTgxOGQyM2Y4IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvY3JlYXRlX2hhc2hfdGFibGUKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0
ZV9oYXNoX3RhYmxlCkBAIC0zMTksNyArMzE5LDcgQEAgc3ViIG91dHB1dCgpIHsKICAgICAgICAg
aWYgKCR2YWx1ZXNbJGldeyJ0eXBlIn0gZXEgIkZ1bmN0aW9uIikgIHsKICAgICAgICAgICAgIG15
ICR0YWJsZUhlYWQgPSAkbmFtZTsKICAgICAgICAgICAgICR0YWJsZUhlYWQgPX4gcy9UYWJsZSQv
LzsKLSAgICAgICAgICAgIHByaW50ICIgI2lmIEpTQ19CVUlMVElOX0VYSVNUUygiIC4gdWMoJHRh
YmxlSGVhZCAuICRrZXkpIC4iKVxuIjsKKyAgICAgICAgICAgIHByaW50ICIgI2lmIEpTQ19CVUlM
VElOX0VYSVNUUygiIC4gdWMoJHRhYmxlSGVhZCkgLiAiLCAiIC4gdWMoJGtleSkgLiIpXG4iOwog
ICAgICAgICAgICAgcHJpbnQgIiAgIHsgXCIka2V5XCIsICgoJGF0dHJzWyRpXSkgJiB+RnVuY3Rp
b24pIHwgQnVpbHRpbiwgJGludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8QnVpbHRp
bkdlbmVyYXRvcj4oIiAuICR0YWJsZUhlYWQgLiB1Y2ZpcnN0KCRrZXkpIC4gIkNvZGVHZW5lcmF0
b3IpLCAoaW50cHRyX3QpJHNlY29uZFZhbHVlIH0gfSxcbiI7CiAgICAgICAgICAgICBwcmludCAi
ICNlbHNlXG4iCiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZjRhMzdjYWM2YzJk
NDBjMzc4NmY5NGIwNTZiYjY1ZDdlZDMxNTBmOS4uY2IxNzc2YTFiYThkMTlhZjE0OWUyMGMxNTY3
MDRkYzYzNGI5NDczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTM1OTYsMjIgKzM1OTYsNDkg
QEAgR0VORVJBVEVfQklORElOR1MoV2ViQ29yZVRlc3RTdXBwb3J0X1NPVVJDRVMKICAgICAke0FE
RElUSU9OQUxfQklORElOR1NfREVQRU5ERU5DSUVTfSkKIAogIyBXZWJDb3JlIEpTIEJ1aWx0aW5z
Ci1mb3JlYWNoIChfYnVpbHRpbmpzICR7V0VCQ09SRV9KU19CVUlMVElOU30pCi0gICAgZ2V0X2Zp
bGVuYW1lX2NvbXBvbmVudChfbmFtZSAke19idWlsdGluanN9IE5BTUVfV0UpCisKK3NldChXZWJD
b3JlX0JVSUxUSU5TX1NPVVJDRVMKKyAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3N0cmVhbXMv
Qnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5qcworICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMv
c3RyZWFtcy9Db3VudFF1ZXVpbmdTdHJhdGVneS5qcworICAgICR7V0VCQ09SRV9ESVJ9L01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5qcworICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMv
c3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuanMKKyAgICAke1dFQkNPUkVfRElSfS9N
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMKKyAgICAke1dFQkNPUkVf
RElSfS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuanMKKykKKworc2V0KEJV
SUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTCisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJ
Un0vYnVpbHRpbnMucHkKKyAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGlu
c19nZW5lcmF0b3IucHkKKyAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGlu
c19tb2RlbC5weQorICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5zX3Rl
bXBsYXRlcy5weQorICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5zX2dl
bmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weQorICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVJ9L2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5CisgICAgJHtK
YXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVh
ZGVyLnB5CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnNfZ2VuZXJh
dGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkKKyAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQ
VFNfRElSfS9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFwcGVyLnB5CisgICAgJHtKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKyAgICAke0ph
dmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9sYXp5d3JpdGVyLnB5CispCisKK2ZvcmVhY2ggKF9i
dWlsdGluU291cmNlICR7V2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTfSkKKyAgICBnZXRfZmlsZW5h
bWVfY29tcG9uZW50KF9vYmplY3ROYW1lICR7X2J1aWx0aW5Tb3VyY2V9IE5BTUVfV0UpCiAgICAg
YWRkX2N1c3RvbV9jb21tYW5kKAotICAgICAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfV0VC
Q09SRV9ESVJ9LyR7X25hbWV9QnVpbHRpbnNXcmFwcGVyLmggJHtERVJJVkVEX1NPVVJDRVNfV0VC
Q09SRV9ESVJ9LyR7X25hbWV9QnVpbHRpbnMuaCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJ
Un0vJHtfbmFtZX1CdWlsdGlucy5jcHAKLSAgICAgICAgTUFJTl9ERVBFTkRFTkNZICR7V0VCQ09S
RV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zCi0gICAgICAgIERFUEVORFMgJHtKYXZhU2NyaXB0
Q29yZV9TQ1JJUFRTX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMKLSAgICAgICAgREVQRU5EUyAk
e19idWlsdGluanN9Ci0gICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFL
RV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zIC0taW5wdXQgJHtfYnVp
bHRpbmpzfSAtLW91dHB1dF9kaXIgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9IC0tZ2Vu
ZXJhdGVfanNfYnVpbHRpbnNfcGF0aCAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfQorICAg
ICAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9LyR7X29iamVjdE5hbWV9
QnVpbHRpbnMuY3BwCisgICAgICAgICAgICAgICAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJ
Un0vJHtfb2JqZWN0TmFtZX1CdWlsdGlucy5oCisgICAgICAgICAgICAgICAke0RFUklWRURfU09V
UkNFU19XRUJDT1JFX0RJUn0vJHtfb2JqZWN0TmFtZX1CdWlsdGluc1dyYXBwZXIuaCAKKyAgICAg
ICAgTUFJTl9ERVBFTkRFTkNZICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2dlbmVyYXRl
LWpzLWJ1aWx0aW5zLnB5CisgICAgICAgIERFUEVORFMgJHtfYnVpbHRpblNvdXJjZX0gJHtCVUlM
VElOU19HRU5FUkFUT1JfU0NSSVBUU30KKyAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRB
QkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucy5w
eSAtLWZyYW1ld29yayBXZWJDb3JlIC0tb3V0cHV0LWRpcmVjdG9yeSAke0RFUklWRURfU09VUkNF
U19XRUJDT1JFX0RJUn0gJHtfYnVpbHRpblNvdXJjZX0KICAgICAgICAgVkVSQkFUSU0pCiAgICAg
bGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCi0gICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dF
QkNPUkVfRElSfS8ke19uYW1lfUJ1aWx0aW5zLmgKLSAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNf
V0VCQ09SRV9ESVJ9LyR7X25hbWV9QnVpbHRpbnNXcmFwcGVyLmgKKyAgICAgICAgJHtERVJJVkVE
X1NPVVJDRVNfV0VCQ09SRV9ESVJ9LyR7X29iamVjdE5hbWV9QnVpbHRpbnMuY3BwCisgICAgICAg
ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS8ke19vYmplY3ROYW1lfUJ1aWx0aW5zLmgK
KyAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9LyR7X29iamVjdE5hbWV9QnVp
bHRpbnNXcmFwcGVyLmgKICAgICApCi0gICAgQUREX1NPVVJDRV9XRUJDT1JFX0RFUklWRURfREVQ
RU5ERU5DSUVTKCR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL2pzL1dlYkNvcmVKU0J1aWx0aW5zLmNw
cCAke19uYW1lfUJ1aWx0aW5zLmNwcCkKKyAgICBBRERfU09VUkNFX1dFQkNPUkVfREVSSVZFRF9E
RVBFTkRFTkNJRVMoJHtXRUJDT1JFX0RJUn0vYmluZGluZ3MvanMvV2ViQ29yZUpTQnVpbHRpbnMu
Y3BwICR7X29iamVjdE5hbWV9QnVpbHRpbnMuY3BwKQogZW5kZm9yZWFjaCAoKQogCisKIEFERF9T
T1VSQ0VfV0VCQ09SRV9ERVJJVkVEX0RFUEVOREVOQ0lFUygke1dFQkNPUkVfRElSfS9odG1sL0hU
TUxUcmVlQnVpbGRlci5jcHAgTWF0aE1MTmFtZXMuY3BwKQogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCmluZGV4IGZkYTU5M2NkNTMwNGEwYzdkODM0YjQwMTNmYmNkNjkzOGIxZTcyNTIu
LjZkOWUxN2I0MWYzOTQ4ZjA2MTUxZTgyZWVlMjdhNzQ0NTExNjlmOWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQpAQCAtNzk3LDcgKzc5Nyw2IEBAIGFsbCA6IFwKICAgICAkKFdPUktF
UkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFKSBcCiAgICAgJChKU19ET01fSEVBREVSUykg
XAogICAgICQoV0VCX0RPTV9IRUFERVJTKSBcCi0gICAgJChXRUJDT1JFX0pTX0JVSUxUSU5TKSBc
CiAgICAgXAogICAgIENTU0dyYW1tYXIuY3BwIFwKICAgICBDU1NQcm9wZXJ0eU5hbWVzLmNwcCBc
CkBAIC0xMjU2LDggKzEyNTUsNyBAQCBXZWJSZXBsYXlJbnB1dHMuaCA6ICQoSU5QVVRfR0VORVJB
VE9SX1NQRUNJRklDQVRJT05TKSAkKElOUFVUX0dFTkVSQVRPUl9TQ1JJUFRTKQogCiAjIFdlYkNv
cmUgSlMgQnVpbHRpbnMKIAotV0VCQ09SRV9KU19CVUlMVElOUyA9IFwKLSAgICAkKFdlYkNvcmUp
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmpzIFwKK1dlYkNvcmVfQlVJTFRJTlNf
U09VUkNFUyA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvc3RyZWFtcy9CeXRlTGVuZ3RoUXVl
dWluZ1N0cmF0ZWd5LmpzIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvc3RyZWFtcy9Db3VudFF1
ZXVpbmdTdHJhdGVneS5qcyBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW0uanMgXApAQCAtMTI2NywxMCArMTI2NSwzMSBAQCBXRUJDT1JFX0pTX0JVSUxUSU5T
ID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzIFwK
ICMKIAotYWxsIDogJChXRUJDT1JFX0pTX0JVSUxUSU5TOiUuanM9JUJ1aWx0aW5zLmNwcCkKK0JV
SUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTID0gXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBU
U19ESVIpL2J1aWx0aW5zLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9i
dWlsdGluc19nZW5lcmF0b3IucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIp
L2J1aWx0aW5zX21vZGVsLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9i
dWlsdGluc190ZW1wbGF0ZXMucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIp
L2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weSBcCisgICAgJChKYXZhU2NyaXB0
Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50YXRp
b24ucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zX2dlbmVy
YXRlX3NlcGFyYXRlX2hlYWRlci5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJ
UikvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkgXAorICAgICQo
SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX3dy
YXBwZXIucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlLWpz
LWJ1aWx0aW5zLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9sYXp5d3Jp
dGVyLnB5IFwKKyMKKworIyBBZGRpbmcvcmVtb3Zpbmcgc2NyaXB0cyBzaG91bGQgdHJpZ2dlciBy
ZWdlbmVyYXRpb24sIGJ1dCBjaGFuZ2luZyB3aGljaCBidWlsdGlucyBhcmUKKyMgZ2VuZXJhdGVk
IHNob3VsZCBub3QgYWZmZWN0IG90aGVyIGJ1aWx0aW5zIHdoZW4gbm90IHBhc3NpbmcgJy0tY29t
YmluZWQnIHRvIHRoZSBnZW5lcmF0b3IuCisKKy5QSE9OWTogZm9yY2UKK1dlYkNvcmVfQlVJTFRJ
TlNfREVQRU5ERU5DSUVTX0xJU1QgOiAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9VcGRh
dGVDb250ZW50cy5weSBmb3JjZQorCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNf
RElSKS9VcGRhdGVDb250ZW50cy5weSAnJChCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUyknICRA
CisKKyVCdWlsdGlucy5oOiAlLmpzICQoQlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMpIFdlYkNv
cmVfQlVJTFRJTlNfREVQRU5ERU5DSUVTX0xJU1QKKwkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgLS1vdXRwdXQtZGlyZWN0b3J5
IC4gLS1mcmFtZXdvcmsgV2ViQ29yZSAkPAogCi0lQnVpbHRpbnMuY3BwOiAlLmpzCi0JJChQWVRI
T04pICQoV2ViQ29yZSkvZ2VuZXJhdGUtanMtYnVpbHRpbnMgLS1pbnB1dCAkPCAtLWdlbmVyYXRl
X2pzX2J1aWx0aW5zX3BhdGggJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikKK2FsbCA6ICQo
bm90ZGlyICQoV2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTOiUuanM9JUJ1aWx0aW5zLmgpKQogCiAj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzM0NTdhOTgxOTFjYTFhOWYxYTZhODgx
ZjI3MDMxNmE5MDk4MTRmZS4uNWViMDZmNTkyMWVjNzNmZTQzMDJjY2UyMTM0NTJjNzMxNGJkMDFj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTE0OSw3ICsxMTQ5LDcgQEAKIAkJMkQ1MDAyRjgxQjU2RDc4MTAwMjBBQUY3IC8q
IERPTVBhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkQ1MDAyRjcxQjU2RDc4MTAwMjBBQUY3IC8qIERPTVBhdGguY3BwICovOyB9OwogCQkyRDUw
MDJGQjFCNTZENzk5MDAyMEFBRjcgLyogUGF0aFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDUwMDJGOTFCNTZENzk5MDAyMEFBRjcg
LyogUGF0aFV0aWxpdGllcy5jcHAgKi87IH07CiAJCTJENTAwMkZDMUI1NkQ3OTkwMDIwQUFGNyAv
KiBQYXRoVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRDUwMDJGQTFCNTZENzk5MDAyMEFBRjcgLyogUGF0aFV0aWxpdGllcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTJENTAzNjY4MUJD
REREQzQwMEUyMEJCMyAvKiBHZXN0dXJlRXZlbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENTAzNjY3MUJDREREQzQwMEUyMEJCMyAvKiBHZXN0
dXJlRXZlbnRzLmNwcCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OworCQky
RDUwMzY2ODFCQ0REREM0MDBFMjBCQjMgLyogR2VzdHVyZUV2ZW50cy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDUwMzY2NzFCQ0REREM0MDBFMjBC
QjMgLyogR2VzdHVyZUV2ZW50cy5jcHAgKi87IH07CiAJCTJENTY0NkIwMUI4Rjg0OTMwMDNDNDk5
NCAvKiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRDU2NDZBRjFCOEY4NDkzMDAzQzQ5OTQgLyogRGljdGlvbmFyeVBv
cHVwSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTJENThEODU1MUExNUY2NUYwMEE1RjcyNiAvKiBEYXRhRGV0ZWN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDU4RDg1MzFBMTVGNjVGMDBB
NUY3MjYgLyogRGF0YURldGVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTJENThEODU2MUExNUY2NUYwMEE1RjcyNiAvKiBEYXRhRGV0ZWN0
aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ1
OEQ4NTQxQTE1RjY1RjAwQTVGNzI2IC8qIERhdGFEZXRlY3Rpb24ubW0gKi87IH07CkBAIC0xNTE3
LDggKzE1MTcsOCBAQAogCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0
aW5nUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovOyB9
OwogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwNDMgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNC
dWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEQ5IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRp
bnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
MTZFNkZFOTFCQkQxMkU1MDAwQTYwNDMgLyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEw
RDAwQjc2NEQ4IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0MTZFNkZFQTFCQkQxNjg0MDAwQTYwNDQg
LyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGluc1dyYXBwZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA3MUJCMzExMEQwMEI3NjRE
QSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zV3JhcHBlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU5MUJCRDEyRTUw
MDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTggLyogV3Jp
dGFibGVTdHJlYW1CdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTQxNkU2RkVBMUJCRDE2ODQwMDBBNjA0NCAvKiBSZWFkYWJsZVN0cmVh
bUludGVybmFsc0J1aWx0aW5zV3JhcHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDcxQkIzMTEwRDAwQjc2NERBIC8qIFJlYWRhYmxlU3Ry
ZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE3MjUzQUExMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlh
Q29udHJvbEVsZW1lbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxNzI1M0E4MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50
cy5jcHAgKi87IH07CiAJCTQxNzI1M0FCMTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xF
bGVtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDE3MjUzQTkxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggKi87IH07
CiAJCTQxN0RBNkQ5MTM3MzRFNkUwMDdDNTdGQiAvKiBJbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3REE0Q0YxMzczNDMyNjAwN0M1
N0ZCIC8qIEludGVybmFscy5jcHAgKi87IH07CkBAIC0yNjU3LDExICsyNjU3LDExIEBACiAJCTdD
NDhBNkQxMTkxQzlENjUwMDAyNjY3NCAvKiBXZWJLaXROYW1lc3BhY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNDhBNkNGMTkxQzlENjUwMDAyNjY3
NCAvKiBXZWJLaXROYW1lc3BhY2UuaCAqLzsgfTsKIAkJN0M0OTAyQTIxOEI4MjVGODAwN0Q5Mjk4
IC8qIERPTVdoZWVsRXZlbnRJbnRlcm5hbC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU5ODlEQ0EwQUNDOEJCRDAwQTBCQzUx
IC8qIERPTVdoZWVsRXZlbnRJbnRlcm5hbC5oICovOyB9OwogCQk3QzRDOTZEQzFBRDQ0ODM1MDAz
NjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzRDOTZEODFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJs
ZVN0cmVhbS5jcHAgKi87IH07CisJCTdDNEM5NkRDMUFENDQ4MzUwMDM2NUE2MCAvKiBKU1dyaXRh
YmxlU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDNEM5NkQ4MUFENDQ4MzUwMDM2NUE2MCAvKiBKU1dyaXRhYmxlU3RyZWFtLmNwcCAqLzsg
fTsKIAkJN0M0Qzk2REQxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW0uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNEM5NkQ5MUFENDQ4
MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtLmggKi87IH07CisJCTdDNEM5NkREMUFENDQ4
MzUwMDM2NUE2MCAvKiBKU1dyaXRhYmxlU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzRDOTZEOTFBRDQ0ODM1MDAzNjVBNjAgLyogSlNXcml0
YWJsZVN0cmVhbS5oICovOyB9OwogCQk3QzRDOTZERTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFk
YWJsZVN0cmVhbVJlYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzRDOTZEQTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbVJl
YWRlci5jcHAgKi87IH07CiAJCTdDNEM5NkRGMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxl
U3RyZWFtUmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzRDOTZEQjFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5o
ICovOyB9OwotCQk3QzRDOTZEQzFBRDQ0ODM1MDAzNjVBNjAgLyogSlNXcml0YWJsZVN0cmVhbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzRDOTZE
ODFBRDQ0ODM1MDAzNjVBNjAgLyogSlNXcml0YWJsZVN0cmVhbS5jcHAgKi87IH07Ci0JCTdDNEM5
NkREMUFENDQ4MzUwMDM2NUE2MCAvKiBKU1dyaXRhYmxlU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzRDOTZEOTFBRDQ0ODM1MDAzNjVBNjAg
LyogSlNXcml0YWJsZVN0cmVhbS5oICovOyB9OwogCQk3QzRDOTZFMzFBRDQ0QUJGMDAzNjVBNTAg
LyogTGF1bmNoU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDNEM5NkUyMUFENDRBQkYwMDM2NUE1MCAvKiBMYXVuY2hTZXJ2aWNlc1NQ
SS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdD
NEVERDc0MUE3QjYwNzgwMDE5OEM0RCAvKiBGb250Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzRFREQ3MzFBN0I2MDc4MDAxOThDNEQgLyog
Rm9udENvY29hLm1tICovOyB9OwogCQk3QzUyMkQ0QjE1QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVj
dG9yT3ZlcmxheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzUyMkQ0OTE1QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAgKi87
IH07CkBAIC01NTA2LDggKzU1MDYsOCBAQAogCQlCQzc3OUUxNzFCQjIyN0NBMDBDQUE4QkYgLyog
U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDNzc5RTE1MUJCMjI2QTIwMENBQThCRiAvKiBTdHlsZUN1c3RvbVBy
b3BlcnR5RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUJDN0Q4RkVGMUJEMDNCNjQwMEZGRTU0MCAvKiBDU1NVbnNldFZhbHVlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0Q4RkVEMUJEMDNC
NjQwMEZGRTU0MCAvKiBDU1NVbnNldFZhbHVlLmNwcCAqLzsgfTsKIAkJQkM3RDhGRjAxQkQwM0I2
NDAwRkZFNTQwIC8qIENTU1Vuc2V0VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0Q4RkVFMUJEMDNCNjQwMEZGRTU0MCAvKiBDU1NVbnNldFZh
bHVlLmggKi87IH07Ci0JCUJDN0Q4RkYzMUJEMUE0NzkwMEZGRTU0MCAvKiBDU1NSZXZlcnRWYWx1
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdE
OEZGMTFCRDFBNDc5MDBGRkU1NDAgLyogQ1NTUmV2ZXJ0VmFsdWUuY3BwICovOyBzZXR0aW5ncyA9
IHtBU1NFVF9UQUdTID0gKCk7IH07IH07Ci0JCUJDN0Q4RkY0MUJEMUE0NzkwMEZGRTU0MCAvKiBD
U1NSZXZlcnRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM3RDhGRjIxQkQxQTQ3OTAwRkZFNTQwIC8qIENTU1JldmVydFZhbHVlLmggKi87IHNl
dHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJQkM3RDhGRjMxQkQxQTQ3OTAwRkZF
NTQwIC8qIENTU1JldmVydFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDN0Q4RkYxMUJEMUE0NzkwMEZGRTU0MCAvKiBDU1NSZXZlcnRWYWx1
ZS5jcHAgKi87IH07CisJCUJDN0Q4RkY0MUJEMUE0NzkwMEZGRTU0MCAvKiBDU1NSZXZlcnRWYWx1
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3RDhG
RjIxQkQxQTQ3OTAwRkZFNTQwIC8qIENTU1JldmVydFZhbHVlLmggKi87IH07CiAJCUJDN0Y0NEE4
MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEgLyogSW1h
Z2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUJDN0ZBNjIwMEQxRjBDQkQwMERCMjJBOSAvKiBMaXZlTm9kZUxpc3QuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3RkE2MUUwRDFGMENC
RDAwREIyMkE5IC8qIExpdmVOb2RlTGlzdC5jcHAgKi87IH07CiAJCUJDN0ZBNjIxMEQxRjBDQkQw
MERCMjJBOSAvKiBMaXZlTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDN0ZBNjFGMEQxRjBDQkQwMERCMjJBOSAvKiBMaXZlTm9kZUxpc3Qu
aCAqLzsgfTsKQEAgLTEwMTE2LDExICsxMDExNiwxMSBAQAogCQk3QzQ4QTZDRjE5MUM5RDY1MDAw
MjY2NzQgLyogV2ViS2l0TmFtZXNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYktpdE5hbWVzcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzQ4
QTZEMjE5MUM5RDhFMDAwMjY2NzQgLyogV2ViS2l0TmFtZXNwYWNlLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRO
YW1lc3BhY2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzRDOTZEODFBRDQ0
ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0M0Qzk2RDgxQUQ0NDgzNTAwMzY1QTYwIC8qIEpTV3JpdGFibGVTdHJlYW0u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXcml0YWJsZVN0cmVh
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNEM5NkQ5MUFENDQ4MzUwMDM2
NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTUmVhZGFibGVTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M0
Qzk2RDkxQUQ0NDgzNTAwMzY1QTYwIC8qIEpTV3JpdGFibGVTdHJlYW0uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXcml0YWJsZVN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzRDOTZEQTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVh
bVJlYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRh
YmxlU3RyZWFtUmVhZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M0Qzk2
REIxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk3QzRDOTZEODFBRDQ0ODM1MDAzNjVBNjAgLyogSlNXcml0
YWJsZVN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dy
aXRhYmxlU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M0Qzk2RDkx
QUQ0NDgzNTAwMzY1QTYwIC8qIEpTV3JpdGFibGVTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNXcml0YWJsZVN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QzRDOTZFMjFBRDQ0QUJGMDAzNjVBNTAgLyogTGF1bmNoU2VydmljZXNTUEkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF1bmNoU2VydmljZXNTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M0RURENzMxQTdCNjA3ODAwMTk4QzREIC8qIEZv
bnRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZvbnRD
b2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M1MjJENDkxNUI0NzdFODAw
OUI3Qzk1IC8qIEluc3BlY3Rvck92ZXJsYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5zcGVjdG9yT3ZlcmxheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMTM1NywxNCArMTEzNTcsMTMgQEAKIAkJOThDRTQzMjUxMjlFMDBCRDAwNTgyMURD
IC8qIExpbmtMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TGlua0xvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk4Q0U0MzI5MTI5
RTAwRTUwMDU4MjFEQyAvKiBMaW5rTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IExpbmtMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOThFQjFG
OTQxMzEzRkUwNTAwRDBFMUVBIC8qIE5vdEltcGxlbWVudGVkLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE5vdEltcGxlbWVudGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTk5MDhCMEVDMUJDQUNGMUYwMEVEMEY2NSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1qcy1idWlsdGlu
cyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEVEMUJDQUNGOTEwMEVEMEY2
NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5q
YXZhc2NyaXB0OyBwYXRoID0gQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5qczsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRUUxQkNBQ0Y5MTAwRUQwRjY1IC8qIENvdW50UXVl
dWluZ1N0cmF0ZWd5LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0g
Q291bnRRdWV1aW5nU3RyYXRlZ3kuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5
MDhCMEVGMUJDQUNGOTEwMEVEMEY2NSAvKiBSZWFkYWJsZVN0cmVhbS5qcyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtLmpzOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5OTA4QjBFRjFCQ0FDRjkxMDBFRDBGNzUgLyogV3JpdGFibGVT
dHJlYW0uanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBXcml0YWJs
ZVN0cmVhbS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRjAxQkNBQ0Y5
MTAwRUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5qcyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5qczsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRjExQkNBQ0Y5MTAwRUQwRjY1IC8qIFJl
YWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBwYXRoID0gUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk5MDhCMEYyMUJDQUNGOTEwMEVEMEY2NSAvKiBSZWFkYWJsZVN0cmVhbVJlYWRl
ci5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5OTA4QjBFRjFCQ0FD
RjkxMDBFRDBGNzUgLyogV3JpdGFibGVTdHJlYW0uanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmph
dmFzY3JpcHQ7IHBhdGggPSBXcml0YWJsZVN0cmVhbS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTkwOEIwRjMxQkNBQ0ZGRTAwRUQwRjY1IC8qIEJ5dGVMZW5ndGhRdWV1aW5nU3Ry
YXRlZ3lCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBC
eXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5OTA4QjBGNDFCQ0FDRkZFMDBFRDBGNjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdT
dHJhdGVneUJ1aWx0aW5zV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnNXcmFwcGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEY1MUJDQUQwN0QwMEVEMEY2NSAvKiBCeXRlTGVuZ3Ro
UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMTM3Miw2ICsxMTM3MSw3IEBACiAJCTk5MDhCMEY3MUJDQUQwN0QwMEVE
MEY2NSAvKiBDb3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRjgxQkNBRDA3RDAwRUQwRjY1IC8qIENvdW50UXVl
dWluZ1N0cmF0ZWd5QnVpbHRpbnNXcmFwcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnNXcmFwcGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEY5MUJDQUQwN0QwMEVEMEY2NSAvKiBSZWFkYWJsZVN0
cmVhbUJ1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
YWRhYmxlU3RyZWFtQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
OTA4QjBGOTFCQ0FEMDdEMDBFRDBGNzUgLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXcml0YWJsZVN0cmVhbUJ1aWx0aW5z
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRkExQkNBRDA3RDAwRUQw
RjY1IC8qIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlckJ1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlckJ1aWx0aW5z
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRkIxQkNBRDA3RDAwRUQw
RjY1IC8qIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlckJ1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlckJ1aWx0aW5zLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEZDMUJDQUQwN0QwMEVEMEY2NSAvKiBS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJCdWlsdGluc1dyYXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQnVpbHRpbnNXcmFwcGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTM3OSw3ICsxMTM3OSw2IEBACiAJ
CTk5MDhCMEZFMUJDQUQwN0QwMEVEMEY2NSAvKiBSZWFkYWJsZVN0cmVhbVJlYWRlckJ1aWx0aW5z
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFt
UmVhZGVyQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBG
RjFCQ0FEMDdEMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1SZWFkZXJCdWlsdGlucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZVN0cmVhbVJlYWRlckJ1aWx0aW5z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMTAwMUJDQUQwN0QwMEVEMEY2
NSAvKiBSZWFkYWJsZVN0cmVhbVJlYWRlckJ1aWx0aW5zV3JhcHBlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZVN0cmVhbVJlYWRlckJ1aWx0aW5zV3JhcHBlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5OTA4QjBGOTFCQ0FEMDdEMDBFRDBGNzUg
LyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTkyMDM5ODAxOEI5NUJDNjAwQjM5QUY5IC8qIFVzZXJJbnB1dEJyaWRnZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VySW5wdXRCcmlkZ2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTIwMzk4MTE4Qjk1QkM2MDBCMzlB
RjkgLyogVXNlcklucHV0QnJpZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFVzZXJJbnB1dEJyaWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUM3Q0NC
MjE4QzY2M0U0MDAzMkU0MTMgLyogTWVtb2l6ZWRET01SZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWVtb2l6ZWRET01SZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTExNDE4LDkgKzExNDE3LDkgQEAKIAkJOUFCMUYzN0YxOEUyNDg5QTAwNTM0
NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDNEODA2MUJCMzExMEQwMEI3NjREOCAvKiBSZWFkYWJs
ZVN0cmVhbUJ1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRh
YmxlU3RyZWFtQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwM0Q4
MDYxQkIzMTEwRDAwQjc2NEQ5IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNC
dWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QjAzRDgwNjFCQjMxMTBE
MDBCNzY0RTggLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlCMDNEODA3MUJCMzExMEQwMEI3NjREOCAvKiBSZWFkYWJsZVN0cmVhbUJ1
aWx0aW5zV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJs
ZVN0cmVhbUJ1aWx0aW5zV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
QjAzRDgwNzFCQjMxMTBEMDBCNzY0REEgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlu
c1dyYXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVTdHJl
YW1JbnRlcm5hbHNCdWlsdGluc1dyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU4IC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGFibGVTdHJlYW1CdWlsdGlucy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjAzRDgwNzFCQjMxMTBEMDBCNzY0RTgg
LyogV3JpdGFibGVTdHJlYW1CdWlsdGluc1dyYXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV3JpdGFibGVTdHJlYW1CdWlsdGluc1dyYXBwZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOUIxOUI2N0UxQjk2NEU1MjAwMzQ4NzQ1IC8qIFNoYWRvd1Jvb3Qu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNoYWRvd1Jvb3QuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5QjFBQjA3OTE2NDhDNjlEMDA1MUYzRjIgLyogSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MzQ1LDcgKzE1MzQ0LDYgQEAKIAkJMDg2
N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIFdlYktpdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJOTkwOEIwRUMxQkNBQ0YxRjAwRUQwRjY1IC8qIGdlbmVy
YXRlLWpzLWJ1aWx0aW5zICovLAogCQkJCTY1Qzk3QUYyMDhFQTkwODgwMEFDRDI3MyAvKiBjb25m
aWcuaCAqLywKIAkJCQlFREVDOTgwMjBBRUQ3RTE3MDA1OTEzN0YgLyogV2ViQ29yZVByZWZpeC5o
ICovLAogCQkJCTkzMDcwNjEzMDlFMENBODIwMEIxN0ZFNCAvKiBEZXJpdmVkU291cmNlcy5tYWtl
ICovLApAQCAtMTYzOTQsNyArMTYzOTIsNiBAQAogCQkJCTk5MDhCMEYyMUJDQUNGOTEwMEVEMEY2
NSAvKiBSZWFkYWJsZVN0cmVhbVJlYWRlci5qcyAqLywKIAkJCQk0MUEwMjNFRDFBMzlEQjc5MDBG
NzIyREYgLyogV3JpdGFibGVTdHJlYW0uaWRsICovLAogCQkJCTk5MDhCMEVGMUJDQUNGOTEwMEVE
MEY3NSAvKiBXcml0YWJsZVN0cmVhbS5qcyAqLywKLQogCQkJKTsKIAkJCXBhdGggPSBzdHJlYW1z
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE3MjQ3LDkgKzE3MjQ0LDkgQEAKIAkJ
CQkxQTE0MTRCNDEzQTBGMDUwMDAxOTk5NkMgLyogV2ViS2l0Rm9udEZhbWlseU5hbWVzLmggKi8s
CiAJCQkJOTlDQzBCNjgxOEJFQTFGRjAwNkNFQkNDIC8qIFdlYlJlcGxheUlucHV0cy5jcHAgKi8s
CiAJCQkJOTlDQzBCNjkxOEJFQTFGRjAwNkNFQkNDIC8qIFdlYlJlcGxheUlucHV0cy5oICovLAor
CQkJCTk5MDhCMEY5MUJDQUQwN0QwMEVEMEY3NSAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmNw
cCAqLywKIAkJCQk5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTggLyogV3JpdGFibGVTdHJlYW1CdWls
dGlucy5oICovLAogCQkJCTlCMDNEODA3MUJCMzExMEQwMEI3NjRFOCAvKiBXcml0YWJsZVN0cmVh
bUJ1aWx0aW5zV3JhcHBlci5oICovLAotCQkJCTk5MDhCMEY5MUJDQUQwN0QwMEVEMEY3NSAvKiBX
cml0YWJsZVN0cmVhbUJ1aWx0aW5zLmNwcCAqLywKIAkJCQk2NTY1ODFFQTA5RDE1MDhEMDAwRTYx
RDcgLyogWExpbmtOYW1lcy5jcHAgKi8sCiAJCQkJNjU2NTgxRUIwOUQxNTA4RDAwMEU2MUQ3IC8q
IFhMaW5rTmFtZXMuaCAqLywKIAkJCQlBODMzQzgwQTBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFt
ZXMuY3BwICovLApAQCAtMjkxMTEsNiArMjkxMDgsNyBAQAogCQkJCTk3NDZBRjI2MTRGNERERTYw
MDNFN0E3MCAvKiBHZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZCNjI1MkUxOERFMUIxNTAwQTA3QzA1IC8qIEdlb21ldHJ5VXRpbGl0aWVzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQ2QzgzRUZEMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkyRDUwMzY2ODFCQ0REREM0MDBFMjBCQjMgLyogR2VzdHVyZUV2
ZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkFGRkM4MzBEMDBBNUMxMDAzMDA3NEQgLyog
R2x5cGhQYWdlTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNTNDNjA4MERBNTZDNTcwMDIx
RUI1RCAvKiBHcmFkaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzUzQzYwQjBEQTU2Q0Yx
MDAyMUVCNUQgLyogR3JhZGllbnRDRy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5NzM5LDcgKzI5
NzM3LDYgQEAKIAkJCQkwNzA1ODUzMzE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29u
c3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwNTg1MzUxN0ZERTZEOTAwNUYyQkNC
IC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEw
NzQwMEQwRTc3QkRDMDAwMzNBRjI0IC8qIEpTTWVzc2FnZUNoYW5uZWwuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJMEZFRjIwQ0UxQkQ0QTI0MTAwMTI4RTVEIC8qIExlbmd0aFNpemUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTFBNUY5OUIwRTdFQUEyNTAwQUY4NUVBIC8qIEpTTWVzc2FnZUNoYW5u
ZWxDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzU3OTNFQzgwRDBDRTcyRDAwN0ZDMEFD
IC8qIEpTTWVzc2FnZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxMEI3RTcyMTA0NUZB
QjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTMwMTUxLDYgKzMwMTQ4LDcgQEAKIAkJCQk1MUIyNDE3QjBEOTMxRjNGMDBFODNGNUMgLyogTGVn
YWN5V2ViQXJjaGl2ZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDRTY1QkVBMEVBQ0RGMTYw
MDdFNDUzMyAvKiBMZW5ndGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTU1RjQ5N0ExNTFCODg4
MDAwQkI2N0RCIC8qIExlbmd0aEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkVG
MjBDRTFCRDRBMjQxMDAxMjhFNUQgLyogTGVuZ3RoU2l6ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGRkI2OThDQzE4MzNFRTBEMDAxNThBMzEgLyogTGluZUJyZWFrZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODlCNUVBQTExMUU4MDAzRDAwRjIzNjdFIC8qIExpbmVFbmRpbmcuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkZCNjk4Q0YxODM0MDJCQjAwMTU4QTMxIC8qIExpbmVJbmZvLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMzA0ODIsNyArMzA0ODAsNiBAQAogCQkJCUQzMDI3NTQ5MTJBNUZF
ODQwMDRCRDgyOCAvKiBSZW5kZXJEZXRhaWxzTWFya2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTlCMzJDREFBMTNERjdGQTkwMEYzNEQxMyAvKiBSZW5kZXJlZFBvc2l0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUU0M0EwMjNEMTdFQjM3MTMwMDRDREQyNSAvKiBSZW5kZXJFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTBGRUYyMEQwMUJENEE2NEYwMDEyOEU1RCAvKiBSZW5kZXJT
dHlsZUNvbnN0YW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjVCN0E1NDEwRjY1RDdBMDAz
NzYzMDIgLyogUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThF
QTczQzMwQTE5MDBFMzAwQThFRjVGIC8qIFJlbmRlckZpZWxkc2V0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTA2NkM3NzMwMEFCNjAzRkQwMDIzOENDNCAvKiBSZW5kZXJGaWxlVXBsb2FkQ29udHJv
bC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwNTU0LDYgKzMwNTUxLDcgQEAKIAkJCQlBQjI0N0E2
QzBBRkQ2MzgzMDAzRkE1RkQgLyogUmVuZGVyU2xpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTMxOTU1QTg2MTYwRDE5OTAwMDg1ODAyNSAvKiBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQzhDOEZBRDBERENEMzFCMDBCNTkyRjQgLyogUmVuZGVyU3R5
bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZFRjIwRDAxQkQ0QTY0RjAwMTI4RTVEIC8qIFJl
bmRlclN0eWxlQ29uc3RhbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNEU1NzE3MTMxMzI3
NjIwMENGODVBRiAvKiBSZW5kZXJTVkdBbGxJbk9uZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
OERGNEFFQzA5ODBDNDJDMDA1Mjk4MUIgLyogUmVuZGVyVGFibGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNkVEODc4QzQxNDc0OTNGNDAwNEMzNTk3IC8qIFJlbmRlclRhYmxlQ2FwdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTMwODY5LDcgKzMwODY3LDYgQEAKIAkJCQkyNEQ5MTJCNzEzQ0E5
QTY5MDBEMjE5MTUgLyogU1ZHQWx0R2x5cGhJdGVtRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCMjIyNzk3NjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5nbGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQjIyMjc5NzkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVDb2xvckVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMkQ1MDM2NjgxQkNERERDNDAwRTIwQkIzIC8qIEdl
c3R1cmVFdmVudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM2MkM3QjkxM0FDNkYxQTAwMzQ0
QkVCIC8qIFNWR0FuaW1hdGVkQW5nbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDMxQTMwODgx
M0I4Rjk3ODAwNzc5MUU0IC8qIFNWR0FuaW1hdGVkQm9vbGVhbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0M0E2MjVGOTEzQjMzMDQwMDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRDb2xvci5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwCmluZGV4IDJhZjk3OTllZDFlYmVkNGZiOWNiOGQ5NGY2NzY4YWM5NTYyY2ZjMDIuLmUz
OGQzNTMwOTE4Y2MwYWY2OTMzOWZhNzIxOTVhNzQ0NmNhY2U5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2
b2lkIEpTRE9NV2luZG93QmFzZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0RPTVdpbmRvd1No
ZWxsKiBzaGVsbCkKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKFwKICAgICAgICAgICAgIHN0
YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5GdW5jdGlv
bnMoKS5yZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zKCkubmFtZSMjUHJpdmF0ZU5hbWUo
KSwgXAogICAgICAgICAgICAgbV9wcml2YXRlRnVuY3Rpb25zLnJlYWRhYmxlU3RyZWFtSW50ZXJu
YWxzKCkubV8jI25hbWUjI0Z1bmN0aW9uLmdldCgpICwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwK
LSAgICAgICAgV0VCQ09SRVJFQURBQkxFU1RSRUFNSU5URVJOQUxTX0ZPUkVBQ0hfQlVJTFRJTl9G
VU5DVElPTl9OQU1FKERFQ0xBUkVfR0xPQkFMX1NUQVRJQykKKyAgICAgICAgV0VCQ09SRV9GT1JF
QUNIX1JFQURBQkxFU1RSRUFNSU5URVJOQUxTX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJF
X0dMT0JBTF9TVEFUSUMpCiAjdW5kZWYgREVDTEFSRV9HTE9CQUxfU1RBVElDCiAjZW5kaWYKICAg
ICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMgYi9T
b3VyY2UvV2ViQ29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNjFkZDY0MmU3Y2EyZjg5YTc4ZTFkMWE1MDNkOGI5NzgyYjQwNDQ4MC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9n
ZW5lcmF0ZS1qcy1idWlsdGlucworKysgL2Rldi9udWxsCkBAIC0xLDE4MSArMCwwIEBACi0jIS91
c3IvYmluL3B5dGhvbgotIyBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0jIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0jIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotIyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0jIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0jIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi1pbXBvcnQgYXJncGFyc2UKLWltcG9ydCBm
aWxlY21wCi1pbXBvcnQgb3MKLWltcG9ydCBzdWJwcm9jZXNzCi0KLWZyb20gc3RyaW5nIGltcG9y
dCBUZW1wbGF0ZQotCi0KLXBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKLXBhcnNl
ci5hZGRfYXJndW1lbnQoJy0tb3V0cHV0X2RpcicsIGRlZmF1bHQ9JycsIGhlbHA9J291dHB1dCBk
aXJlY3RvcnknKQotcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1pbnB1dCcsIGhlbHA9J3BhdGggdG8g
aW5wdXQgSlMgZmlsZScpCi1wYXJzZXIuYWRkX2FyZ3VtZW50KCctLWdlbmVyYXRlX2pzX2J1aWx0
aW5zX3BhdGgnLCBoZWxwPSdwYXRoIHRvIGRpcmVjdG9yeSBjb250YWluaW5nIEphdmFTY3JpcHRD
b3JlXCdzIGdlbmVyYXRlLWpzLWJ1aWx0aW5zJykKLQotYXJncyA9IHBhcnNlci5wYXJzZV9hcmdz
KCkKLWZpbGVuYW1lID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKGFyZ3MuaW5w
dXQpKVswXQotCi0jIGdlbmVyYXRlIEpTIGJ1aWx0aW5zCi1uYW1lc3BhY2UgPSAiV2ViQ29yZSIK
LXByZWZpeCA9ICJXRUJDT1JFIiArIGZpbGVuYW1lLnVwcGVyKCkKLW91dHB1dCA9IG9zLnBhdGgu
am9pbihhcmdzLm91dHB1dF9kaXIsIGZpbGVuYW1lICsgIkJ1aWx0aW5zIikKLWpzY19nZW5lcmF0
ZV9idWlsdGluX3NjcmlwdCA9IG9zLnBhdGguam9pbihhcmdzLmdlbmVyYXRlX2pzX2J1aWx0aW5z
X3BhdGgsICJnZW5lcmF0ZS1qcy1idWlsdGlucyIpCi0KLXN1YnByb2Nlc3MuY2FsbChbInB5dGhv
biIsIGpzY19nZW5lcmF0ZV9idWlsdGluX3NjcmlwdCwgIi0tb3V0cHV0Iiwgb3V0cHV0LCAiLS1u
YW1lc3BhY2UiLCBuYW1lc3BhY2UsICItLXByZWZpeCIsIHByZWZpeCwgYXJncy5pbnB1dF0sIHN0
ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKLQotIyBnZW5lcmF0ZSBKUyBidWlsdGlucyB3cmFwcGVy
Ci1vdXRwdXRfYmFzZSA9IG91dHB1dCArICJXcmFwcGVyIgotCi1idWlsdGluc1dyYXBwZXJIZWFk
ZXIgPSBvcGVuKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsICJ3IikKLQotYnVpbHRpbnNXcmFwcGVy
SGVhZGVyLndyaXRlKFRlbXBsYXRlKAotIiIiCi0vKiBHZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtanMt
YnVpbHRpbnMgZG8gbm90IGhhbmQgZWRpdC4gKi8KLQotLyoKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
LSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKLSAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEg
IFVTQQotICovCi0KLSNpZm5kZWYgJHtGaWxlbmFtZX1CdWlsdGluc1dyYXBwZXJfaAotI2RlZmlu
ZSAke0ZpbGVuYW1lfUJ1aWx0aW5zV3JhcHBlcl9oCi0KLSNpbmNsdWRlICIke0ZpbGVuYW1lfUJ1
aWx0aW5zLmgiCi0jaW5jbHVkZSA8Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
aD4KLSNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4KLSNpbmNsdWRlIDxydW50aW1l
L0lkZW50aWZpZXIuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyAke0ZpbGVuYW1lfUJ1aWx0aW5zV3JhcHBlciA6IHByaXZh
dGUgSlNDOjpXZWFrSGFuZGxlT3duZXIgewotcHVibGljOgotICAgIGV4cGxpY2l0ICR7RmlsZW5h
bWV9QnVpbHRpbnNXcmFwcGVyKEpTQzo6Vk0qIHZtKQotICAgICAgICA6IG1fdm0oKnZtKQotICAg
ICAgICAke1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElaRV9C
VUlMVElOX05BTUVTKQotI2RlZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMo
bmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpICwgbV8jI25hbWUjI1NvdXJjZShKU0M6Om1ha2VT
b3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc18jI25hbWUsIGxlbmd0aCkpKQot
ICAgICAgICAke1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VS
Q0VfTUVNQkVSUykKLSN1bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKLSAg
ICB7Ci0gICAgfQotCi0jZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1
bmN0aW9uTmFtZSwgbGVuZ3RoKSBcXAotICAgIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXFwKLSAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIG5h
bWUjI1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KLSAgICAke1By
ZWZpeH1fRk9SRUFDSF9CVUlMVElOKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQotI3VuZGVm
IEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCi0KLSAgICAke1ByZWZpeH1fRk9SRUFDSF9CVUlM
VElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCi0K
LSAgICB2b2lkIGV4cG9ydE5hbWVzKCk7Ci0KLXByaXZhdGU6Ci0gICAgSlNDOjpWTSYgbV92bTsK
LQotICAgICR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JV
SUxUSU5fTkFNRVMpCi0KLSNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5h
bWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcXAotICAgIEpTQzo6U291cmNlQ29kZSBtXyMjbmFt
ZSMjU291cmNlO1xcCi0gICAgSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU+IG1fIyNuYW1lIyNFeGVjdXRhYmxlOwotICAgICR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU4o
REVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQotI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9T
T1VSQ0VfTUVNQkVSUwotCi19OwotCi0jZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVT
KG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcXAotaW5saW5lIEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqICR7RmlsZW5hbWV9QnVpbHRpbnNXcmFwcGVyOjpuYW1lIyNFeGVjdXRh
YmxlKCkgXFwKLXtcXAotICAgIGlmICghbV8jI25hbWUjI0V4ZWN1dGFibGUpXFwKLSAgICAgICAg
bV8jI25hbWUjI0V4ZWN1dGFibGUgPSBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZT4oSlNDOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShtX3ZtLCBtXyMjbmFtZSMjU291
cmNlLCBmdW5jdGlvbk5hbWUjI1B1YmxpY05hbWUoKSwgc18jI25hbWUjI0NvbnN0cnVjdEFiaWxp
dHkpLCB0aGlzLCAmbV8jI25hbWUjI0V4ZWN1dGFibGUpO1xcCi0gICAgcmV0dXJuIG1fIyNuYW1l
IyNFeGVjdXRhYmxlLmdldCgpO1xcCi19Ci0ke1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOKERFRklO
RV9CVUlMVElOX0VYRUNVVEFCTEVTKQotI3VuZGVmIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVT
Ci0KLWlubGluZSB2b2lkICR7RmlsZW5hbWV9QnVpbHRpbnNXcmFwcGVyOjpleHBvcnROYW1lcygp
Ci17Ci0jZGVmaW5lIEVYUE9SVF9GVU5DVElPTl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVydHlOYW1l
cy0+YXBwZW5kRXh0ZXJuYWxOYW1lKG5hbWUjI1B1YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0ZU5h
bWUoKSk7Ci0gICAgJHtQcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKEVYUE9S
VF9GVU5DVElPTl9OQU1FKQotI3VuZGVmIEVYUE9SVF9GVU5DVElPTl9OQU1FCi19Ci0KLWNsYXNz
ICR7RmlsZW5hbWV9QnVpbHRpbkZ1bmN0aW9ucyB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgJHtG
aWxlbmFtZX1CdWlsdGluRnVuY3Rpb25zKEpTQzo6Vk0mIHZtKSA6IG1fdm0odm0pIHsgfQotCi0g
ICAgdm9pZCBpbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKLSAgICB2b2lkIHZpc2l0KEpTQzo6
U2xvdFZpc2l0b3ImKTsKLQotcHVibGljOgotICAgIEpTQzo6Vk0mIG1fdm07Ci0KLSNkZWZpbmUg
REVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKGZ1bmN0aW9uTmFtZSkgXFwKLSAgICBKU0M6
OldyaXRlQmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9u
OwotICAgICR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JV
SUxUSU5fU09VUkNFX01FTUJFUlMpCi0jdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1C
RVJTCi19OwotCi1pbmxpbmUgdm9pZCAke0ZpbGVuYW1lfUJ1aWx0aW5GdW5jdGlvbnM6OmluaXQo
SlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotI2RlZmluZSBFWFBPUlRfRlVO
Q1RJT04oY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKVxcCi0gICAgbV8jI2Z1bmN0aW9u
TmFtZSMjRnVuY3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmplY3QsIEpTQzo6SlNGdW5jdGlvbjo6
Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKG1fdm0sIGNvZGVOYW1lIyNHZW5lcmF0b3IobV92bSksICZn
bG9iYWxPYmplY3QpKTsKLSAgICAke1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOKEVYUE9SVF9GVU5D
VElPTikKLSN1bmRlZiBFWFBPUlRfRlVOQ1RJT04KLX0KLQotaW5saW5lIHZvaWQgJHtGaWxlbmFt
ZX1CdWlsdGluRnVuY3Rpb25zOjp2aXNpdChKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQotewot
I2RlZmluZSBWSVNJVF9GVU5DVElPTihuYW1lKSB2aXNpdG9yLmFwcGVuZCgmbV8jI25hbWUjI0Z1
bmN0aW9uKTsKLSAgICAke1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoVklT
SVRfRlVOQ1RJT04pCi0jdW5kZWYgVklTSVRfRlVOQ1RJT04KLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gJHtGaWxlbmFtZX1CdWlsdGluc1dyYXBwZXJfaAotIiIiKS5z
dWJzdGl0dXRlKGRpY3QoRmlsZW5hbWU9ZmlsZW5hbWUsIFByZWZpeD1wcmVmaXgpKSkKLQotYnVp
bHRpbnNXcmFwcGVySGVhZGVyLmNsb3NlKCkKLQotaWYgKG5vdCBvcy5wYXRoLmV4aXN0cyhvdXRw
dXRfYmFzZSArICIuaCIpKSBvciAobm90IGZpbGVjbXAuY21wKG91dHB1dF9iYXNlICsgIi5oLnRt
cCIsIG91dHB1dF9iYXNlICsgIi5oIiwgc2hhbGxvdz1GYWxzZSkpOgotICAgIGlmIChvcy5wYXRo
LmV4aXN0cyhvdXRwdXRfYmFzZSArICIuaCIpKToKLSAgICAgICAgb3MucmVtb3ZlKG91dHB1dF9i
YXNlICsgIi5oIikKLSAgICBvcy5yZW5hbWUob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0cHV0
X2Jhc2UgKyAiLmgiKQotZWxzZToKLSAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmgudG1w
IikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBm
NzFkZTEyNzhlODllMTM3MTlkOWI1NjBlNDFmZTE0OTE4NTcyMDkxLi45Y2U0NzA2M2EyNTYwNmNh
ODNhNjBmZTc3NTc1ODU1YzJmYzZlYTg5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTUtMTAtMTMgIEJyaWFuIEJ1
cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVzdHJ1Y3R1cmUgZ2VuZXJhdGUtanMt
YmluZGluZ3Mgc2NyaXB0IHRvIGJlIG1vZHVsYXIgYW5kIHRlc3RhYmxlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk5MjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBzdHViIHNoZWxsIHNjcmlw
dCBhbmQgYmFzaWMgd2Via2l0cHkgc3VwcG9ydCBmb3IgcnVubmluZyBidWlsdGlucworICAgICAg
ICBnZW5lcmF0b3IgdGVzdHMuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1idWlsdGlucy1nZW5l
cmF0b3ItdGVzdHM6IEFkZGVkLgorICAgICAgICAobWFpbik6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9jb2RlZ2VuL19faW5pdF9fLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvZGVnZW4vbWFpbi5weTogQWRkZWQuCisKKyAgICAgICAgICAgIFRoZSBvbmx5IGlu
dGVyZXN0aW5nIGRpZmZlcmVuY2UgaGVyZSBmcm9tIHRoZSBpbnNwZWN0b3IgcHJvdG9jb2wKKyAg
ICAgICAgICAgIGdlbmVyYXRvciBlcXVpdmFsZW50IGlzIHRoYXQgdGhpcyBpbXBsZW1lbnRhdGlv
biBkZWNvZGVzIHRoZSB0YXJnZXQKKyAgICAgICAgICAgIGZyYW1ld29yayBhbmQgb3V0cHV0IG1v
ZGUgKGNvbWJpbmVkIG9yIHNlcGFyYXRlKSBmcm9tIHRoZSB0ZXN0J3MgZmlsZSBuYW1lLgorCisg
ICAgICAgIChCdWlsdGluc0dlbmVyYXRvclRlc3RzKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJh
dG9yVGVzdHMuX19pbml0X18pOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3JUZXN0cy5nZW5l
cmF0ZV9mcm9tX2pzX2J1aWx0aW5zKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHMu
d3JpdGVfZXJyb3JfZmlsZSk6CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvclRlc3RzLmRldGVj
dF9jaGFuZ2VzKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHMucnVuX3Rlc3RzKToK
KyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHMubWFpbik6CisKIDIwMTUtMTAtMTkgIEFs
ZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIG5ldyBFV1Mg
cXVldWVzIHRvIGJvdCB3YXRjaGVyJ3MgZGFzaGJvYXJkCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3J1bi1idWlsdGlucy1nZW5lcmF0b3ItdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1idWls
dGlucy1nZW5lcmF0b3ItdGVzdHMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM5OGM3OGNhMTBlYzU5NzYyNjYxMmM4
NTU1M2FiZDFhNGU2ZmJkNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWJ1
aWx0aW5zLWdlbmVyYXRvci10ZXN0cwpAQCAtMCwwICsxLDQyIEBACisjIS91c3IvYmluL2VudiBw
eXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBzeXMK
K2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZXhlY3V0aXZlCisKK2RlZiBtYWlu
KGFyZ3YpOgorICAgICIiIlJ1bnMgdGhlIEpTIGJ1aWx0aW5zIGNvZGUgZ2VuZXJhdG9yIG9uIHRl
c3QgaW5wdXQgZmlsZXMgYW5kIGNvbXBhcmVzCisgICAgdGhlIHJlc3VsdHMgd2l0aCByZWZlcmVu
Y2UgZmlsZXMuCisKKyAgICBPcHRpb25zOgorICAgICAgIC0tcmVzZXQtcmVzdWx0czogT3Zlcndy
aXRlcyB0aGUgcmVmZXJlbmNlIGZpbGVzIHdpdGggdGhlIGdlbmVyYXRlZCByZXN1bHRzLgorCisg
ICAgIiIiCisgICAgcmVzZXRfcmVzdWx0cyA9ICItLXJlc2V0LXJlc3VsdHMiIGluIGFyZ3YKKwor
ICAgIGZyb20gd2Via2l0cHkuY29kZWdlbi5tYWluIGltcG9ydCBCdWlsdGluc0dlbmVyYXRvclRl
c3RzCisgICAgcmV0dXJuIEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHMocmVzZXRfcmVzdWx0cywgZXhl
Y3V0aXZlLkV4ZWN1dGl2ZSgpKS5tYWluKCkKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
KyAgICBzeXMuZXhpdChtYWluKHN5cy5hcmd2KSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29kZWdlbi9fX2luaXRfXy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29k
ZWdlbi9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjY1YmVlNWJiNzdlOTZlYmM3Y2Q5YzQ3NjQw
NjkwZmJkYThhYzE5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b2RlZ2VuL19faW5pdF9fLnB5CkBAIC0wLDAgKzEgQEAKKyMgUmVxdWlyZWQgZm9yIFB5dGhvbiB0
byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZSBmaWxlcwpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb2RlZ2VuL21haW4ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvZGVnZW4vbWFpbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDM5NmRiOWEzOGJlMGYwN2JlMTg2M2I4
OGFlZDQxZWRmOTdkOTY5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb2RlZ2VuL21haW4ucHkKQEAgLTAsMCArMSwxNDQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAi
QVMKKyMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVECisjIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQorIyBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgSE9MREVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IG9zCitpbXBvcnQgb3Mu
cGF0aAoraW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworaW1wb3J0IHRlbXBmaWxlCitmcm9tIHdl
YmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uZGV0ZWN0aW9uIGltcG9ydCBkZXRlY3Rfc2NtX3N5
c3RlbQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0
RXJyb3IKKworCitjbGFzcyBCdWlsdGluc0dlbmVyYXRvclRlc3RzOgorCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHJlc2V0X3Jlc3VsdHMsIGV4ZWN1dGl2ZSk6CisgICAgICAgIHNlbGYucmVzZXRf
cmVzdWx0cyA9IHJlc2V0X3Jlc3VsdHMKKyAgICAgICAgc2VsZi5leGVjdXRpdmUgPSBleGVjdXRp
dmUKKworICAgIGRlZiBnZW5lcmF0ZV9mcm9tX2pzX2J1aWx0aW5zKHNlbGYsIGJ1aWx0aW5zX2Zp
bGUsIG91dHB1dF9kaXJlY3RvcnksIGZyYW1ld29ya19uYW1lPSIiLCBjb21iaW5lZF9vdXRwdXRz
PUZhbHNlKToKKyAgICAgICAgY21kID0gWydweXRob24nLAorICAgICAgICAgICAgICAgJ0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHknLAorICAgICAgICAgICAg
ICAgJy0tb3V0cHV0LWRpcmVjdG9yeScsIG91dHB1dF9kaXJlY3RvcnksCisgICAgICAgICAgICAg
ICAnLS1mb3JjZScsCisgICAgICAgICAgICAgICAnLS1mcmFtZXdvcmsnLCBmcmFtZXdvcmtfbmFt
ZSwKKyAgICAgICAgICAgICAgICctLXRlc3QnXQorCisgICAgICAgIGlmIGNvbWJpbmVkX291dHB1
dHM6CisgICAgICAgICAgICBjbWQuYXBwZW5kKCctLWNvbWJpbmVkJykKKworICAgICAgICBjbWQu
YXBwZW5kKGJ1aWx0aW5zX2ZpbGUpCisKKyAgICAgICAgZXhpdF9jb2RlID0gMAorICAgICAgICB0
cnk6CisgICAgICAgICAgICBzdGRlcnJfb3V0cHV0ID0gc2VsZi5leGVjdXRpdmUucnVuX2NvbW1h
bmQoY21kKQorICAgICAgICAgICAgaWYgc3RkZXJyX291dHB1dDoKKyAgICAgICAgICAgICAgICBz
ZWxmLndyaXRlX2Vycm9yX2ZpbGUoYnVpbHRpbnNfZmlsZSwgb3V0cHV0X2RpcmVjdG9yeSwgc3Rk
ZXJyX291dHB1dCkKKyAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgorICAgICAgICAgICAg
cHJpbnQgZS5vdXRwdXQKKyAgICAgICAgICAgIGV4aXRfY29kZSA9IGUuZXhpdF9jb2RlCisgICAg
ICAgIHJldHVybiBleGl0X2NvZGUKKworICAgIGRlZiB3cml0ZV9lcnJvcl9maWxlKHNlbGYsIGlu
cHV0X2ZpbGVwYXRoLCBvdXRwdXRfZGlyZWN0b3J5LCBlcnJvcl9vdXRwdXQpOgorICAgICAgICBv
dXRwdXRfZmlsZXBhdGggPSBvcy5wYXRoLmpvaW4ob3V0cHV0X2RpcmVjdG9yeSwgb3MucGF0aC5i
YXNlbmFtZShpbnB1dF9maWxlcGF0aCkgKyAnLWVycm9yJykKKworICAgICAgICB3aXRoIG9wZW4o
b3V0cHV0X2ZpbGVwYXRoLCAidyIpIGFzIG91dHB1dF9maWxlOgorICAgICAgICAgICAgb3V0cHV0
X2ZpbGUud3JpdGUoZXJyb3Jfb3V0cHV0KQorCisgICAgZGVmIGRldGVjdF9jaGFuZ2VzKHNlbGYs
IHdvcmtfZGlyZWN0b3J5LCByZWZlcmVuY2VfZGlyZWN0b3J5KToKKyAgICAgICAgY2hhbmdlc19m
b3VuZCA9IEZhbHNlCisgICAgICAgIGZvciBvdXRwdXRfZmlsZSBpbiBvcy5saXN0ZGlyKHdvcmtf
ZGlyZWN0b3J5KToKKyAgICAgICAgICAgIGNtZCA9IFsnZGlmZicsCisgICAgICAgICAgICAgICAg
ICAgJy11JywKKyAgICAgICAgICAgICAgICAgICAnLU4nLAorICAgICAgICAgICAgICAgICAgIG9z
LnBhdGguam9pbihyZWZlcmVuY2VfZGlyZWN0b3J5LCBvdXRwdXRfZmlsZSksCisgICAgICAgICAg
ICAgICAgICAgb3MucGF0aC5qb2luKHdvcmtfZGlyZWN0b3J5LCBvdXRwdXRfZmlsZSldCisKKyAg
ICAgICAgICAgIGV4aXRfY29kZSA9IDAKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAg
ICBvdXRwdXQgPSBzZWxmLmV4ZWN1dGl2ZS5ydW5fY29tbWFuZChjbWQpCisgICAgICAgICAgICBl
eGNlcHQgU2NyaXB0RXJyb3IsIGU6CisgICAgICAgICAgICAgICAgb3V0cHV0ID0gZS5vdXRwdXQK
KyAgICAgICAgICAgICAgICBleGl0X2NvZGUgPSBlLmV4aXRfY29kZQorCisgICAgICAgICAgICBp
ZiBleGl0X2NvZGUgb3Igb3V0cHV0OgorICAgICAgICAgICAgICAgIHByaW50ICdGQUlMOiAlcycg
JSBvdXRwdXRfZmlsZQorICAgICAgICAgICAgICAgIHByaW50IG91dHB1dAorICAgICAgICAgICAg
ICAgIGNoYW5nZXNfZm91bmQgPSBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgIHByaW50ICdQQVNTOiAlcycgJSBvdXRwdXRfZmlsZQorICAgICAgICByZXR1cm4gY2hhbmdl
c19mb3VuZAorCisgICAgZGVmIHJ1bl90ZXN0cyhzZWxmLCBpbnB1dF9kaXJlY3RvcnksIHJlZmVy
ZW5jZV9kaXJlY3RvcnkpOgorICAgICAgICB3b3JrX2RpcmVjdG9yeSA9IHJlZmVyZW5jZV9kaXJl
Y3RvcnkKKworICAgICAgICBwYXNzZWQgPSBUcnVlCisgICAgICAgIGZvciBpbnB1dF9maWxlIGlu
IG9zLmxpc3RkaXIoaW5wdXRfZGlyZWN0b3J5KToKKyAgICAgICAgICAgICh0ZXN0X25hbWUsIGV4
dGVuc2lvbikgPSBvcy5wYXRoLnNwbGl0ZXh0KGlucHV0X2ZpbGUpCisgICAgICAgICAgICBpZiBl
eHRlbnNpb24gIT0gJy5qcyc6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAg
ICMgR2VuZXJhdGUgb3V0cHV0IGludG8gdGhlIHdvcmsgZGlyZWN0b3J5IChlaXRoZXIgdGhlIGdp
dmVuIG9uZSBvciBhCisgICAgICAgICAgICAjIHRlbXAgb25lIGlmIG5vdCByZXNldF9yZXN1bHRz
IGlzIHBlcmZvcm1lZCkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLnJlc2V0X3Jlc3VsdHM6Cisg
ICAgICAgICAgICAgICAgd29ya19kaXJlY3RvcnkgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKworICAg
ICAgICAgICAgKGZyYW1ld29ya19uYW1lLCB0ZXN0X2Nhc2UsIG91dHB1dF9tb2RlKSA9IHRlc3Rf
bmFtZS5zcGxpdCgnLScpCisgICAgICAgICAgICBpZiBub3QgZnJhbWV3b3JrX25hbWUgb3Igbm90
IG91dHB1dF9tb2RlIG9yIG5vdCB0ZXN0X2Nhc2U6CisgICAgICAgICAgICAgICAgcHJpbnQgIklu
dmFsaWQgdGVzdCBjYXNlIG5hbWU6IHNob3VsZCBiZSBGcmFtZXdvcmstVGVzdENhc2VOYW1lLU91
dHB1dE1vZGUuanMiCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgY29t
YmluZWRfb3V0cHV0cyA9IG91dHB1dF9tb2RlID09ICJDb21iaW5lZCIKKyAgICAgICAgICAgIGlm
IHNlbGYuZ2VuZXJhdGVfZnJvbV9qc19idWlsdGlucyhvcy5wYXRoLmpvaW4oaW5wdXRfZGlyZWN0
b3J5LCBpbnB1dF9maWxlKSwgd29ya19kaXJlY3RvcnksIGZyYW1ld29ya19uYW1lPWZyYW1ld29y
a19uYW1lLCBjb21iaW5lZF9vdXRwdXRzPWNvbWJpbmVkX291dHB1dHMpOgorICAgICAgICAgICAg
ICAgIHBhc3NlZCA9IEZhbHNlCisKKyAgICAgICAgICAgIGlmIHNlbGYucmVzZXRfcmVzdWx0czoK
KyAgICAgICAgICAgICAgICBwcmludCAiUmVzZXQgcmVzdWx0cyBmb3IgdGVzdDogJXMiICUgKGlu
cHV0X2ZpbGUpCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgIyBEZXRl
Y3QgY2hhbmdlcworICAgICAgICAgICAgaWYgc2VsZi5kZXRlY3RfY2hhbmdlcyh3b3JrX2RpcmVj
dG9yeSwgcmVmZXJlbmNlX2RpcmVjdG9yeSk6CisgICAgICAgICAgICAgICAgcGFzc2VkID0gRmFs
c2UKKyAgICAgICAgICAgIHNodXRpbC5ybXRyZWUod29ya19kaXJlY3RvcnkpCisKKyAgICAgICAg
cmV0dXJuIHBhc3NlZAorCisgICAgZGVmIG1haW4oc2VsZik6CisgICAgICAgIGN1cnJlbnRfc2Nt
ID0gZGV0ZWN0X3NjbV9zeXN0ZW0ob3MuY3VyZGlyKQorICAgICAgICBvcy5jaGRpcihvcy5wYXRo
LmpvaW4oY3VycmVudF9zY20uY2hlY2tvdXRfcm9vdCwgJ1NvdXJjZScpKQorCisgICAgICAgIGFs
bF90ZXN0c19wYXNzZWQgPSBUcnVlCisKKyAgICAgICAgaW5wdXRfZGlyZWN0b3J5ID0gb3MucGF0
aC5qb2luKCdKYXZhU2NyaXB0Q29yZScsICdTY3JpcHRzJywgJ3Rlc3RzJywgJ2J1aWx0aW5zJykK
KyAgICAgICAgcmVmZXJlbmNlX2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbignSmF2YVNjcmlwdENv
cmUnLCAnU2NyaXB0cycsICd0ZXN0cycsICdidWlsdGlucycsICdleHBlY3RlZCcpCisgICAgICAg
IGlmIG5vdCBzZWxmLnJ1bl90ZXN0cyhpbnB1dF9kaXJlY3RvcnksIHJlZmVyZW5jZV9kaXJlY3Rv
cnkpOgorICAgICAgICAgICAgYWxsX3Rlc3RzX3Bhc3NlZCA9IEZhbHNlCisKKyAgICAgICAgcHJp
bnQgJycKKyAgICAgICAgaWYgYWxsX3Rlc3RzX3Bhc3NlZDoKKyAgICAgICAgICAgIHByaW50ICdB
bGwgdGVzdHMgUEFTUyEnCisgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgcHJpbnQgJ1NvbWUgdGVzdHMgRkFJTCEgKFRvIHVwZGF0ZSB0aGUgcmVmZXJlbmNl
IGZpbGVzLCBleGVjdXRlICJydW4tYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzIC0tcmVzZXQtcmVz
dWx0cyIpJworICAgICAgICAgICAgcmV0dXJuIC0xCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263597</attachid>
            <date>2015-10-20 11:52:31 -0700</date>
            <delta_ts>2015-10-20 16:39:02 -0700</delta_ts>
            <desc>Proposed Fix (rebased)</desc>
            <filename>bug-149929-20151020115148.patch</filename>
            <type>text/plain</type>
            <size>343274</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
YjYzOWM5YzU3NGQwMzIzMDBmMDhjYzlhMTEzNGEyZTI2MDFhYWFmLi5kOWVjYjlmNmQyMDkxMzIx
YjlkYjdjMmNjNzg4MmY1NmE1NWZkZWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTUgQEAKKzIwMTUtMTAtMTkgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmVzdHJ1Y3R1cmUgZ2VuZXJhdGUtanMtYmluZGluZ3Mgc2NyaXB0IHRvIGJlIG1v
ZHVsYXIgYW5kIHRlc3RhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDk5MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGlzIGEgbmV3IGNvZGUgZ2VuZXJhdG9yLCBiYXNlZCBvbiB0aGUgcmVw
bGF5IGlucHV0cyBjb2RlIGdlbmVyYXRvciBhbmQKKyAgICAgICAgdGhlIGluc3BlY3RvciBwcm90
b2NvbCBjb2RlIGdlbmVyYXRvciwgd2hpY2ggcHJvZHVjZXMgdmFyaW91cyBmaWxlcyBmb3IgSlMK
KyAgICAgICAgYnVpbHRpbnMuCisKKyAgICAgICAgUmVsYXRpdmUgdG8gdGhlIGdlbmVyYXRvciBp
dCByZXBsYWNlcywgdGhpcyBvbmUgY29uc29saWRhdGVzIHR3byBzY3JpcHRzIGluCisgICAgICAg
IEphdmFTY3JpcHRDb3JlIGFuZCBXZWJDb3JlIGludG8gYSBzaW5nbGUgc2NyaXB0IHdpdGggbXVs
dGlwbGUgZmlsZXMuIFBhcnNlZAorICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnVpbHRp
bnMgZmlsZSBpcyBzdG9yZWQgaW4gYmFja2VuZC1pbmRlcGVuZGVudCBtb2RlbAorICAgICAgICBv
YmplY3RzLiBFYWNoIG91dHB1dCBmaWxlIGhhcyBpdHMgb3duIGNvZGUgZ2VuZXJhdG9yIHRoYXQg
dXNlcyB0aGUgbW9kZWwgdG8KKyAgICAgICAgcHJvZHVjZSByZXN1bHRpbmcgY29kZS4gR2VuZXJh
dG9ycyBhcmUgYWRkaXRpb25hbGx5IHBhcmFtZXRlcml6ZWQgYnkgdGhlIHRhcmdldAorICAgICAg
ICBmcmFtZXdvcmsgKHRvIGNob29zZSBjb3JyZWN0IG1hY3JvcyBhbmQgaW5jbHVkZXMpIGFuZCBv
dXRwdXQgbW9kZSAob25lCisgICAgICAgIGhlYWRlci9pbXBsZW1lbnRhdGlvbiBmaWxlIHBlciBi
dWlsdGluIG9yIHBlciBmcmFtZXdvcmspLgorCisgICAgICAgIEl0IGluY2x1ZGVzIGEgZmV3IHNp
bXBsZSB0ZXN0cyBvZiB0aGUgZ2VuZXJhdG9yJ3MgZnVuY3Rpb25hbGl0eS4gVGhlc2UgcmVzdWx0
LQorICAgICAgICBiYXNlZCB0ZXN0cyB3aWxsIGJlY29tZSBpbmNyZWFzaW5nbHkgbW9yZSBpbXBv
cnRhbnQgYXMgd2Ugc3RhcnQgdG8gYWRkIHN1cHBvcnQKKyAgICAgICAgZm9yIGJ1aWx0aW5zIGFu
bm90YXRpb24gc3VjaCBhcyBAb3B0aW9uYWwsIEBpbnRlcm5hbCwgZXRjLiB0byB0aGUgY29kZSBn
ZW5lcmF0b3IuCisKKyAgICAgICAgU29tZSBvZiB0aGVzZSBjb21wbGV4aXRpZXMsIHN1Y2ggYXMg
aGF2aW5nIHR3byBvdXRwdXQgbW9kZXMsIHdpbGwgYmUgcmVtb3ZlZCBpbgorICAgICAgICBzdWJz
ZXF1ZW50IHBhdGNoZXMuIFRoaXMgcGF0Y2ggaXMgaW50ZW5kZWQgdG8gZXhhY3RseSByZXBsYWNl
IHRoZSBleGlzdGluZworICAgICAgICBmdW5jdGlvbmFsaXR5IHdpdGggYSB1bmlmaWVkIHNjcmlw
dCB0aGF0IG1ha2VzIGFkZGl0aW9uYWwgY2xlYW51cHMgc3RyYWlnaHRmb3J3YXJkLgorCisgICAg
ICAgIEFkZGl0aW9uYWwgY2xlYW51cCBhbmQgY29uc29saWRhdGlvbiBiZXR3ZWVuIGluc3BlY3Rv
ciBjb2RlIGdlbmVyYXRvciBzY3JpcHRzCisgICAgICAgIGFuZCB0aGlzIHNjcmlwdCB3aWxsIGJl
IHB1cnN1ZWQgaW4gZm9sbG93dXAgcGF0Y2hlcy4KKworICAgICAgICBOZXcgdGVzdHM6CisKKyAg
ICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21p
c2UtQ29tYmluZWQuanMKKyAgICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0
Q29yZS1CdWlsdGluLlByb21pc2UtU2VwYXJhdGUuanMKKyAgICAgICAgU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5qcworICAg
ICAgICBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90
eXBlLVNlcGFyYXRlLmpzCisgICAgICAgIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlw
dENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpzCisgICAgICAgIFNjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFyYXRlLmpz
CisgICAgICAgIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1T
ZXBhcmF0ZS5qcworICAgICAgICBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRl
ZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcworICAgICAgICBTY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcworICAgICAgICBTY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcworCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKworICAgICAgICAgICAgRGVmaW5lIEphdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSIGV4cGxpY2l0bHkgc28gdGhlIGFkZF9jdXN0b21fY29tbWFuZCBhbmQK
KyAgICAgICAgICAgIHNoYXJlZCBmaWxlIGxpc3RzIGFyZSBpZGVudGljYWwgYmV0d2VlbiBKYXZh
U2NyaXB0Q29yZSBhbmQgV2ViQ29yZS4KKworICAgICAgICAgICAgVGhlIG91dHB1dCBmaWxlcyBh
ZGRpdGlvbmFsbHkgZGVwZW5kIG9uIGFsbCBidWlsdGluIGdlbmVyYXRvciBzY3JpcHQgZmlsZXMK
KyAgICAgICAgICAgIGFuZCBpbnB1dCBmaWxlcyB0aGF0IGFyZSBjb21iaW5lZCBpbnRvIHRoZSBz
aW5nbGUgaGVhZGVyL2ltcGxlbWVudGF0aW9uIGZpbGUuCisKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy5tYWtlOgorCisgICAgICAgICAgICBEZWZpbmUgSmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVIgZXhwbGljaXRseSBzbyB0aGUgcnVsZSBmb3IgY29kZSBnZW5lcmF0aW9uIGFuZAorICAgICAg
ICAgICAgc2hhcmVkIGZpbGUgbGlzdHMgYXJlIGlkZW50aWNhbCBiZXR3ZWVuIEphdmFTY3JpcHRD
b3JlIGFuZCBXZWJDb3JlLgorCisgICAgICAgICAgICBUaGUgb3V0cHV0IGZpbGVzIGFkZGl0aW9u
YWxseSBkZXBlbmQgb24gYWxsIGJ1aWx0aW4gZ2VuZXJhdG9yIHNjcmlwdCBmaWxlcworICAgICAg
ICAgICAgYW5kIGlucHV0IGZpbGVzIHRoYXQgYXJlIGNvbWJpbmVkIGludG8gdGhlIHNpbmdsZSBo
ZWFkZXIvaW1wbGVtZW50YXRpb24gZmlsZS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgICAgIE1hcmsgdGhlIG5ldyBidWls
dGlucyBnZW5lcmF0b3IgZmlsZXMgYXMgcHJpdmF0ZSBoZWFkZXJzIHNvIHdlIGNhbiB1c2UgdGhl
bSBmcm9tCisgICAgICAgICAgICBXZWJDb3JlLgorCisgICAgICAgICogU2NyaXB0cy9VcGRhdGVD
b250ZW50cy5weTogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9VcGRhdGVDb250
ZW50cy5weS4KKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL19faW5pdF9fLnB5OiBBZGRlZC4K
KyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zLnB5OiBBZGRlZC4KKyAgICAgICAg
KiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5weTogQWRkZWQuIFRoaXMgZmls
ZSBjb250YWlucyB0aGUgYmFzZSBnZW5lcmF0b3IuCisgICAgICAgIChXS19sY2ZpcnN0KToKKyAg
ICAgICAgKFdLX3VjZmlyc3QpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3IpOgorICAgICAg
ICAoQnVpbHRpbnNHZW5lcmF0b3IuX19pbml0X18pOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0
b3IubW9kZWwpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3IuZ2VuZXJhdGVfbGljZW5zZSk6
CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvci5nZW5lcmF0ZV9pbmNsdWRlc19mcm9tX2VudHJp
ZXMpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAg
ICAgKEJ1aWx0aW5zR2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSk6CisgICAgICAgIChCdWlsdGlu
c0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvckZ1bmN0aW9uKToKKyAgICAgICAgKEJ1aWx0aW5zR2Vu
ZXJhdG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rpb24udG9DYW1lbCk6CisgICAgICAgIChCdWlsdGlu
c0dlbmVyYXRvci5nZW5lcmF0ZV9lbWJlZGRlZF9jb2RlX3N0cmluZ19zZWN0aW9uX2Zvcl9mdW5j
dGlvbik6CisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19tb2RlbC5weTogQWRk
ZWQuIFRoaXMgZmlsZSBjb250YWlucyBidWlsdGlucyBtb2RlbCBvYmplY3RzLgorICAgICAgICAo
UGFyc2VFeGNlcHRpb24pOgorICAgICAgICAoRnJhbWV3b3JrKToKKyAgICAgICAgKEZyYW1ld29y
ay5fX2luaXRfXyk6CisgICAgICAgIChGcmFtZXdvcmsuc2V0dGluZyk6CisgICAgICAgIChGcmFt
ZXdvcmsuZnJvbVN0cmluZyk6CisgICAgICAgIChGcmFtZXdvcmtzKToKKyAgICAgICAgKEJ1aWx0
aW5PYmplY3QpOgorICAgICAgICAoQnVpbHRpbk9iamVjdC5fX2luaXRfXyk6CisgICAgICAgIChC
dWlsdGluRnVuY3Rpb24pOgorICAgICAgICAoQnVpbHRpbkZ1bmN0aW9uLl9faW5pdF9fKToKKyAg
ICAgICAgKEJ1aWx0aW5GdW5jdGlvbi5mcm9tU3RyaW5nKToKKyAgICAgICAgKEJ1aWx0aW5GdW5j
dGlvbi5fX3N0cl9fKToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbik6CisgICAgICAgIChC
dWlsdGluc0NvbGxlY3Rpb24uX19pbml0X18pOgorICAgICAgICAoQnVpbHRpbnNDb2xsZWN0aW9u
LnBhcnNlX2J1aWx0aW5zX2ZpbGUpOgorICAgICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLmNvcHly
aWdodHMpOgorICAgICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLmFsbF9mdW5jdGlvbnMpOgorICAg
ICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLl9wYXJzZV9jb3B5cmlnaHRfbGluZXMpOgorICAgICAg
ICAoQnVpbHRpbnNDb2xsZWN0aW9uLl9wYXJzZV9mdW5jdGlvbnMpOgorICAgICAgICAqIFNjcmlw
dHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5OiBBZGRlZC4KKyAgICAgICAgKEJ1aWx0
aW5zR2VuZXJhdG9yVGVtcGxhdGVzKToKKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0
aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weTogQWRkZWQuCisgICAgICAgIChCdWlsdGlu
c0NvbWJpbmVkSGVhZGVyR2VuZXJhdG9yKToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFk
ZXJHZW5lcmF0b3IuX19pbml0X18pOgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEhlYWRlckdl
bmVyYXRvci5vdXRwdXRfZmlsZW5hbWUpOgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEhlYWRl
ckdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEhl
YWRlckdlbmVyYXRvci5nZW5lcmF0ZV9mb3J3YXJkX2RlY2xhcmF0aW9ucyk6CisgICAgICAgIChG
dW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoVk0pOgorICAgICAgICAoQ29uc3RydWN0QWJp
bGl0eSk6CisgICAgICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9vYmplY3QpOgorICAgICAgICAo
Z2VuZXJhdGVfZXh0ZXJuc19mb3Jfb2JqZWN0KToKKyAgICAgICAgKGdlbmVyYXRlX21hY3Jvc19m
b3Jfb2JqZWN0KToKKyAgICAgICAgKGdlbmVyYXRlX2RlZmluZXNfZm9yX29iamVjdCk6CisgICAg
ICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX3RhYmxlX21hY3JvKToKKyAgICAgICAgKGdl
bmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfbmFtZV9tYWNybyk6CisgICAgICAgICogU2NyaXB0cy9i
dWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weTogQWRk
ZWQuCisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSW1wbGVtZW50YXRpb25HZW5lcmF0b3IpOgor
ICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9faW5pdF9f
KToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5vdXRw
dXRfZmlsZW5hbWUpOgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2Vu
ZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSW1wbGVt
ZW50YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKToKKyAgICAgICAgKiBT
Y3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weTogQWRk
ZWQuCisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlSGVhZGVyR2VuZXJhdG9yKToKKyAgICAgICAg
KEJ1aWx0aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0b3IuX19pbml0X18pOgorICAgICAgICAoQnVp
bHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvci5vdXRwdXRfZmlsZW5hbWUpOgorICAgICAgICAo
QnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvci5tYWNyb19wcmVmaXgpOgorICAgICAgICAo
QnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAg
ICAoQnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvci5nZW5lcmF0ZV9mb3J3YXJkX2RlY2xh
cmF0aW9ucyk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoZ2VuZXJh
dGVfaGVhZGVyX2luY2x1ZGVzKToKKyAgICAgICAgKGdlbmVyYXRlX3NlY3Rpb25fZm9yX29iamVj
dCk6CisgICAgICAgIChnZW5lcmF0ZV9leHRlcm5zX2Zvcl9vYmplY3QpOgorICAgICAgICAoZ2Vu
ZXJhdGVfbWFjcm9zX2Zvcl9vYmplY3QpOgorICAgICAgICAoZ2VuZXJhdGVfZGVmaW5lc19mb3Jf
b2JqZWN0KToKKyAgICAgICAgKGdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfdGFibGVfbWFjcm8p
OgorICAgICAgICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV9uYW1lX21hY3JvKToKKyAgICAg
ICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVu
dGF0aW9uLnB5OiBBZGRlZC4KKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlv
bkdlbmVyYXRvcik6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlSW1wbGVtZW50YXRpb25HZW5l
cmF0b3IuX19pbml0X18pOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9u
R2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSk6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlSW1w
bGVtZW50YXRpb25HZW5lcmF0b3IubWFjcm9fcHJlZml4KToKKyAgICAgICAgKEJ1aWx0aW5zU2Vw
YXJhdGVJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAo
QnVpbHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZXJhdG9yLmdlbmVyYXRlX2hlYWRlcl9p
bmNsdWRlcyk6CisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9z
ZXBhcmF0ZV93cmFwcGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFw
cGVyR2VuZXJhdG9yKToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9y
Ll9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9yLm91
dHB1dF9maWxlbmFtZSk6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlV3JhcHBlckdlbmVyYXRv
ci5tYWNyb19wcmVmaXgpOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZVdyYXBwZXJHZW5lcmF0
b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2Vu
ZXJhdG9yLmdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcyk6CisgICAgICAgICogU2NyaXB0cy9nZW5l
cmF0ZS1qcy1idWlsdGlucy5weTogQWRkZWQuCisKKyAgICAgICAgICAgIFBhcnNlIGNvbW1hbmQg
bGluZSBvcHRpb25zLCBkZWNpZGUgd2hpY2ggZ2VuZXJhdG9ycyBhbmQgb3V0cHV0IG1vZGVzIHRv
IHVzZS4KKworICAgICAgICAoZ2VuZXJhdGVfYmluZGluZ3NfZm9yX2J1aWx0aW5zX2ZpbGVzKToK
KyAgICAgICAgKiBTY3JpcHRzL2xhenl3cml0ZXIucHk6IENvcGllZCBmcm9tIHRoZSBpbnNwZWN0
b3IgcHJvdG9jb2wgZ2VuZXJhdG9yLgorICAgICAgICAoTGF6eUZpbGVXcml0ZXIpOgorICAgICAg
ICAoTGF6eUZpbGVXcml0ZXIuX19pbml0X18pOgorICAgICAgICAoTGF6eUZpbGVXcml0ZXIud3Jp
dGUpOgorICAgICAgICAoTGF6eUZpbGVXcml0ZXIuY2xvc2UpOgorICAgICAgICAqIFNjcmlwdHMv
dGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpz
OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3Jl
LUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS5qczogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5q
czogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29y
ZS1CdWlsdGluLnByb3RvdHlwZS1TZXBhcmF0ZS5qczogQWRkZWQuCisgICAgICAgICogU2NyaXB0
cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmlu
ZWQuanM6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlw
dENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFyYXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBT
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanM6
IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVk
SW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qczogQWRkZWQu
CisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLXhtbENhc2luZ1Rlc3Qt
U2VwYXJhdGUuanM6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhw
ZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzLXJlc3VsdDog
QWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2Ny
aXB0Q29yZS1CdWlsdGluLlByb21pc2UtU2VwYXJhdGUuanMtcmVzdWx0OiBBZGRlZC4KKyAgICAg
ICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0
aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzLXJlc3VsdDogQWRkZWQuCisgICAgICAgICogU2NyaXB0
cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlw
ZS1TZXBhcmF0ZS5qcy1yZXN1bHQ6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVk
LmpzLXJlc3VsdDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBl
Y3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItU2VwYXJhdGUuanMtcmVzdWx0
OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNv
cmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0OiBBZGRlZC4KKyAgICAgICAgKiBT
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVp
bHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQ6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMv
YnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJl
c3VsdDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9X
ZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0OiBBZGRlZC4KKyAgICAgICAg
KiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwOgorICAgICAgICAoSlNDOjpCdWlsdGlu
RXhlY3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyk6CisgICAgICAgICogYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgICogY3JlYXRlX2hhc2hfdGFibGU6CisKKyAgICAg
ICAgICAgIFVwZGF0ZSB0aGUgZ2VuZXJhdGVkIGJ1aWx0aW4gbWFjcm8gbmFtZXMuCisKKyAgICAg
ICAgKiBnZW5lcmF0ZS1qcy1idWlsdGluczogUmVtb3ZlZC4KKwogMjAxNS0xMC0yMCAgVGltIEhv
cnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBUcnkgdG8gZml4IHRo
ZSBidWlsZCBieSBkaXNhYmxpbmcgTUFDX0dFU1RVUkVfRVZFTlRTIG9uIDEwLjkgYW5kIDEwLjEw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggZTk2ZDBiZWE1MTlkMTM3MTE0YzJkMTg5MmI2YTcyODZkZTQ3MWE5OS4u
M2JmMjdjM2NlNzI5ZGM2ODk3ZmEzMGY4OWZiNjVlZWZkNWEyNGYzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM2IEBACisyMDE1LTEwLTE5ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgor
CisgICAgICAgIFJlc3RydWN0dXJlIGdlbmVyYXRlLWpzLWJpbmRpbmdzIHNjcmlwdCB0byBiZSBt
b2R1bGFyIGFuZCB0ZXN0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ5OTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKworICAgICAgICAgICAgRGVmaW5lIEphdmFT
Y3JpcHRDb3JlX1NDUklQVFNfRElSIGV4cGxpY2l0bHkgc28gdGhlIGFkZF9jdXN0b21fY29tbWFu
ZCBhbmQKKyAgICAgICAgICAgIHNoYXJlZCBmaWxlIGxpc3RzIGFyZSBpZGVudGljYWwgYmV0d2Vl
biBKYXZhU2NyaXB0Q29yZSBhbmQgV2ViQ29yZS4KKworICAgICAgICAgICAgVGhlIG91dHB1dCBm
aWxlcyBhZGRpdGlvbmFsbHkgZGVwZW5kIG9uIGFsbCBidWlsdGluIGdlbmVyYXRvciBzY3JpcHQg
ZmlsZXMuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorCisgICAgICAgICAgICBV
c2UgSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIgc28gdGhhdCB0aGUgcnVsZSBmb3IgY29kZSBn
ZW5lcmF0aW9uIGFuZAorICAgICAgICAgICAgc2hhcmVkIGZpbGUgbGlzdHMgYXJlIGlkZW50aWNh
bCBiZXR3ZWVuIEphdmFTY3JpcHRDb3JlIGFuZCBXZWJDb3JlLgorCisgICAgICAgICAgICBUaGUg
b3V0cHV0IGZpbGVzIGFkZGl0aW9uYWxseSBkZXBlbmQgb24gYWxsIGJ1aWx0aW4gZ2VuZXJhdG9y
IHNjcmlwdCBmaWxlcy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKworICAgICAgICAgICAgRGVmaW5lIEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSIGJl
Zm9yZSBjYWxsaW5nIERlcml2ZWRTb3VyY2VzLm1ha2UuCisgICAgICAgICAgICBUaGlzIHdpbGwg
ZXZlbnR1YWxseSBiZSBtZXJnZWQgd2l0aCB0aGUgb3RoZXIgc2ltaWxhciBzY3JpcHQgcGF0aHMu
CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpmaW5pc2hDcmVhdGlvbik6CisKKyAgICAgICAgICAg
IFVwZGF0ZSB0aGUgZ2VuZXJhdGVkIGJ1aWx0aW4gbWFjcm8gbmFtZXMuCisKKyAgICAgICAgKiBn
ZW5lcmF0ZS1qcy1idWlsdGluczogUmVtb3ZlZC4KKwogMjAxNS0xMC0yMCAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBUcnkgdG8gZml4IHRoZSBidWls
ZCBieSBkaXNhYmxpbmcgTUFDX0dFU1RVUkVfRVZFTlRTIG9uIDEwLjkgYW5kIDEwLjEwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMzdmNDYzMzU5NmE4NzE2OTY3MzFmNzNm
N2I4MWMzNzIyZGMwZjllZS4uMGY1YTZiNDVkNTU1MWZiZDYxMmIwNTViZGFlYmEwNDJjNmVlNWRh
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNzA3LDYgKzcwNyw4IEBA
IHNldChKYXZhU2NyaXB0Q29yZV9MSUJSQVJJRVMKICAgICAke0lDVV9JMThOX0xJQlJBUklFU30K
ICkKIAorc2V0KEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSICIke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vU2NyaXB0cyIpCisKIGlmIChVU0VfVURJUzg2KQogICAgIHNldChVRElTX0dFTl9ERVAKICAg
ICAgICAgZGlzYXNzZW1ibGVyL3VkaXM4Ni91ZF9vcGNvZGUucHkKQEAgLTk0MSw3ICs5NDMsNyBA
QCBzZXQoSEFTSF9MVVRfR0VORVJBVE9SICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9jcmVh
dGVfaGFzaF90YWJsZSkKIG1hY3JvKEdFTkVSQVRFX0hBU0hfTFVUIF9pbnB1dCBfb3V0cHV0KQog
ICAgIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICAgICAgT1VUUFVUICR7X291dHB1dH0KLSAgICAg
ICAgREVQRU5EUyAke0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtfaW5wdXR9ICR7SmF2YVNjcmlwdENv
cmVfU0NSSVBUU19ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zCisgICAgICAgIERFUEVORFMgJHtI
QVNIX0xVVF9HRU5FUkFUT1J9ICR7X2lucHV0fSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
fS9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQogICAgICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRB
QkxFfSAke0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtfaW5wdXR9IC1pID4gJHtfb3V0cHV0fQogICAg
ICAgICBWRVJCQVRJTSkKICAgICBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTICR7
X291dHB1dH0pCkBAIC0xMDgwLDYgKzEwODIsMjEgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAg
IFZFUkJBVElNKQogCiAjIEpTQ0J1aWx0aW5zCisKK3NldChCVUlMVElOU19HRU5FUkFUT1JfU0NS
SVBUUworICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0
aW5zLnB5CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vbGF6eXdyaXRlci5weQor
ICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5zL2J1aWx0aW5zLnB5Cisg
ICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJh
dG9yLnB5CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnMvYnVpbHRp
bnNfbW9kZWwucHkKKyAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGlucy9i
dWlsdGluc190ZW1wbGF0ZXMucHkKKyAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9i
dWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkKKyAgICAke0phdmFT
Y3JpcHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5l
ZF9pbXBsZW1lbnRhdGlvbi5weQorICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1
aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weQorICAgICR7SmF2YVNj
cmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRl
X2ltcGxlbWVudGF0aW9uLnB5CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVp
bHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfd3JhcHBlci5weQorKQorCiBzZXQoSmF2
YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9i
dWlsdGlucy9BcnJheUNvbnN0cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1
aWx0aW5zL0FycmF5SXRlcmF0b3IucHJvdG90eXBlLmpzCkBAIC0xMTAyLDEwICsxMTE5LDExIEBA
IHNldChKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTCiApCiAKIGFkZF9jdXN0b21fY29t
bWFuZCgKLSAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pT
Q0J1aWx0aW5zLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1
aWx0aW5zLmgKLSAgIE1BSU5fREVQRU5ERU5DWSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
fS9nZW5lcmF0ZS1qcy1idWlsdGlucwotICAgREVQRU5EUyAke0phdmFTY3JpcHRDb3JlX0JVSUxU
SU5TX1NPVVJDRVN9Ci0gICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlw
dENvcmVfU0NSSVBUU19ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zIC0taW5wdXQtZGlyZWN0b3J5
ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9idWlsdGlucyAtLW91dHB1dCAke0RFUklWRURf
U09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcAorICAgT1VUUFVUICR7
REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuY3BwCisgICAg
ICAgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5o
CisgICBNQUlOX0RFUEVOREVOQ1kgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vZ2VuZXJh
dGUtanMtYnVpbHRpbnMucHkKKyAgIERFUEVORFMgJHtKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19T
T1VSQ0VTfSAke0JVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTfQorICAgQ09NTUFORCAke1BZVEhP
Tl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9nZW5lcmF0ZS1qcy1i
dWlsdGlucy5weSAtLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtLW91dHB1dC1kaXJlY3Rvcnkg
JHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSAtLWNvbWJpbmVkICR7SmF2YVNj
cmlwdENvcmVfQlVJTFRJTlNfU09VUkNFU30KICAgIFZFUkJBVElNKQogCiBsaXN0KEFQUEVORCBK
YXZhU2NyaXB0Q29yZV9TT1VSQ0VTCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCmluZGV4IDkwOTExMmQ0MGY0ZGZlMmRmZGVhNGQ0YmM3OTA4YjI5YjQzOTY4ZjEuLjQx
NDRhN2ZhM2Y3ZjA3MWMzZDYwZTM0MGYyZGUzZGIwZmM3MzhiZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC03MSwxMCArNzEsOSBAQCBhbGwgOiBcCiAg
ICAgdWRpczg2X2l0YWIuaCBcCiAgICAgQnl0ZWNvZGVzLmggXAogICAgIEluaXRCeXRlY29kZXMu
YXNtIFwKLSAgICBKU0NCdWlsdGlucyBcCisgICAgSlNDQnVpbHRpbnMuaCBcCiAjCiAKLSMgYnVp
bHRpbiBmdW5jdGlvbnMKIFBZVEhPTiA9IHB5dGhvbgogUEVSTCA9IHBlcmwKIApAQCAtODcsMTUg
Kzg2LDI0IEBAIGVsc2UKIGVuZGlmCiAjIC0tLS0tLS0tCiAKLS5QSE9OWTogSlNDQnVpbHRpbnMK
LUpTQ0J1aWx0aW5zOiAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZS1qcy1i
dWlsdGlucyBKU0NCdWlsdGlucy5oIEpTQ0J1aWx0aW5zLmNwcAotSlNDQnVpbHRpbnMuaDogJChK
YXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGUtanMtYnVpbHRpbnMgJChKYXZhU2Ny
aXB0Q29yZSkvYnVpbHRpbnMgSlNDQnVpbHRpbnNTb3VyY2VzCi0JJChQWVRIT04pICQoSmF2YVNj
cmlwdENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zIC0taW5wdXQtZGlyZWN0
b3J5ICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zIC0tb3V0cHV0ICRACi0KLUpTQ0J1aWx0aW5z
LmNwcDogSlNDQnVpbHRpbnMuaAorIyBKYXZhU2NyaXB0IGJ1aWx0aW5zLgorCitCVUlMVElOU19H
RU5FUkFUT1JfU0NSSVBUUyA9IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9i
dWlsdGlucy9fX2luaXRfXy5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikv
YnVpbHRpbnMvYnVpbHRpbnMucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIp
L2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9T
Q1JJUFRTX0RJUikvYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkgXAorICAgICQoSmF2YVNjcmlw
dENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weSBcCisgICAg
JChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVf
Y29tYmluZWRfaGVhZGVyLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9i
dWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weSBcCisg
ICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJh
dGVfc2VwYXJhdGVfaGVhZGVyLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
KS9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weSBc
CisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnMvYnVpbHRpbnNfZ2Vu
ZXJhdGVfc2VwYXJhdGVfd3JhcHBlci5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRT
X0RJUikvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NS
SVBUU19ESVIpL2xhenl3cml0ZXIucHkgXAorIwogCi0uUEhPTlk6IEpTQ0J1aWx0aW5zU291cmNl
cwotSlNDQnVpbHRpbnNTb3VyY2VzOiBcCitKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VT
ID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0FycmF5Q29uc3RydWN0b3IuanMg
XAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0FycmF5SXRlcmF0b3IucHJvdG90eXBl
LmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMg
XApAQCAtMTEyLDggKzEyMCwyMCBAQCBKU0NCdWlsdGluc1NvdXJjZXM6IFwKICAgICAkKEphdmFT
Y3JpcHRDb3JlKS9idWlsdGlucy9SZWZsZWN0T2JqZWN0LmpzIFwKICAgICAkKEphdmFTY3JpcHRD
b3JlKS9idWlsdGlucy9TdHJpbmdDb25zdHJ1Y3Rvci5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29y
ZSkvYnVpbHRpbnMvU3RyaW5nSXRlcmF0b3IucHJvdG90eXBlLmpzIFwKKyAgICAkKEphdmFTY3Jp
cHRDb3JlKS9idWlsdGlucy9UeXBlZEFycmF5Q29uc3RydWN0b3IuanMgXAorICAgICQoSmF2YVNj
cmlwdENvcmUpL2J1aWx0aW5zL1R5cGVkQXJyYXkucHJvdG90eXBlLmpzIFwKICMKIAorIyBUaGUg
Y29tYmluZWQgb3V0cHV0IGZpbGUgZGVwZW5kcyBvbiB0aGUgY29udGVudHMgb2YgYnVpbHRpbnMg
YW5kIGdlbmVyYXRvciBzY3JpcHRzLCBzbworIyBhZGRpbmcsIG1vZGlmeWluZywgb3IgcmVtb3Zp
bmcgYnVpbHRpbnMgb3Igc2NyaXB0cyB3aWxsIHRyaWdnZXIgcmVnZW5lcmF0aW9uIG9mIGZpbGVz
LgorCisuUEhPTlk6IGZvcmNlCitKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19ERVBFTkRFTkNJRVNf
TElTVCA6ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL1VwZGF0ZUNvbnRlbnRzLnB5IGZv
cmNlCisJJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL1VwZGF0ZUNvbnRl
bnRzLnB5ICckKEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMpICQoQlVJTFRJTlNfR0VO
RVJBVE9SX1NDUklQVFMpJyAkQAorCitKU0NCdWlsdGlucy5oOiAkKEJVSUxUSU5TX0dFTkVSQVRP
Ul9TQ1JJUFRTKSAkKEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMpIEphdmFTY3JpcHRD
b3JlX0JVSUxUSU5TX0RFUEVOREVOQ0lFU19MSVNUCisJJChQWVRIT04pICQoSmF2YVNjcmlwdENv
cmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5IC0tY29tYmluZWQgLS1vdXRw
dXQtZGlyZWN0b3J5IC4gLS1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgJChKYXZhU2NyaXB0Q29y
ZV9CVUlMVElOU19TT1VSQ0VTKQorCiAjIGxvb2t1cCB0YWJsZXMgZm9yIGNsYXNzZXMKIAogJS5s
dXQuaDogY3JlYXRlX2hhc2hfdGFibGUgJS5jcHAKQEAgLTIwMSw4ICsyMjEsOCBAQCBhbGwgOiBc
CiAjIGFkZGluZywgbW9kaWZ5aW5nLCBvciByZW1vdmluZyBkb21haW5zIHdpbGwgdHJpZ2dlciBy
ZWdlbmVyYXRpb24gb2YgaW5zcGVjdG9yIGZpbGVzLgogCiAuUEhPTlk6IGZvcmNlCi1FbmFibGVk
SW5zcGVjdG9yRG9tYWlucyA6ICQoSmF2YVNjcmlwdENvcmUpL1VwZGF0ZUNvbnRlbnRzLnB5IGZv
cmNlCi0JJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmUpL1VwZGF0ZUNvbnRlbnRzLnB5ICckKElO
U1BFQ1RPUl9ET01BSU5TKScgJEAKK0VuYWJsZWRJbnNwZWN0b3JEb21haW5zIDogJChKYXZhU2Ny
aXB0Q29yZV9TQ1JJUFRTX0RJUikvVXBkYXRlQ29udGVudHMucHkgZm9yY2UKKwkkKFBZVEhPTikg
JChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvVXBkYXRlQ29udGVudHMucHkgJyQoSU5TUEVD
VE9SX0RPTUFJTlMpJyAkQAogCiBDb21iaW5lZERvbWFpbnMuanNvbiA6ICQoSmF2YVNjcmlwdENv
cmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlLWNvbWJpbmVkLWluc3BlY3Rvci1qc29uLnB5ICQoSU5T
UEVDVE9SX0RPTUFJTlMpIEVuYWJsZWRJbnNwZWN0b3JEb21haW5zCiAJJChQWVRIT04pICQoSmF2
YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlLWNvbWJpbmVkLWluc3BlY3Rvci1qc29u
LnB5ICQoSU5TUEVDVE9SX0RPTUFJTlMpID4gLi9Db21iaW5lZERvbWFpbnMuanNvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxMzM4ZTQ4MjY4ZmIxODdkNWZkNWEzY2Y4YTcwYjlk
ZWU4YWVmNWQzLi5lNWUxNzRlNDAxMzI2ZWVmZmQzYzIwZTkyZWI3NzNkNzliMWM3YTc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIxNCw3ICsxMjE0LDYgQEAKIAkJOTkyOEZG
M0IxOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MjhGRjM5MThBQzRBRUMwMEI4Q0YxMiAv
KiBKU1JlcGxheUlucHV0cy5jcHAgKi87IH07CiAJCTk5MjhGRjNDMThBQzRBRUMwMEI4Q0YxMiAv
KiBKU1JlcGxheUlucHV0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTkyOEZGM0ExOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTk1OUU5MkIx
QkQxN0ZBNDAwMUFBNDEzIC8qIGNzc21pbi5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTlFOTI3MUJEMTdGQTAwMDFBQTQxMyAvKiBjc3NtaW4ucHkg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTk1OUU5
MkMxQkQxN0ZBNDAwMUFBNDEzIC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1OUU5MjgxQkQxN0ZBMDAwMUFBNDEz
IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTk5NTlFOTJEMUJEMTdGQTQwMDFBQTQxMyAvKiBqc21pbi5weSBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTlFOTI5MUJE
MTdGQTAwMDFBQTQxMyAvKiBqc21pbi5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk5OTU5RTkyRTFCRDE3RkE0MDAxQUE0MTMgLyogeHhkLnBsIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1OUU5MkExQkQx
N0ZBMDAwMUFBNDEzIC8qIHh4ZC5wbCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5OTU5RTkzMTFCRDE4MjcyMDAxQUE0MTMgLyogZ2VuZXJhdGUtY29t
YmluZWQtaW5zcGVjdG9yLWpzb24ucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5OTU5RTkyRjFCRDE4MUY2MDAxQUE0MTMgLyogZ2VuZXJhdGUtY29tYmlu
ZWQtaW5zcGVjdG9yLWpzb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTEyMjIsNiArMTIyMSwxOCBAQAogCQk5OTYyMzFFOTE4RDE4MDQyMDBD
MDNGREEgLyogSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUzMjQzOTYxODU2QTQ3NTAwMkVENjkyIC8qIElu
c3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcyAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk5OUNDMEI2MjE4QkU5OTQ2MDA2Q0VCQ0MgLyogQ29kZUdlbmVy
YXRvclJlcGxheUlucHV0c1RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk5RTQ1QTFFMThBMUIxRTcwMDI2RDg4RiAvKiBDb2RlR2VuZXJh
dG9yUmVwbGF5SW5wdXRzVGVtcGxhdGVzLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTk5Q0MwQjYzMThCRTk5NTAwMDZDRUJDQyAvKiBDb2RlR2Vu
ZXJhdG9yUmVwbGF5SW5wdXRzLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTlFNDVBMUQxOEExQjFFNzAwMjZEODhGIC8qIENvZGVHZW5lcmF0b3JSZXBs
YXlJbnB1dHMucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJOTlEQTAwQTMxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRvci5weSBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5REEwMDlBMUJE
NTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0b3IucHkgKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlEQTAwQTQxQkQ1OTkzMTAwRjQ1NzVD
IC8qIGJ1aWx0aW5zX21vZGVsLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTlEQTAwOUIxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX21vZGVsLnB5
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5REEw
MEE1MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc190ZW1wbGF0ZXMucHkgaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OURBMDA5QzFCRDU5OTI3MDBGNDU3
NUMgLyogYnVpbHRpbnNfdGVtcGxhdGVzLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTk5REEwMEE2MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGlu
cy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5REEw
MDlEMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGlucy5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OURBMDBBNzFCRDU5OTMxMDBGNDU3NUMgLyog
YnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlEQTAwOUUxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1
aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OURBMDBBODFCRDU5OTMxMDBGNDU3NUMgLyog
YnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OURBMDA5RjFCRDU5OTI3MDBGNDU3
NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkgKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlEQTAwQTkxQkQ1
OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weSBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5REEwMEEwMUJENTk5
MjcwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkgKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlEQTAwQUExQkQ1
OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9u
LnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlEQTAw
QTExQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVu
dGF0aW9uLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTk5REEwMEFCMUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0
ZV93cmFwcGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTlEQTAwQTIxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRl
X3dyYXBwZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJOTlEQTAwQUYxQkQ1OTk0RTAwRjQ1NzVDIC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlEQTAwQUMx
QkQ1OTkzRTAwRjQ1NzVDIC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5ICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5REEwMEIwMUJENTk5NEUwMEY0
NTc1QyAvKiBsYXp5d3JpdGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTlEQTAwQUQxQkQ1OTkzRTAwRjQ1NzVDIC8qIGxhenl3cml0ZXIucHkgKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlEQTAwQjEx
QkQ1OTk0RTAwRjQ1NzVDIC8qIFVwZGF0ZUNvbnRlbnRzLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlEQTAwQUUxQkQ1OTkzRTAwRjQ1NzVDIC8qIFVw
ZGF0ZUNvbnRlbnRzLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTk5RTQ1QTI0MThBMUIyNTkwMDI2RDg4RiAvKiBFbXB0eUlucHV0Q3Vyc29yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUU0NUExRjE4
QTFCMjU5MDAyNkQ4OEYgLyogRW1wdHlJbnB1dEN1cnNvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5RTQ1QTI1MThBMUIyNTkwMDI2RDg4RiAv
KiBFbmNvZGVkVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTlFNDVBMjAxOEExQjI1OTAwMjZEODhGIC8qIEVuY29kZWRWYWx1ZS5jcHAgKi87
IH07CiAJCTk5RTQ1QTI2MThBMUIyNTkwMDI2RDg4RiAvKiBFbmNvZGVkVmFsdWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5RTQ1QTIxMThBMUIyNTkw
MDI2RDg4RiAvKiBFbmNvZGVkVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMTc5NCw3ICsxODA1LDcgQEAKIAkJRkU3QzQxOTYxQjk3RkM0
QjAwRjRENTk4IC8qIFBpbmdQb25nU3RhY2tPdmVyZmxvd1Rlc3QuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEQTUwRDQxQjk3RjQ0MjAwOUEzQjRG
IC8qIFBpbmdQb25nU3RhY2tPdmVyZmxvd1Rlc3QuY3BwICovOyB9OwogCQlGRUEwODYyMDE4MkI3
QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkVBMDg2MUUxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUEw
ODYyMTE4MkI3QTA0MDBGNkQ4NTEgLyogRGVidWdnZXJQcmltaXRpdmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUEwODYxRjE4MkI3QTA0MDBGNkQ4
NTEgLyogRGVidWdnZXJQcmltaXRpdmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJRkVCMTM3NTcxQkIxMUVGOTAwQ0Q1MTAwIC8qIE1hY3JvQXNz
ZW1ibGVyQVJNNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkVCMTM3NTYxQkIxMUVFRTAwQ0Q1MTAwIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuY3Bw
ICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCUZFQjEzNzU3MUJCMTFF
RjkwMENENTEwMCAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjEzNzU2MUJCMTFFRUUwMENENTEwMCAvKiBN
YWNyb0Fzc2VtYmxlckFSTTY0LmNwcCAqLzsgfTsKIAkJRkVCNTFGNkMxQTk3QjY4ODAwMUY5MjFD
IC8qIFJlZ3Jlc3MxNDE4MDkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRUI1MUY2QjFBOTdCNjg4MDAxRjkyMUMgLyogUmVncmVzczE0MTgwOS5tbSAq
LzsgfTsKIAkJRkVCNThDMTQxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUI1OEMx
MjE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmNwcCAqLzsgfTsKIAkJRkVC
NThDMTUxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVCNThDMTMxODdCOEIxNjAwOThF
RjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0zMTE4LDExICszMTI5LDIzIEBACiAJCTk5MjhGRjNBMThB
QzRBRUMwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1JlcGxheUlucHV0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5OTI4RkYzRDE4QUM0QjFDMDBCOENGMTIgLyogSlNJbnB1dHMuanNvbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuanNvbjsgcGF0aCA9IEpTSW5wdXRzLmpzb247IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk5NTlFOTI3MUJEMTdGQTAwMDFBQTQxMyAvKiBjc3NtaW4ucHkgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnNjcmlwdC5weXRob247IHBhdGggPSBjc3NtaW4ucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTk5NTlFOTI4MUJEMTdGQTAwMDFBQTQxMyAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1qcy1idWlsdGlu
cyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NTlFOTI5MUJEMTdGQTAwMDFBQTQx
MyAvKiBqc21pbi5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGpzbWlu
LnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTU5RTkyQTFCRDE3RkEwMDAxQUE0
MTMgLyogeHhkLnBsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgcGF0aCA9IHh4ZC5wbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk1OUU5MkYxQkQxODFGNjAwMUFBNDEzIC8q
IGdlbmVyYXRlLWNvbWJpbmVkLWluc3BlY3Rvci1qc29uLnB5ICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3Jp
cHQucHl0aG9uOyBwYXRoID0gImdlbmVyYXRlLWNvbWJpbmVkLWluc3BlY3Rvci1qc29uLnB5Ijsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk1OUU5MzAxQkQxODFGNjAwMUFBNDEzIC8q
IGlubGluZS1hbmQtbWluaWZ5LXN0eWxlc2hlZXRzLWFuZC1zY3JpcHRzLnB5ICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gImlubGluZS1hbmQtbWluaWZ5LXN0eWxlc2hlZXRz
LWFuZC1zY3JpcHRzLnB5Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlEQTAwOTkx
QkQ1OTkyNzAwRjQ1NzVDIC8qIF9faW5pdF9fLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0
aG9uOyBwYXRoID0gX19pbml0X18ucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5
REEwMDlBMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0b3IucHkgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBidWlsdGluc19nZW5lcmF0b3IucHk7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5REEwMDlCMUJENTk5MjcwMEY0NTc1QyAvKiBidWls
dGluc19tb2RlbC5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGJ1aWx0
aW5zX21vZGVsLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OURBMDA5QzFCRDU5
OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfdGVtcGxhdGVzLnB5ICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3Jp
cHQucHl0aG9uOyBwYXRoID0gYnVpbHRpbnNfdGVtcGxhdGVzLnB5OyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5OURBMDA5RDFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnMucHkgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBidWlsdGlucy5weTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlEQTAwOUUxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5z
X2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhv
bjsgcGF0aCA9IGJ1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlEQTAwOUYxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5z
X2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5ICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3Jp
cHQucHl0aG9uOyBwYXRoID0gYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50YXRp
b24ucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5REEwMEEwMUJENTk5MjcwMEY0
NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFk
ZXIucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5REEwMEExMUJENTk5MjcwMEY0
NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFy
YXRlX2ltcGxlbWVudGF0aW9uLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OURB
MDBBMjFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfd3JhcHBl
ci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGJ1aWx0aW5zX2dlbmVy
YXRlX3NlcGFyYXRlX3dyYXBwZXIucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5
REEwMEFDMUJENTk5M0UwMEY0NTc1QyAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucy5weSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1qcy1idWlsdGlucy5weSI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5REEwMEFEMUJENTk5M0UwMEY0NTc1QyAv
KiBsYXp5d3JpdGVyLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gbGF6
eXdyaXRlci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlEQTAwQUUxQkQ1OTkz
RTAwRjQ1NzVDIC8qIFVwZGF0ZUNvbnRlbnRzLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0
aG9uOyBwYXRoID0gVXBkYXRlQ29udGVudHMucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk5RTQ1QTFEMThBMUIxRTcwMDI2RDg4RiAvKiBDb2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRz
LnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gQ29kZUdlbmVyYXRvclJl
cGxheUlucHV0cy5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlFNDVBMUUxOEEx
QjFFNzAwMjZEODhGIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHNUZW1wbGF0ZXMucHkgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBDb2RlR2VuZXJhdG9yUmVwbGF5SW5w
dXRzVGVtcGxhdGVzLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUU0NUExRjE4
QTFCMjU5MDAyNkQ4OEYgLyogRW1wdHlJbnB1dEN1cnNvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFbXB0eUlucHV0Q3Vyc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0zODEwLDkgKzM4MzMsOSBAQAogCQkwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyog
UHJvZHVjdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTBGRjkyMkNGMTRGNDZCMTMwMDQxQTI0RSAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8s
CiAJCQkJOTMyRjVCRDkwODIyQTFDNzAwNzM2OTc1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29y
ayAqLywKIAkJCQk5MzJGNUJFMTA4MjJBMUM3MDA3MzY5NzUgLyoganNjICovLAotCQkJCTBGRjky
MkNGMTRGNDZCMTMwMDQxQTI0RSAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCiAJCQkJ
MEZDRUZBQjYxODA1RDYxNjAwNDcyQ0U0IC8qIGxpYmxsdm1Gb3JKU0MuZHlsaWIgKi8sCiAJCQkJ
MTQxMjExMjAwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8sCiAJCQkJMTRCRDU5QkYwQTNF
OEY5MDAwQkFGNTlDIC8qIHRlc3RhcGkgKi8sCkBAIC01NzMyLDE2ICs1NzU1LDM2IEBACiAJCTk5
NTlFOTI1MUJEMTdGMUUwMDFBQTQxMyAvKiBTY3JpcHRzICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk5OTU5RTkyODFCRDE3RkEwMDAxQUE0MTMgLyogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnMgKi8sCisJCQkJOTlEQTAwOTcxQkQ1OThFMDAwRjQ1NzVDIC8qIGJ1
aWx0aW5zICovLAogCQkJCTk5NTlFOTI3MUJEMTdGQTAwMDFBQTQxMyAvKiBjc3NtaW4ucHkgKi8s
CiAJCQkJOTk1OUU5MkYxQkQxODFGNjAwMUFBNDEzIC8qIGdlbmVyYXRlLWNvbWJpbmVkLWluc3Bl
Y3Rvci1qc29uLnB5ICovLAorCQkJCTk5REEwMEFDMUJENTk5M0UwMEY0NTc1QyAvKiBnZW5lcmF0
ZS1qcy1idWlsdGlucy5weSAqLywKIAkJCQk5OTU5RTkzMDFCRDE4MUY2MDAxQUE0MTMgLyogaW5s
aW5lLWFuZC1taW5pZnktc3R5bGVzaGVldHMtYW5kLXNjcmlwdHMucHkgKi8sCiAJCQkJOTk1OUU5
MjkxQkQxN0ZBMDAwMUFBNDEzIC8qIGpzbWluLnB5ICovLAorCQkJCTk5REEwMEFEMUJENTk5M0Uw
MEY0NTc1QyAvKiBsYXp5d3JpdGVyLnB5ICovLAorCQkJCTk5REEwMEFFMUJENTk5M0UwMEY0NTc1
QyAvKiBVcGRhdGVDb250ZW50cy5weSAqLywKIAkJCQk5OTU5RTkyQTFCRDE3RkEwMDAxQUE0MTMg
LyogeHhkLnBsICovLAogCQkJKTsKIAkJCXBhdGggPSBTY3JpcHRzOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKIAkJfTsKKwkJOTlEQTAwOTcxQkQ1OThFMDAwRjQ1NzVDIC8qIGJ1aWx0aW5z
ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk5OURBMDA5
OTFCRDU5OTI3MDBGNDU3NUMgLyogX19pbml0X18ucHkgKi8sCisJCQkJOTlEQTAwOUQxQkQ1OTky
NzAwRjQ1NzVDIC8qIGJ1aWx0aW5zLnB5ICovLAorCQkJCTk5REEwMDlFMUJENTk5MjcwMEY0NTc1
QyAvKiBidWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkgKi8sCisJCQkJOTlEQTAw
OUYxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVu
dGF0aW9uLnB5ICovLAorCQkJCTk5REEwMEEwMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19n
ZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkgKi8sCisJCQkJOTlEQTAwQTExQkQ1OTkyNzAwRjQ1
NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5ICovLAor
CQkJCTk5REEwMEEyMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0
ZV93cmFwcGVyLnB5ICovLAorCQkJCTk5REEwMDlBMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGlu
c19nZW5lcmF0b3IucHkgKi8sCisJCQkJOTlEQTAwOUIxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0
aW5zX21vZGVsLnB5ICovLAorCQkJCTk5REEwMDlDMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGlu
c190ZW1wbGF0ZXMucHkgKi8sCisJCQkpOworCQkJcGF0aCA9IGJ1aWx0aW5zOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJOTlFNDVBMEMxOEEwMUU5MzAwMjZEODhGIC8qIHJl
cGxheSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC02MDM3
LDYgKzYwODAsMTUgQEAKIAkJCQlGRUEwODYyMDE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2lu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0
aW5FeGVjdXRhYmxlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc1RUU5QjIxOEFBQjdFMjAwQUFE
MDQzIC8qIEJ1aWx0aW5OYW1lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTlEQTAwQTYxQkQ1OTkz
MTAwRjQ1NzVDIC8qIGJ1aWx0aW5zLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJOTlEQTAwQTcxQkQ1
OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weSBpbiBI
ZWFkZXJzICovLAorCQkJCTk5REEwMEE4MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19nZW5l
cmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovLAorCQkJCTk5REEw
MEE5MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIu
cHkgaW4gSGVhZGVycyAqLywKKwkJCQk5OURBMDBBQTFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRp
bnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKKwkJ
CQk5OURBMDBBQjFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVf
d3JhcHBlci5weSBpbiBIZWFkZXJzICovLAorCQkJCTk5REEwMEEzMUJENTk5MzEwMEY0NTc1QyAv
KiBidWlsdGluc19nZW5lcmF0b3IucHkgaW4gSGVhZGVycyAqLywKKwkJCQk5OURBMDBBNDFCRDU5
OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfbW9kZWwucHkgaW4gSGVhZGVycyAqLywKKwkJCQk5OURB
MDBBNTFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfdGVtcGxhdGVzLnB5IGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDFERUExMzIxQjlGMzE2MzAwNkQ2NUREIC8qIEJ1aWx0aW5VdGlscy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOUU3Mjk0MEIxOTBGMDUxNDAwMUE5MUI1IC8qIEJ1bmRsZVBhdGguaCBp
biBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk3MTVFRDhFNDYwMEYxNjdCMiAvKiBCdXR0ZXJmbHku
aCBpbiBIZWFkZXJzICovLApAQCAtNjEwNCw2ICs2MTU2LDcgQEAKIAkJCQlDMkZDOUJEMzE2NjQ0
REZCMDA4MTBEMzMgLyogQ29waWVkQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
MkVBQTNGQTE0OUE4MzVFMDBGQ0UxMTIgLyogQ29waWVkU3BhY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUMyQzhEMDJEMTRBM0M2RTAwMDU3OEU2NSAvKiBDb3BpZWRTcGFjZUlubGluZXMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGN0MxMUFEMUJDMzg2MkMwMEM3NENEQiAvKiBDb3B5QmFycmllci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1QTUyRDAxN0FERDcxNzAwOEVDQjJEIC8qIENvcHlUb2tl
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzIyMzlEMTgxNjI2MkJERDAwNUFDNUZEIC8qIENvcHlW
aXNpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjIzOUQxOTE2MjYyQkREMDA1QUM1RkQgLyog
Q29weVZpc2l0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTYxNzQsNiArNjIyNyw3IEBA
CiAJCQkJMEYzOEIwMUExN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uTW9kZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYzQjNBMUIxNTNFNjhGNDAwM0VEMEZGIC8qIERGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVENjdCQTFCMjYyNTZEMDA2NkNF
MTUgLyogREZHQ29uc3RhbnRIb2lzdGluZ1BoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjA5
ODFGODFCQzVFNTY1MDA0ODE0RjggLyogREZHQ29weUJhcnJpZXJPcHRpbWl6YXRpb25QaGFzZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCRTBGNzMxNkMxREIwNTAwODJDNUU4IC8qIERGR0NQU1Jl
dGhyZWFkaW5nUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0Y2MTdBMEI4Q0MwMDc3
M0FEOCAvKiBERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkZGQzk1QTE0RUY5MEE5MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuaCBpbiBIZWFkZXJzICov
LApAQCAtNjQxMCw3ICs2NDY0LDcgQEAKIAkJCQlBNTRFOEVCMTE4QkZGQkJFMDA1NTZEMjggLyog
R0NTZWdtZW50ZWRBcnJheUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NTlFOTMxMUJE
MTgyNzIwMDFBQTQxMyAvKiBnZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSBpbiBI
ZWFkZXJzICovLAogCQkJCUM0NzAzQ0MwMTkyODQ0OTYwMDEzRkJFQSAvKiBnZW5lcmF0ZS1pbnNw
ZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkgaW4gSGVhZGVycyAqLywKLQkJCQk5OTU5RTkyQzFC
RDE3RkE0MDAxQUE0MTMgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMgaW4gSGVhZGVycyAqLywKKwkJ
CQk5OURBMDBBRjFCRDU5OTRFMDBGNDU3NUMgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgaW4g
SGVhZGVycyAqLywKIAkJCQlBNUVBNzBFQzE5RjVCM0VBMDA5OEY1RUMgLyogZ2VuZXJhdGVfY3Bw
X2FsdGVybmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTVFRjlCMTQxQTFENDNGNjAwNzAyRTkwIC8qIGdlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3Bh
dGNoZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFRjlCMTUxQTFENDNGQTAwNzAy
RTkwIC8qIGdlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkg
aW4gSGVhZGVycyAqLywKQEAgLTY1NDIsNyArNjU5Niw2IEBACiAJCQkJMEY3NjZEMkMxNUE4Q0Mz
QTAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVF
RjkxRjE2ODc4RjdEMDAzRTVDMjUgLyogSklUVGh1bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkM3MTJFMzE3Q0Q4NzkzMDA4Q0M5M0MgLyogSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovLAotCQkJCTBGMDk4MUY4MUJDNUU1NjUwMDQ4MTRGOCAvKiBE
RkdDb3B5QmFycmllck9wdGltaXphdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzZG
NTRBMzEzQjI4QUFCMDBFRjJCQ0UgLyogSklUV3JpdGVCYXJyaWVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NDA0ODAxMzEwMjFBMUQ5MDA4RTdGMDEgLyogSlNBUElWYWx1ZVdyYXBwZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUMyQ0YzOUMyMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJP
YmplY3QuaCBpbiBIZWFkZXJzICovLApAQCAtNjYwMSw3ICs2NjU0LDYgQEAKIAkJCQk3OTdFMDdB
QTFCOEZDRkI5MDA4NDAwQkEgLyogSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMThDNDIxMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0dsb2JhbE9iamVjdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTVGRDAwODYxODlCMUI3RTAwNjMzMjMxIC8qIEpTR2xvYmFs
T2JqZWN0Q29uc29sZUFnZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MzRDNDU3QzFCQzcyNDEx
MDA3NDc2QTcgLyogSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNUMzQTFBNjE4QzA0OTAyMDBDOTU5M0EgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTk0NTU5MzE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNH
bG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTdEMjNFQTE4OTFC
MDc3MDAzMUM3RkEgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAq
LywKQEAgLTY2NzAsNiArNjcyMiw3IEBACiAJCQkJMEYyQjY2RkIxN0I2QjVBQjAwQTdBRTNGIC8q
IEpTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RkQx
N0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheVByb3RvdHlwZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMkI2NkZGMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1MzRDNDU3QzFCQzcyNDExMDA3NDc2QTcgLyogSlNUeXBlZEFycmF5Vmll
d0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlERUE3RTI0NTFCQkM2NzdGMDBENzg0
NDAgLyogSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUw
N0QyOUUwRTg3MUU1RTAwRDdEODk2IC8qIEpTVHlwZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMkI2NzAyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1VpbnQxNkFycmF5LmggaW4gSGVhZGVycyAq
LywKQEAgLTY2OTQsNiArNjc0Nyw3IEBACiAJCQkJOTY5QTA3MkEwRUQxQ0U2OTAwRjFGNjgxIC8q
IExhYmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjAwOTdBNjBFQkFCQjU4MDA3QTcyOTcgLyog
TGFiZWxTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCNTQ2NzcxNEY1OUI1QzAwMkMyOTg5
IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OURBMDBC
MDFCRDU5OTRFMDBGNDU3NUMgLyogbGF6eXdyaXRlci5weSBpbiBIZWFkZXJzICovLAogCQkJCUJD
MThDNDUyMEUxNkY1Q0QwMEIzNDQ2MCAvKiBMZWdhY3lQcm9maWxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0MzEwRTE2RjVDRDAwQjM0NDYwIC8qIExleGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzUyRTBFMTZGQ0UxMDBCMzQ0NjAgLyogTGV4ZXIubHV0LmggaW4gSGVhZGVycyAq
LywKQEAgLTY3OTAsNyArNjg0NCw2IEBACiAJCQkJODY4OTE2QjAxNTVGMjg2MzAwQ0IyQjlBIC8q
IFByaXZhdGVOYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1MDBFMTZGNUNEMDBCMzQ0
NjAgLyogUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTVDRDQ1NzcwRTFDNEZERDAwODUz
NThFIC8qIFByb2ZpbGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGN0MxMUFEMUJD
Mzg2MkMwMEM3NENEQiAvKiBDb3B5QmFycmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0
NTEwRTE2RjVDRDAwQjM0NDYwIC8qIFByb2ZpbGVOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkY3MjlBNTE2NkFEMzUxMDAwRjVCQTMgLyogUHJvZmlsZXJCeXRlY29kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZGNzI5QjkxNjZBRDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVyQnl0ZWNvZGVzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTY5NDksNiArNzAwMiw3IEBACiAJCQkJQTdCNjAxODIxNjM5RkQy
QTAwMzcyQkEzIC8qIFVubGlua2VkQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDE0
MkU1MTFCNzk2RUNFMDBGNEJGNEIgLyogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMkU4OTJDMTZEMDI4QUQwMDlFNEZEMiAvKiBVbnVzZWRQb2ludGVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5OURBMDBCMTFCRDU5OTRFMDBGNDU3NUMgLyogVXBkYXRl
Q29udGVudHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2M0IzODEzRkM2RkU5MDAwMkQ5QjIg
LyogVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQyNkE0ODE0NjBDQkIzMDAx
MzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlFRTBDMDAxQjRB
RkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAt
NzQ4OCw3ICs3NTQyLDYgQEAKIAkJCQkwRjYzOTQ1NDE1RDA3MDU1MDA2QTU5N0MgLyogQXJyYXlQ
cm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUMwMTA3RUMzNzYwMDQyN0E0OCAv
KiBBcnJheVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI0RTU0MDE3RUE5RjU5
MDBBQkIyMTcgLyogQXNzZW1ibHlIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZFQjEz
NzU3MUJCMTFFRjkwMENENTEwMCAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUyNjc4RjhFMUEwMzEwMDkwMDZBMzA2RCAvKiBCYXNpY0Jsb2NrTG9jYXRpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2NEIyNzExQTc4NEJBRjAwNkU0RTY2IC8qIEJpbmFy
eVN3aXRjaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDg2MzEwN0VDMTFBMDAxM0U3QjIg
LyogQm9vbGVhbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzUyMCw3ICs3NTcz
LDYgQEAKIAkJCQlBNzdGMTgyMTE2NDA4OEIyMDA2NDBBNDcgLyogQ29kZUNhY2hlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGOEY5NDQ2MTY2NzY0RjEwMEQ2MTk3MSAvKiBDb2RlT3JpZ2luLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTg2QjU4MjY3MTREMjc5NkMwMEE5QzMwNiAvKiBDb2RlUHJv
ZmlsZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlERTVBMEEwMDFCQTNBQzNFMDAzRDQ0MjQgLyog
SW50cmluc2ljRW1pdHRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkI1ODI2OTE0RDI3OTcw
MDBBOUMzMDYgLyogQ29kZVByb2ZpbGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGOTQz
QzE2Njc2MzEzMDBENjE5NzEgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjhGOTQ0MjE2Njc2MzM1MDBENjE5NzEgLyogQ29kZVR5cGUuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC03NTM4LDYgKzc1OTAsNyBAQAogCQkJCTE0MjgwODJFMTA3RUMwNTcwMDEz
RTdCMiAvKiBDb25zdHJ1Y3REYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1N0QyM0YxMTg5
MUI1QjQwMDMxQzdGQSAvKiBDb250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUyQjcxN0I1MUEwNTk3RTEwMDdBRjRGMyAvKiBDb250cm9sRmxvd1Byb2ZpbGVyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBGQkFERjU0MUJEMUY0QjgwMEUwNzNDMSAvKiBDb3BpZWRC
bG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMjQwMzA1NTE0QjQwNEU2MDA3OUVCNjQgLyog
Q29waWVkU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzIyMzlEMTcxNjI2MkJERDAwNUFD
NUZEIC8qIENvcHlWaXNpdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJBMTExMjQ1MTkyRkNF
NzkwMDVFRTE4RCAvKiBDdXN0b21HZXR0ZXJTZXR0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03
NTg0LDYgKzc2MzcsNyBAQAogCQkJCTBGMzhCMDE5MTdDRkU3NTUwMEIxNDREMyAvKiBERkdDb21w
aWxhdGlvbk1vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzQjNBMUExNTNFNjhGMjAwM0VE
MEZGIC8qIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RUQ2N0I5MUIyNjI1NkQwMDY2Q0UxNSAvKiBERkdDb25zdGFudEhvaXN0aW5nUGhhc2UuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMEYwOTgxRjcxQkM1RTU2NTAwNDgxNEY4IC8qIERGR0NvcHlCYXJy
aWVyT3B0aW1pemF0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCRTBGNzIxNkMx
REIwMzAwODJDNUU4IC8qIERGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTdEODlDRjUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0NyaXRpY2FsRWRnZUJyZWFraW5n
UGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5NTkxNEVGOTBBNjAwQzcyNTMyIC8q
IERGR0NTRVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzgyNCw2ICs3ODc4LDcgQEAKIAkJ
CQlBMUQ3OTJGRTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9y
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExRDc5MzAwMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExMkJCRkY0MUIw
NDRBOTgwMDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCURFNUEw
QTAwMUJBM0FDM0UwMDNENDQyNCAvKiBJbnRyaW5zaWNFbWl0dGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTcwMTEzRDRCMUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlvbnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNzBEQzNFMDkxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9y
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MDNGQTE5MTg4RTBGQjAwMDExMEYx
NCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzg0MSw3ICs3
ODk2LDYgQEAKIAkJCQkwRjI0RTU0QzE3RUUyNzQ5MDBBQkIyMTcgLyogSklUT3BlcmF0aW9ucy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkNDODVDNDBFRTdBODk0MDAyODg2ODIgLyogSklUUHJv
cGVydHlBY2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdDMUU4RTQxMTJFNzJFRjAwQTM3
Rjk4IC8qIEpJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEZC
QURGNTQxQkQxRjRCODAwRTA3M0MxIC8qIENvcGllZEJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGNzY2RDI4MTVBOENDMUUwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjc2NkQyQjE1QThDQzM4MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVT
ZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1RUY5MUUxNjg3OEY3QTAwM0U1QzI1IC8qIEpJ
VFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc5MzQsNiArNzk4OCw3IEBACiAJCQkJMEYy
QjY2RkExN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjJCNjZGQzE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5
UHJvdG90eXBlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjZGRTE3QjZCNUFCMDBBN0FF
M0YgLyogSlNUeXBlZEFycmF5cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzRDNDU3RTFCQzcy
NTQ5MDA3NDc2QTcgLyogSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCURFQTdFMjQ0MUJCQzY3NzIwMEQ3ODQ0MCAvKiBKU1R5cGVkQXJyYXlWaWV3UHJv
dG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RTNDNjFBMTY3QkFCRUUwMDZENzYwQSAv
KiBKU1ZhbHVlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRCRDVBMzIwQTNFOTFGNjAwQkFGNTlD
IC8qIEpTVmFsdWVSZWYuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03OTY1LDYgKzgwMjAsNyBAQAog
CQkJCTE0QjcyM0IyMTJEN0RBNDYwMDNCRDVFRCAvKiBNYWNoaW5lU3RhY2tNYXJrZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZFQjNFQ0YxNjIzN0Y2QzAwQUI2N0FEIC8qIE1hY3JvQXNzZW1i
bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBN
YWNyb0Fzc2VtYmxlckFSTS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRUIxMzc1NzFCQjExRUY5
MDBDRDUxMDAgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
NzI5MDA5QzE3OTc2QzYwMDAzMTcyOTggLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGRTY4QzYzODFCOTBERTBCMDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQ
cmludGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3QTRBRTA4MTc5NzNCMjYwMDU2MTJCMSAv
KiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTgwNDQsNyAr
ODEwMCw2IEBACiAJCQkJNjU0MEM3QTAxQjgyRTFDMzAwMEY2Qjc5IC8qIFJlZ2lzdGVyQXRPZmZz
ZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU0MEM3QTExQjgyRTFDMzAwMEY2Qjc5IC8qIFJl
Z2lzdGVyQXRPZmZzZXRMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzMxNDE1MTgxNDZE
NzAwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MzRDNDU3
RTFCQzcyNTQ5MDA3NDc2QTcgLyogSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE1N0QyM0VEMTg5MUI1NTQwMDMxQzdGQSAvKiBSZWd1bGFyRXhwcmVz
c2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUJBMTVFOTE4MjM0MEIzMDBBODJFNjkgLyog
UmVtb3RlSW5zcGVjdG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5NDU1OEYxODI0NUVGRDAw
Q0MzODQzIC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC04MTQ1LDcgKzgyMDAsNiBAQAogCQkJCTcwOUZCODZCMUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFr
U2V0UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJBNEVDOTBCMTg2MEQ2QzIwMDk0
Rjc4MiAvKiBXcml0ZUJhcnJpZXJCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDODE1
MEIxNDA0M0MwRTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJMEYwOTgxRjcxQkM1RTU2NTAwNDgxNEY4IC8qIERGR0NvcHlCYXJyaWVyT3B0aW1p
emF0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdFNUFCM0ExNzk5RTRCMjAwRDI4
MzNEIC8qIFg4NkRpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjNDNkQ5QzE1
MjExMTFBMDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODY3MDRCODQxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJJbnRlcnByZXRlci5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybVdp
bi5jbWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCAw
OTcxZDQ0NGJmNzMzZTExOWQ1NWZhMjMwNjFjZTQyNWQ2ZTdkNTNhLi42ZjY4ODE3MmMyMjc3NGQ2
YTBkZGU4ZmNhZDBiMzQwM2EzMTFkMjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3Jt
V2luLmNtYWtlCkBAIC0zMCwxNSArMzAsMjcgQEAgZmlsZShDT1BZCiAKIGZpbGUoTUFLRV9ESVJF
Q1RPUlkgJHtERVJJVkVEX1NPVVJDRVNfRElSfS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0
Q29yZSkKIAotZmlsZShHTE9CIF9KYXZhU2NyaXB0Q29yZV9TY3JpcHRzICIke0phdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSfS8qIikKLWZvcmVhY2ggKF9zY3JpcHQgJHtfSmF2YVNjcmlwdENvcmVf
U2NyaXB0c30pCisjIFRoZSBkaXJlY3RvcnkgZmxhdHRlbmluZyBwZXJmb3JtZWQgYmVsb3cgbWly
cm9ycyB3aGF0IHRoZSBNYWMgcG9ydCBkb2VzIHdpdGggcHJpdmF0ZSBoZWFkZXJzLgorIyBXZSBy
ZWx5IG9uIHRoZSBmYWN0IHRoYXQgZ2VuZXJhdG9yLXNwZWNpZmljIGZpbGUgbmFtZXMgYXJlIHBy
ZWZpeGVkIHdpdGggdGhlaXIgZGlyZWN0b3J5LgorIyBUb3AtbGV2ZWwgc2NyaXB0cyBzaG91bGQg
aGF2ZSBhIGZpbGUgZXh0ZW5zaW9uLCBzaW5jZSB0aGV5IGFyZSBpbnZva2VkIGR1cmluZyB0aGUg
YnVpbGQuCisKK3NldChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTCisgICAgJHtKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTX0RJUn0vKi5wbAorICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9Lyou
cHkKKyAgICAke0phdmFTY3JpcHRjb3JlX1NDUklQVFNfRElSfS9idWlsdGlucy9idWlsdGlucyou
cHkKKykKKworZmlsZShHTE9CIF9zY3JpcHRzVG9Db3B5ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBU
U30pCitmb3JlYWNoIChfc2NyaXB0ICR7X3NjcmlwdHNUb0NvcHl9KQogICAgIGZpbGUoQ09QWSAk
e19zY3JpcHR9IERFU1RJTkFUSU9OICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vRm9yd2FyZGluZ0hl
YWRlcnMvSmF2YVNjcmlwdENvcmUvU2NyaXB0cykKLWVuZGZvcmVhY2goKQorZW5kZm9yZWFjaCAo
KQogCiBzZXQoSmF2YVNjcmlwdENvcmVfUE9TVF9CVUlMRF9DT01NQU5EICIke0NNQUtFX0JJTkFS
WV9ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL3Bvc3RCdWlsZC5jbWQiKQogZmls
ZShXUklURSAiJHtKYXZhU2NyaXB0Q29yZV9QT1NUX0JVSUxEX0NPTU1BTkR9IiAiQHhjb3B5IC95
IC9kIC9mIFwiJHtERVJJVkVEX1NPVVJDRVNfRElSfS9KYXZhU2NyaXB0Q29yZS8qLmhcIiBcIiR7
REVSSVZFRF9TT1VSQ0VTX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMvSmF2YVNjcmlwdENvcmVcIiA+
bnVsIDI+bnVsXG4iKQogZmlsZShBUFBFTkQgIiR7SmF2YVNjcmlwdENvcmVfUE9TVF9CVUlMRF9D
T01NQU5EfSIgIkB4Y29weSAveSAvZCAvZiBcIiR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yLyouaFwiIFwiJHtERVJJVkVEX1NPVVJDRVNfRElSfS9Gb3J3YXJk
aW5nSGVhZGVycy9KYXZhU2NyaXB0Q29yZVwiID5udWwgMj5udWxcbiIpCi1maWxlKEFQUEVORCAi
JHtKYXZhU2NyaXB0Q29yZV9QT1NUX0JVSUxEX0NPTU1BTkR9IiAiQHhjb3B5IC95IC9kIC9mIFwi
JHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vKi4qXCIgXCIke0RFUklWRURfU09VUkNFU19E
SVJ9L0ZvcndhcmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlL1NjcmlwdHNcIiA+bnVsIDI+bnVs
XG4iKQorZm9yZWFjaCAoX3NjcmlwdCAke19zY3JpcHRzVG9Db3B5fSkKKyAgICBmaWxlKEFQUEVO
RCAiJHtKYXZhU2NyaXB0Q29yZV9QT1NUX0JVSUxEX0NPTU1BTkR9IiAiQHhjb3B5IC95IC9mIFwi
JHtfc2NyaXB0fVwiIFwiJHtERVJJVkVEX1NPVVJDRVNfRElSfS9Gb3J3YXJkaW5nSGVhZGVycy9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzXCIgPm51bCAyPm51bFxuIikKK2VuZGZvcmVhY2ggKCkKIGZv
cmVhY2ggKF9kaXJlY3RvcnkgJHtKYXZhU2NyaXB0Q29yZV9GT1JXQVJESU5HX0hFQURFUlNfRElS
RUNUT1JJRVN9KQogICAgIGZpbGUoQVBQRU5EICIke0phdmFTY3JpcHRDb3JlX1BPU1RfQlVJTERf
Q09NTUFORH0iICJAeGNvcHkgL3kgL2QgL2YgXCIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vJHtfZGly
ZWN0b3J5fS8qLmhcIiBcIiR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMv
SmF2YVNjcmlwdENvcmVcIiA+bnVsIDI+bnVsXG4iKQogZW5kZm9yZWFjaCAoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvVXBkYXRlQ29udGVudHMucHkgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9VcGRhdGVDb250ZW50cy5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
NzZkNDZmYjRjNDIzMDJiODVmZjEwYzg1MWViMzRjMWUyNzg5NGMzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvVXBkYXRlQ29udGVudHMucHkKQEAgLTAs
MCArMSw0OCBAQAorIyEvdXNyL2Jpbi9weXRob24KKworIyBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIyAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorIyAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorIyBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHN5
cworaW1wb3J0IG9zCisKK2Fzc2VydChsZW4oc3lzLmFyZ3YpID09IDMpCisKK2NvbXAgPSBzeXMu
YXJndlsxXQorZmlsZW5hbWUgPSBzeXMuYXJndlsyXQorCit0ID0gRmFsc2UKKworaWYgb3MucGF0
aC5pc2ZpbGUoZmlsZW5hbWUpOgorICAgIGYgPSBvcGVuKGZpbGVuYW1lLCAncicpCisgICAgY29t
cGFyYXRvciA9IGYucmVhZCgpCisgICAgZi5jbG9zZSgpCisgICAgdCA9IFRydWUKKworaWYgKG5v
dCB0IG9yIGNvbXAgIT0gY29tcGFyYXRvcik6CisgICAgZiA9IG9wZW4oZmlsZW5hbWUsICd3JykK
KyAgICBmLndyaXRlKGNvbXApCisgICAgZi5jbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9fX2luaXRfXy5weSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkZmNiYTk4
MWQ4ZjhkYTA3ODEzNThjZmU2NGZhMWM3ODA3NGExNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9fX2luaXRfXy5weQpAQCAtMCwwICsx
LDMgQEAKKyMgUmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9y
IG1vZHVsZSBmaWxlcworCitmcm9tIGJ1aWx0aW5zIGltcG9ydCAqCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGlucy5weSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2
N2NkYWQ4YTMwZDcwY2NjNDVhMTlkODNkMjI0YTY0ZjNiZWZmNzIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGlucy5weQpAQCAt
MCwwICsxLDEyIEBACisjIFRoaXMgZmlsZSBpcyB1c2VkIHRvIHNpbXVsYXRlIHRoZSBidWlsdGlu
cy8gZGlyZWN0b3J5IHdoZW4gZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKyMgaXMgcnVuIGZyb20g
SmF2YVNjcmlwdENvcmUgZnJhbWV3b3JrJ3MgcHJpdmF0ZSBoZWFkZXJzIGRpcmVjdG9yeSwgd2hp
Y2ggaXMgZmxhdHRlbmVkLgorCitmcm9tIGJ1aWx0aW5zX21vZGVsIGltcG9ydCAqCitmcm9tIGJ1
aWx0aW5zX3RlbXBsYXRlcyBpbXBvcnQgKgorCitmcm9tIGJ1aWx0aW5zX2dlbmVyYXRvciBpbXBv
cnQgKgorZnJvbSBidWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIgaW1wb3J0ICoKK2Zy
b20gYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50YXRpb24gaW1wb3J0ICoKK2Zy
b20gYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVyIGltcG9ydCAqCitmcm9tIGJ1aWx0
aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uIGltcG9ydCAqCitmcm9tIGJ1aWx0
aW5zX2dlbmVyYXRlX3NlcGFyYXRlX3dyYXBwZXIgaW1wb3J0ICoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJp
bmVkX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1
aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDg5ZmRmNTlh
MmJhZTk2MTVlOThhOGE2ZTJjYzI5ODA0OTNlNjEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmlu
ZWRfaGVhZGVyLnB5CkBAIC0wLDAgKzEsMTYyIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMK
KyMgQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCByZQoraW1wb3J0IHN0cmluZworZnJvbSBzdHJpbmcg
aW1wb3J0IFRlbXBsYXRlCisKK2Zyb20gYnVpbHRpbnNfZ2VuZXJhdG9yIGltcG9ydCBCdWlsdGlu
c0dlbmVyYXRvcgorZnJvbSBidWlsdGluc190ZW1wbGF0ZXMgaW1wb3J0IEJ1aWx0aW5zR2VuZXJh
dG9yVGVtcGxhdGVzIGFzIFRlbXBsYXRlcworCitsb2cgPSBsb2dnaW5nLmdldExvZ2dlcignZ2xv
YmFsJykKKworCitjbGFzcyBCdWlsdGluc0NvbWJpbmVkSGVhZGVyR2VuZXJhdG9yKEJ1aWx0aW5z
R2VuZXJhdG9yKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZWwpOgorICAgICAgICBCdWls
dGluc0dlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBtb2RlbCkKKworICAgIGRlZiBvdXRwdXRfZmls
ZW5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiAiJXNCdWlsdGlucy5oIiAlIHNlbGYubW9kZWwo
KS5mcmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNlJykKKworICAgIGRlZiBnZW5lcmF0ZV9vdXRw
dXQoc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbmFtZXNwYWNlJzogc2Vs
Zi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCduYW1lc3BhY2UnKSwKKyAgICAgICAgICAgICdo
ZWFkZXJHdWFyZCc6IHNlbGYub3V0cHV0X2ZpbGVuYW1lKCkucmVwbGFjZSgnLicsICdfJyksCisg
ICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmco
J21hY3JvX3ByZWZpeCcpLAorICAgICAgICB9CisKKyAgICAgICAgc2VjdGlvbnMgPSBbXQorICAg
ICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9saWNlbnNlKCkpCisgICAgICAgIHNl
Y3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuRG9Ob3RFZGl0V2FybmluZykuc3Vic3Rp
dHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5I
ZWFkZXJJbmNsdWRlR3VhcmRUb3ApLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25z
LmFwcGVuZChzZWxmLmdlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zKCkpCisgICAgICAgIHNl
Y3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlVG9wKS5zdWJzdGl0dXRl
KGFyZ3MpKQorICAgICAgICBmb3Igb2JqZWN0IGluIHNlbGYubW9kZWwoKS5vYmplY3RzOgorICAg
ICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfc2VjdGlvbl9mb3Jfb2JqZWN0
KG9iamVjdCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX3NlY3Rpb25f
Zm9yX2NvZGVfdGFibGVfbWFjcm8oKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2Vu
ZXJhdGVfc2VjdGlvbl9mb3JfY29kZV9uYW1lX21hY3JvKCkpCisgICAgICAgIHNlY3Rpb25zLmFw
cGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuQ29tYmluZWRIZWFkZXJTdGF0aWNNYWNyb3MpLnN1YnN0
aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMu
TmFtZXNwYWNlQm90dG9tKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBl
bmQoVGVtcGxhdGUoVGVtcGxhdGVzLkhlYWRlckluY2x1ZGVHdWFyZEJvdHRvbSkuc3Vic3RpdHV0
ZShhcmdzKSkKKworICAgICAgICByZXR1cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMpCisKKyAgICBk
ZWYgZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlvbnMoc2VsZik6CisgICAgICAgIHJldHVybiAi
IiJuYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIFZNOwor
CitlbnVtIGNsYXNzIENvbnN0cnVjdEFiaWxpdHkgOiB1bnNpZ25lZDsKK30iIiIKKworICAgIGRl
ZiBnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9vYmplY3Qoc2VsZiwgb2JqZWN0KToKKyAgICAgICAgbGlu
ZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoJy8qICVzICovJyAlIG9iamVjdC5vYmplY3Rf
bmFtZSkKKyAgICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2VuZXJhdGVfZXh0ZXJuc19mb3Jfb2Jq
ZWN0KG9iamVjdCkpCisgICAgICAgIGxpbmVzLmFwcGVuZCgiIikKKyAgICAgICAgbGluZXMuZXh0
ZW5kKHNlbGYuZ2VuZXJhdGVfbWFjcm9zX2Zvcl9vYmplY3Qob2JqZWN0KSkKKyAgICAgICAgbGlu
ZXMuYXBwZW5kKCIiKQorICAgICAgICBsaW5lcy5leHRlbmQoc2VsZi5nZW5lcmF0ZV9kZWZpbmVz
X2Zvcl9vYmplY3Qob2JqZWN0KSkKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKKwor
ICAgIGRlZiBnZW5lcmF0ZV9leHRlcm5zX2Zvcl9vYmplY3Qoc2VsZiwgb2JqZWN0KToKKyAgICAg
ICAgbGluZXMgPSBbXQorCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBvYmplY3QuZnVuY3Rpb25z
OgorICAgICAgICAgICAgZnVuY3Rpb25fYXJncyA9IHsKKyAgICAgICAgICAgICAgICAnY29kZU5h
bWUnOiBCdWlsdGluc0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvckZ1bmN0aW9uKGZ1bmN0aW9uKSAr
ICdDb2RlJywKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIiImV4
dGVybiBjb25zdCBjaGFyKiBzXyUoY29kZU5hbWUpczsKK2V4dGVybiBjb25zdCBpbnQgc18lKGNv
ZGVOYW1lKXNMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfJShj
b2RlTmFtZSlzQ29uc3RydWN0QWJpbGl0eTsiIiIgJSBmdW5jdGlvbl9hcmdzKQorCisgICAgICAg
IHJldHVybiBsaW5lcworCisgICAgZGVmIGdlbmVyYXRlX21hY3Jvc19mb3Jfb2JqZWN0KHNlbGYs
IG9iamVjdCk6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBz
ZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZpeCcpLAorICAgICAgICAg
ICAgJ29iamVjdE1hY3JvJzogb2JqZWN0Lm9iamVjdF9uYW1lLnJlcGxhY2UoJy4nLCAnJykudXBw
ZXIoKSwKKyAgICAgICAgfQorCisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgbGluZXMuYXBw
ZW5kKCIjZGVmaW5lICUobWFjcm9QcmVmaXgpc19GT1JFQUNIXyUob2JqZWN0TWFjcm8pc19CVUlM
VElOX0RBVEEobWFjcm8pIFxcIiAlIGFyZ3MpCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBvYmpl
Y3QuZnVuY3Rpb25zOgorICAgICAgICAgICAgZnVuY3Rpb25fYXJncyA9IHsKKyAgICAgICAgICAg
ICAgICAnZnVuY05hbWUnOiBmdW5jdGlvbi5mdW5jdGlvbl9uYW1lLAorICAgICAgICAgICAgICAg
ICdtYW5nbGVkTmFtZSc6IEJ1aWx0aW5zR2VuZXJhdG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rpb24o
ZnVuY3Rpb24pLAorICAgICAgICAgICAgICAgICdwYXJhbUNvdW50JzogbGVuKGZ1bmN0aW9uLnBh
cmFtZXRlcnMpLAorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiAg
ICBtYWNybyglKGZ1bmNOYW1lKXMsICUobWFuZ2xlZE5hbWUpcywgJShwYXJhbUNvdW50KWQpIFxc
IiAlIGZ1bmN0aW9uX2FyZ3MpCisgICAgICAgIHJldHVybiBsaW5lcworCisgICAgZGVmIGdlbmVy
YXRlX2RlZmluZXNfZm9yX29iamVjdChzZWxmLCBvYmplY3QpOgorICAgICAgICBsaW5lcyA9IFtd
CisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBvYmplY3QuZnVuY3Rpb25zOgorICAgICAgICAgICAg
YXJncyA9IHsKKyAgICAgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1vZGVsKCkuZnJh
bWV3b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZpeCcpLAorICAgICAgICAgICAgICAgICdvYmplY3RN
YWNybyc6IG9iamVjdC5vYmplY3RfbmFtZS5yZXBsYWNlKCcuJywgJycpLnVwcGVyKCksCisgICAg
ICAgICAgICAgICAgJ2Z1bmN0aW9uTWFjcm8nOiBmdW5jdGlvbi5mdW5jdGlvbl9uYW1lLnVwcGVy
KCksCisgICAgICAgICAgICB9CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiNkZWZpbmUgJSht
YWNyb1ByZWZpeClzX0JVSUxUSU5fJShvYmplY3RNYWNybylzXyUoZnVuY3Rpb25NYWNybylzIDEi
ICUgYXJncykKKworICAgICAgICByZXR1cm4gbGluZXMKKworICAgIGRlZiBnZW5lcmF0ZV9zZWN0
aW9uX2Zvcl9jb2RlX3RhYmxlX21hY3JvKHNlbGYpOgorICAgICAgICBhcmdzID0geworICAgICAg
ICAgICAgJ21hY3JvUHJlZml4Jzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdtYWNy
b19wcmVmaXgnKSwKKyAgICAgICAgfQorCisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgbGlu
ZXMuYXBwZW5kKCIjZGVmaW5lICUobWFjcm9QcmVmaXgpc19GT1JFQUNIX0JVSUxUSU5fQ09ERSht
YWNybykgXFwiICUgYXJncykKKyAgICAgICAgZm9yIGZ1bmN0aW9uIGluIHNlbGYubW9kZWwoKS5h
bGxfZnVuY3Rpb25zKCk6CisgICAgICAgICAgICBmdW5jdGlvbl9hcmdzID0geworICAgICAgICAg
ICAgICAgICdmdW5jTmFtZSc6IGZ1bmN0aW9uLmZ1bmN0aW9uX25hbWUsCisgICAgICAgICAgICAg
ICAgJ2NvZGVOYW1lJzogQnVpbHRpbnNHZW5lcmF0b3IubWFuZ2xlZE5hbWVGb3JGdW5jdGlvbihm
dW5jdGlvbikgKyAnQ29kZScsCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxpbmVzLmFw
cGVuZCgiICAgIG1hY3JvKCUoY29kZU5hbWUpcywgJShmdW5jTmFtZSlzLCBzXyUoY29kZU5hbWUp
c0xlbmd0aCkgXFwiICUgZnVuY3Rpb25fYXJncykKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihs
aW5lcykKKworICAgIGRlZiBnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX25hbWVfbWFjcm8oc2Vs
Zik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1v
ZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZpeCcpLAorICAgICAgICB9CisKKyAg
ICAgICAgbGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoIiNkZWZpbmUgJShtYWNyb1By
ZWZpeClzX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcXCIgJSBhcmdzKQor
ICAgICAgICB1bmlxdWVfbmFtZXMgPSBsaXN0KHNldChbZnVuY3Rpb24uZnVuY3Rpb25fbmFtZSBm
b3IgZnVuY3Rpb24gaW4gc2VsZi5tb2RlbCgpLmFsbF9mdW5jdGlvbnMoKV0pKQorICAgICAgICB1
bmlxdWVfbmFtZXMuc29ydCgpCisgICAgICAgIGZvciBmdW5jdGlvbl9uYW1lIGluIHVuaXF1ZV9u
YW1lczoKKyAgICAgICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ2Z1
bmNOYW1lJzogZnVuY3Rpb25fbmFtZSwKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGlu
ZXMuYXBwZW5kKCIgICAgbWFjcm8oJShmdW5jTmFtZSlzKSBcXCIgJSBmdW5jdGlvbl9hcmdzKQor
ICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1w
bGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9i
dWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
Mjg3OGQzNjEwYmMzZDEzOTdkYzExNTgzYjRkMzliODJmNDI2ZDg4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJh
dGVfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkKQEAgLTAsMCArMSw5MCBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdh
c2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgcmUKK2ltcG9ydCBzdHJp
bmcKK2Zyb20gc3RyaW5nIGltcG9ydCBUZW1wbGF0ZQorCitmcm9tIGJ1aWx0aW5zX2dlbmVyYXRv
ciBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3IKK2Zyb20gYnVpbHRpbnNfbW9kZWwgaW1wb3J0IEZy
YW1ld29yaywgRnJhbWV3b3JrcworZnJvbSBidWlsdGluc190ZW1wbGF0ZXMgaW1wb3J0IEJ1aWx0
aW5zR2VuZXJhdG9yVGVtcGxhdGVzIGFzIFRlbXBsYXRlcworCitsb2cgPSBsb2dnaW5nLmdldExv
Z2dlcignZ2xvYmFsJykKKworCitjbGFzcyBCdWlsdGluc0NvbWJpbmVkSW1wbGVtZW50YXRpb25H
ZW5lcmF0b3IoQnVpbHRpbnNHZW5lcmF0b3IpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2Rl
bCk6CisgICAgICAgIEJ1aWx0aW5zR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYsIG1vZGVsKQorCisg
ICAgZGVmIG91dHB1dF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuICIlc0J1aWx0aW5z
LmNwcCIgJSBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpCisKKyAg
ICBkZWYgZ2VuZXJhdGVfb3V0cHV0KHNlbGYpOgorICAgICAgICBhcmdzID0geworICAgICAgICAg
ICAgJ25hbWVzcGFjZSc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNl
JyksCisgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNl
dHRpbmcoJ21hY3JvX3ByZWZpeCcpLAorICAgICAgICB9CisKKyAgICAgICAgc2VjdGlvbnMgPSBb
XQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9saWNlbnNlKCkpCisgICAg
ICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuRG9Ob3RFZGl0V2FybmluZyku
c3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVf
aGVhZGVyX2luY2x1ZGVzKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1w
bGF0ZXMuTmFtZXNwYWNlVG9wKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBmb3IgZnVuY3Rp
b24gaW4gc2VsZi5tb2RlbCgpLmFsbF9mdW5jdGlvbnMoKToKKyAgICAgICAgICAgIHNlY3Rpb25z
LmFwcGVuZChzZWxmLmdlbmVyYXRlX2VtYmVkZGVkX2NvZGVfc3RyaW5nX3NlY3Rpb25fZm9yX2Z1
bmN0aW9uKGZ1bmN0aW9uKSkKKyAgICAgICAgaWYgc2VsZi5tb2RlbCgpLmZyYW1ld29yayBpcyBG
cmFtZXdvcmtzLkphdmFTY3JpcHRDb3JlOgorICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRl
bXBsYXRlKFRlbXBsYXRlcy5Db21iaW5lZEpTQ0ltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9zKS5z
dWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBlbGlmIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsgaXMg
RnJhbWV3b3Jrcy5XZWJDb3JlOgorICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRl
KFRlbXBsYXRlcy5Db21iaW5lZFdlYkNvcmVJbXBsZW1lbnRhdGlvblN0YXRpY01hY3Jvcykuc3Vi
c3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRl
cy5OYW1lc3BhY2VCb3R0b20pLnN1YnN0aXR1dGUoYXJncykpCisKKyAgICAgICAgcmV0dXJuICJc
blxuIi5qb2luKHNlY3Rpb25zKQorCisgICAgZGVmIGdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcyhz
ZWxmKToKKyAgICAgICAgaGVhZGVyX2luY2x1ZGVzID0gWworICAgICAgICAgICAgKFsiSmF2YVNj
cmlwdENvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgImJ1aWx0aW5z
L0J1aWx0aW5FeGVjdXRhYmxlcy5oIiksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKFsi
SmF2YVNjcmlwdENvcmUiLCAiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlw
dENvcmUiLCAicnVudGltZS9FeGVjdXRhYmxlLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAg
ICAgICAoWyJKYXZhU2NyaXB0Q29yZSIsICJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJK
YXZhU2NyaXB0Q29yZSIsICJydW50aW1lL0pTQ2VsbElubGluZXMuaCIpLAorICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3Jp
cHRDb3JlIiwgInJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIiksCisgICAgICAgICAgICApLAor
ICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENv
cmUiLCAicnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIiksCisgICAgICAgICAgICApLAorICAg
ICAgICAgICAgKFsiSmF2YVNjcmlwdENvcmUiLCAiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAg
ICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9WTS5oIiksCisgICAgICAgICAgICApLAorICAg
ICAgICBdCisKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihzZWxmLmdlbmVyYXRlX2luY2x1ZGVz
X2Zyb21fZW50cmllcyhoZWFkZXJfaW5jbHVkZXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVh
ZGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNf
Z2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViMWViN2Q2NzFjYTExYzM1
OGE1MTk3ZGFkYWRlNzk1MTkwZDAwMzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFk
ZXIucHkKQEAgLTAsMCArMSwxNzUgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5
cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBD
b3B5cmlnaHQgKGMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisj
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitpbXBv
cnQgbG9nZ2luZworaW1wb3J0IHJlCitpbXBvcnQgc3RyaW5nCitmcm9tIHN0cmluZyBpbXBvcnQg
VGVtcGxhdGUKKworZnJvbSBidWlsdGluc19nZW5lcmF0b3IgaW1wb3J0IEJ1aWx0aW5zR2VuZXJh
dG9yCitmcm9tIGJ1aWx0aW5zX3RlbXBsYXRlcyBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3JUZW1w
bGF0ZXMgYXMgVGVtcGxhdGVzCisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwnKQor
CisKK2NsYXNzIEJ1aWx0aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0b3IoQnVpbHRpbnNHZW5lcmF0
b3IpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCwgb2JqZWN0KToKKyAgICAgICAgQnVp
bHRpbnNHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWwpCisgICAgICAgIHNlbGYub2JqZWN0
ID0gb2JqZWN0CisKKyAgICBkZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICByZXR1
cm4gIiVzQnVpbHRpbnMuaCIgJSBCdWlsdGluc0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvck9iamVj
dChzZWxmLm9iamVjdCkKKworICAgIGRlZiBtYWNyb19wcmVmaXgoc2VsZik6CisgICAgICAgIHJl
dHVybiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZpeCcpCisKKyAg
ICBkZWYgZ2VuZXJhdGVfb3V0cHV0KHNlbGYpOgorICAgICAgICBhcmdzID0geworICAgICAgICAg
ICAgJ25hbWVzcGFjZSc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNl
JyksCisgICAgICAgICAgICAnaGVhZGVyR3VhcmQnOiBzZWxmLm91dHB1dF9maWxlbmFtZSgpLnJl
cGxhY2UoJy4nLCAnXycpLAorICAgICAgICAgICAgJ21hY3JvUHJlZml4Jzogc2VsZi5tYWNyb19w
cmVmaXgoKSwKKyAgICAgICAgICAgICdvYmplY3ROYW1lJzogc2VsZi5vYmplY3Qub2JqZWN0X25h
bWUudXBwZXIoKSwKKyAgICAgICAgfQorCisgICAgICAgIHNlY3Rpb25zID0gW10KKyAgICAgICAg
c2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfbGljZW5zZSgpKQorICAgICAgICBzZWN0aW9u
cy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkRvTm90RWRpdFdhcm5pbmcpLnN1YnN0aXR1dGUo
YXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuSGVhZGVy
SW5jbHVkZUd1YXJkVG9wKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBl
bmQoc2VsZi5nZW5lcmF0ZV9oZWFkZXJfaW5jbHVkZXMoKSkKKyAgICAgICAgc2VjdGlvbnMuYXBw
ZW5kKHNlbGYuZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlvbnMoKSkKKyAgICAgICAgc2VjdGlv
bnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VUb3ApLnN1YnN0aXR1dGUoYXJn
cykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX3NlY3Rpb25fZm9yX29i
amVjdChzZWxmLm9iamVjdCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRl
X3NlY3Rpb25fZm9yX2NvZGVfdGFibGVfbWFjcm8oKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5k
KHNlbGYuZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV9uYW1lX21hY3JvKCkpCisgICAgICAgIHNl
Y3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuU2VwYXJhdGVIZWFkZXJTdGF0aWNNYWNy
b3MpLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShU
ZW1wbGF0ZXMuTmFtZXNwYWNlQm90dG9tKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0
aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkhlYWRlckluY2x1ZGVHdWFyZEJvdHRvbSku
c3Vic3RpdHV0ZShhcmdzKSkKKworICAgICAgICByZXR1cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMp
CisKKyAgICBkZWYgZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlvbnMoc2VsZik6CisgICAgICAg
IHJldHVybiAiIiJuYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK30i
IiIKKworICAgIGRlZiBnZW5lcmF0ZV9oZWFkZXJfaW5jbHVkZXMoc2VsZik6CisgICAgICAgIGhl
YWRlcl9pbmNsdWRlcyA9IFsKKyAgICAgICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAg
ICAgICAoIkphdmFTY3JpcHRDb3JlIiwgImJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oIiksCisgICAg
ICAgICAgICApLAorICAgICAgICBdCisKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihzZWxmLmdl
bmVyYXRlX2luY2x1ZGVzX2Zyb21fZW50cmllcyhoZWFkZXJfaW5jbHVkZXMpKQorCisgICAgZGVm
IGdlbmVyYXRlX3NlY3Rpb25fZm9yX29iamVjdChzZWxmLCBvYmplY3QpOgorICAgICAgICBsaW5l
cyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZCgnLyogJXMgKi8nICUgb2JqZWN0Lm9iamVjdF9u
YW1lKQorICAgICAgICBsaW5lcy5leHRlbmQoc2VsZi5nZW5lcmF0ZV9leHRlcm5zX2Zvcl9vYmpl
Y3Qob2JqZWN0KSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCIiKQorICAgICAgICBsaW5lcy5leHRl
bmQoc2VsZi5nZW5lcmF0ZV9tYWNyb3NfZm9yX29iamVjdChvYmplY3QpKQorICAgICAgICBsaW5l
cy5hcHBlbmQoIiIpCisgICAgICAgIGxpbmVzLmV4dGVuZChzZWxmLmdlbmVyYXRlX2RlZmluZXNf
Zm9yX29iamVjdChvYmplY3QpKQorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQorCisg
ICAgZGVmIGdlbmVyYXRlX2V4dGVybnNfZm9yX29iamVjdChzZWxmLCBvYmplY3QpOgorICAgICAg
ICBsaW5lcyA9IFtdCisKKyAgICAgICAgZm9yIGZ1bmN0aW9uIGluIG9iamVjdC5mdW5jdGlvbnM6
CisgICAgICAgICAgICBmdW5jdGlvbl9hcmdzID0geworICAgICAgICAgICAgICAgICdjb2RlTmFt
ZSc6IEJ1aWx0aW5zR2VuZXJhdG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rpb24oZnVuY3Rpb24pICsg
J0NvZGUnLAorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiIiZXh0
ZXJuIGNvbnN0IGNoYXIqIHNfJShjb2RlTmFtZSlzOworZXh0ZXJuIGNvbnN0IGludCBzXyUoY29k
ZU5hbWUpc0xlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc18lKGNv
ZGVOYW1lKXNDb25zdHJ1Y3RBYmlsaXR5OyIiIiAlIGZ1bmN0aW9uX2FyZ3MpCisKKyAgICAgICAg
cmV0dXJuIGxpbmVzCisKKyAgICBkZWYgZ2VuZXJhdGVfbWFjcm9zX2Zvcl9vYmplY3Qoc2VsZiwg
b2JqZWN0KToKKyAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICdtYWNyb1ByZWZpeCc6IHNl
bGYubWFjcm9fcHJlZml4KCksCisgICAgICAgICAgICAnb2JqZWN0TWFjcm8nOiBvYmplY3Qub2Jq
ZWN0X25hbWUucmVwbGFjZSgnLicsICdfJykudXBwZXIoKSwKKyAgICAgICAgfQorCisgICAgICAg
IGxpbmVzID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCIjZGVmaW5lICUobWFjcm9QcmVmaXgp
c19GT1JFQUNIXyUob2JqZWN0TWFjcm8pc19CVUlMVElOX0RBVEEobWFjcm8pIFxcIiAlIGFyZ3Mp
CisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBvYmplY3QuZnVuY3Rpb25zOgorICAgICAgICAgICAg
ZnVuY3Rpb25fYXJncyA9IHsKKyAgICAgICAgICAgICAgICAnZnVuY05hbWUnOiBmdW5jdGlvbi5m
dW5jdGlvbl9uYW1lLAorICAgICAgICAgICAgICAgICdtYW5nbGVkTmFtZSc6IEJ1aWx0aW5zR2Vu
ZXJhdG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rpb24oZnVuY3Rpb24pLAorICAgICAgICAgICAgICAg
ICdwYXJhbUNvdW50JzogbGVuKGZ1bmN0aW9uLnBhcmFtZXRlcnMpLAorICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiAgICBtYWNybyglKGZ1bmNOYW1lKXMsICUobWFu
Z2xlZE5hbWUpcywgJShwYXJhbUNvdW50KWQpIFxcIiAlIGZ1bmN0aW9uX2FyZ3MpCisgICAgICAg
IHJldHVybiBsaW5lcworCisgICAgZGVmIGdlbmVyYXRlX2RlZmluZXNfZm9yX29iamVjdChzZWxm
LCBvYmplY3QpOgorICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBv
YmplY3QuZnVuY3Rpb25zOgorICAgICAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICAgICAn
bWFjcm9QcmVmaXgnOiBzZWxmLm1hY3JvX3ByZWZpeCgpLAorICAgICAgICAgICAgICAgICdvYmpl
Y3RNYWNybyc6IG9iamVjdC5vYmplY3RfbmFtZS5yZXBsYWNlKCcuJywgJ18nKS51cHBlcigpLAor
ICAgICAgICAgICAgICAgICdmdW5jdGlvbk1hY3JvJzogZnVuY3Rpb24uZnVuY3Rpb25fbmFtZS51
cHBlcigpLAorICAgICAgICAgICAgfQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIjZGVmaW5l
ICUobWFjcm9QcmVmaXgpc19CVUlMVElOXyUob2JqZWN0TWFjcm8pc18lKGZ1bmN0aW9uTWFjcm8p
cyAxIiAlIGFyZ3MpCisKKyAgICAgICAgcmV0dXJuIGxpbmVzCisKKyAgICBkZWYgZ2VuZXJhdGVf
c2VjdGlvbl9mb3JfY29kZV90YWJsZV9tYWNybyhzZWxmKToKKyAgICAgICAgYXJncyA9IHsKKyAg
ICAgICAgICAgICdtYWNyb1ByZWZpeCc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygn
bWFjcm9fcHJlZml4JyksCisgICAgICAgICAgICAnb2JqZWN0TWFjcm8nOiBzZWxmLm9iamVjdC5v
YmplY3RfbmFtZS51cHBlcigpLAorICAgICAgICB9CisKKyAgICAgICAgbGluZXMgPSBbXQorICAg
ICAgICBsaW5lcy5hcHBlbmQoIiNkZWZpbmUgJShtYWNyb1ByZWZpeClzX0ZPUkVBQ0hfJShvYmpl
Y3RNYWNybylzX0JVSUxUSU5fQ09ERShtYWNybykgXFwiICUgYXJncykKKyAgICAgICAgZm9yIGZ1
bmN0aW9uIGluIHNlbGYub2JqZWN0LmZ1bmN0aW9uczoKKyAgICAgICAgICAgIGZ1bmN0aW9uX2Fy
Z3MgPSB7CisgICAgICAgICAgICAgICAgJ2Z1bmNOYW1lJzogZnVuY3Rpb24uZnVuY3Rpb25fbmFt
ZSwKKyAgICAgICAgICAgICAgICAnY29kZU5hbWUnOiBCdWlsdGluc0dlbmVyYXRvci5tYW5nbGVk
TmFtZUZvckZ1bmN0aW9uKGZ1bmN0aW9uKSArICdDb2RlJywKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgbGluZXMuYXBwZW5kKCIgICAgbWFjcm8oJShjb2RlTmFtZSlzLCAlKGZ1bmNOYW1l
KXMsIHNfJShjb2RlTmFtZSlzTGVuZ3RoKSBcXCIgJSBmdW5jdGlvbl9hcmdzKQorICAgICAgICBy
ZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQorCisgICAgZGVmIGdlbmVyYXRlX3NlY3Rpb25fZm9yX2Nv
ZGVfbmFtZV9tYWNybyhzZWxmKToKKyAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICdtYWNy
b1ByZWZpeCc6IHNlbGYubWFjcm9fcHJlZml4KCksCisgICAgICAgICAgICAnb2JqZWN0TWFjcm8n
OiBzZWxmLm9iamVjdC5vYmplY3RfbmFtZS51cHBlcigpLAorICAgICAgICB9CisKKyAgICAgICAg
bGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoIiNkZWZpbmUgJShtYWNyb1ByZWZpeClz
X0ZPUkVBQ0hfJShvYmplY3RNYWNybylzX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXFwi
ICUgYXJncykKKyAgICAgICAgdW5pcXVlX25hbWVzID0gbGlzdChzZXQoW2Z1bmN0aW9uLmZ1bmN0
aW9uX25hbWUgZm9yIGZ1bmN0aW9uIGluIHNlbGYub2JqZWN0LmZ1bmN0aW9uc10pKQorICAgICAg
ICB1bmlxdWVfbmFtZXMuc29ydCgpCisgICAgICAgIGZvciBmdW5jdGlvbl9uYW1lIGluIHVuaXF1
ZV9uYW1lczoKKyAgICAgICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSB7CisgICAgICAgICAgICAgICAg
J2Z1bmNOYW1lJzogZnVuY3Rpb25fbmFtZSwKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
bGluZXMuYXBwZW5kKCIgICAgbWFjcm8oJShmdW5jTmFtZSlzKSBcXCIgJSBmdW5jdGlvbl9hcmdz
KQorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVf
aW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlu
cy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42YzIyOTA0YjVjZTAyNWQ3ODZlYzkzMzUxMDVlZjliZDVjZWQ2NDQ3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2Vu
ZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkKQEAgLTAsMCArMSw5OSBAQAorIyEvdXNy
L2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9m
IFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgcmUKK2ltcG9ydCBz
dHJpbmcKK2Zyb20gc3RyaW5nIGltcG9ydCBUZW1wbGF0ZQorCitmcm9tIGJ1aWx0aW5zX2dlbmVy
YXRvciBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3IsIFdLX2xjZmlyc3QKK2Zyb20gYnVpbHRpbnNf
bW9kZWwgaW1wb3J0IEZyYW1ld29yaywgRnJhbWV3b3JrcworZnJvbSBidWlsdGluc190ZW1wbGF0
ZXMgaW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVzIGFzIFRlbXBsYXRlcworCitsb2cg
PSBsb2dnaW5nLmdldExvZ2dlcignZ2xvYmFsJykKKworCitjbGFzcyBCdWlsdGluc1NlcGFyYXRl
SW1wbGVtZW50YXRpb25HZW5lcmF0b3IoQnVpbHRpbnNHZW5lcmF0b3IpOgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBtb2RlbCwgb2JqZWN0KToKKyAgICAgICAgQnVpbHRpbnNHZW5lcmF0b3IuX19p
bml0X18oc2VsZiwgbW9kZWwpCisgICAgICAgIHNlbGYub2JqZWN0ID0gb2JqZWN0CisKKyAgICBk
ZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gIiVzQnVpbHRpbnMuY3Bw
IiAlIEJ1aWx0aW5zR2VuZXJhdG9yLm1hbmdsZWROYW1lRm9yT2JqZWN0KHNlbGYub2JqZWN0KQor
CisgICAgZGVmIG1hY3JvX3ByZWZpeChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYubW9kZWwo
KS5mcmFtZXdvcmsuc2V0dGluZygnbWFjcm9fcHJlZml4JykKKworICAgIGRlZiBnZW5lcmF0ZV9v
dXRwdXQoc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbmFtZXNwYWNlJzog
c2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCduYW1lc3BhY2UnKSwKKyAgICAgICAgICAg
ICdtYWNyb1ByZWZpeCc6IHNlbGYubWFjcm9fcHJlZml4KCksCisgICAgICAgICAgICAnb2JqZWN0
TWFjcm8nOiBzZWxmLm9iamVjdC5vYmplY3RfbmFtZS51cHBlcigpLAorICAgICAgICAgICAgJ29i
amVjdE5hbWVMQyc6IFdLX2xjZmlyc3Qoc2VsZi5vYmplY3Qub2JqZWN0X25hbWUpLAorICAgICAg
ICB9CisKKyAgICAgICAgc2VjdGlvbnMgPSBbXQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2Vs
Zi5nZW5lcmF0ZV9saWNlbnNlKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShU
ZW1wbGF0ZXMuRG9Ob3RFZGl0V2FybmluZykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2Vj
dGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKCkpCisgICAgICAgIHNl
Y3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlVG9wKS5zdWJzdGl0dXRl
KGFyZ3MpKQorICAgICAgICBmb3IgZnVuY3Rpb24gaW4gc2VsZi5vYmplY3QuZnVuY3Rpb25zOgor
ICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfZW1iZWRkZWRfY29kZV9z
dHJpbmdfc2VjdGlvbl9mb3JfZnVuY3Rpb24oZnVuY3Rpb24pKQorICAgICAgICBpZiBzZWxmLm1v
ZGVsKCkuZnJhbWV3b3JrIGlzIEZyYW1ld29ya3MuSmF2YVNjcmlwdENvcmU6CisgICAgICAgICAg
ICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLlNlcGFyYXRlSlNDSW1wbGVtZW50
YXRpb25TdGF0aWNNYWNyb3MpLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIGVsaWYgc2VsZi5t
b2RlbCgpLmZyYW1ld29yayBpcyBGcmFtZXdvcmtzLldlYkNvcmU6CisgICAgICAgICAgICBzZWN0
aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLlNlcGFyYXRlV2ViQ29yZUltcGxlbWVudGF0
aW9uU3RhdGljTWFjcm9zKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBl
bmQoVGVtcGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZUJvdHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkK
KworICAgICAgICByZXR1cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMpCisKKyAgICBkZWYgZ2VuZXJh
dGVfaGVhZGVyX2luY2x1ZGVzKHNlbGYpOgorICAgICAgICBoZWFkZXJfaW5jbHVkZXMgPSBbCisg
ICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNj
cmlwdENvcmUiLCAiYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgiKSwKKyAgICAgICAgICAg
ICksCisgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZSIsICJXZWJDb3JlIl0sCisgICAgICAg
ICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL0V4ZWN1dGFibGUuaCIpLAorICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgIChbIkphdmFTY3JpcHRDb3JlIiwgIldlYkNvcmUiXSwK
KyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgInJ1bnRpbWUvSlNDZWxsSW5saW5l
cy5oIiksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAg
ICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgi
KSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAg
ICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgiKSwK
KyAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZSIsICJXZWJDb3Jl
Il0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL1ZNLmgiKSwK
KyAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAg
ICAgKCJXZWJDb3JlIiwgImJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaCIpLAorICAg
ICAgICAgICAgKSwKKyAgICAgICAgXQorCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4oc2VsZi5n
ZW5lcmF0ZV9pbmNsdWRlc19mcm9tX2VudHJpZXMoaGVhZGVyX2luY2x1ZGVzKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVy
YXRlX3NlcGFyYXRlX3dyYXBwZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9i
dWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFwcGVyLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRhYTg4Y2Y3NjIwY2RhMTM3MTg2Yjk5MTY0MzdiYzZkMGI0ODFkOWUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5l
cmF0ZV9zZXBhcmF0ZV93cmFwcGVyLnB5CkBAIC0wLDAgKzEsOTQgQEAKKyMhL3Vzci9iaW4vZW52
IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5n
dG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHJlCitpbXBvcnQgc3RyaW5nCitm
cm9tIHN0cmluZyBpbXBvcnQgVGVtcGxhdGUKKworZnJvbSBidWlsdGluc19nZW5lcmF0b3IgaW1w
b3J0IEJ1aWx0aW5zR2VuZXJhdG9yCitmcm9tIGJ1aWx0aW5zX3RlbXBsYXRlcyBpbXBvcnQgQnVp
bHRpbnNHZW5lcmF0b3JUZW1wbGF0ZXMgYXMgVGVtcGxhdGVzCisKK2xvZyA9IGxvZ2dpbmcuZ2V0
TG9nZ2VyKCdnbG9iYWwnKQorCisKK2NsYXNzIEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJh
dG9yKEJ1aWx0aW5zR2VuZXJhdG9yKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZWwsIG9i
amVjdCk6CisgICAgICAgIEJ1aWx0aW5zR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYsIG1vZGVsKQor
ICAgICAgICBzZWxmLm9iamVjdCA9IG9iamVjdAorCisgICAgZGVmIG91dHB1dF9maWxlbmFtZShz
ZWxmKToKKyAgICAgICAgcmV0dXJuICIlc0J1aWx0aW5zV3JhcHBlci5oIiAlIEJ1aWx0aW5zR2Vu
ZXJhdG9yLm1hbmdsZWROYW1lRm9yT2JqZWN0KHNlbGYub2JqZWN0KQorCisgICAgZGVmIG1hY3Jv
X3ByZWZpeChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0
dGluZygnbWFjcm9fcHJlZml4JykKKworICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6Cisg
ICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbmFtZXNwYWNlJzogc2VsZi5tb2RlbCgpLmZy
YW1ld29yay5zZXR0aW5nKCduYW1lc3BhY2UnKSwKKyAgICAgICAgICAgICdoZWFkZXJHdWFyZCc6
IHNlbGYub3V0cHV0X2ZpbGVuYW1lKCkucmVwbGFjZSgnLicsICdfJyksCisgICAgICAgICAgICAn
bWFjcm9QcmVmaXgnOiBzZWxmLm1hY3JvX3ByZWZpeCgpLAorICAgICAgICAgICAgJ29iamVjdE5h
bWUnOiBzZWxmLm9iamVjdC5vYmplY3RfbmFtZSwKKyAgICAgICAgICAgICdvYmplY3RNYWNybyc6
IHNlbGYub2JqZWN0Lm9iamVjdF9uYW1lLnVwcGVyKCksCisgICAgICAgIH0KKworICAgICAgICBz
ZWN0aW9ucyA9IFtdCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2xpY2Vu
c2UoKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5Eb05vdEVk
aXRXYXJuaW5nKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVt
cGxhdGUoVGVtcGxhdGVzLkhlYWRlckluY2x1ZGVHdWFyZFRvcCkuc3Vic3RpdHV0ZShhcmdzKSkK
KyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKCkp
CisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlVG9w
KS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVt
cGxhdGVzLlNlcGFyYXRlV3JhcHBlckhlYWRlckJvaWxlcnBsYXRlKS5zdWJzdGl0dXRlKGFyZ3Mp
KQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZUJv
dHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRl
KFRlbXBsYXRlcy5IZWFkZXJJbmNsdWRlR3VhcmRCb3R0b20pLnN1YnN0aXR1dGUoYXJncykpCisK
KyAgICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNlY3Rpb25zKQorCisgICAgZGVmIGdlbmVyYXRl
X2hlYWRlcl9pbmNsdWRlcyhzZWxmKToKKyAgICAgICAgaGVhZGVyX2luY2x1ZGVzID0gWworICAg
ICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiV2ViQ29yZSIsICIlc0J1
aWx0aW5zLmgiICUgc2VsZi5vYmplY3Qub2JqZWN0X25hbWUpLAorICAgICAgICAgICAgKSwKKwor
ICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENv
cmUiLCAiYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCIpLAorICAgICAgICAg
ICAgKSwKKworICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2
YVNjcmlwdENvcmUiLCAiYnVpbHRpbnMvQnVpbHRpblV0aWxzLmgiKSwKKyAgICAgICAgICAgICks
CisKKyAgICAgICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3Jp
cHRDb3JlIiwgInJ1bnRpbWUvSWRlbnRpZmllci5oIiksCisgICAgICAgICAgICApLAorCisgICAg
ICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIs
ICJydW50aW1lL0pTRnVuY3Rpb24uaCIpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgXQorCisg
ICAgICAgIHJldHVybiAnXG4nLmpvaW4oc2VsZi5nZW5lcmF0ZV9pbmNsdWRlc19mcm9tX2VudHJp
ZXMoaGVhZGVyX2luY2x1ZGVzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
ODQ4M2UwYzIyMzE1Zjc3ZGJhYTk3NmQ0YmFkY2Y3N2RlMmQzZjE5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJh
dG9yLnB5CkBAIC0wLDAgKzEsMTcxIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29w
eXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
Q29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
IyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9y
dCBsb2dnaW5nCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHJlCitmcm9tIHN0cmluZyBpbXBvcnQg
VGVtcGxhdGUKK2ltcG9ydCBqc29uCisKK2Zyb20gYnVpbHRpbnNfbW9kZWwgaW1wb3J0IEJ1aWx0
aW5GdW5jdGlvbiwgQnVpbHRpbk9iamVjdAorZnJvbSBidWlsdGluc190ZW1wbGF0ZXMgaW1wb3J0
IEJ1aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVzIGFzIFRlbXBsYXRlcworCitsb2cgPSBsb2dnaW5n
LmdldExvZ2dlcignZ2xvYmFsJykKKworIyBUaGVzZSBtYXRjaCBXS19sY2ZpcnN0IGFuZCBXS191
Y2ZpcnN0IGRlZmluZWQgaW4gQ29kZUdlbmVyYXRvci5wbS4KK2RlZiBXS19sY2ZpcnN0KHN0cik6
CisgICAgc3RyID0gc3RyWzoxXS5sb3dlcigpICsgc3RyWzE6XQorICAgIHN0ciA9IHN0ci5yZXBs
YWNlKCdoVE1MJywgJ2h0bWwnKQorICAgIHN0ciA9IHN0ci5yZXBsYWNlKCd1UkwnLCAndXJsJykK
KyAgICBzdHIgPSBzdHIucmVwbGFjZSgnalMnLCAnanMnKQorICAgIHN0ciA9IHN0ci5yZXBsYWNl
KCd4TUwnLCAneG1sJykKKyAgICBzdHIgPSBzdHIucmVwbGFjZSgneFNMVCcsICd4c2x0JykKKyAg
ICBzdHIgPSBzdHIucmVwbGFjZSgnY1NTJywgJ2NzcycpCisgICAgcmV0dXJuIHN0cgorCitkZWYg
V0tfdWNmaXJzdChzdHIpOgorICAgIHN0ciA9IHN0cls6MV0udXBwZXIoKSArIHN0clsxOl0KKyAg
ICBzdHIgPSBzdHIucmVwbGFjZSgnWG1sJywgJ1hNTCcpCisgICAgc3RyID0gc3RyLnJlcGxhY2Uo
J1N2ZycsICdTVkcnKQorICAgIHJldHVybiBzdHIKKworY2xhc3MgQnVpbHRpbnNHZW5lcmF0b3I6
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZGVsKToKKyAgICAgICAgc2VsZi5fbW9kZWwgPSBt
b2RlbAorCisgICAgZGVmIG1vZGVsKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbW9kZWwK
KworICAgICMgVGhlc2UgbWV0aG9kcyBhcmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzLgorCisg
ICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIG91
dHB1dF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgcGFzcworCisKKyAgICAjIFNoYXJlZCBjb2Rl
IGdlbmVyYXRpb24gbWV0aG9kcy4KKyAgICBkZWYgZ2VuZXJhdGVfbGljZW5zZShzZWxmKToKKyAg
ICAgICAgcmF3X2xpY2Vuc2UgPSBUZW1wbGF0ZShUZW1wbGF0ZXMuTGljZW5zZVRleHQpLnN1YnN0
aXR1dGUoTm9uZSkKKyAgICAgICAgY29weXJpZ2h0cyA9IHNlbGYuX21vZGVsLmNvcHlyaWdodHMo
KQorICAgICAgICBjb3B5cmlnaHRzLnNvcnQoKQorCisgICAgICAgIGxpY2Vuc2VfYmxvY2sgPSBb
XQorICAgICAgICBsaWNlbnNlX2Jsb2NrLmFwcGVuZCgiLyoiKQorICAgICAgICBmb3IgY29weXJp
Z2h0IGluIGNvcHlyaWdodHM6CisgICAgICAgICAgICBsaWNlbnNlX2Jsb2NrLmFwcGVuZCgiICog
Q29weXJpZ2h0IChjKSAlcyIgJSBjb3B5cmlnaHQpCisgICAgICAgIGlmIGxlbihjb3B5cmlnaHRz
KSA+IDA6CisgICAgICAgICAgICBsaWNlbnNlX2Jsb2NrLmFwcGVuZCgiICogIikKKworICAgICAg
ICBmb3IgbGluZSBpbiByYXdfbGljZW5zZS5zcGxpdCgnXG4nKToKKyAgICAgICAgICAgIGxpY2Vu
c2VfYmxvY2suYXBwZW5kKCIgKiAiICsgbGluZSkKKworICAgICAgICBsaWNlbnNlX2Jsb2NrLmFw
cGVuZCgiICovIikKKworICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpY2Vuc2VfYmxvY2spCisK
KyAgICBkZWYgZ2VuZXJhdGVfaW5jbHVkZXNfZnJvbV9lbnRyaWVzKHNlbGYsIGVudHJpZXMpOgor
ICAgICAgICBpbmNsdWRlcyA9IHNldCgpCisgICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgor
ICAgICAgICAgICAgKGFsbG93ZWRfZnJhbWV3b3JrX25hbWVzLCBkYXRhKSA9IGVudHJ5CisgICAg
ICAgICAgICAoZnJhbWV3b3JrX25hbWUsIGhlYWRlcl9wYXRoKSA9IGRhdGEKKworICAgICAgICAg
ICAgaWYgc2VsZi5tb2RlbCgpLmZyYW1ld29yay5uYW1lIG5vdCBpbiBhbGxvd2VkX2ZyYW1ld29y
a19uYW1lczoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgc2VsZi5t
b2RlbCgpLmZyYW1ld29yay5uYW1lICE9IGZyYW1ld29ya19uYW1lOgorICAgICAgICAgICAgICAg
IGluY2x1ZGVzLmFkZCgiI2luY2x1ZGUgPCVzPiIgJSBoZWFkZXJfcGF0aCkKKyAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgaW5jbHVkZXMuYWRkKCIjaW5jbHVkZSBcIiVzXCIiICUg
b3MucGF0aC5iYXNlbmFtZShoZWFkZXJfcGF0aCkpCisKKyAgICAgICAgc29ydGVkX2luY2x1ZGVz
ID0gc29ydGVkKGxpc3QoaW5jbHVkZXMpKQorICAgICAgICAjIEFsd2F5cyBpbmNsdWRlIGNvbmZp
Zy5oIGFuZCB0aGUgY291bnRlcnBhcnQgaGVhZGVyIGJlZm9yZSBvdGhlciBoZWFkZXJzLgorICAg
ICAgICBuYW1lLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KHNlbGYub3V0cHV0X2ZpbGVuYW1lKCkp
CisgICAgICAgIGlmIGV4dCAhPSAnLmgnOgorICAgICAgICAgICAgc29ydGVkX2luY2x1ZGVzWzow
XSA9IFsKKyAgICAgICAgICAgICAgICAiI2luY2x1ZGUgXCJjb25maWcuaFwiIiwKKyAgICAgICAg
ICAgICAgICAiI2luY2x1ZGUgXCIlcy5oXCIiICUgbmFtZSwKKyAgICAgICAgICAgICAgICAiIiwK
KyAgICAgICAgICAgIF0KKworICAgICAgICByZXR1cm4gc29ydGVkX2luY2x1ZGVzCisKKyAgICBk
ZWYgZ2VuZXJhdGVfZW1iZWRkZWRfY29kZV9zdHJpbmdfc2VjdGlvbl9mb3JfZnVuY3Rpb24oc2Vs
ZiwgZnVuY3Rpb24pOgorICAgICAgICB0ZXh0ID0gZnVuY3Rpb24uZnVuY3Rpb25fc291cmNlCisg
ICAgICAgICMgV3JhcCBpdCBpbiBwYXJlbnMgdG8gYXZvaWQgYWRkaW5nIHRvIGdsb2JhbCBzY29w
ZS4KKyAgICAgICAgdGV4dCA9ICIoZnVuY3Rpb24gIiArIHRleHRbdGV4dC5pbmRleCgiKCIpOl0g
KyAiKSIKKyAgICAgICAgZW1iZWRkZWRTb3VyY2VMZW5ndGggPSBsZW4odGV4dCkgKyAxICAjIEZv
ciBleHRyYSBcbi4KKyAgICAgICAgIyBMYXp5IHdheSB0byBlc2NhcGUgcXVvdGVzLCBJIHRoaW5r
PworICAgICAgICB0ZXh0TGluZXMgPSBqc29uLmR1bXBzKHRleHQpWzE6LTFdLnNwbGl0KCJcXG4i
KQorICAgICAgICAjIFRoaXMgbG9va3Mgc2NhcnkgYmVjYXVzZSB3ZSBuZWVkIHRoZSBKUyBzb3Vy
Y2UgaXRzZWxmIHRvIGhhdmUgbmV3bGluZXMuCisgICAgICAgIGVtYmVkZGVkU291cmNlID0gJ1xu
Jy5qb2luKFsnICAgICIlc1xcbiIgXFwnICUgbGluZSBmb3IgbGluZSBpbiB0ZXh0TGluZXNdKQor
CisgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSAiQ2Fubm90Q29uc3RydWN0IgorICAgICAgICBp
ZiBmdW5jdGlvbi5pc19jb25zdHJ1Y3RvcjoKKyAgICAgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkg
PSAiQ2FuQ29uc3RydWN0IgorCisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnY29kZU5h
bWUnOiBCdWlsdGluc0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvckZ1bmN0aW9uKGZ1bmN0aW9uKSAr
ICdDb2RlJywKKyAgICAgICAgICAgICdlbWJlZGRlZFNvdXJjZSc6IGVtYmVkZGVkU291cmNlLAor
ICAgICAgICAgICAgJ2VtYmVkZGVkU291cmNlTGVuZ3RoJzogZW1iZWRkZWRTb3VyY2VMZW5ndGgs
CisgICAgICAgICAgICAnY2FuQ29uc3RydWN0JzogY29uc3RydWN0QWJpbGl0eQorICAgICAgICB9
CisKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoImNvbnN0IEpTQzo6
Q29uc3RydWN0QWJpbGl0eSBzXyUoY29kZU5hbWUpc0NvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNv
bnN0cnVjdEFiaWxpdHk6OiUoY2FuQ29uc3RydWN0KXM7IiAlIGFyZ3MpOworICAgICAgICBsaW5l
cy5hcHBlbmQoImNvbnN0IGludCBzXyUoY29kZU5hbWUpc0xlbmd0aCA9ICUoZW1iZWRkZWRTb3Vy
Y2VMZW5ndGgpZDsiICUgYXJncyk7CisgICAgICAgIGxpbmVzLmFwcGVuZCgiY29uc3QgY2hhciog
c18lKGNvZGVOYW1lKXMgPVxuJShlbWJlZGRlZFNvdXJjZSlzXG47IiAlIGFyZ3MpOworICAgICAg
ICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQorCisgICAgIyBIZWxwZXIgbWV0aG9kcy4KKworICAg
IEBzdGF0aWNtZXRob2QKKyAgICBkZWYgbWFuZ2xlZE5hbWVGb3JPYmplY3Qob2JqZWN0KToKKyAg
ICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob2JqZWN0LCBCdWlsdGluT2JqZWN0KToKKyAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbigiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gbWFuZ2xlZE5h
bWVGb3JPYmplY3QoKSIpCisKKyAgICAgICAgZGVmIHRvQ2FtZWwobWF0Y2gpOgorICAgICAgICAg
ICAgc3RyID0gbWF0Y2guZ3JvdXAoMCkKKyAgICAgICAgICAgIHJldHVybiBzdHJbMV0udXBwZXIo
KQorICAgICAgICByZXR1cm4gcmUuc3ViKHInXC5bYS16XScsIHRvQ2FtZWwsIG9iamVjdC5vYmpl
Y3RfbmFtZSwgZmxhZ3M9cmUuSUdOT1JFQ0FTRSkKKworCisgICAgQHN0YXRpY21ldGhvZAorICAg
IGRlZiBtYW5nbGVkTmFtZUZvckZ1bmN0aW9uKGZ1bmN0aW9uKToKKyAgICAgICAgaWYgbm90IGlz
aW5zdGFuY2UoZnVuY3Rpb24sIEJ1aWx0aW5GdW5jdGlvbik6CisgICAgICAgICAgICByYWlzZSBF
eGNlcHRpb24oIkludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIG1hbmdsZWROYW1lRm9yRnVuY3Rp
b24oKSIpCisKKyAgICAgICAgZnVuY3Rpb25fbmFtZSA9IFdLX3VjZmlyc3QoZnVuY3Rpb24uZnVu
Y3Rpb25fbmFtZSkKKworICAgICAgICBkZWYgdG9DYW1lbChtYXRjaCk6CisgICAgICAgICAgICBz
dHIgPSBtYXRjaC5ncm91cCgwKQorICAgICAgICAgICAgcmV0dXJuIHN0clsxXS51cHBlcigpCisg
ICAgICAgIGZ1bmN0aW9uX25hbWUgPSByZS5zdWIocidcLlthLXpdJywgdG9DYW1lbCwgZnVuY3Rp
b25fbmFtZSwgZmxhZ3M9cmUuSUdOT1JFQ0FTRSkKKyAgICAgICAgaWYgZnVuY3Rpb24uaXNfY29u
c3RydWN0b3I6CisgICAgICAgICAgICBmdW5jdGlvbl9uYW1lID0gZnVuY3Rpb25fbmFtZSArICJD
b25zdHJ1Y3RvciIKKworICAgICAgICBvYmplY3RfbmFtZSA9IEJ1aWx0aW5zR2VuZXJhdG9yLm1h
bmdsZWROYW1lRm9yT2JqZWN0KGZ1bmN0aW9uLm9iamVjdCkKKyAgICAgICAgcmV0dXJuIFdLX2xj
Zmlyc3Qob2JqZWN0X25hbWUgKyBmdW5jdGlvbl9uYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19tb2RlbC5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iNWQ0YmRlNjRkNmJhNmNkMWQwNzM1M2Q0ZjJiZDVlYTE0NTBhYTNmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNf
bW9kZWwucHkKQEAgLTAsMCArMSwyMzMgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBD
b3B5cmlnaHQgKGMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9y
dCByZQoraW1wb3J0IG9zCisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwnKQorCitf
RlJBTUVXT1JLX0NPTkZJR19NQVAgPSB7CisgICAgIkphdmFTY3JpcHRDb3JlIjogeworICAgICAg
ICAibWFjcm9fcHJlZml4IjogIkpTQyIsCisgICAgICAgICJuYW1lc3BhY2UiOiAiSlNDIiwKKyAg
ICB9LAorICAgICJXZWJDb3JlIjogeworICAgICAgICAibWFjcm9fcHJlZml4IjogIldFQkNPUkUi
LAorICAgICAgICAibmFtZXNwYWNlIjogIldlYkNvcmUiLAorICAgIH0sCit9CisKK2Z1bmN0aW9u
SGVhZFJlZ0V4cCA9IHJlLmNvbXBpbGUociIoPzpmdW5jdGlvbnxjb25zdHJ1Y3Rvcilccytcdytc
cypcKC4qP1wpIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uTmFtZVJlZ0V4cCA9IHJl
LmNvbXBpbGUociIoPzpmdW5jdGlvbnxjb25zdHJ1Y3RvcilccysoXHcrKVxzKlwoIiwgcmUuTVVM
VElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uSXNDb25zdHJ1Y3RvclJlZ0V4cCA9IHJlLmNvbXBpbGUo
ciJeY29uc3RydWN0b3IiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25QYXJhbWV0ZXJG
aW5kZXIgPSByZS5jb21waWxlKHIiXig/OmZ1bmN0aW9ufGNvbnN0cnVjdG9yKVxzKyg/Olx3Kylc
cypcKCgoPzpccypcdyspP1xzKig/OlxzKixccypcdyspKik/XHMqXCkiLCByZS5NVUxUSUxJTkUg
fCByZS5TKQorCittdWx0aWxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXCouKj9c
KlwvIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK3NpbmdsZUxpbmVDb21tZW50UmVnRXhwID0gcmUu
Y29tcGlsZShyIlwvXC8uKj9cbiIsIHJlLk1VTFRJTElORSB8IHJlLlMpCisKKworY2xhc3MgUGFy
c2VFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICBwYXNzCisKKworY2xhc3MgRnJhbWV3b3JrOgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgc2VsZi5fc2V0dGluZ3MgPSBf
RlJBTUVXT1JLX0NPTkZJR19NQVBbbmFtZV0KKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisg
ICAgZGVmIHNldHRpbmcoc2VsZiwga2V5LCBkZWZhdWx0PScnKToKKyAgICAgICAgcmV0dXJuIHNl
bGYuX3NldHRpbmdzLmdldChrZXksIGRlZmF1bHQpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAg
ZGVmIGZyb21TdHJpbmcoZnJhbWV3b3JrU3RyaW5nKToKKyAgICAgICAgaWYgZnJhbWV3b3JrU3Ry
aW5nID09ICJKYXZhU2NyaXB0Q29yZSI6CisgICAgICAgICAgICByZXR1cm4gRnJhbWV3b3Jrcy5K
YXZhU2NyaXB0Q29yZQorCisgICAgICAgIGlmIGZyYW1ld29ya1N0cmluZyA9PSAiV2ViQ29yZSI6
CisgICAgICAgICAgICByZXR1cm4gRnJhbWV3b3Jrcy5XZWJDb3JlCisKKyAgICAgICAgcmFpc2Ug
UGFyc2VFeGNlcHRpb24oIlVua25vd24gZnJhbWV3b3JrOiAlcyIgJSBmcmFtZXdvcmtTdHJpbmcp
CisKKworY2xhc3MgRnJhbWV3b3JrczoKKyAgICBKYXZhU2NyaXB0Q29yZSA9IEZyYW1ld29yaygi
SmF2YVNjcmlwdENvcmUiKQorICAgIFdlYkNvcmUgPSBGcmFtZXdvcmsoIldlYkNvcmUiKQorCisK
K2NsYXNzIEJ1aWx0aW5PYmplY3Q6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9iamVjdF9uYW1l
LCBmdW5jdGlvbnMpOgorICAgICAgICBzZWxmLm9iamVjdF9uYW1lID0gb2JqZWN0X25hbWUKKyAg
ICAgICAgc2VsZi5mdW5jdGlvbnMgPSBmdW5jdGlvbnMKKyAgICAgICAgc2VsZi5jb2xsZWN0aW9u
ID0gTm9uZSAgIyBTZXQgYnkgdGhlIG93bmluZyBCdWlsdGluc0NvbGxlY3Rpb24KKworICAgICAg
ICBmb3IgZnVuY3Rpb24gaW4gc2VsZi5mdW5jdGlvbnM6CisgICAgICAgICAgICBmdW5jdGlvbi5v
YmplY3QgPSBzZWxmCisKKworY2xhc3MgQnVpbHRpbkZ1bmN0aW9uOgorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBmdW5jdGlvbl9uYW1lLCBmdW5jdGlvbl9zb3VyY2UsIGlzX2NvbnN0cnVjdG9yLCBw
YXJhbWV0ZXJzKToKKyAgICAgICAgc2VsZi5mdW5jdGlvbl9uYW1lID0gZnVuY3Rpb25fbmFtZQor
ICAgICAgICBzZWxmLmZ1bmN0aW9uX3NvdXJjZSA9IGZ1bmN0aW9uX3NvdXJjZQorICAgICAgICBz
ZWxmLmlzX2NvbnN0cnVjdG9yID0gaXNfY29uc3RydWN0b3IKKyAgICAgICAgc2VsZi5wYXJhbWV0
ZXJzID0gcGFyYW1ldGVycworICAgICAgICBzZWxmLm9iamVjdCA9IE5vbmUgICMgU2V0IGJ5IHRo
ZSBvd25pbmcgQnVpbHRpbk9iamVjdAorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBmcm9t
U3RyaW5nKGZ1bmN0aW9uX3N0cmluZyk6CisgICAgICAgIGZ1bmN0aW9uX3NvdXJjZSA9IG11bHRp
bGluZUNvbW1lbnRSZWdFeHAuc3ViKCIiLCBmdW5jdGlvbl9zdHJpbmcpCisgICAgICAgIGZ1bmN0
aW9uX25hbWUgPSBmdW5jdGlvbk5hbWVSZWdFeHAuZmluZGFsbChmdW5jdGlvbl9zb3VyY2UpWzBd
CisgICAgICAgIGlzX2NvbnN0cnVjdG9yID0gZnVuY3Rpb25Jc0NvbnN0cnVjdG9yUmVnRXhwLm1h
dGNoKGZ1bmN0aW9uX3NvdXJjZSkgIT0gTm9uZQorICAgICAgICBwYXJhbWV0ZXJzID0gW3Muc3Ry
aXAoKSBmb3IgcyBpbiBmdW5jdGlvblBhcmFtZXRlckZpbmRlci5maW5kYWxsKGZ1bmN0aW9uX3Nv
dXJjZSlbMF0uc3BsaXQoJywnKV0KKyAgICAgICAgaWYgbGVuKHBhcmFtZXRlcnNbMF0pID09IDA6
CisgICAgICAgICAgICBwYXJhbWV0ZXJzID0gW10KKworICAgICAgICByZXR1cm4gQnVpbHRpbkZ1
bmN0aW9uKGZ1bmN0aW9uX25hbWUsIGZ1bmN0aW9uX3NvdXJjZSwgaXNfY29uc3RydWN0b3IsIHBh
cmFtZXRlcnMpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgaW50ZXJmYWNlID0g
IiVzKCVzKSIgJSAoc2VsZi5mdW5jdGlvbl9uYW1lLCAnLCAnLmpvaW4oc2VsZi5wYXJhbWV0ZXJz
KSkKKyAgICAgICAgaWYgc2VsZi5pc19jb25zdHJ1Y3RvcjoKKyAgICAgICAgICAgIGludGVyZmFj
ZSA9IGludGVyZmFjZSArICIgW0NvbnN0cnVjdG9yXSIKKworICAgICAgICByZXR1cm4gaW50ZXJm
YWNlCisKKworY2xhc3MgQnVpbHRpbnNDb2xsZWN0aW9uOgorICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBmcmFtZXdvcmtfbmFtZSk6CisgICAgICAgIHNlbGYuX2NvcHlyaWdodF9saW5lcyA9IHNldCgp
CisgICAgICAgIHNlbGYub2JqZWN0cyA9IFtdCisgICAgICAgIHNlbGYuZnJhbWV3b3JrID0gRnJh
bWV3b3JrLmZyb21TdHJpbmcoZnJhbWV3b3JrX25hbWUpCisgICAgICAgIGxvZy5kZWJ1ZygiQ3Jl
YXRlZCBuZXcgQnVpbHRpbnMgY29sbGVjdGlvbi4iKQorCisgICAgZGVmIHBhcnNlX2J1aWx0aW5z
X2ZpbGUoc2VsZiwgZmlsZW5hbWUsIHRleHQpOgorICAgICAgICBsb2cuZGVidWcoIlBhcnNpbmcg
YnVpbHRpbnMgZmlsZTogJXMiICUgZmlsZW5hbWUpCisKKyAgICAgICAgcGFyc2VkX2NvcHlyaWdo
dHMgPSBzZXQoc2VsZi5fcGFyc2VfY29weXJpZ2h0X2xpbmVzKHRleHQpKQorICAgICAgICBzZWxm
Ll9jb3B5cmlnaHRfbGluZXMgPSBzZWxmLl9jb3B5cmlnaHRfbGluZXMudW5pb24ocGFyc2VkX2Nv
cHlyaWdodHMpCisKKyAgICAgICAgbG9nLmRlYnVnKCJGb3VuZCBjb3B5cmlnaHQgbGluZXM6IikK
KyAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5fY29weXJpZ2h0X2xpbmVzOgorICAgICAgICAgICAg
bG9nLmRlYnVnKGxpbmUpCisgICAgICAgIGxvZy5kZWJ1ZygiIikKKworICAgICAgICBvYmplY3Rf
bmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKSkK
KyAgICAgICAgbG9nLmRlYnVnKCJQYXJzaW5nIG9iamVjdDogJXMiICUgb2JqZWN0X25hbWUpCisK
KyAgICAgICAgcGFyc2VkX2Z1bmN0aW9ucyA9IHNlbGYuX3BhcnNlX2Z1bmN0aW9ucyh0ZXh0KQor
ICAgICAgICBmb3IgZnVuY3Rpb24gaW4gcGFyc2VkX2Z1bmN0aW9uczoKKyAgICAgICAgICAgIGZ1
bmN0aW9uLm9iamVjdCA9IG9iamVjdF9uYW1lCisKKyAgICAgICAgbG9nLmRlYnVnKCJQYXJzZWQg
ZnVuY3Rpb25zOiIpCisgICAgICAgIGZvciBmdW5jIGluIHBhcnNlZF9mdW5jdGlvbnM6CisgICAg
ICAgICAgICBsb2cuZGVidWcoZnVuYykKKyAgICAgICAgbG9nLmRlYnVnKCIiKQorCisgICAgICAg
IG5ld19vYmplY3QgPSBCdWlsdGluT2JqZWN0KG9iamVjdF9uYW1lLCBwYXJzZWRfZnVuY3Rpb25z
KQorICAgICAgICBuZXdfb2JqZWN0LmNvbGxlY3Rpb24gPSBzZWxmCisgICAgICAgIHNlbGYub2Jq
ZWN0cy5hcHBlbmQobmV3X29iamVjdCkKKworICAgIGRlZiBjb3B5cmlnaHRzKHNlbGYpOgorICAg
ICAgICBvd25lcl90b195ZWFycyA9IGRpY3QoKQorICAgICAgICBjb3B5cmlnaHRZZWFyUmVnRXhw
ID0gcmUuY29tcGlsZShyIihcZHs0fSlbLCBdezAsMn0iKQorICAgICAgICBvd25lclN0YXJ0UmVn
RXhwID0gcmUuY29tcGlsZShyIlteXGQsIF0iKQorCisgICAgICAgICMgUmV0dXJucyBkZWR1cGxp
Y2F0ZWQgY29weXJpZ2h0cyBrZXllZCBvbiB0aGUgb3duZXIuCisgICAgICAgIGZvciBsaW5lIGlu
IHNlbGYuX2NvcHlyaWdodF9saW5lczoKKyAgICAgICAgICAgIHllYXJzID0gc2V0KGNvcHlyaWdo
dFllYXJSZWdFeHAuZmluZGFsbChsaW5lKSkKKyAgICAgICAgICAgIG93bmVySW5kZXggPSBvd25l
clN0YXJ0UmVnRXhwLnNlYXJjaChsaW5lKS5zdGFydCgpCisgICAgICAgICAgICBvd25lciA9IGxp
bmVbb3duZXJJbmRleDpdCisgICAgICAgICAgICBsb2cuZGVidWcoIkZvdW5kIHllYXJzOiAlcyBh
bmQgb3duZXI6ICVzIiAlICh5ZWFycywgb3duZXIpKQorICAgICAgICAgICAgaWYgb3duZXIgbm90
IGluIG93bmVyX3RvX3llYXJzOgorICAgICAgICAgICAgICAgIG93bmVyX3RvX3llYXJzW293bmVy
XSA9IHNldCgpCisKKyAgICAgICAgICAgIG93bmVyX3RvX3llYXJzW293bmVyXSA9IG93bmVyX3Rv
X3llYXJzW293bmVyXS51bmlvbih5ZWFycykKKworICAgICAgICByZXN1bHQgPSBbXQorCisgICAg
ICAgIGZvciBvd25lciwgeWVhcnMgaW4gb3duZXJfdG9feWVhcnMuaXRlbXMoKToKKyAgICAgICAg
ICAgIHNvcnRlZF95ZWFycyA9IGxpc3QoeWVhcnMpCisgICAgICAgICAgICBzb3J0ZWRfeWVhcnMu
c29ydCgpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIlcyAlcyIgJSAoJywgJy5qb2luKHNv
cnRlZF95ZWFycyksIG93bmVyKSkKKworICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYg
YWxsX2Z1bmN0aW9ucyhzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gW10KKyAgICAgICAgZm9yIG9i
amVjdCBpbiBzZWxmLm9iamVjdHM6CisgICAgICAgICAgICByZXN1bHQuZXh0ZW5kKG9iamVjdC5m
dW5jdGlvbnMpCisKKyAgICAgICAgcmVzdWx0LnNvcnQoKQorICAgICAgICByZXR1cm4gcmVzdWx0
CisKKyAgICAjIFByaXZhdGUgbWV0aG9kcy4KKworICAgIGRlZiBfcGFyc2VfY29weXJpZ2h0X2xp
bmVzKHNlbGYsIHRleHQpOgorICAgICAgICBsaWNlbnNlQmxvY2sgPSBtdWx0aWxpbmVDb21tZW50
UmVnRXhwLmZpbmRhbGwodGV4dClbMF0KKyAgICAgICAgbGljZW5zZUJsb2NrID0gbGljZW5zZUJs
b2NrWzpsaWNlbnNlQmxvY2suaW5kZXgoIlJlZGlzdHJpYnV0aW9uIildCisKKyAgICAgICAgY29w
eXJpZ2h0TGluZXMgPSBbXQorICAgICAgICBmb3IgbGluZSBpbiBsaWNlbnNlQmxvY2suc3BsaXQo
IlxuIik6CisgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIvKiIsICIiKQorICAgICAg
ICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKi8iLCAiIikKKyAgICAgICAgICAgIGxpbmUgPSBs
aW5lLnJlcGxhY2UoIioiLCAiIikKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIkNv
cHlyaWdodCIsICIiKQorICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiY29weXJpZ2h0
IiwgIiIpCisgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIoQykiLCAiIikKKyAgICAg
ICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIihjKSIsICIiKQorICAgICAgICAgICAgbGluZSA9
IGxpbmUuc3RyaXAoKQorCisgICAgICAgICAgICBpZiBsZW4obGluZSkgPT0gMDoKKyAgICAgICAg
ICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBjb3B5cmlnaHRMaW5lcy5hcHBlbmQobGlu
ZSkKKworICAgICAgICByZXR1cm4gY29weXJpZ2h0TGluZXMKKworICAgIGRlZiBfcGFyc2VfZnVu
Y3Rpb25zKHNlbGYsIHRleHQpOgorICAgICAgICB0ZXh0ID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4
cC5zdWIoIi8qKi8iLCBzaW5nbGVMaW5lQ29tbWVudFJlZ0V4cC5zdWIoIi8vXG4iLCB0ZXh0KSkK
KworICAgICAgICBtYXRjaGVzID0gW2Z1bmMgZm9yIGZ1bmMgaW4gZnVuY3Rpb25IZWFkUmVnRXhw
LmZpbmRpdGVyKHRleHQpXQorICAgICAgICBmdW5jdGlvbkJvdW5kcyA9IFtdCisgICAgICAgIHN0
YXJ0ID0gMAorICAgICAgICBlbmQgPSAwCisgICAgICAgIGZvciBtYXRjaCBpbiBtYXRjaGVzOgor
ICAgICAgICAgICAgc3RhcnQgPSBtYXRjaC5zdGFydCgpCisgICAgICAgICAgICBpZiBzdGFydCA8
IGVuZDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZW5kID0gbWF0Y2gu
ZW5kKCkKKyAgICAgICAgICAgIHdoaWxlIHRleHRbZW5kXSAhPSAneyc6CisgICAgICAgICAgICAg
ICAgZW5kID0gZW5kICsgMQorICAgICAgICAgICAgZGVwdGggPSAxCisgICAgICAgICAgICBlbmQg
PSBlbmQgKyAxCisgICAgICAgICAgICB3aGlsZSBkZXB0aCA+IDA6CisgICAgICAgICAgICAgICAg
aWYgdGV4dFtlbmRdID09ICd7JzoKKyAgICAgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCAr
IDEKKyAgICAgICAgICAgICAgICBlbGlmIHRleHRbZW5kXSA9PSAnfSc6CisgICAgICAgICAgICAg
ICAgICAgIGRlcHRoID0gZGVwdGggLSAxCisgICAgICAgICAgICAgICAgZW5kID0gZW5kICsgMQor
ICAgICAgICAgICAgZnVuY3Rpb25Cb3VuZHMuYXBwZW5kKChzdGFydCwgZW5kKSkKKworICAgICAg
ICBmdW5jdGlvblN0cmluZ3MgPSBbdGV4dFtzdGFydDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwg
ZW5kKSBpbiBmdW5jdGlvbkJvdW5kc10KKyAgICAgICAgcmV0dXJuIG1hcChCdWlsdGluRnVuY3Rp
b24uZnJvbVN0cmluZywgZnVuY3Rpb25TdHJpbmdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI1ZWRmNjU2ZWEyY2VhNGQwZDRmMWY2OTI1ZDM0YThlMTBhZjNkODMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWls
dGluc190ZW1wbGF0ZXMucHkKQEAgLTAsMCArMSwyMTkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBCdWlsdGlu
cyBnZW5lcmF0b3IgdGVtcGxhdGVzLCB3aGljaCBjYW4gYmUgZmlsbGVkIHdpdGggc3RyaW5nLlRl
bXBsYXRlLgorCisKK2NsYXNzIEJ1aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVzOgorCisgICAgTGlj
ZW5zZVRleHQgPSAoCisgICAgIiIiUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKK2FyZSBtZXQ6CisxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKK0FORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCitCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCitDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCitJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKK0FSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKK1RIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyIiIikKKworICAgIERvTm90RWRpdFdhcm5pbmcgPSAoCisgICAg
IiIiLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRl
ZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weSIiIikK
KworICAgIEhlYWRlckluY2x1ZGVHdWFyZFRvcCA9ICgKKyAgICAiIiIjaWZuZGVmICR7aGVhZGVy
R3VhcmR9CisjZGVmaW5lICR7aGVhZGVyR3VhcmR9IiIiKQorCisgICAgSGVhZGVySW5jbHVkZUd1
YXJkQm90dG9tID0gKAorICAgICIiIiNlbmRpZiAvLyAke2hlYWRlckd1YXJkfQorIiIiKQorCisg
ICAgTmFtZXNwYWNlVG9wID0gKAorICAgICIiIm5hbWVzcGFjZSAke25hbWVzcGFjZX0geyIiIikK
KworICAgIE5hbWVzcGFjZUJvdHRvbSA9ICgKKyAgICAiIiJ9IC8vIG5hbWVzcGFjZSAke25hbWVz
cGFjZX0iIiIpCisKKyAgICBDb21iaW5lZEhlYWRlclN0YXRpY01hY3JvcyA9ICgKKyAgICAiIiIj
ZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwg
YXJndW1lbnRDb3VudCkgXFwKKyAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUj
I0dlbmVyYXRvcihKU0M6OlZNJik7CisKKyR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9D
T0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dF
TkVSQVRPUgorCisjZGVmaW5lICR7bWFjcm9QcmVmaXh9X0JVSUxUSU5fRVhJU1RTKG9iamVjdCwg
ZnVuYykgZGVmaW5lZCAke21hY3JvUHJlZml4fV9CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBm
dW5jIiIiKQorCisgICAgU2VwYXJhdGVIZWFkZXJTdGF0aWNNYWNyb3MgPSAoCisgICAgIiIiI2Rl
ZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFy
Z3VtZW50Q291bnQpIFxcCisgICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNH
ZW5lcmF0b3IoSlNDOjpWTSYpOworCiske21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TmFt
ZX1fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVDTEFS
RV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lICR7bWFjcm9QcmVmaXh9X0JVSUxUSU5fJHtv
YmplY3ROYW1lfV9FWElTVFMob2JqZWN0LCBmdW5jKSBkZWZpbmVkICR7bWFjcm9QcmVmaXh9X0JV
SUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMiIiIpCisKKyAgICBDb21iaW5lZEpTQ0ltcGxl
bWVudGF0aW9uU3RhdGljTWFjcm9zID0gKAorICAgICIiIgorI2RlZmluZSBERUZJTkVfQlVJTFRJ
Tl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKK0pT
Qzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBc
XAore1xcCisgICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhl
Y3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1Nv
dXJjZSgpKTsgXAorfQorJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5F
X0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgorIiIi
KQorCisgICAgU2VwYXJhdGVKU0NJbXBsZW1lbnRhdGlvblN0YXRpY01hY3JvcyA9ICgKKyAgICAi
IiIKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5h
bWUsIGFyZ3VtZW50Q291bnQpIFxcCitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUj
I0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKK3tcXAorICAgIHJldHVybiB2bS5idWlsdGluRXhl
Y3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4
ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IFwKK30KKyR7bWFjcm9QcmVmaXh9X0ZP
UkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRP
UikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKyIiIikKKworICAgIENvbWJpbmVk
V2ViQ29yZUltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9zID0gKAorICAgICAgICAiIiIKKyNkZWZp
bmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3Vt
ZW50Q291bnQpIFxcCitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRv
cihKU0M6OlZNJiB2bSkgXFwKK3tcXAorICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0g
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXFwKKyAgICByZXR1
cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5z
KCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1
bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpKTsg
XFwKK30KKyR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElO
X0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKyIiIikKKworICAg
IFNlcGFyYXRlV2ViQ29yZUltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9zID0gKAorICAgICAgICAi
IiIKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5h
bWUsIGFyZ3VtZW50Q291bnQpIFxcCitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUj
I0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKK3tcXAorICAgIEpTVk1DbGllbnREYXRhKiBjbGll
bnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXFwK
KyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxD
fUJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+
YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI1Nv
dXJjZSgpKTsgXFwKK30KKyR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJ
TFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJ
Tl9HRU5FUkFUT1IKKyIiIikKKworICAgIFNlcGFyYXRlV3JhcHBlckhlYWRlckJvaWxlcnBsYXRl
ID0gKAorICAgICIiImNsYXNzICR7b2JqZWN0TmFtZX1CdWlsdGluc1dyYXBwZXIgOiBwcml2YXRl
IEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCAke29iamVjdE5h
bWV9QnVpbHRpbnNXcmFwcGVyKEpTQzo6Vk0qIHZtKQorICAgICAgICA6IG1fdm0oKnZtKQorICAg
ICAgICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fRlVOQ1RJ
T05fTkFNRShJTklUSUFMSVpFX0JVSUxUSU5fTkFNRVMpCisjZGVmaW5lIElOSVRJQUxJWkVfQlVJ
TFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgLCBtXyMjbmFt
ZSMjU291cmNlKEpTQzo6bWFrZVNvdXJjZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChz
XyMjbmFtZSwgbGVuZ3RoKSkpCisgICAgICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmpl
Y3RNYWNyb31fQlVJTFRJTl9DT0RFKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykK
KyN1bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKKyAgICB7CisgICAgfQor
CisjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwg
bGVuZ3RoKSBcXAorICAgIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4
ZWN1dGFibGUoKTsgXFwKKyAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KKyAgICAke21hY3JvUHJlZml4fV9G
T1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShFWFBPU0VfQlVJTFRJTl9FWEVDVVRB
QkxFUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUworCisgICAgJHttYWNyb1By
ZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFS
RV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCisKKyAgICB2b2lkIGV4cG9ydE5hbWVzKCk7
CisKK3ByaXZhdGU6CisgICAgSlNDOjpWTSYgbV92bTsKKworICAgICR7bWFjcm9QcmVmaXh9X0ZP
UkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJ
Tl9OQU1FUykKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwg
ZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFxcCisgICAgSlNDOjpTb3VyY2VDb2RlIG1fIyNuYW1lIyNT
b3VyY2U7XFwKKyAgICBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4g
bV8jI25hbWUjI0V4ZWN1dGFibGU7CisgICAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVj
dE1hY3JvfV9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3Vu
ZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworCit9OworCisjZGVmaW5lIERFRklO
RV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcXAoraW5s
aW5lIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqICR7b2JqZWN0TmFtZX1CdWlsdGlu
c1dyYXBwZXI6Om5hbWUjI0V4ZWN1dGFibGUoKSBcXAore1xcCisgICAgaWYgKCFtXyMjbmFtZSMj
RXhlY3V0YWJsZSlcXAorICAgICAgICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9IEpTQzo6V2VhazxK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPihKU0M6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRh
YmxlKG1fdm0sIG1fIyNuYW1lIyNTb3VyY2UsIGZ1bmN0aW9uTmFtZSMjUHVibGljTmFtZSgpLCBz
XyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0eSksIHRoaXMsICZtXyMjbmFtZSMjRXhlY3V0YWJsZSk7
XFwKKyAgICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7XFwKK30KKyR7bWFjcm9Q
cmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElO
X0VYRUNVVEFCTEVTKQorI3VuZGVmIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTCisKK2lubGlu
ZSB2b2lkICR7b2JqZWN0TmFtZX1CdWlsdGluc1dyYXBwZXI6OmV4cG9ydE5hbWVzKCkKK3sKKyNk
ZWZpbmUgRVhQT1JUX0ZVTkNUSU9OX05BTUUobmFtZSkgbV92bS5wcm9wZXJ0eU5hbWVzLT5hcHBl
bmRFeHRlcm5hbE5hbWUobmFtZSMjUHVibGljTmFtZSgpLCBuYW1lIyNQcml2YXRlTmFtZSgpKTsK
KyAgICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fRlVOQ1RJ
T05fTkFNRShFWFBPUlRfRlVOQ1RJT05fTkFNRSkKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT05fTkFN
RQorfQorCitjbGFzcyAke29iamVjdE5hbWV9QnVpbHRpbkZ1bmN0aW9ucyB7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgJHtvYmplY3ROYW1lfUJ1aWx0aW5GdW5jdGlvbnMoSlNDOjpWTSYgdm0pIDog
bV92bSh2bSkgeyB9CisKKyAgICB2b2lkIGluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYpOworICAg
IHZvaWQgdmlzaXQoSlNDOjpTbG90VmlzaXRvciYpOworCitwdWJsaWM6CisgICAgSlNDOjpWTSYg
bV92bTsKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMoZnVuY3Rpb25O
YW1lKSBcXAorICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNGdW5jdGlvbj4gbV8jI2Z1bmN0
aW9uTmFtZSMjRnVuY3Rpb247CisgICAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1h
Y3JvfV9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJT
KQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworfTsKKworaW5saW5lIHZv
aWQgJHtvYmplY3ROYW1lfUJ1aWx0aW5GdW5jdGlvbnM6OmluaXQoSlNDOjpKU0dsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQoreworI2RlZmluZSBFWFBPUlRfRlVOQ1RJT04oY29kZU5hbWUsIGZ1
bmN0aW9uTmFtZSwgbGVuZ3RoKVxcCisgICAgbV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb24uc2V0
KG1fdm0sICZnbG9iYWxPYmplY3QsIEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0
aW9uKG1fdm0sIGNvZGVOYW1lIyNHZW5lcmF0b3IobV92bSksICZnbG9iYWxPYmplY3QpKTsKKyAg
ICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShFWFBP
UlRfRlVOQ1RJT04pCisjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OCit9CisKK2lubGluZSB2b2lkICR7
b2JqZWN0TmFtZX1CdWlsdGluRnVuY3Rpb25zOjp2aXNpdChKU0M6OlNsb3RWaXNpdG9yJiB2aXNp
dG9yKQoreworI2RlZmluZSBWSVNJVF9GVU5DVElPTihuYW1lKSB2aXNpdG9yLmFwcGVuZCgmbV8j
I25hbWUjI0Z1bmN0aW9uKTsKKyAgICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFj
cm99X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShWSVNJVF9GVU5DVElPTikKKyN1bmRlZiBWSVNJVF9G
VU5DVElPTgorfQorIiIiKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9n
ZW5lcmF0ZS1qcy1idWlsdGlucwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGZmNDE4
NzNkYTJiNjVhNzcxMTRjZjVkNDFlODdhNGMwZDMwNjM3Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9n
ZW5lcmF0ZS1qcy1idWlsdGlucworKysgL2Rldi9udWxsCkBAIC0xLDM0MyArMCwwIEBACi0jIS91
c3IvYmluL3B5dGhvbgotIyBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0jIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0jIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotIyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0jIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0jIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGFyZ3BhcnNlCi1pbXBvcnQgZmls
ZWNtcAotaW1wb3J0IGZubWF0Y2gKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc2h1dGls
Ci1pbXBvcnQgc3lzCi1pbXBvcnQgZGF0ZXRpbWUKLWltcG9ydCBqc29uCi0KLXBhcnNlciA9IGFy
Z3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKLXBhcnNlci5hZGRfYXJndW1lbnQoJ2lucHV0X2ZpbGUn
LCBuYXJncz0nKicsIGhlbHA9J0lucHV0IEpTIGZpbGVzIHdoaWNoIGJ1aWx0aW5zIGdlbmVyYXRl
ZCBmcm9tJykKLXBhcnNlci5hZGRfYXJndW1lbnQoJy0taW5wdXQtZGlyZWN0b3J5JywgaGVscD0n
QWxsIEpTIGZpbGVzIHdpbGwgYmUgdXNlZCBhcyBpbnB1dCBmcm9tIHRoaXMgZGlyZWN0b3J5Licp
Ci1wYXJzZXIuYWRkX2FyZ3VtZW50KCctLW91dHB1dCcsIGhlbHA9J3BhdGggdG8gb3V0cHV0IGNw
cCBvciBoIGZpbGUnKQotcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1wcmVmaXgnLCBkZWZhdWx0PSdK
U0MnLCBoZWxwPSdwcmVmaXggdXNlZCBmb3IgcHVibGljIG1hY3JvcycpCi1wYXJzZXIuYWRkX2Fy
Z3VtZW50KCctLW5hbWVzcGFjZScsIGRlZmF1bHQ9J0pTQycsIGhlbHA9J0MrKyBuYW1lc3BhY2Un
KQotYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKLQotY29weXJpZ2h0VGV4dCA9ICIiIiAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovXG4KLSIiIgotCi1nZW5lcmF0b3JT
dHJpbmcgPSAiLyogR2VuZXJhdGVkIGJ5ICVzIGRvIG5vdCBoYW5kIGVkaXQuICovXG4iICUgb3Mu
cGF0aC5iYXNlbmFtZShfX2ZpbGVfXykKLQotZnVuY3Rpb25IZWFkUmVnRXhwID0gcmUuY29tcGls
ZShyIig/OmZ1bmN0aW9ufGNvbnN0cnVjdG9yKVxzK1x3K1xzKlwoLio/XCkiLCByZS5NVUxUSUxJ
TkUgfCByZS5TKQotZnVuY3Rpb25OYW1lUmVnRXhwID0gcmUuY29tcGlsZShyIig/OmZ1bmN0aW9u
fGNvbnN0cnVjdG9yKVxzKyhcdyspXHMqXCgiLCByZS5NVUxUSUxJTkUgfCByZS5TKQotZnVuY3Rp
b25Jc0NvbnN0cnVjdG9yUmVnRXhwID0gcmUuY29tcGlsZShyIl5jb25zdHJ1Y3RvciIsIHJlLk1V
TFRJTElORSB8IHJlLlMpCi1mdW5jdGlvblBhcmFtZXRlckZpbmRlciA9IHJlLmNvbXBpbGUociJe
KD86ZnVuY3Rpb258Y29uc3RydWN0b3IpXHMrKD86XHcrKVxzKlwoKCg/OlxzKlx3Kyk/XHMqKD86
XHMqLFxzKlx3KykqKT9ccypcKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCi0KLW11bHRpbGluZUNv
bW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cKi4qP1wqXC8iLCByZS5NVUxUSUxJTkUgfCBy
ZS5TKQotc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cLy4qP1xuIiwg
cmUuTVVMVElMSU5FIHwgcmUuUykKLQotZGVmIGdldENvcHlyaWdodChzb3VyY2UpOgotICAgIGNv
cHlyaWdodEJsb2NrID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5maW5kYWxsKHNvdXJjZSlbMF0K
LSAgICBjb3B5cmlnaHRCbG9jayA9IGNvcHlyaWdodEJsb2NrWzpjb3B5cmlnaHRCbG9jay5pbmRl
eCgiUmVkaXN0cmlidXRpb24iKV0KLSAgICBjb3B5UmlnaHRMaW5lcyA9IFtdCi0KLSAgICBmb3Ig
bGluZSBpbiBjb3B5cmlnaHRCbG9jay5zcGxpdCgiXG4iKToKLSAgICAgICAgbGluZSA9IGxpbmUu
cmVwbGFjZSgiLyoiLCAiIikKLSAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKi8iLCAiIikK
LSAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKiIsICIiKQotICAgICAgICBsaW5lID0gbGlu
ZS5yZXBsYWNlKCJDb3B5cmlnaHQiLCAiIikKLSAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgi
Y29weXJpZ2h0IiwgIiIpCi0gICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIihDKSIsICIiKQot
ICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIoYykiLCAiIikKLSAgICAgICAgbGluZSA9IGxp
bmUuc3RyaXAoKQotICAgICAgICBpZiBsZW4obGluZSkgPT0gMDoKLSAgICAgICAgICAgIGNvbnRp
bnVlCi0KLSAgICAgICAgY29weVJpZ2h0TGluZXMuYXBwZW5kKGxpbmUpCi0gICAgCi0gICAgcmV0
dXJuIGxpc3Qoc2V0KGNvcHlSaWdodExpbmVzKSkKLQotY2xhc3MgRnVuY3Rpb24ob2JqZWN0KToK
LSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgc291cmNlLCBpc0NvbnN0cnVjdG9yLCBwYXJh
bWV0ZXJzKToKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotICAgICAgICBzZWxmLnNvdXJjZSA9
IHNvdXJjZQotICAgICAgICBzZWxmLmlzQ29uc3RydWN0b3IgPSBpc0NvbnN0cnVjdG9yCi0gICAg
ICAgIHNlbGYucGFyYW1ldGVycyA9IHBhcmFtZXRlcnMKLQotICAgIGRlZiBtYW5nbGVOYW1lKHNl
bGYsIG9iamVjdCk6Ci0gICAgICAgIHFOYW1lID0gb2JqZWN0ICsgIi4iICsgc2VsZi5uYW1lCi0g
ICAgICAgIG1hbmdsZWROYW1lID0gIiIKLSAgICAgICAgaSA9IDAKLSAgICAgICAgd2hpbGUgaSA8
IGxlbihxTmFtZSk6Ci0gICAgICAgICAgICBpZiBxTmFtZVtpXSA9PSAnLic6Ci0gICAgICAgICAg
ICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZSArIHFOYW1lW2kgKyAxXS51cHBlcigpCi0g
ICAgICAgICAgICAgICAgaSA9IGkgKyAxCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtpXQotICAgICAgICAgICAgaSA9
IGkgKyAxCi0gICAgICAgIGlmIHNlbGYuaXNDb25zdHJ1Y3RvcjoKLSAgICAgICAgICAgIG1hbmds
ZWROYW1lID0gbWFuZ2xlZE5hbWUgKyAiQ29uc3RydWN0b3IiCi0gICAgICAgIHJldHVybiBtYW5n
bGVkTmFtZQotCi1kZWYgZ2V0RnVuY3Rpb25zKHNvdXJjZSk6Ci0KLSAgICBzb3VyY2UgPSBtdWx0
aWxpbmVDb21tZW50UmVnRXhwLnN1YigiLyoqLyIsIHNpbmdsZUxpbmVDb21tZW50UmVnRXhwLnN1
YigiLy9cbiIsIHNvdXJjZSkpCi0KLSAgICBtYXRjaGVzID0gWyBmIGZvciBmIGluIGZ1bmN0aW9u
SGVhZFJlZ0V4cC5maW5kaXRlcihzb3VyY2UpXQotICAgIGZ1bmN0aW9uQm91bmRzID0gW10KLSAg
ICBzdGFydCA9IDAKLSAgICBlbmQgPSAwCi0gICAgZm9yIG1hdGNoIGluIG1hdGNoZXM6Ci0gICAg
ICAgIHN0YXJ0ID0gbWF0Y2guc3RhcnQoKQotICAgICAgICBpZiBzdGFydCA8IGVuZDoKLSAgICAg
ICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGVuZCA9IG1hdGNoLmVuZCgpCi0gICAgICAgIHdoaWxl
IHNvdXJjZVtlbmRdICE9ICd7JzoKLSAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKLSAgICAgICAg
ZGVwdGggPSAxCi0gICAgICAgIGVuZCA9IGVuZCArIDEKLSAgICAgICAgd2hpbGUgZGVwdGggPiAw
OgotICAgICAgICAgICAgaWYgc291cmNlW2VuZF0gPT0gJ3snOgotICAgICAgICAgICAgICAgIGRl
cHRoID0gZGVwdGggKyAxCi0gICAgICAgICAgICBlbGlmIHNvdXJjZVtlbmRdID09ICd9JzoKLSAg
ICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRoIC0gMQotICAgICAgICAgICAgZW5kID0gZW5kICsg
MQotICAgICAgICBmdW5jdGlvbkJvdW5kcy5hcHBlbmQoKHN0YXJ0LCBlbmQpKQotCi0gICAgZnVu
Y3Rpb25zID0gW3NvdXJjZVtzdGFydDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwgZW5kKSBpbiBm
dW5jdGlvbkJvdW5kc10KLSAgICByZXN1bHQgPSBbXQotICAgIGZvciBmdW5jdGlvbiBpbiBmdW5j
dGlvbnM6Ci0gICAgICAgIGZ1bmN0aW9uID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5zdWIoIiIs
IGZ1bmN0aW9uKQotICAgICAgICBmdW5jdGlvbk5hbWUgPSBmdW5jdGlvbk5hbWVSZWdFeHAuZmlu
ZGFsbChmdW5jdGlvbilbMF0KLSAgICAgICAgZnVuY3Rpb25Jc0NvbnN0cnVjdG9yID0gZnVuY3Rp
b25Jc0NvbnN0cnVjdG9yUmVnRXhwLm1hdGNoKGZ1bmN0aW9uKSAhPSBOb25lCi0gICAgICAgIGZ1
bmN0aW9uUGFyYW1ldGVycyA9IGZ1bmN0aW9uUGFyYW1ldGVyRmluZGVyLmZpbmRhbGwoZnVuY3Rp
b24pWzBdLnNwbGl0KCcsJykKLSAgICAgICAgaWYgbGVuKGZ1bmN0aW9uUGFyYW1ldGVyc1swXSkg
PT0gMDoKLSAgICAgICAgICAgIGZ1bmN0aW9uUGFyYW1ldGVycyA9IFtdCi0KLSAgICAgICAgcmVz
dWx0LmFwcGVuZChGdW5jdGlvbihmdW5jdGlvbk5hbWUsIGZ1bmN0aW9uLCBmdW5jdGlvbklzQ29u
c3RydWN0b3IsIGZ1bmN0aW9uUGFyYW1ldGVycykpCi0gICAgcmV0dXJuIHJlc3VsdAotCi1kZWYg
d3JpdGVJbmNsdWRlRGlyZWN0aXZlcyh3cml0ZXIsIGhlYWRlck5hbWVzKToKLSAgICBmb3IgaGVh
ZGVyTmFtZSBpbiBoZWFkZXJOYW1lczoKLSAgICAgICAgd3JpdGVyLndyaXRlKCIjaW5jbHVkZSAi
ICsgaGVhZGVyTmFtZSArICJcbiIpCi0KLWRlZiBnZW5lcmF0ZUNvZGUoc291cmNlKToKLSAgICBp
bnB1dEZpbGUgPSBvcGVuKHNvdXJjZSwgInIiKQotICAgIGJhc2VOYW1lID0gb3MucGF0aC5iYXNl
bmFtZShzb3VyY2UpLnJlcGxhY2UoIi5qcyIsICIiKQotICAgIAotICAgIHNvdXJjZSA9ICIiCi0g
ICAgZm9yIGxpbmUgaW4gaW5wdXRGaWxlOgotICAgICAgICBzb3VyY2UgPSBzb3VyY2UgKyBsaW5l
Ci0gICAgCi0gICAgaWYgc3lzLnBsYXRmb3JtID09ICJjeWd3aW4iOgotICAgICAgICBzb3VyY2Ug
PSBzb3VyY2UucmVwbGFjZSgiXHJcbiIsICJcbiIpCi0gICAgcmV0dXJuIChiYXNlTmFtZSwgZ2V0
RnVuY3Rpb25zKHNvdXJjZSksIGdldENvcHlyaWdodChzb3VyY2UpKQotCi1idWlsdGlucyA9IFtd
Ci1jb3B5cmlnaHRzID0gW10KLShvdXRwdXRfYmFzZSwgXykgPSBvcy5wYXRoLnNwbGl0ZXh0KGFy
Z3Mub3V0cHV0KQotCi1pZiBhcmdzLmlucHV0X2RpcmVjdG9yeToKLSAgICBmb3IgZmlsZSBpbiBv
cy5saXN0ZGlyKGFyZ3MuaW5wdXRfZGlyZWN0b3J5KToKLSAgICAgICAgYXJncy5pbnB1dF9maWxl
LmFwcGVuZChvcy5wYXRoLmpvaW4oYXJncy5pbnB1dF9kaXJlY3RvcnksIGZpbGUpKQotCi1mb3Ig
ZmlsZSBpbiBhcmdzLmlucHV0X2ZpbGU6Ci0gICAgaWYgZm5tYXRjaC5mbm1hdGNoKGZpbGUsICcq
LmpzJyk6Ci0gICAgICAgIChiYXNlTmFtZSwgZnVuY3Rpb25zLCBvYmplY3RDb3B5cmlnaHRzKSA9
IGdlbmVyYXRlQ29kZShmaWxlKQotICAgICAgICBjb3B5cmlnaHRzLmV4dGVuZChvYmplY3RDb3B5
cmlnaHRzKQotICAgICAgICBidWlsdGlucy5hcHBlbmQoKGJhc2VOYW1lLCBmdW5jdGlvbnMpKQot
bmFtZXNwYWNlID0gYXJncy5uYW1lc3BhY2UKLW1hY3JvUHJlZml4ID0gYXJncy5wcmVmaXgKLXNj
b3BlTmFtZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShhcmdzLm91dHB1dCkp
WzBdCi1pbmNsdWRlR3VhcmQgPSBzY29wZU5hbWUgKyAiX0giCi1oZWFkZXJOYW1lID0gc2NvcGVO
YW1lICsgIi5oIgotCi1oZWFkZXJJbmNsdWRlcyA9IFsiXCJCdWlsdGluVXRpbHMuaFwiIl0gaWYg
bmFtZXNwYWNlID09ICJKU0MiIGVsc2UgWyI8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+Il0KLWNv
bnRlbnRJbmNsdWRlcyA9IFsiXCJCdWlsdGluRXhlY3V0YWJsZXMuaFwiIiwgIlwiRXhlY3V0YWJs
ZS5oXCIiLCAiXCJKU0NlbGxJbmxpbmVzLmhcIiIsICJcIlZNLmhcIiJdIGlmIG5hbWVzcGFjZSA9
PSAiSlNDIiBlbHNlIFsiPHJ1bnRpbWUvRXhlY3V0YWJsZS5oPiIsICI8cnVudGltZS9TdHJ1Y3R1
cmVJbmxpbmVzLmg+IiwgIjxydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+IiwgIjxydW50aW1l
L0pTQ2VsbElubGluZXMuaD4iLCAiPHJ1bnRpbWUvVk0uaD4iLCAiXCJXZWJDb3JlSlNDbGllbnRE
YXRhLmhcIiJdCi0KLWNvcHlyaWdodHMgPSBsaXN0KHNldChjb3B5cmlnaHRzKSkKLQotY29weXJp
Z2h0Qm9keSA9ICIiCi1mb3IgY29weXJpZ2h0IGluIGNvcHlyaWdodHM6Ci0gICAgY29weXJpZ2h0
Qm9keSA9IGNvcHlyaWdodEJvZHkgKyIgKiBDb3B5cmlnaHQgKEMpICIgKyBjb3B5cmlnaHQgKyAi
XG4iCi0KLWJ1aWx0aW5zSGVhZGVyID0gb3BlbihvdXRwdXRfYmFzZSArICIuaC50bXAiLCAidyIp
Ci1idWlsdGluc0ltcGxlbWVudGF0aW9uID0gb3BlbihvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIs
ICJ3IikKLWNvcHlyaWdodFRleHQgPSAiLypcbiIgKyBjb3B5cmlnaHRCb2R5ICsgY29weXJpZ2h0
VGV4dAotYnVpbHRpbnNIZWFkZXIud3JpdGUoIiIiJXMKLSVzCi0KLSNpZm5kZWYgJXMKLSNkZWZp
bmUgJXMKLQotIiIiICUgKGdlbmVyYXRvclN0cmluZywgY29weXJpZ2h0VGV4dCwgaW5jbHVkZUd1
YXJkLCBpbmNsdWRlR3VhcmQpKQotCi13cml0ZUluY2x1ZGVEaXJlY3RpdmVzKGJ1aWx0aW5zSGVh
ZGVyLCBoZWFkZXJJbmNsdWRlcykKLQotYnVpbHRpbnNIZWFkZXIud3JpdGUoIiIiCi1uYW1lc3Bh
Y2UgSlNDIHsKLSAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Ci19Ci0KLW5hbWVzcGFjZSAl
cyB7Ci0KLSIiIiAlIG5hbWVzcGFjZSkKLQotY29kZVJlZmVyZW5jZXMgPSBbXQotCi1mb3IgKG9i
amVjdE5hbWUsIGZ1bmN0aW9ucykgaW4gYnVpbHRpbnM6Ci0gICAgcHJpbnQoIkdlbmVyYXRpbmcg
YmluZGluZ3MgZm9yIHRoZSAlcyBidWlsdGluLiIgJSBvYmplY3ROYW1lKQotICAgIGJ1aWx0aW5z
SGVhZGVyLndyaXRlKCIvKiAlcyBmdW5jdGlvbnMgKi9cbiIgJSBvYmplY3ROYW1lKQotICAgIGZv
ciBmdW5jdGlvbiBpbiBmdW5jdGlvbnM6Ci0gICAgICAgIG5hbWUgPSBmdW5jdGlvbi5uYW1lCi0g
ICAgICAgIG1hbmdsZWROYW1lID0gZnVuY3Rpb24ubWFuZ2xlTmFtZShvYmplY3ROYW1lKQotICAg
ICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lWzBdLmxvd2VyKCkgKyBtYW5nbGVkTmFtZVsx
Ol0gKyAiQ29kZSIKLSAgICAgICAgY29kZVJlZmVyZW5jZXMuYXBwZW5kKChtYW5nbGVkTmFtZSwg
ZnVuY3Rpb24pKQotICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiZXh0ZXJuIGNvbnN0IGNo
YXIqIHNfJXM7XG4iICUgbWFuZ2xlZE5hbWUpCi0gICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRl
KCJleHRlcm4gY29uc3QgaW50IHNfJXNMZW5ndGg7XG4iICUgbWFuZ2xlZE5hbWUpCi0gICAgICAg
IGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
IHNfJXNDb25zdHJ1Y3RBYmlsaXR5O1xuIiAlIG1hbmdsZWROYW1lKQotICAgIGJ1aWx0aW5zSGVh
ZGVyLndyaXRlKCJcbiIpCi0gICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgJXNfRk9S
RUFDSF8lc19CVUlMVElOKG1hY3JvKSBcXFxuIiAlIChtYWNyb1ByZWZpeCwgb2JqZWN0TmFtZS5y
ZXBsYWNlKCIuIiwgIl8iKS51cHBlcigpKSkKLSAgICBmb3IgZnVuY3Rpb24gaW4gZnVuY3Rpb25z
OgotICAgICAgICBtYW5nbGVkTmFtZSA9IGZ1bmN0aW9uLm1hbmdsZU5hbWUob2JqZWN0TmFtZSkK
LSAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiAgICBtYWNybyglcywgJXMsICVkKSBcXFxu
IiAlIChmdW5jdGlvbi5uYW1lLCBtYW5nbGVkTmFtZSwgbGVuKGZ1bmN0aW9uLnBhcmFtZXRlcnMp
KSkKLSAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG4iKQotICAgIGZvciBmdW5jdGlvbiBpbiBm
dW5jdGlvbnM6Ci0gICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lICVzX0JVSUxU
SU5fJXMgMVxuIiAlIChtYWNyb1ByZWZpeCwgZnVuY3Rpb24ubWFuZ2xlTmFtZShvYmplY3ROYW1l
KS51cHBlcigpKSkKLSAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG5cbiIpCi1uYW1lcyA9IFtd
Ci1idWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSAlc19GT1JFQUNIX0JVSUxUSU4obWFjcm8p
XFxcbiIgJSBtYWNyb1ByZWZpeCkKLWZvciAoY29kZVJlZmVyZW5jZSwgZnVuY3Rpb24pIGluIGNv
ZGVSZWZlcmVuY2VzOgotICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIgICAgbWFjcm8oJXMsICVz
LCBzXyVzTGVuZ3RoKSBcXFxuIiAlIChjb2RlUmVmZXJlbmNlLCBmdW5jdGlvbi5uYW1lLCBjb2Rl
UmVmZXJlbmNlKSkKLSAgICBuYW1lcy5hcHBlbmQoZnVuY3Rpb24ubmFtZSkKLQotYnVpbHRpbnNI
ZWFkZXIud3JpdGUoIlxuXG4iKQotYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgJXNfRk9S
RUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFxcXG4iICUgbWFjcm9QcmVmaXgpCi1m
b3IgbmFtZSBpbiBzb3J0ZWQoc2V0KG5hbWVzKSk6Ci0gICAgYnVpbHRpbnNIZWFkZXIud3JpdGUo
IiAgICBtYWNybyglcykgXFxcbiIgJSBuYW1lKQotYnVpbHRpbnNIZWFkZXIud3JpdGUoIiIiCi0K
LSNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1l
LCBhcmd1bWVudENvdW50KSBcXAotICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFt
ZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKLQotJXNfRk9SRUFDSF9CVUlMVElOKERFQ0xBUkVfQlVJ
TFRJTl9HRU5FUkFUT1IpCi0jdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgotCi0jZGVm
aW5lICVzX0JVSUxUSU5fRVhJU1RTKG5hbWUpIGRlZmluZWQgJXNfQlVJTFRJTl8gIyMgbmFtZQot
Ci19Ci0KLSNlbmRpZiAvLyAlcwotCi0iIiIgJSAobWFjcm9QcmVmaXgsIG1hY3JvUHJlZml4LCBt
YWNyb1ByZWZpeCwgaW5jbHVkZUd1YXJkKSkKLQotYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0
ZSgiIiIlcwotJXMKLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiJXMiCi0KLSIi
IiAgJSAoZ2VuZXJhdG9yU3RyaW5nLCBjb3B5cmlnaHRUZXh0LCBoZWFkZXJOYW1lKSkKLQotd3Jp
dGVJbmNsdWRlRGlyZWN0aXZlcyhidWlsdGluc0ltcGxlbWVudGF0aW9uLCBjb250ZW50SW5jbHVk
ZXMpCi0KLWJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIiCi1uYW1lc3BhY2UgJXMgewot
Ci0iIiIgICUgKG5hbWVzcGFjZSkpCi0KLQotCi1mb3IgKGNvZGVSZWZlcmVuY2UsIGZ1bmN0aW9u
KSBpbiBjb2RlUmVmZXJlbmNlczoKLSAgICBzb3VyY2UgPSBmdW5jdGlvbi5zb3VyY2UKLSAgICBz
b3VyY2UgPSAiKGZ1bmN0aW9uICIgKyBzb3VyY2Vbc291cmNlLmluZGV4KCIoIik6XSArICIpIgot
ICAgIGxpbmVzID0ganNvbi5kdW1wcyhzb3VyY2UpWzE6LTFdLnNwbGl0KCJcXG4iKQotICAgIHNv
dXJjZUxlbmd0aCA9IGxlbihzb3VyY2UpCi0gICAgc291cmNlID0gIiIKLSAgICBmb3IgbGluZSBp
biBsaW5lczoKLSAgICAgICAgc291cmNlID0gc291cmNlICsgKCIgICAgXCIlc1xcblwiIFxcXG4i
ICUgbGluZSkKLSAgICBidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCJjb25zdCBjaGFyKiBz
XyVzID1cbiVzO1xuXG4iICUgKGNvZGVSZWZlcmVuY2UsIHNvdXJjZSkpCi0gICAgYnVpbHRpbnNJ
bXBsZW1lbnRhdGlvbi53cml0ZSgiY29uc3QgaW50IHNfJXNMZW5ndGggPSAlZDtcblxuIiAlIChj
b2RlUmVmZXJlbmNlLCBzb3VyY2VMZW5ndGggKyAxKSkgIyArIDEgZm9yIFxuCi0gICAgY29uc3Ry
dWN0QWJpbGl0eSA9ICJKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdCIKLSAg
ICBpZiBmdW5jdGlvbi5pc0NvbnN0cnVjdG9yOgotICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0g
IkpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0IgotICAgIGJ1aWx0aW5zSW1wbGVt
ZW50YXRpb24ud3JpdGUoImNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzXyVzQ29uc3RydWN0
QWJpbGl0eSA9ICVzO1xuXG4iICUgKGNvZGVSZWZlcmVuY2UsIGNvbnN0cnVjdEFiaWxpdHkpKSAj
ICsgMSBmb3IgXG4KLQotYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiIiIKLSNkZWZpbmUg
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50
Q291bnQpIFxcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihK
U0M6OlZNJiB2bSkgXFwKLSIiIik7Ci0KLWlmIChuYW1lc3BhY2UgPT0gIkpTQyIpOgotICAgIGJ1
aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIie1xcCi0gICAgcmV0dXJuIHZtLmJ1aWx0aW5F
eGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGlu
RXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsgXFwKLSIiIikKLWVsc2U6Ci0gICAg
YnVpbHRpbk5hbWUgPSBzY29wZU5hbWVbMF0ubG93ZXIoKSArIHNjb3BlTmFtZVsxOl0KLSAgICBi
dWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIntcXAotICAgIEpTVk1DbGllbnREYXRhKiBj
bGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsg
XFwKLSAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiVzKCkuY29kZU5h
bWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygp
LiVzKCkuY29kZU5hbWUjI1NvdXJjZSgpKTsgXFwKLSIiIiUgKGJ1aWx0aW5OYW1lLCBidWlsdGlu
TmFtZSkpCi0KLWJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIifQotJXNfRk9SRUFDSF9C
VUlMVElOKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKLSN1bmRlZiBERUZJTkVfQlVJTFRJTl9H
RU5FUkFUT1IKLX0KLQotIiIiJSAobWFjcm9QcmVmaXgpKQotCi1idWlsdGluc0hlYWRlci5jbG9z
ZSgpCi1idWlsdGluc0ltcGxlbWVudGF0aW9uLmNsb3NlKCkKLQotaWYgKG5vdCBvcy5wYXRoLmV4
aXN0cyhvdXRwdXRfYmFzZSArICIuaCIpKSBvciAobm90IGZpbGVjbXAuY21wKG91dHB1dF9iYXNl
ICsgIi5oLnRtcCIsIG91dHB1dF9iYXNlICsgIi5oIiwgc2hhbGxvdz1GYWxzZSkpOgotICAgIGlm
IChvcy5wYXRoLmV4aXN0cyhvdXRwdXRfYmFzZSArICIuaCIpKToKLSAgICAgICAgb3MucmVtb3Zl
KG91dHB1dF9iYXNlICsgIi5oIikKLSAgICBvcy5yZW5hbWUob3V0cHV0X2Jhc2UgKyAiLmgudG1w
Iiwgb3V0cHV0X2Jhc2UgKyAiLmgiKQotZWxzZToKLSAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2Ug
KyAiLmgudG1wIikKLQotaWYgKG5vdCBvcy5wYXRoLmV4aXN0cyhvdXRwdXRfYmFzZSArICIuY3Bw
IikpIG9yIChub3QgZmlsZWNtcC5jbXAob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCBvdXRwdXRf
YmFzZSArICIuY3BwIiwgc2hhbGxvdz1GYWxzZSkpOgotICAgIGlmIChvcy5wYXRoLmV4aXN0cyhv
dXRwdXRfYmFzZSArICIuY3BwIikpOgotICAgICAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAi
LmNwcCIpCi0gICAgb3MucmVuYW1lKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIiwgb3V0cHV0X2Jh
c2UgKyAiLmNwcCIpCi1lbHNlOgotICAgIG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIuY3BwLnRt
cCIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1q
cy1idWlsdGlucy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpz
LWJ1aWx0aW5zLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3MDcwOWI0ODA4Mzg4ZTY3OGYzZGIyMzgyZjQ2YTNk
NjMzMzkwNmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQpAQCAtMCwwICsxLDE2NCBAQAorIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hp
bmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisj
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisjIFRoaXMgc2NyaXB0IGdlbmVyYXRlcyBDKysgYmluZGluZ3MgZm9yIEph
dmFTY3JpcHQgYnVpbHRpbnMuCisjIEdlbmVyYXRvcnMgZm9yIGluZGl2aWR1YWwgZmlsZXMgYXJl
IGxvY2F0ZWQgaW4gdGhlIGJ1aWx0aW5zLyBkaXJlY3RvcnkuCisKK2ltcG9ydCBmbm1hdGNoCitp
bXBvcnQgbG9nZ2luZworaW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgb3MKKworbG9nZ2luZy5iYXNp
Y0NvbmZpZyhmb3JtYXQ9JyUobGV2ZWxuYW1lKXM6ICUobWVzc2FnZSlzJywgbGV2ZWw9bG9nZ2lu
Zy5FUlJPUikKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwnKQorCitmcm9tIGxhenl3
cml0ZXIgaW1wb3J0IExhenlGaWxlV3JpdGVyCisKK2ltcG9ydCBidWlsdGlucworZnJvbSBidWls
dGlucyBpbXBvcnQgKgorCisKK2RlZiBnZW5lcmF0ZV9iaW5kaW5nc19mb3JfYnVpbHRpbnNfZmls
ZXMoYnVpbHRpbnNfZmlsZXM9W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG91dHB1dF9wYXRoPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbmNhdGVuYXRlX291dHB1dD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29tYmluZWRfb3V0cHV0PUZhbHNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZXdvcmtfbmFtZT0iIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2Vfb3V0cHV0PUZhbHNlKToKKwor
ICAgIGdlbmVyYXRvcnMgPSBbXQorCisgICAgbW9kZWwgPSBCdWlsdGluc0NvbGxlY3Rpb24oZnJh
bWV3b3JrX25hbWU9ZnJhbWV3b3JrX25hbWUpCisKKyAgICBmb3IgZmlsZXBhdGggaW4gYnVpbHRp
bnNfZmlsZXM6CisgICAgICAgIHdpdGggb3BlbihmaWxlcGF0aCwgInIiKSBhcyBmaWxlOgorICAg
ICAgICAgICAgZmlsZV90ZXh0ID0gZmlsZS5yZWFkKCkKKyAgICAgICAgICAgIGZpbGVfbmFtZSA9
IG9zLnBhdGguYmFzZW5hbWUoZmlsZXBhdGgpCisKKyAgICAgICAgICAgICMgSWYgdGhpcyBpcyBh
IHRlc3QgZmlsZSwgdGhlbiByZXdyaXRlIHRoZSBmaWxlbmFtZSB0byByZW1vdmUgdGhlCisgICAg
ICAgICAgICAjIHRlc3QgcnVubmluZyBvcHRpb25zIGVuY29kZWQgaW50byB0aGUgZmlsZW5hbWUu
CisgICAgICAgICAgICBpZiBmaWxlX25hbWUuc3RhcnRzd2l0aChmcmFtZXdvcmtfbmFtZSk6Cisg
ICAgICAgICAgICAgICAgKF8sIG9iamVjdF9uYW1lLCBfKSA9IGZpbGVfbmFtZS5zcGxpdCgnLScp
CisgICAgICAgICAgICAgICAgZmlsZV9uYW1lID0gb2JqZWN0X25hbWUgKyAnLmpzJworICAgICAg
ICAgICAgbW9kZWwucGFyc2VfYnVpbHRpbnNfZmlsZShmaWxlX25hbWUsIGZpbGVfdGV4dCkKKwor
ICAgIGlmIGNvbWJpbmVkX291dHB1dDoKKyAgICAgICAgbG9nLmRlYnVnKCJVc2luZyBnZW5lcmF0
b3Igc3R5bGU6IGNvbWJpbmVkIGZpbGVzIGZvciBhbGwgYnVpbHRpbnMuIikKKyAgICAgICAgZ2Vu
ZXJhdG9ycy5hcHBlbmQoQnVpbHRpbnNDb21iaW5lZEhlYWRlckdlbmVyYXRvcihtb2RlbCkpCisg
ICAgICAgIGdlbmVyYXRvcnMuYXBwZW5kKEJ1aWx0aW5zQ29tYmluZWRJbXBsZW1lbnRhdGlvbkdl
bmVyYXRvcihtb2RlbCkpCisgICAgZWxzZToKKyAgICAgICAgbG9nLmRlYnVnKCJVc2luZyBnZW5l
cmF0b3Igc3R5bGU6IHNpbmdsZSBmaWxlcyBmb3IgZWFjaCBidWlsdGluLiIpCisgICAgICAgIGZv
ciBvYmplY3QgaW4gbW9kZWwub2JqZWN0czoKKyAgICAgICAgICAgIGdlbmVyYXRvcnMuYXBwZW5k
KEJ1aWx0aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0b3IobW9kZWwsIG9iamVjdCkpCisgICAgICAg
ICAgICBnZW5lcmF0b3JzLmFwcGVuZChCdWlsdGluc1NlcGFyYXRlSW1wbGVtZW50YXRpb25HZW5l
cmF0b3IobW9kZWwsIG9iamVjdCkpCisKKyAgICAgICAgICAgIGlmIG1vZGVsLmZyYW1ld29yayBp
cyBGcmFtZXdvcmtzLldlYkNvcmU6CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQo
QnVpbHRpbnNTZXBhcmF0ZVdyYXBwZXJHZW5lcmF0b3IobW9kZWwsIG9iamVjdCkpCisKKyAgICBs
b2cuZGVidWcoIiIpCisgICAgbG9nLmRlYnVnKCJHZW5lcmF0aW5nIGJpbmRpbmdzIGZvciBidWls
dGlucy4iKQorCisgICAgdGVzdF9yZXN1bHRfZmlsZV9jb250ZW50cyA9IFtdCisKKyAgICBmb3Ig
Z2VuZXJhdG9yIGluIGdlbmVyYXRvcnM6CisgICAgICAgIG91dHB1dF9maWxlcGF0aCA9IG9zLnBh
dGguam9pbihvdXRwdXRfcGF0aCwgZ2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSgpKQorICAgICAg
ICBsb2cuZGVidWcoIkdlbmVyYXRpbmcgb3V0cHV0IGZpbGU6ICVzIiAlIGdlbmVyYXRvci5vdXRw
dXRfZmlsZW5hbWUoKSkKKyAgICAgICAgb3V0cHV0ID0gZ2VuZXJhdG9yLmdlbmVyYXRlX291dHB1
dCgpCisKKyAgICAgICAgbG9nLmRlYnVnKCItLS0iKQorICAgICAgICBsb2cuZGVidWcoIlxuIiAr
IG91dHB1dCkKKyAgICAgICAgbG9nLmRlYnVnKCItLS0iKQorICAgICAgICBpZiBjb25jYXRlbmF0
ZV9vdXRwdXQ6CisgICAgICAgICAgICB0ZXN0X3Jlc3VsdF9maWxlX2NvbnRlbnRzLmFwcGVuZCgn
IyMjIEJlZ2luIEZpbGU6ICVzJyAlIGdlbmVyYXRvci5vdXRwdXRfZmlsZW5hbWUoKSkKKyAgICAg
ICAgICAgIHRlc3RfcmVzdWx0X2ZpbGVfY29udGVudHMuYXBwZW5kKG91dHB1dCkKKyAgICAgICAg
ICAgIHRlc3RfcmVzdWx0X2ZpbGVfY29udGVudHMuYXBwZW5kKCcjIyMgRW5kIEZpbGU6ICVzJyAl
IGdlbmVyYXRvci5vdXRwdXRfZmlsZW5hbWUoKSkKKyAgICAgICAgICAgIHRlc3RfcmVzdWx0X2Zp
bGVfY29udGVudHMuYXBwZW5kKCcnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9nLmRl
YnVnKCJXcml0aW5nIGZpbGU6ICVzIiAlIG91dHB1dF9maWxlcGF0aCkKKyAgICAgICAgICAgIG91
dHB1dF9maWxlID0gTGF6eUZpbGVXcml0ZXIob3V0cHV0X2ZpbGVwYXRoLCBmb3JjZV9vdXRwdXQp
CisgICAgICAgICAgICBvdXRwdXRfZmlsZS53cml0ZShvdXRwdXQpCisgICAgICAgICAgICBvdXRw
dXRfZmlsZS5jbG9zZSgpCisKKyAgICBpZiBjb25jYXRlbmF0ZV9vdXRwdXQ6CisgICAgICAgIGZp
bGVuYW1lID0gb3MucGF0aC5qb2luKG9zLnBhdGguYmFzZW5hbWUoYnVpbHRpbnNfZmlsZXNbMF0p
ICsgJy1yZXN1bHQnKQorICAgICAgICBvdXRwdXRfZmlsZXBhdGggPSBvcy5wYXRoLmpvaW4ob3V0
cHV0X3BhdGgsIGZpbGVuYW1lKQorICAgICAgICBsb2cuZGVidWcoIldyaXRpbmcgZmlsZTogJXMi
ICUgb3V0cHV0X2ZpbGVwYXRoKSAKKyAgICAgICAgb3V0cHV0X2ZpbGUgPSBMYXp5RmlsZVdyaXRl
cihvdXRwdXRfZmlsZXBhdGgsIGZvcmNlX291dHB1dCkKKyAgICAgICAgb3V0cHV0X2ZpbGUud3Jp
dGUoJ1xuJy5qb2luKHRlc3RfcmVzdWx0X2ZpbGVfY29udGVudHMpKQorICAgICAgICBvdXRwdXRf
ZmlsZS5jbG9zZSgpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgYWxsb3dlZF9m
cmFtZXdvcmtfbmFtZXMgPSBbJ0phdmFTY3JpcHRDb3JlJywgJ1dlYkNvcmUnXQorICAgIGNsaV9w
YXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2U9InVzYWdlOiAlcHJvZyBbb3B0aW9u
c10gQnVpbHRpbjEuanMgWywgQnVpbHRpbjIuanMsIC4uLl0iKQorICAgIGNsaV9wYXJzZXIuYWRk
X29wdGlvbigiLWkiLCAiLS1pbnB1dC1kaXJlY3RvcnkiLCBoZWxwPSJJZiBzcGVjaWZpZWQsIGdl
bmVyYXRlcyBidWlsdGlucyBmcm9tIGFsbCBKYXZhU2NyaXB0IGZpbGVzIGluIHRoZSBzcGVjaWZp
ZWQgZGlyZWN0b3J5IGluIGFkZGl0aW9uIHRvIHNwZWNpZmljIGZpbGVzIHBhc3NlZCBhcyBhcmd1
bWVudHMuIikKKyAgICBjbGlfcGFyc2VyLmFkZF9vcHRpb24oIi1vIiwgIi0tb3V0cHV0LWRpcmVj
dG9yeSIsIGhlbHA9IkRpcmVjdG9yeSB3aGVyZSBnZW5lcmF0ZWQgZmlsZXMgc2hvdWxkIGJlIHdy
aXR0ZW4uIikKKyAgICBjbGlfcGFyc2VyLmFkZF9vcHRpb24oIi0tZnJhbWV3b3JrIiwgdHlwZT0i
Y2hvaWNlIiwgY2hvaWNlcz1hbGxvd2VkX2ZyYW1ld29ya19uYW1lcywgaGVscD0iRGVzdGluYXRp
b24gZnJhbWV3b3JrIGZvciBnZW5lcmF0ZWQgZmlsZXMuIikKKyAgICBjbGlfcGFyc2VyLmFkZF9v
cHRpb24oIi0tZm9yY2UiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJGb3JjZSBvdXRwdXQg
b2YgZ2VuZXJhdGVkIHNjcmlwdHMsIGV2ZW4gaWYgbm90aGluZyBjaGFuZ2VkLiIpCisgICAgY2xp
X3BhcnNlci5hZGRfb3B0aW9uKCItLWNvbWJpbmVkIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVs
cD0iUHJvZHVjZSBvbmUgLmgvLmNwcCBmaWxlIGluc3RlYWQgb2YgcHJvZHVjaW5nIG9uZSBwZXIg
YnVpbHRpbiBvYmplY3QuIikKKyAgICBjbGlfcGFyc2VyLmFkZF9vcHRpb24oIi12IiwgIi0tZGVi
dWciLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJMb2cgZXh0cmEgb3V0cHV0IGZvciBkZWJ1
Z2dpbmcgdGhlIGdlbmVyYXRvciBpdHNlbGYuIikKKyAgICBjbGlfcGFyc2VyLmFkZF9vcHRpb24o
Ii10IiwgIi0tdGVzdCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IkVuYWJsZSB0ZXN0IG1v
ZGUuIikKKworICAgIGFyZ19vcHRpb25zLCBhcmdfdmFsdWVzID0gY2xpX3BhcnNlci5wYXJzZV9h
cmdzKCkKKyAgICBpZiBsZW4oYXJnX3ZhbHVlcykgaXMgMCBhbmQgbm90IGFyZ19vcHRpb25zLmlu
cHV0X2RpcmVjdG9yeToKKyAgICAgICAgcmFpc2UgUGFyc2VFeGNlcHRpb24oIkF0IGxlYXN0IG9u
ZSBpbnB1dCBmaWxlIG9yIGRpcmVjdG9yeSBleHBlY3RlZC4iKQorCisgICAgaWYgbm90IGFyZ19v
cHRpb25zLm91dHB1dF9kaXJlY3Rvcnk6CisgICAgICAgIHJhaXNlIFBhcnNlRXhjZXB0aW9uKCJN
aXNzaW5nIG91dHB1dCBkaXJlY3RvcnkuIikKKworICAgIGlmIGFyZ19vcHRpb25zLmRlYnVnOgor
ICAgICAgICBsb2cuc2V0TGV2ZWwobG9nZ2luZy5ERUJVRykKKworICAgIGlucHV0X2ZpbGVwYXRo
cyA9IGFyZ192YWx1ZXNbOl0KKyAgICBpZiBhcmdfb3B0aW9ucy5pbnB1dF9kaXJlY3Rvcnk6Cisg
ICAgICAgIGZvciBmaWxlcGF0aCBpbiBvcy5saXN0ZGlyKGFyZ19vcHRpb25zLmlucHV0X2RpcmVj
dG9yeSk6CisgICAgICAgICAgICBpbnB1dF9maWxlcGF0aHMuYXBwZW5kKG9zLnBhdGguam9pbihh
cmdfb3B0aW9ucy5pbnB1dF9kaXJlY3RvcnksIGZpbGVwYXRoKSkKKworICAgIGlucHV0X2ZpbGVw
YXRocyA9IGZpbHRlcihsYW1iZGEgbmFtZTogZm5tYXRjaC5mbm1hdGNoKG5hbWUsICcqLmpzJyks
IGlucHV0X2ZpbGVwYXRocykKKworICAgIG9wdGlvbnMgPSB7CisgICAgICAgICdvdXRwdXRfcGF0
aCc6IGFyZ19vcHRpb25zLm91dHB1dF9kaXJlY3RvcnksCisgICAgICAgICdmcmFtZXdvcmtfbmFt
ZSc6IGFyZ19vcHRpb25zLmZyYW1ld29yaywKKyAgICAgICAgJ2NvbWJpbmVkX291dHB1dCc6IGFy
Z19vcHRpb25zLmNvbWJpbmVkLAorICAgICAgICAnZm9yY2Vfb3V0cHV0JzogYXJnX29wdGlvbnMu
Zm9yY2UsCisgICAgICAgICdjb25jYXRlbmF0ZV9vdXRwdXQnOiBhcmdfb3B0aW9ucy50ZXN0LAor
ICAgIH0KKworICAgIGxvZy5kZWJ1ZygiR2VuZXJhdGluZyBjb2RlIGZvciBidWlsdGlucy4iKQor
ICAgIGxvZy5kZWJ1ZygiUGFyc2VkIG9wdGlvbnM6IikKKyAgICBmb3Igb3B0aW9uLCB2YWx1ZSBp
biBvcHRpb25zLml0ZW1zKCk6CisgICAgICAgIGxvZy5kZWJ1ZygiICAgICVzOiAlcyIgJSAob3B0
aW9uLCB2YWx1ZSkpCisgICAgbG9nLmRlYnVnKCIiKQorICAgIGxvZy5kZWJ1ZygiSW5wdXQgZmls
ZXM6IikKKyAgICBmb3IgZmlsZXBhdGggaW4gaW5wdXRfZmlsZXBhdGhzOgorICAgICAgICBsb2cu
ZGVidWcoIiAgICAlcyIgJSBmaWxlcGF0aCkKKyAgICBsb2cuZGVidWcoIiIpCisKKyAgICB0cnk6
CisgICAgICAgIGdlbmVyYXRlX2JpbmRpbmdzX2Zvcl9idWlsdGluc19maWxlcyhidWlsdGluc19m
aWxlcz1pbnB1dF9maWxlcGF0aHMsICoqb3B0aW9ucykKKyAgICBleGNlcHQgUGFyc2VFeGNlcHRp
b24gYXMgZToKKyAgICAgICAgaWYgYXJnX29wdGlvbnMudGVzdDoKKyAgICAgICAgICAgIGxvZy5l
cnJvcihlLm1lc3NhZ2UpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSAgIyBGb3Jj
ZSB0aGUgYnVpbGQgdG8gZmFpbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL2xhenl3cml0ZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9sYXp5
d3JpdGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5M2EyYzY5N2NhY2JkNzc0MWZlOTk4ZWYxOTBlYjFjZDZm
MjQ1MzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9s
YXp5d3JpdGVyLnB5CkBAIC0wLDAgKzEsNTggQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIwor
IyBDb3B5cmlnaHQgKGMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBD
b3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
IyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgQSB3cml0ZXIgdGhhdCBvbmx5
IHVwZGF0ZXMgZmlsZSBpZiBpdCBhY3R1YWxseSBjaGFuZ2VkLgorCisKK2NsYXNzIExhenlGaWxl
V3JpdGVyOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlcGF0aCwgZm9yY2Vfb3V0cHV0KToK
KyAgICAgICAgc2VsZi5fZmlsZXBhdGggPSBmaWxlcGF0aAorICAgICAgICBzZWxmLl9vdXRwdXQg
PSAiIgorICAgICAgICBzZWxmLmZvcmNlX291dHB1dCA9IGZvcmNlX291dHB1dAorCisgICAgZGVm
IHdyaXRlKHNlbGYsIHRleHQpOgorICAgICAgICBzZWxmLl9vdXRwdXQgKz0gdGV4dAorCisgICAg
ZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICB0ZXh0X2NoYW5nZWQgPSBUcnVlCisgICAgICAgIHNl
bGYuX291dHB1dCA9IHNlbGYuX291dHB1dC5yc3RyaXAoKSArICJcbiIKKworICAgICAgICB0cnk6
CisgICAgICAgICAgICBpZiBzZWxmLmZvcmNlX291dHB1dDoKKyAgICAgICAgICAgICAgICByYWlz
ZQorCisgICAgICAgICAgICByZWFkX2ZpbGUgPSBvcGVuKHNlbGYuX2ZpbGVwYXRoLCAiciIpCisg
ICAgICAgICAgICBvbGRfdGV4dCA9IHJlYWRfZmlsZS5yZWFkKCkKKyAgICAgICAgICAgIHJlYWRf
ZmlsZS5jbG9zZSgpCisgICAgICAgICAgICB0ZXh0X2NoYW5nZWQgPSBvbGRfdGV4dCAhPSBzZWxm
Ll9vdXRwdXQKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgIyBJZ25vcmUsIGp1c3Qgb3Zl
cndyaXRlIGJ5IGRlZmF1bHQKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBpZiB0ZXh0X2No
YW5nZWQgb3Igc2VsZi5mb3JjZV9vdXRwdXQ6CisgICAgICAgICAgICBvdXRfZmlsZSA9IG9wZW4o
c2VsZi5fZmlsZXBhdGgsICJ3IikKKyAgICAgICAgICAgIG91dF9maWxlLndyaXRlKHNlbGYuX291
dHB1dCkKKyAgICAgICAgICAgIG91dF9maWxlLmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0
aW4uUHJvbWlzZS1Db21iaW5lZC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1Db21iaW5lZC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iNDVkODFjZWI5ZWQ5MDY0MjU4NGZhMGJiNDU4ZGNmMGRiYWRjM2EyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRp
bnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzCkBAIC0wLDAgKzEs
NTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworZnVuY3Rpb24gcmVqZWN0UHJvbWlzZShwcm9taXNlLCByZWFzb24pCit7CisgICAgInVzZSBz
dHJpY3QiOworCisgICAgdmFyIHJlYWN0aW9ucyA9IHByb21pc2UuQHByb21pc2VSZWplY3RSZWFj
dGlvbnM7CisgICAgcHJvbWlzZS5AcHJvbWlzZVJlc3VsdCA9IHJlYXNvbjsKKyAgICBwcm9taXNl
LkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucyA9IHVuZGVmaW5lZDsKKyAgICBwcm9taXNlLkBwcm9t
aXNlUmVqZWN0UmVhY3Rpb25zID0gdW5kZWZpbmVkOworICAgIHByb21pc2UuQHByb21pc2VTdGF0
ZSA9IEBwcm9taXNlUmVqZWN0ZWQ7CisKKyAgICBASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLnBy
b21pc2VSZWplY3RlZChwcm9taXNlLCByZWFzb24sIHJlYWN0aW9ucyk7CisKKyAgICBAdHJpZ2dl
clByb21pc2VSZWFjdGlvbnMocmVhY3Rpb25zLCByZWFzb24pOworfQorCitmdW5jdGlvbiBmdWxm
aWxsUHJvbWlzZShwcm9taXNlLCB2YWx1ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2
YXIgcmVhY3Rpb25zID0gcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlvbnM7CisgICAgcHJv
bWlzZS5AcHJvbWlzZVJlc3VsdCA9IHZhbHVlOworICAgIHByb21pc2UuQHByb21pc2VGdWxmaWxs
UmVhY3Rpb25zID0gdW5kZWZpbmVkOworICAgIHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlv
bnMgPSB1bmRlZmluZWQ7CisgICAgcHJvbWlzZS5AcHJvbWlzZVN0YXRlID0gQHByb21pc2VGdWxm
aWxsZWQ7CisKKyAgICBASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLnByb21pc2VGdWxmaWxsZWQo
cHJvbWlzZSwgdmFsdWUsIHJlYWN0aW9ucyk7CisKKyAgICBAdHJpZ2dlclByb21pc2VSZWFjdGlv
bnMocmVhY3Rpb25zLCB2YWx1ZSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2Ut
U2VwYXJhdGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlu
cy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtU2VwYXJhdGUuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjQ1ZDgxY2ViOWVkOTA2NDI1ODRmYTBiYjQ1OGRjZjBkYmFkYzNhMgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3Jp
cHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS5qcwpAQCAtMCwwICsxLDU0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9u
IHJlamVjdFByb21pc2UocHJvbWlzZSwgcmVhc29uKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKwor
ICAgIHZhciByZWFjdGlvbnMgPSBwcm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25zOworICAg
IHByb21pc2UuQHByb21pc2VSZXN1bHQgPSByZWFzb247CisgICAgcHJvbWlzZS5AcHJvbWlzZUZ1
bGZpbGxSZWFjdGlvbnMgPSB1bmRlZmluZWQ7CisgICAgcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJl
YWN0aW9ucyA9IHVuZGVmaW5lZDsKKyAgICBwcm9taXNlLkBwcm9taXNlU3RhdGUgPSBAcHJvbWlz
ZVJlamVjdGVkOworCisgICAgQEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5wcm9taXNlUmVqZWN0
ZWQocHJvbWlzZSwgcmVhc29uLCByZWFjdGlvbnMpOworCisgICAgQHRyaWdnZXJQcm9taXNlUmVh
Y3Rpb25zKHJlYWN0aW9ucywgcmVhc29uKTsKK30KKworZnVuY3Rpb24gZnVsZmlsbFByb21pc2Uo
cHJvbWlzZSwgdmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIHJlYWN0aW9u
cyA9IHByb21pc2UuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zOworICAgIHByb21pc2UuQHByb21p
c2VSZXN1bHQgPSB2YWx1ZTsKKyAgICBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucyA9
IHVuZGVmaW5lZDsKKyAgICBwcm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25zID0gdW5kZWZp
bmVkOworICAgIHByb21pc2UuQHByb21pc2VTdGF0ZSA9IEBwcm9taXNlRnVsZmlsbGVkOworCisg
ICAgQEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5wcm9taXNlRnVsZmlsbGVkKHByb21pc2UsIHZh
bHVlLCByZWFjdGlvbnMpOworCisgICAgQHRyaWdnZXJQcm9taXNlUmVhY3Rpb25zKHJlYWN0aW9u
cywgdmFsdWUpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
dGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2Ny
aXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDQ4Yjk4
MzJiNjZhNGJkZjBmZTJjNGJkODcwMTBmNjBhZDcyZGYwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUt
QnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29t
Pi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCitmdW5jdGlv
biBldmVyeShjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykKK3sKKyAgICAidXNlIHN0cmljdCI7CisK
KyAgICBpZiAodGhpcyA9PT0gbnVsbCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFy
cmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCIpOwor
ICAgIAorICAgIGlmICh0aGlzID09PSB1bmRlZmluZWQpCisgICAgICAgIHRocm93IG5ldyBAVHlw
ZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJl
IHVuZGVmaW5lZCIpOworICAgIAorICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7CisgICAg
dmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpOworCisgICAgaWYgKHR5cGVvZiBj
YWxsYmFjayAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFy
cmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKKyAgICAK
KyAgICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDog
dW5kZWZpbmVkOworICAgIAorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsK
KyAgICAgICAgaWYgKCEoaSBpbiBhcnJheSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgaWYgKCFjYWxsYmFjay5AY2FsbCh0aGlzQXJnLCBhcnJheVtpXSwgaSwgYXJyYXkpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykKK3sKKyAgICAidXNl
IHN0cmljdCI7CisKKyAgICBpZiAodGhpcyA9PT0gbnVsbCkKKyAgICAgICAgdGhyb3cgbmV3IEBU
eXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5mb3JFYWNoIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5v
dCBiZSBudWxsIik7CisgICAgCisgICAgaWYgKHRoaXMgPT09IHVuZGVmaW5lZCkKKyAgICAgICAg
dGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5mb3JFYWNoIHJlcXVpcmVzIHRo
YXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWQiKTsKKyAgICAKKyAgICB2YXIgYXJyYXkgPSBAT2Jq
ZWN0KHRoaXMpOworICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsKKwor
ICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlvbiIpCisgICAgICAgIHRocm93IG5l
dyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCBjYWxsYmFjayBtdXN0IGJlIGEg
ZnVuY3Rpb24iKTsKKyAgICAKKyAgICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAx
ID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkOworICAgIAorICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKGkgaW4gYXJyYXkpCisgICAgICAgICAgICBj
YWxsYmFjay5AY2FsbCh0aGlzQXJnLCBhcnJheVtpXSwgaSwgYXJyYXkpOworICAgIH0KK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0ph
dmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLVNlcGFyYXRlLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5w
cm90b3R5cGUtU2VwYXJhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQ0OGI5ODMyYjY2YTRiZGYwZmUyYzRi
ZDg3MDEwZjYwYWQ3MmRmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBl
LVNlcGFyYXRlLmpzCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworZnVuY3Rpb24gZXZlcnkoY2FsbGJhY2sg
LyosIHRoaXNBcmcgKi8pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKHRoaXMgPT09
IG51bGwpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZXZl
cnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwiKTsKKyAgICAKKyAgICBpZiAodGhp
cyA9PT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJv
dG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWQiKTsKKyAg
ICAKKyAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMpOworICAgIHZhciBsZW5ndGggPSBAdG9M
ZW5ndGgoYXJyYXkubGVuZ3RoKTsKKworICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5j
dGlvbiIpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZXZl
cnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CisgICAgCisgICAgdmFyIHRoaXNBcmcg
PSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDsKKyAgICAK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghKGkg
aW4gYXJyYXkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghY2FsbGJhY2su
QGNhbGwodGhpc0FyZywgYXJyYXlbaV0sIGksIGFycmF5KSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIGZvckVh
Y2goY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAg
aWYgKHRoaXMgPT09IG51bGwpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5w
cm90b3R5cGUuZm9yRWFjaCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCIpOworICAg
IAorICAgIGlmICh0aGlzID09PSB1bmRlZmluZWQpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVy
cm9yKCJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUg
dW5kZWZpbmVkIik7CisgICAgCisgICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTsKKyAgICB2
YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7CisKKyAgICBpZiAodHlwZW9mIGNh
bGxiYWNrICE9PSAiZnVuY3Rpb24iKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJy
YXkucHJvdG90eXBlLmZvckVhY2ggY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CisgICAg
CisgICAgdmFyIHRoaXNBcmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6
IHVuZGVmaW5lZDsKKyAgICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7
CisgICAgICAgIGlmIChpIGluIGFycmF5KQorICAgICAgICAgICAgY2FsbGJhY2suQGNhbGwodGhp
c0FyZywgYXJyYXlbaV0sIGksIGFycmF5KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWls
dGluQ29uc3RydWN0b3ItQ29tYmluZWQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmlu
ZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOWU4YzFiNDQ5NmNjNTQ0ZjQwNzczOTUwNDJjZmQyNGU4YTM5NDY2
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3Rz
L2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qcwpA
QCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKK2Z1bmN0aW9uIG9mKC8qIGl0ZW1zLi4uICovKQoreworICAgICJ1c2Ugc3RyaWN0IjsK
KworICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOworICAgIC8vIFRPRE86IE5lZWQg
aXNDb25zdHJ1Y3Rvcih0aGlzKSBpbnN0ZWFkIG9mIHR5cGVvZiAiZnVuY3Rpb24iIGNoZWNrLgor
ICAgIHZhciBhcnJheSA9IHR5cGVvZiB0aGlzID09PSAnZnVuY3Rpb24nID8gbmV3IHRoaXMobGVu
Z3RoKSA6IG5ldyBAQXJyYXkobGVuZ3RoKTsKKyAgICBmb3IgKHZhciBrID0gMDsgayA8IGxlbmd0
aDsgKytrKQorICAgICAgICBAcHV0QnlWYWxEaXJlY3QoYXJyYXksIGssIGFyZ3VtZW50c1trXSk7
CisgICAgYXJyYXkubGVuZ3RoID0gbGVuZ3RoOworICAgIHJldHVybiBhcnJheTsKK30KKworZnVu
Y3Rpb24gZnJvbShpdGVtcyAvKiwgbWFwRm4sIHRoaXNBcmcgKi8pCit7CisgICAgInVzZSBzdHJp
Y3QiOworCisgICAgdmFyIHRoaXNPYmogPSB0aGlzOworCisgICAgdmFyIG1hcEZuID0gYXJndW1l
bnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7CisKKyAgICB2YXIgdGhp
c0FyZzsKKworICAgIGlmIChtYXBGbiAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgIGlmICh0eXBl
b2YgbWFwRm4gIT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJv
cigiQXJyYXkuZnJvbSByZXF1aXJlcyB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQsIHdoZW4gcHJv
dmlkZWQsIGJlIGEgZnVuY3Rpb24iKTsKKworICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+
IDIpCisgICAgICAgICAgICB0aGlzQXJnID0gYXJndW1lbnRzWzJdOworICAgIH0KKworICAgIGlm
IChpdGVtcyA9PSBudWxsKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkuZnJv
bSByZXF1aXJlcyBhbiBhcnJheS1saWtlIG9iamVjdCAtIG5vdCBudWxsIG9yIHVuZGVmaW5lZCIp
OworCisgICAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gaXRlbXNbQHN5bWJvbEl0ZXJhdG9yXTsKKyAg
ICBpZiAoaXRlcmF0b3JNZXRob2QgIT0gbnVsbCkgeworICAgICAgICBpZiAodHlwZW9mIGl0ZXJh
dG9yTWV0aG9kICE9PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoIkFycmF5LmZyb20gcmVxdWlyZXMgdGhhdCB0aGUgcHJvcGVydHkgb2YgdGhlIGZpcnN0IGFy
Z3VtZW50LCBpdGVtc1tTeW1ib2wuaXRlcmF0b3JdLCB3aGVuIGV4aXN0cywgYmUgYSBmdW5jdGlv
biIpOworCisgICAgICAgIC8vIFRPRE86IE5lZWQgaXNDb25zdHJ1Y3Rvcih0aGlzT2JqKSBpbnN0
ZWFkIG9mIHR5cGVvZiAiZnVuY3Rpb24iIGNoZWNrLgorICAgICAgICB2YXIgcmVzdWx0ID0gKHR5
cGVvZiB0aGlzT2JqID09PSAiZnVuY3Rpb24iKSA/IEBPYmplY3QobmV3IHRoaXNPYmooKSkgOiBb
XTsKKworICAgICAgICB2YXIgayA9IDA7CisgICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9y
TWV0aG9kLkBjYWxsKGl0ZW1zKTsKKworICAgICAgICAvLyBTaW5jZSBmb3Itb2YgbG9vcCBvbmNl
IG1vcmUgbG9va3MgdXAgdGhlIEBAaXRlcmF0b3IgcHJvcGVydHkgb2YgYSBnaXZlbiBpdGVyYWJs
ZSwKKyAgICAgICAgLy8gaXQgY291bGQgYmUgb2JzZXJ2YWJsZSBpZiB0aGUgdXNlciBkZWZpbmVz
IGEgZ2V0dGVyIGZvciBAQGl0ZXJhdG9yLgorICAgICAgICAvLyBUbyBhdm9pZCB0aGlzIHNpdHVh
dGlvbiwgd2UgZGVmaW5lIGEgd3JhcHBlciBvYmplY3QgdGhhdCBAQGl0ZXJhdG9yIGp1c3QgcmV0
dXJucyBhIGdpdmVuIGl0ZXJhdG9yLgorICAgICAgICB2YXIgd3JhcHBlciA9IHsKKyAgICAgICAg
ICAgIFtAc3ltYm9sSXRlcmF0b3JdKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRv
cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBmb3IgKHZhciB2YWx1ZSBv
ZiB3cmFwcGVyKSB7CisgICAgICAgICAgICBpZiAobWFwRm4pCisgICAgICAgICAgICAgICAgQHB1
dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywgdGhpc0FyZyA9PT0gdW5kZWZpbmVkID8gbWFwRm4odmFs
dWUsIGspIDogbWFwRm4uQGNhbGwodGhpc0FyZywgdmFsdWUsIGspKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB2YWx1ZSk7Cisg
ICAgICAgICAgICBrICs9IDE7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQubGVuZ3RoID0g
azsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgYXJyYXlMaWtlID0g
QE9iamVjdChpdGVtcyk7CisgICAgdmFyIGFycmF5TGlrZUxlbmd0aCA9IEB0b0xlbmd0aChhcnJh
eUxpa2UubGVuZ3RoKTsKKworICAgIC8vIFRPRE86IE5lZWQgaXNDb25zdHJ1Y3Rvcih0aGlzT2Jq
KSBpbnN0ZWFkIG9mIHR5cGVvZiAiZnVuY3Rpb24iIGNoZWNrLgorICAgIHZhciByZXN1bHQgPSAo
dHlwZW9mIHRoaXNPYmogPT09ICJmdW5jdGlvbiIpID8gQE9iamVjdChuZXcgdGhpc09iaihhcnJh
eUxpa2VMZW5ndGgpKSA6IG5ldyBAQXJyYXkoYXJyYXlMaWtlTGVuZ3RoKTsKKworICAgIHZhciBr
ID0gMDsKKyAgICB3aGlsZSAoayA8IGFycmF5TGlrZUxlbmd0aCkgeworICAgICAgICB2YXIgdmFs
dWUgPSBhcnJheUxpa2Vba107CisgICAgICAgIGlmIChtYXBGbikKKyAgICAgICAgICAgIEBwdXRC
eVZhbERpcmVjdChyZXN1bHQsIGssIHRoaXNBcmcgPT09IHVuZGVmaW5lZCA/IG1hcEZuKHZhbHVl
LCBrKSA6IG1hcEZuLkBjYWxsKHRoaXNBcmcsIHZhbHVlLCBrKSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHZhbHVlKTsKKyAgICAgICAgayAr
PSAxOworICAgIH0KKworICAgIHJlc3VsdC5sZW5ndGggPSBhcnJheUxpa2VMZW5ndGg7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1TZXBh
cmF0ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0ph
dmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1TZXBhcmF0ZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
ZThjMWI0NDk2Y2M1NDRmNDA3NzM5NTA0MmNmZDI0ZThhMzk0NjYxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlw
dENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFyYXRlLmpzCkBAIC0wLDAgKzEsMTEwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rpb24gb2Yo
LyogaXRlbXMuLi4gKi8pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIGxlbmd0aCA9
IGFyZ3VtZW50cy5sZW5ndGg7CisgICAgLy8gVE9ETzogTmVlZCBpc0NvbnN0cnVjdG9yKHRoaXMp
IGluc3RlYWQgb2YgdHlwZW9mICJmdW5jdGlvbiIgY2hlY2suCisgICAgdmFyIGFycmF5ID0gdHlw
ZW9mIHRoaXMgPT09ICdmdW5jdGlvbicgPyBuZXcgdGhpcyhsZW5ndGgpIDogbmV3IEBBcnJheShs
ZW5ndGgpOworICAgIGZvciAodmFyIGsgPSAwOyBrIDwgbGVuZ3RoOyArK2spCisgICAgICAgIEBw
dXRCeVZhbERpcmVjdChhcnJheSwgaywgYXJndW1lbnRzW2tdKTsKKyAgICBhcnJheS5sZW5ndGgg
PSBsZW5ndGg7CisgICAgcmV0dXJuIGFycmF5OworfQorCitmdW5jdGlvbiBmcm9tKGl0ZW1zIC8q
LCBtYXBGbiwgdGhpc0FyZyAqLykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgdGhp
c09iaiA9IHRoaXM7CisKKyAgICB2YXIgbWFwRm4gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFy
Z3VtZW50c1sxXSA6IHVuZGVmaW5lZDsKKworICAgIHZhciB0aGlzQXJnOworCisgICAgaWYgKG1h
cEZuICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgaWYgKHR5cGVvZiBtYXBGbiAhPT0gImZ1bmN0
aW9uIikKKyAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5mcm9tIHJlcXVp
cmVzIHRoYXQgdGhlIHNlY29uZCBhcmd1bWVudCwgd2hlbiBwcm92aWRlZCwgYmUgYSBmdW5jdGlv
biIpOworCisgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMikKKyAgICAgICAgICAgIHRo
aXNBcmcgPSBhcmd1bWVudHNbMl07CisgICAgfQorCisgICAgaWYgKGl0ZW1zID09IG51bGwpCisg
ICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5mcm9tIHJlcXVpcmVzIGFuIGFycmF5
LWxpa2Ugb2JqZWN0IC0gbm90IG51bGwgb3IgdW5kZWZpbmVkIik7CisKKyAgICB2YXIgaXRlcmF0
b3JNZXRob2QgPSBpdGVtc1tAc3ltYm9sSXRlcmF0b3JdOworICAgIGlmIChpdGVyYXRvck1ldGhv
ZCAhPSBudWxsKSB7CisgICAgICAgIGlmICh0eXBlb2YgaXRlcmF0b3JNZXRob2QgIT09ICJmdW5j
dGlvbiIpCisgICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkuZnJvbSByZXF1
aXJlcyB0aGF0IHRoZSBwcm9wZXJ0eSBvZiB0aGUgZmlyc3QgYXJndW1lbnQsIGl0ZW1zW1N5bWJv
bC5pdGVyYXRvcl0sIHdoZW4gZXhpc3RzLCBiZSBhIGZ1bmN0aW9uIik7CisKKyAgICAgICAgLy8g
VE9ETzogTmVlZCBpc0NvbnN0cnVjdG9yKHRoaXNPYmopIGluc3RlYWQgb2YgdHlwZW9mICJmdW5j
dGlvbiIgY2hlY2suCisgICAgICAgIHZhciByZXN1bHQgPSAodHlwZW9mIHRoaXNPYmogPT09ICJm
dW5jdGlvbiIpID8gQE9iamVjdChuZXcgdGhpc09iaigpKSA6IFtdOworCisgICAgICAgIHZhciBr
ID0gMDsKKyAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JNZXRob2QuQGNhbGwoaXRlbXMp
OworCisgICAgICAgIC8vIFNpbmNlIGZvci1vZiBsb29wIG9uY2UgbW9yZSBsb29rcyB1cCB0aGUg
QEBpdGVyYXRvciBwcm9wZXJ0eSBvZiBhIGdpdmVuIGl0ZXJhYmxlLAorICAgICAgICAvLyBpdCBj
b3VsZCBiZSBvYnNlcnZhYmxlIGlmIHRoZSB1c2VyIGRlZmluZXMgYSBnZXR0ZXIgZm9yIEBAaXRl
cmF0b3IuCisgICAgICAgIC8vIFRvIGF2b2lkIHRoaXMgc2l0dWF0aW9uLCB3ZSBkZWZpbmUgYSB3
cmFwcGVyIG9iamVjdCB0aGF0IEBAaXRlcmF0b3IganVzdCByZXR1cm5zIGEgZ2l2ZW4gaXRlcmF0
b3IuCisgICAgICAgIHZhciB3cmFwcGVyID0geworICAgICAgICAgICAgW0BzeW1ib2xJdGVyYXRv
cl0oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yOworICAgICAgICAgICAgfQor
ICAgICAgICB9OworCisgICAgICAgIGZvciAodmFyIHZhbHVlIG9mIHdyYXBwZXIpIHsKKyAgICAg
ICAgICAgIGlmIChtYXBGbikKKyAgICAgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0
LCBrLCB0aGlzQXJnID09PSB1bmRlZmluZWQgPyBtYXBGbih2YWx1ZSwgaykgOiBtYXBGbi5AY2Fs
bCh0aGlzQXJnLCB2YWx1ZSwgaykpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHZhbHVlKTsKKyAgICAgICAgICAgIGsgKz0gMTsK
KyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdC5sZW5ndGggPSBrOworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKworICAgIHZhciBhcnJheUxpa2UgPSBAT2JqZWN0KGl0ZW1zKTsKKyAg
ICB2YXIgYXJyYXlMaWtlTGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5TGlrZS5sZW5ndGgpOworCisg
ICAgLy8gVE9ETzogTmVlZCBpc0NvbnN0cnVjdG9yKHRoaXNPYmopIGluc3RlYWQgb2YgdHlwZW9m
ICJmdW5jdGlvbiIgY2hlY2suCisgICAgdmFyIHJlc3VsdCA9ICh0eXBlb2YgdGhpc09iaiA9PT0g
ImZ1bmN0aW9uIikgPyBAT2JqZWN0KG5ldyB0aGlzT2JqKGFycmF5TGlrZUxlbmd0aCkpIDogbmV3
IEBBcnJheShhcnJheUxpa2VMZW5ndGgpOworCisgICAgdmFyIGsgPSAwOworICAgIHdoaWxlIChr
IDwgYXJyYXlMaWtlTGVuZ3RoKSB7CisgICAgICAgIHZhciB2YWx1ZSA9IGFycmF5TGlrZVtrXTsK
KyAgICAgICAgaWYgKG1hcEZuKQorICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwg
aywgdGhpc0FyZyA9PT0gdW5kZWZpbmVkID8gbWFwRm4odmFsdWUsIGspIDogbWFwRm4uQGNhbGwo
dGhpc0FyZywgdmFsdWUsIGspKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQHB1dEJ5VmFs
RGlyZWN0KHJlc3VsdCwgaywgdmFsdWUpOworICAgICAgICBrICs9IDE7CisgICAgfQorCisgICAg
cmVzdWx0Lmxlbmd0aCA9IGFycmF5TGlrZUxlbmd0aDsKKyAgICByZXR1cm4gcmVzdWx0OworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
V2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDY4ODdlN2VkY2FkNmIyYTg3ZWY1ZTc4MjlkMjkzY2VmMDFlMzcyMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1
aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMKQEAgLTAsMCArMSw2NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIEBvcHRp
b25hbD1TVFJFQU1TX0FQSQorCitmdW5jdGlvbiBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKHN0cmVh
bSkKK3sKKyAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiAhIXN0cmVhbS5AcmVhZGVyOwor
fQorCisKK2Z1bmN0aW9uIGNhbmNlbFJlYWRhYmxlU3RyZWFtKHN0cmVhbSwgcmVhc29uKQorewor
ICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVT
dHJlYW1DbG9zZWQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAgICBpZiAo
c3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZCkKKyAgICAgICAgcmV0dXJu
IFByb21pc2UucmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpOworICAgIHN0cmVhbS5AcXVldWUg
PSBbXTsKKyAgICBAZmluaXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7CisgICAgcmV0
dXJuIEBwcm9taXNlSW52b2tlT3JOb29wKHN0cmVhbS5AdW5kZXJseWluZ1NvdXJjZSwgImNhbmNl
bCIsIFtyZWFzb25dKS50aGVuKGZ1bmN0aW9uKCkgeyB9KTsKK30KKworCitmdW5jdGlvbiBwcm9t
aXNlSW52b2tlT3JOb29wKG9iamVjdCwga2V5LCBhcmdzKQoreworICAgICJ1c2Ugc3RyaWN0IjsK
KworICAgIHRyeSB7CisgICAgICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTsKKyAgICAgICAg
aWYgKHR5cGVvZiBtZXRob2QgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgcmV0dXJuIFBy
b21pc2UucmVzb2x2ZSgpOworICAgICAgICB2YXIgcmVzdWx0ID0gbWV0aG9kLkBhcHBseShvYmpl
Y3QsIGFyZ3MpOworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7CisgICAg
fQorICAgIGNhdGNoKGVycm9yKSB7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJv
cik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
dGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1H
dWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmNWU3YjNiODQx
ZDUxMGEyOWY1NzZmOTQzNjA5OWU4ZTI3NjI2NTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUd1YXJkZWRJbnRl
cm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIEBvcHRpb25hbD1TVFJFQU1TX0FQSQor
Ly8gQGludGVybmFsCisKK2Z1bmN0aW9uIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQoc3RyZWFtKQor
eworICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuICEhc3RyZWFtLkByZWFkZXI7Cit9CisK
KworZnVuY3Rpb24gY2FuY2VsUmVhZGFibGVTdHJlYW0oc3RyZWFtLCByZWFzb24pCit7CisgICAg
InVzZSBzdHJpY3QiOworCisgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVh
bUNsb3NlZCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgIGlmIChzdHJl
YW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKQorICAgICAgICByZXR1cm4gUHJv
bWlzZS5yZWplY3Qoc3RyZWFtLkBzdG9yZWRFcnJvcik7CisgICAgc3RyZWFtLkBxdWV1ZSA9IFtd
OworICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTsKKyAgICByZXR1cm4g
QHByb21pc2VJbnZva2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCAiY2FuY2VsIiwg
W3JlYXNvbl0pLnRoZW4oZnVuY3Rpb24oKSB7IH0pOworfQorCisKK2Z1bmN0aW9uIHByb21pc2VJ
bnZva2VPck5vb3Aob2JqZWN0LCBrZXksIGFyZ3MpCit7CisgICAgInVzZSBzdHJpY3QiOworCisg
ICAgdHJ5IHsKKyAgICAgICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldOworICAgICAgICBpZiAo
dHlwZW9mIG1ldGhvZCA9PT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICByZXR1cm4gUHJvbWlz
ZS5yZXNvbHZlKCk7CisgICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9iamVjdCwg
YXJncyk7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTsKKyAgICB9Cisg
ICAgY2F0Y2goZXJyb3IpIHsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTsK
KyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0
cy9idWlsdGlucy9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLVVuZ3VhcmRlZEJ1
aWx0aW4tU2VwYXJhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWJkYzhkM2I3ZTliZTI5ODBhZmRkNmI2MTM4
YzA0ODhmZWIyNmEwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5q
cwpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbUxvY2tlZChzdHJlYW0pCit7CisgICAi
dXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjsKK30KKworCitmdW5j
dGlvbiBjYW5jZWxSZWFkYWJsZVN0cmVhbShzdHJlYW0sIHJlYXNvbikKK3sKKyAgICAidXNlIHN0
cmljdCI7CisKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xvc2Vk
KQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgaWYgKHN0cmVhbS5Ac3Rh
dGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJl
amVjdChzdHJlYW0uQHN0b3JlZEVycm9yKTsKKyAgICBzdHJlYW0uQHF1ZXVlID0gW107CisgICAg
QGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pOworICAgIHJldHVybiBAcHJvbWlz
ZUludm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsICJjYW5jZWwiLCBbcmVhc29u
XSkudGhlbihmdW5jdGlvbigpIHsgfSk7Cit9CisKKworZnVuY3Rpb24gcHJvbWlzZUludm9rZU9y
Tm9vcChvYmplY3QsIGtleSwgYXJncykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB0cnkg
eworICAgICAgICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07CisgICAgICAgIGlmICh0eXBlb2Yg
bWV0aG9kID09PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29s
dmUoKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBhcmdzKTsK
KyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpOworICAgIH0KKyAgICBjYXRj
aChlcnJvcikgeworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpOworICAgIH0K
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kZTM5M2JjNTk4MTQyODI4N2UwZjA0MzE5ZGI2ZTQyMDJiNTVlMjY4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMv
YnVpbHRpbnMvV2ViQ29yZS14bWxDYXNpbmdUZXN0LVNlcGFyYXRlLmpzCkBAIC0wLDAgKzEsNjUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBAb3B0
aW9uYWw9U1RSRUFNU19BUEkKKy8vIEBpbnRlcm5hbAorCitmdW5jdGlvbiB4bWxDYXNpbmdUZXN0
KHN0cmVhbSkKK3sKKyAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiAhIXN0cmVhbS5AcmVh
ZGVyOworfQorCisKK2Z1bmN0aW9uIGNzc0Nhc2luZ1Rlc3Qoc3RyZWFtLCByZWFzb24pCit7Cisg
ICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0
cmVhbUNsb3NlZCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgIGlmIChz
dHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKQorICAgICAgICByZXR1cm4g
UHJvbWlzZS5yZWplY3Qoc3RyZWFtLkBzdG9yZWRFcnJvcik7CisgICAgc3RyZWFtLkBxdWV1ZSA9
IFtdOworICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTsKKyAgICByZXR1
cm4gQHByb21pc2VJbnZva2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCAiY2FuY2Vs
IiwgW3JlYXNvbl0pLnRoZW4oZnVuY3Rpb24oKSB7IH0pOworfQorCisKK2Z1bmN0aW9uIHVybENh
c2luZ1Rlc3Qob2JqZWN0LCBrZXksIGFyZ3MpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAg
dHJ5IHsKKyAgICAgICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldOworICAgICAgICBpZiAodHlw
ZW9mIG1ldGhvZCA9PT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5y
ZXNvbHZlKCk7CisgICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9iamVjdCwgYXJn
cyk7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTsKKyAgICB9CisgICAg
Y2F0Y2goZXJyb3IpIHsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTsKKyAg
ICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtQ29tYmluZWQu
anMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
ZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzLXJlc3Vs
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43MzJhOGM4OWY1YWE1ZDZjOTUyM2RhMGU2NDgwMTFmNWJlOTg4ZGJmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpz
LXJlc3VsdApAQCAtMCwwICsxLDE2OCBAQAorIyMjIEJlZ2luIEZpbGU6IEpTQ0J1aWx0aW5zLmgK
Ky8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPi4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQg
aXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8g
YnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2Vu
ZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lmbmRlZiBKU0NCdWlsdGluc19oCisjZGVmaW5lIEpT
Q0J1aWx0aW5zX2gKKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7
CitjbGFzcyBWTTsKKworZW51bSBjbGFzcyBDb25zdHJ1Y3RBYmlsaXR5IDogdW5zaWduZWQ7Cit9
CisKK25hbWVzcGFjZSBKU0MgeworCisvKiBCdWlsdGluLlByb21pc2UgKi8KK2V4dGVybiBjb25z
dCBjaGFyKiBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNvZGU7CitleHRlcm4gY29uc3Qg
aW50IHNfYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNlQ29kZUxlbmd0aDsKK2V4dGVybiBjb25z
dCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvbWlzZVJlamVjdFByb21pc2VDb2Rl
Q29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm9taXNlRnVs
ZmlsbFByb21pc2VDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2J1aWx0aW5Qcm9taXNlRnVsZmls
bFByb21pc2VDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBz
X2J1aWx0aW5Qcm9taXNlRnVsZmlsbFByb21pc2VDb2RlQ29uc3RydWN0QWJpbGl0eTsKKworI2Rl
ZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOUFJPTUlTRV9CVUlMVElOX0RBVEEobWFjcm8pIFwKKyAg
ICBtYWNybyhyZWplY3RQcm9taXNlLCBidWlsdGluUHJvbWlzZVJlamVjdFByb21pc2UsIDIpIFwK
KyAgICBtYWNybyhmdWxmaWxsUHJvbWlzZSwgYnVpbHRpblByb21pc2VGdWxmaWxsUHJvbWlzZSwg
MikgXAorCisjZGVmaW5lIEpTQ19CVUlMVElOX0JVSUxUSU5QUk9NSVNFX1JFSkVDVFBST01JU0Ug
MQorI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOUFJPTUlTRV9GVUxGSUxMUFJPTUlTRSAxCisK
KyNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKG1hY3JvKSBcCisgICAgbWFjcm8oYnVp
bHRpblByb21pc2VSZWplY3RQcm9taXNlQ29kZSwgcmVqZWN0UHJvbWlzZSwgc19idWlsdGluUHJv
bWlzZVJlamVjdFByb21pc2VDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8oYnVpbHRpblByb21pc2VG
dWxmaWxsUHJvbWlzZUNvZGUsIGZ1bGZpbGxQcm9taXNlLCBzX2J1aWx0aW5Qcm9taXNlRnVsZmls
bFByb21pc2VDb2RlTGVuZ3RoKSBcCisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5D
VElPTl9OQU1FKG1hY3JvKSBcCisgICAgbWFjcm8oZnVsZmlsbFByb21pc2UpIFwKKyAgICBtYWNy
byhyZWplY3RQcm9taXNlKSBcCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihj
b2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCisgICAgSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCitKU0NfRk9SRUFD
SF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUNMQVJF
X0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fRVhJU1RTKG9iamVjdCwg
ZnVuYykgZGVmaW5lZCBKU0NfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVuYworCit9IC8v
IG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTQ0J1aWx0aW5zX2gKKworIyMjIEVuZCBGaWxl
OiBKU0NCdWlsdGlucy5oCisKKyMjIyBCZWdpbiBGaWxlOiBKU0NCdWlsdGlucy5jcHAKKy8qCisg
KiBDb3B5cmlnaHQgKGMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29t
Pi4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0
b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRp
bnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUt
anMtYnVpbHRpbnMucHkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQ0J1aWx0
aW5zLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJFeGVj
dXRhYmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGlu
UHJvbWlzZVJlamVjdFByb21pc2VDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0
QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfYnVpbHRpblByb21pc2VSZWpl
Y3RQcm9taXNlQ29kZUxlbmd0aCA9IDQxMzsKK2NvbnN0IGNoYXIqIHNfYnVpbHRpblByb21pc2VS
ZWplY3RQcm9taXNlQ29kZSA9CisgICAgIihmdW5jdGlvbiAocHJvbWlzZSwgcmVhc29uKVxuIiBc
CisgICAgIntcbiIgXAorICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwK
KyAgICAiICAgIHZhciByZWFjdGlvbnMgPSBwcm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25z
O1xuIiBcCisgICAgIiAgICBwcm9taXNlLkBwcm9taXNlUmVzdWx0ID0gcmVhc29uO1xuIiBcCisg
ICAgIiAgICBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucyA9IHVuZGVmaW5lZDtcbiIg
XAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucyA9IHVuZGVmaW5lZDtc
biIgXAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVN0YXRlID0gQHByb21pc2VSZWplY3RlZDtc
biIgXAorICAgICJcbiIgXAorICAgICIgICAgQEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5wcm9t
aXNlUmVqZWN0ZWQocHJvbWlzZSwgcmVhc29uLCByZWFjdGlvbnMpO1xuIiBcCisgICAgIlxuIiBc
CisgICAgIiAgICBAdHJpZ2dlclByb21pc2VSZWFjdGlvbnMocmVhY3Rpb25zLCByZWFzb24pO1xu
IiBcCisgICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVp
bHRpblByb21pc2VGdWxmaWxsUHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25z
dHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19idWlsdGluUHJvbWlz
ZUZ1bGZpbGxQcm9taXNlQ29kZUxlbmd0aCA9IDQxMjsKK2NvbnN0IGNoYXIqIHNfYnVpbHRpblBy
b21pc2VGdWxmaWxsUHJvbWlzZUNvZGUgPQorICAgICIoZnVuY3Rpb24gKHByb21pc2UsIHZhbHVl
KVxuIiBcCisgICAgIntcbiIgXAorICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAi
XG4iIFwKKyAgICAiICAgIHZhciByZWFjdGlvbnMgPSBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJl
YWN0aW9ucztcbiIgXAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlc3VsdCA9IHZhbHVlO1xu
IiBcCisgICAgIiAgICBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucyA9IHVuZGVmaW5l
ZDtcbiIgXAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucyA9IHVuZGVm
aW5lZDtcbiIgXAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVN0YXRlID0gQHByb21pc2VGdWxm
aWxsZWQ7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIEBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24ucHJvbWlzZUZ1bGZpbGxlZChwcm9taXNlLCB2YWx1ZSwgcmVhY3Rpb25zKTtcbiIgXAorICAg
ICJcbiIgXAorICAgICIgICAgQHRyaWdnZXJQcm9taXNlUmVhY3Rpb25zKHJlYWN0aW9ucywgdmFs
dWUpO1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0dF
TkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCitKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAore1wK
KyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxl
KCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkp
OyB9CitKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQor
I3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgorCisKK30gLy8gbmFtZXNwYWNlIEpTQwor
IyMjIEVuZCBGaWxlOiBKU0NCdWlsdGlucy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1
aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlBy
b21pc2UtU2VwYXJhdGUuanMtcmVzdWx0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyN2JhMjRjNWNjMjllNWUyOWIx
ZGI5ZjU0NjI1ZmUwZjI5NTE4MjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWls
dGluLlByb21pc2UtU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0wLDAgKzEsMTY3IEBACisjIyMgQmVn
aW4gRmlsZTogQnVpbHRpblByb21pc2VCdWlsdGlucy5oCisvKgorICogQ29weXJpZ2h0IChjKSAy
MDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKiAKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAq
LworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJh
dGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisK
KyNpZm5kZWYgQnVpbHRpblByb21pc2VCdWlsdGluc19oCisjZGVmaW5lIEJ1aWx0aW5Qcm9taXNl
QnVpbHRpbnNfaAorCisKKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFi
bGU7Cit9CisKK25hbWVzcGFjZSBKU0MgeworCisvKiBCdWlsdGluLlByb21pc2UgKi8KK2V4dGVy
biBjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNvZGU7CitleHRlcm4g
Y29uc3QgaW50IHNfYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNlQ29kZUxlbmd0aDsKK2V4dGVy
biBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvbWlzZVJlamVjdFByb21p
c2VDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm9t
aXNlRnVsZmlsbFByb21pc2VDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2J1aWx0aW5Qcm9taXNl
RnVsZmlsbFByb21pc2VDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJp
bGl0eSBzX2J1aWx0aW5Qcm9taXNlRnVsZmlsbFByb21pc2VDb2RlQ29uc3RydWN0QWJpbGl0eTsK
KworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOX1BST01JU0VfQlVJTFRJTl9EQVRBKG1hY3Jv
KSBcCisgICAgbWFjcm8ocmVqZWN0UHJvbWlzZSwgYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNl
LCAyKSBcCisgICAgbWFjcm8oZnVsZmlsbFByb21pc2UsIGJ1aWx0aW5Qcm9taXNlRnVsZmlsbFBy
b21pc2UsIDIpIFwKKworI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOX1BST01JU0VfUkVKRUNU
UFJPTUlTRSAxCisjZGVmaW5lIEpTQ19CVUlMVElOX0JVSUxUSU5fUFJPTUlTRV9GVUxGSUxMUFJP
TUlTRSAxCisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTi5QUk9NSVNFX0JVSUxUSU5fQ09E
RShtYWNybykgXAorICAgIG1hY3JvKGJ1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNvZGUsIHJl
amVjdFByb21pc2UsIHNfYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNlQ29kZUxlbmd0aCkgXAor
ICAgIG1hY3JvKGJ1aWx0aW5Qcm9taXNlRnVsZmlsbFByb21pc2VDb2RlLCBmdWxmaWxsUHJvbWlz
ZSwgc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZUxlbmd0aCkgXAorCisjZGVmaW5l
IEpTQ19GT1JFQUNIX0JVSUxUSU4uUFJPTUlTRV9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8p
IFwKKyAgICBtYWNybyhmdWxmaWxsUHJvbWlzZSkgXAorICAgIG1hY3JvKHJlamVjdFByb21pc2Up
IFwKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlv
bk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKKyAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29k
ZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisKK0pTQ19GT1JFQUNIX0JVSUxUSU4uUFJPTUlT
RV9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUNMQVJF
X0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTi5QUk9NSVNF
X0VYSVNUUyhvYmplY3QsIGZ1bmMpIGRlZmluZWQgSlNDX0JVSUxUSU5fICMjIG9iamVjdCAjIyBf
ICMjIGZ1bmMKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBCdWlsdGluUHJvbWlz
ZUJ1aWx0aW5zX2gKKworIyMjIEVuZCBGaWxlOiBCdWlsdGluUHJvbWlzZUJ1aWx0aW5zLmgKKwor
IyMjIEJlZ2luIEZpbGU6IEJ1aWx0aW5Qcm9taXNlQnVpbHRpbnMuY3BwCisvKgorICogQ29weXJp
Z2h0IChjKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKiAK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2Fs
bHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRo
ZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0
aW5zLnB5CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCdWlsdGluUHJvbWlzZUJ1
aWx0aW5zLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJF
eGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWls
dGluUHJvbWlzZVJlamVjdFByb21pc2VDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3Ry
dWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfYnVpbHRpblByb21pc2VS
ZWplY3RQcm9taXNlQ29kZUxlbmd0aCA9IDQxMzsKK2NvbnN0IGNoYXIqIHNfYnVpbHRpblByb21p
c2VSZWplY3RQcm9taXNlQ29kZSA9CisgICAgIihmdW5jdGlvbiAocHJvbWlzZSwgcmVhc29uKVxu
IiBcCisgICAgIntcbiIgXAorICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4i
IFwKKyAgICAiICAgIHZhciByZWFjdGlvbnMgPSBwcm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rp
b25zO1xuIiBcCisgICAgIiAgICBwcm9taXNlLkBwcm9taXNlUmVzdWx0ID0gcmVhc29uO1xuIiBc
CisgICAgIiAgICBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucyA9IHVuZGVmaW5lZDtc
biIgXAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucyA9IHVuZGVmaW5l
ZDtcbiIgXAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVN0YXRlID0gQHByb21pc2VSZWplY3Rl
ZDtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgQEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5w
cm9taXNlUmVqZWN0ZWQocHJvbWlzZSwgcmVhc29uLCByZWFjdGlvbnMpO1xuIiBcCisgICAgIlxu
IiBcCisgICAgIiAgICBAdHJpZ2dlclByb21pc2VSZWFjdGlvbnMocmVhY3Rpb25zLCByZWFzb24p
O1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNf
YnVpbHRpblByb21pc2VGdWxmaWxsUHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpD
b25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19idWlsdGluUHJv
bWlzZUZ1bGZpbGxQcm9taXNlQ29kZUxlbmd0aCA9IDQxMjsKK2NvbnN0IGNoYXIqIHNfYnVpbHRp
blByb21pc2VGdWxmaWxsUHJvbWlzZUNvZGUgPQorICAgICIoZnVuY3Rpb24gKHByb21pc2UsIHZh
bHVlKVxuIiBcCisgICAgIntcbiIgXAorICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAg
ICAiXG4iIFwKKyAgICAiICAgIHZhciByZWFjdGlvbnMgPSBwcm9taXNlLkBwcm9taXNlRnVsZmls
bFJlYWN0aW9ucztcbiIgXAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlc3VsdCA9IHZhbHVl
O1xuIiBcCisgICAgIiAgICBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucyA9IHVuZGVm
aW5lZDtcbiIgXAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucyA9IHVu
ZGVmaW5lZDtcbiIgXAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVN0YXRlID0gQHByb21pc2VG
dWxmaWxsZWQ7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIEBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24ucHJvbWlzZUZ1bGZpbGxlZChwcm9taXNlLCB2YWx1ZSwgcmVhY3Rpb25zKTtcbiIgXAor
ICAgICJcbiIgXAorICAgICIgICAgQHRyaWdnZXJQcm9taXNlUmVhY3Rpb25zKHJlYWN0aW9ucywg
dmFsdWUpO1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworCisjZGVmaW5lIERFRklORV9CVUlMVElO
X0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCitKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAor
e1wKKyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRh
YmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNl
KCkpOyB9CitKU0NfRk9SRUFDSF9CVUlMVElOLlBST01JU0VfQlVJTFRJTl9DT0RFKERFRklORV9C
VUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKyMjIyBFbmQgRmlsZTogQnVpbHRpblByb21pc2VCdWlsdGlucy5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpz
LXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4
cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzLXJlc3Vs
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45NGY2N2M1YWMwMWRkYTNkYmY5YjFkOWU3Nzk4MzlmZDc4NjNjNmI1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQu
anMtcmVzdWx0CkBAIC0wLDAgKzEsMTkyIEBACisjIyMgQmVnaW4gRmlsZTogSlNDQnVpbHRpbnMu
aAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPi4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklM
RS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZv
cgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lmbmRlZiBKU0NCdWlsdGluc19oCisjZGVm
aW5lIEpTQ0J1aWx0aW5zX2gKKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1
dGFibGU7CitjbGFzcyBWTTsKKworZW51bSBjbGFzcyBDb25zdHJ1Y3RBYmlsaXR5IDogdW5zaWdu
ZWQ7Cit9CisKK25hbWVzcGFjZSBKU0MgeworCisvKiBCdWlsdGluLnByb3RvdHlwZSAqLworZXh0
ZXJuIGNvbnN0IGNoYXIqIHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZTsKK2V4dGVybiBjb25z
dCBpbnQgc19idWlsdGluUHJvdG90eXBlRXZlcnlDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpT
Qzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGVDb25zdHJ1Y3RB
YmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfYnVpbHRpblByb3RvdHlwZUZvckVhY2hDb2Rl
OworZXh0ZXJuIGNvbnN0IGludCBzX2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZUxlbmd0aDsK
K2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvdG90eXBlRm9y
RWFjaENvZGVDb25zdHJ1Y3RBYmlsaXR5OworCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5Q
Uk9UT1RZUEVfQlVJTFRJTl9EQVRBKG1hY3JvKSBcCisgICAgbWFjcm8oZXZlcnksIGJ1aWx0aW5Q
cm90b3R5cGVFdmVyeSwgMSkgXAorICAgIG1hY3JvKGZvckVhY2gsIGJ1aWx0aW5Qcm90b3R5cGVG
b3JFYWNoLCAxKSBcCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTlBST1RPVFlQRV9FVkVS
WSAxCisjZGVmaW5lIEpTQ19CVUlMVElOX0JVSUxUSU5QUk9UT1RZUEVfRk9SRUFDSCAxCisKKyNk
ZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKG1hY3JvKSBcCisgICAgbWFjcm8oYnVpbHRp
blByb3RvdHlwZUV2ZXJ5Q29kZSwgZXZlcnksIHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZUxl
bmd0aCkgXAorICAgIG1hY3JvKGJ1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZSwgZm9yRWFjaCwg
c19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGVMZW5ndGgpIFwKKworI2RlZmluZSBKU0NfRk9S
RUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFwKKyAgICBtYWNybyhldmVyeSkgXAor
ICAgIG1hY3JvKGZvckVhY2gpIFwKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9S
KGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKKyAgICBKU0M6OkZ1bmN0
aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisKK0pTQ19GT1JF
QUNIX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xB
UkVfQlVJTFRJTl9HRU5FUkFUT1IKKworI2RlZmluZSBKU0NfQlVJTFRJTl9FWElTVFMob2JqZWN0
LCBmdW5jKSBkZWZpbmVkIEpTQ19CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNDQnVpbHRpbnNfaAorCisjIyMgRW5kIEZp
bGU6IEpTQ0J1aWx0aW5zLmgKKworIyMjIEJlZ2luIEZpbGU6IEpTQ0J1aWx0aW5zLmNwcAorLyoK
KyAqIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPi4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQg
aXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8g
YnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2Vu
ZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpT
Q0J1aWx0aW5zLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRl
ICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlZN
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19i
dWlsdGluUHJvdG90eXBlRXZlcnlDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0
QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfYnVpbHRpblByb3RvdHlwZUV2
ZXJ5Q29kZUxlbmd0aCA9IDc2MjsKK2NvbnN0IGNoYXIqIHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5
Q29kZSA9CisgICAgIihmdW5jdGlvbiAoY2FsbGJhY2sgKVxuIiBcCisgICAgIntcbiIgXAorICAg
ICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIGlmICh0aGlz
ID09PSBudWxsKVxuIiBcCisgICAgIiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJh
eS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGxcIik7XG4i
IFwKKyAgICAiICAgIFxuIiBcCisgICAgIiAgICBpZiAodGhpcyA9PT0gdW5kZWZpbmVkKVxuIiBc
CisgICAgIiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5wcm90b3R5cGUuZXZl
cnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZFwiKTtcbiIgXAorICAgICIg
ICAgXG4iIFwKKyAgICAiICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7XG4iIFwKKyAgICAi
ICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTtcbiIgXAorICAgICJcbiIg
XAorICAgICIgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gXCJmdW5jdGlvblwiKVxuIiBcCisg
ICAgIiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5wcm90b3R5cGUuZXZlcnkg
Y2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uXCIpO1xuIiBcCisgICAgIiAgICBcbiIgXAorICAg
ICIgICAgdmFyIHRoaXNBcmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6
IHVuZGVmaW5lZDtcbiIgXAorICAgICIgICAgXG4iIFwKKyAgICAiICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbGVuZ3RoOyBpKyspIHtcbiIgXAorICAgICIgICAgICAgIGlmICghKGkgaW4gYXJyYXkp
KVxuIiBcCisgICAgIiAgICAgICAgICAgIGNvbnRpbnVlO1xuIiBcCisgICAgIiAgICAgICAgaWYg
KCFjYWxsYmFjay5AY2FsbCh0aGlzQXJnLCBhcnJheVtpXSwgaSwgYXJyYXkpKVxuIiBcCisgICAg
IiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiIgXAorICAgICIgICAgfVxuIiBcCisgICAgIiAg
ICBcbiIgXAorICAgICIgICAgcmV0dXJuIHRydWU7XG4iIFwKKyAgICAifSlcbiIgXAorOworCitj
b25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGVD
b25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7
Citjb25zdCBpbnQgc19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGVMZW5ndGggPSA2OTQ7Citj
b25zdCBjaGFyKiBzX2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZSA9CisgICAgIihmdW5jdGlv
biAoY2FsbGJhY2sgKVxuIiBcCisgICAgIntcbiIgXAorICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7
XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIGlmICh0aGlzID09PSBudWxsKVxuIiBcCisgICAg
IiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCBy
ZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbFwiKTtcbiIgXAorICAgICIgICAgXG4iIFwK
KyAgICAiICAgIGlmICh0aGlzID09PSB1bmRlZmluZWQpXG4iIFwKKyAgICAiICAgICAgICB0aHJv
dyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LnByb3RvdHlwZS5mb3JFYWNoIHJlcXVpcmVzIHRoYXQg
fHRoaXN8IG5vdCBiZSB1bmRlZmluZWRcIik7XG4iIFwKKyAgICAiICAgIFxuIiBcCisgICAgIiAg
ICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMpO1xuIiBcCisgICAgIiAgICB2YXIgbGVuZ3RoID0g
QHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIGlmICh0
eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rpb25cIilcbiIgXAorICAgICIgICAgICAgIHRocm93
IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkucHJvdG90eXBlLmZvckVhY2ggY2FsbGJhY2sgbXVzdCBi
ZSBhIGZ1bmN0aW9uXCIpO1xuIiBcCisgICAgIiAgICBcbiIgXAorICAgICIgICAgdmFyIHRoaXNB
cmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiIg
XAorICAgICIgICAgXG4iIFwKKyAgICAiICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBp
KyspIHtcbiIgXAorICAgICIgICAgICAgIGlmIChpIGluIGFycmF5KVxuIiBcCisgICAgIiAgICAg
ICAgICAgIGNhbGxiYWNrLkBjYWxsKHRoaXNBcmcsIGFycmF5W2ldLCBpLCBhcnJheSk7XG4iIFwK
KyAgICAiICAgIH1cbiIgXAorICAgICJ9KVxuIiBcCis7CisKKworI2RlZmluZSBERUZJTkVfQlVJ
TFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAor
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0p
IFwKK3tcCisgICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhl
Y3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1Nv
dXJjZSgpKTsgfQorSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVS
QVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKyMjIyBFbmQgRmlsZTogSlNDQnVpbHRpbnMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0
Q29yZS1CdWlsdGluLnByb3RvdHlwZS1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1C
dWlsdGluLnByb3RvdHlwZS1TZXBhcmF0ZS5qcy1yZXN1bHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjkzODNmNGY3
YWFmOTBjYzgxNGQ0MTE4ZGQyY2ZjYzRmN2Q4NmU2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3Jp
cHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMCwwICsxLDE5
MSBAQAorIyMjIEJlZ2luIEZpbGU6IEJ1aWx0aW5Qcm90b3R5cGVCdWlsdGlucy5oCisvKgorICog
Q29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoYykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+LgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBh
dXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWls
dGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0
ZS1qcy1idWlsdGlucy5weQorCisjaWZuZGVmIEJ1aWx0aW5Qcm90b3R5cGVCdWlsdGluc19oCisj
ZGVmaW5lIEJ1aWx0aW5Qcm90b3R5cGVCdWlsdGluc19oCisKKworCituYW1lc3BhY2UgSlNDIHsK
K2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK30KKworbmFtZXNwYWNlIEpTQyB7CisKKy8qIEJ1
aWx0aW4ucHJvdG90eXBlICovCitleHRlcm4gY29uc3QgY2hhciogc19idWlsdGluUHJvdG90eXBl
RXZlcnlDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGVM
ZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb3Rv
dHlwZUV2ZXJ5Q29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19idWls
dGluUHJvdG90eXBlRm9yRWFjaENvZGU7CitleHRlcm4gY29uc3QgaW50IHNfYnVpbHRpblByb3Rv
dHlwZUZvckVhY2hDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0
eSBzX2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZUNvbnN0cnVjdEFiaWxpdHk7CisKKyNkZWZp
bmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9QUk9UT1RZUEVfQlVJTFRJTl9EQVRBKG1hY3JvKSBcCisg
ICAgbWFjcm8oZXZlcnksIGJ1aWx0aW5Qcm90b3R5cGVFdmVyeSwgMSkgXAorICAgIG1hY3JvKGZv
ckVhY2gsIGJ1aWx0aW5Qcm90b3R5cGVGb3JFYWNoLCAxKSBcCisKKyNkZWZpbmUgSlNDX0JVSUxU
SU5fQlVJTFRJTl9QUk9UT1RZUEVfRVZFUlkgMQorI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElO
X1BST1RPVFlQRV9GT1JFQUNIIDEKKworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOLlBST1RP
VFlQRV9CVUlMVElOX0NPREUobWFjcm8pIFwKKyAgICBtYWNybyhidWlsdGluUHJvdG90eXBlRXZl
cnlDb2RlLCBldmVyeSwgc19idWlsdGluUHJvdG90eXBlRXZlcnlDb2RlTGVuZ3RoKSBcCisgICAg
bWFjcm8oYnVpbHRpblByb3RvdHlwZUZvckVhY2hDb2RlLCBmb3JFYWNoLCBzX2J1aWx0aW5Qcm90
b3R5cGVGb3JFYWNoQ29kZUxlbmd0aCkgXAorCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU4u
UFJPVE9UWVBFX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXAorICAgIG1hY3JvKGV2ZXJ5
KSBcCisgICAgbWFjcm8oZm9yRWFjaCkgXAorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5F
UkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorICAgIEpTQzo6
RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKworSlND
X0ZPUkVBQ0hfQlVJTFRJTi5QUk9UT1RZUEVfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9H
RU5FUkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIEpT
Q19CVUlMVElOX0JVSUxUSU4uUFJPVE9UWVBFX0VYSVNUUyhvYmplY3QsIGZ1bmMpIGRlZmluZWQg
SlNDX0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMKKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBCdWlsdGluUHJvdG90eXBlQnVpbHRpbnNfaAorCisjIyMgRW5kIEZpbGU6
IEJ1aWx0aW5Qcm90b3R5cGVCdWlsdGlucy5oCisKKyMjIyBCZWdpbiBGaWxlOiBCdWlsdGluUHJv
dG90eXBlQnVpbHRpbnMuY3BwCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAxNSBZdXN1a2Ug
U3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8g
Tk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEph
dmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQnVpbHRpblByb3RvdHlwZUJ1aWx0aW5zLmgiCisKKyNpbmNs
dWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5j
bHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvdG90eXBlRXZlcnlD
b2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3Ry
dWN0OworY29uc3QgaW50IHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZUxlbmd0aCA9IDc2MjsK
K2NvbnN0IGNoYXIqIHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZSA9CisgICAgIihmdW5jdGlv
biAoY2FsbGJhY2sgKVxuIiBcCisgICAgIntcbiIgXAorICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7
XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIGlmICh0aGlzID09PSBudWxsKVxuIiBcCisgICAg
IiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVx
dWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGxcIik7XG4iIFwKKyAgICAiICAgIFxuIiBcCisg
ICAgIiAgICBpZiAodGhpcyA9PT0gdW5kZWZpbmVkKVxuIiBcCisgICAgIiAgICAgICAgdGhyb3cg
bmV3IEBUeXBlRXJyb3IoXCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhp
c3wgbm90IGJlIHVuZGVmaW5lZFwiKTtcbiIgXAorICAgICIgICAgXG4iIFwKKyAgICAiICAgIHZh
ciBhcnJheSA9IEBPYmplY3QodGhpcyk7XG4iIFwKKyAgICAiICAgIHZhciBsZW5ndGggPSBAdG9M
ZW5ndGgoYXJyYXkubGVuZ3RoKTtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgaWYgKHR5cGVv
ZiBjYWxsYmFjayAhPT0gXCJmdW5jdGlvblwiKVxuIiBcCisgICAgIiAgICAgICAgdGhyb3cgbmV3
IEBUeXBlRXJyb3IoXCJBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1
bmN0aW9uXCIpO1xuIiBcCisgICAgIiAgICBcbiIgXAorICAgICIgICAgdmFyIHRoaXNBcmcgPSBh
cmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiIgXAorICAg
ICIgICAgXG4iIFwKKyAgICAiICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtc
biIgXAorICAgICIgICAgICAgIGlmICghKGkgaW4gYXJyYXkpKVxuIiBcCisgICAgIiAgICAgICAg
ICAgIGNvbnRpbnVlO1xuIiBcCisgICAgIiAgICAgICAgaWYgKCFjYWxsYmFjay5AY2FsbCh0aGlz
QXJnLCBhcnJheVtpXSwgaSwgYXJyYXkpKVxuIiBcCisgICAgIiAgICAgICAgICAgIHJldHVybiBm
YWxzZTtcbiIgXAorICAgICIgICAgfVxuIiBcCisgICAgIiAgICBcbiIgXAorICAgICIgICAgcmV0
dXJuIHRydWU7XG4iIFwKKyAgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFi
aWxpdHkgc19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlND
OjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19idWlsdGlu
UHJvdG90eXBlRm9yRWFjaENvZGVMZW5ndGggPSA2OTQ7Citjb25zdCBjaGFyKiBzX2J1aWx0aW5Q
cm90b3R5cGVGb3JFYWNoQ29kZSA9CisgICAgIihmdW5jdGlvbiAoY2FsbGJhY2sgKVxuIiBcCisg
ICAgIntcbiIgXAorICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAg
ICAiICAgIGlmICh0aGlzID09PSBudWxsKVxuIiBcCisgICAgIiAgICAgICAgdGhyb3cgbmV3IEBU
eXBlRXJyb3IoXCJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCByZXF1aXJlcyB0aGF0IHx0aGlzfCBu
b3QgYmUgbnVsbFwiKTtcbiIgXAorICAgICIgICAgXG4iIFwKKyAgICAiICAgIGlmICh0aGlzID09
PSB1bmRlZmluZWQpXG4iIFwKKyAgICAiICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcIkFy
cmF5LnByb3RvdHlwZS5mb3JFYWNoIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmlu
ZWRcIik7XG4iIFwKKyAgICAiICAgIFxuIiBcCisgICAgIiAgICB2YXIgYXJyYXkgPSBAT2JqZWN0
KHRoaXMpO1xuIiBcCisgICAgIiAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0
aCk7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09IFwi
ZnVuY3Rpb25cIilcbiIgXAorICAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJy
YXkucHJvdG90eXBlLmZvckVhY2ggY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uXCIpO1xuIiBc
CisgICAgIiAgICBcbiIgXAorICAgICIgICAgdmFyIHRoaXNBcmcgPSBhcmd1bWVudHMubGVuZ3Ro
ID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiIgXAorICAgICIgICAgXG4iIFwKKyAg
ICAiICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiIgXAorICAgICIgICAg
ICAgIGlmIChpIGluIGFycmF5KVxuIiBcCisgICAgIiAgICAgICAgICAgIGNhbGxiYWNrLkBjYWxs
KHRoaXNBcmcsIGFycmF5W2ldLCBpLCBhcnJheSk7XG4iIFwKKyAgICAiICAgIH1cbiIgXAorICAg
ICJ9KVxuIiBcCis7CisKKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5h
bWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKK3tcCisgICAgcmV0dXJuIHZt
LmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2
bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsgfQorSlNDX0ZPUkVB
Q0hfQlVJTFRJTi5QUk9UT1RZUEVfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRP
UikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKworCit9IC8vIG5hbWVzcGFjZSBK
U0MKKyMjIyBFbmQgRmlsZTogQnVpbHRpblByb3RvdHlwZUJ1aWx0aW5zLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQv
SmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpzLXJlc3VsdCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFT
Y3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qcy1yZXN1bHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTMzNzEzMzg1ZTE2MjE3MDAwMjhlZTdkODFhMjMwMGE3ODIyYWU2ZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVj
dGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qcy1yZXN1bHQK
QEAgLTAsMCArMSwyMjQgQEAKKyMjIyBCZWdpbiBGaWxlOiBKU0NCdWlsdGlucy5oCisvKgorICog
Q29weXJpZ2h0IChjKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxs
eSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhl
IHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRp
bnMucHkKKworI2lmbmRlZiBKU0NCdWlsdGluc19oCisjZGVmaW5lIEpTQ0J1aWx0aW5zX2gKKwor
bmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBWTTsKKwor
ZW51bSBjbGFzcyBDb25zdHJ1Y3RBYmlsaXR5IDogdW5zaWduZWQ7Cit9CisKK25hbWVzcGFjZSBK
U0MgeworCisvKiBCdWlsdGluQ29uc3RydWN0b3IgKi8KK2V4dGVybiBjb25zdCBjaGFyKiBzX2J1
aWx0aW5Db25zdHJ1Y3Rvck9mQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19idWlsdGluQ29uc3Ry
dWN0b3JPZkNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNf
YnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBj
aGFyKiBzX2J1aWx0aW5Db25zdHJ1Y3RvckZyb21Db2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2J1
aWx0aW5Db25zdHJ1Y3RvckZyb21Db2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3Ry
dWN0QWJpbGl0eSBzX2J1aWx0aW5Db25zdHJ1Y3RvckZyb21Db2RlQ29uc3RydWN0QWJpbGl0eTsK
KworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOQ09OU1RSVUNUT1JfQlVJTFRJTl9EQVRBKG1h
Y3JvKSBcCisgICAgbWFjcm8ob2YsIGJ1aWx0aW5Db25zdHJ1Y3Rvck9mLCAwKSBcCisgICAgbWFj
cm8oZnJvbSwgYnVpbHRpbkNvbnN0cnVjdG9yRnJvbSwgMSkgXAorCisjZGVmaW5lIEpTQ19CVUlM
VElOX0JVSUxUSU5DT05TVFJVQ1RPUl9PRiAxCisjZGVmaW5lIEpTQ19CVUlMVElOX0JVSUxUSU5D
T05TVFJVQ1RPUl9GUk9NIDEKKworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUobWFj
cm8pIFwKKyAgICBtYWNybyhidWlsdGluQ29uc3RydWN0b3JPZkNvZGUsIG9mLCBzX2J1aWx0aW5D
b25zdHJ1Y3Rvck9mQ29kZUxlbmd0aCkgXAorICAgIG1hY3JvKGJ1aWx0aW5Db25zdHJ1Y3RvckZy
b21Db2RlLCBmcm9tLCBzX2J1aWx0aW5Db25zdHJ1Y3RvckZyb21Db2RlTGVuZ3RoKSBcCisKKyNk
ZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcCisgICAgbWFj
cm8oZnJvbSkgXAorICAgIG1hY3JvKG9mKSBcCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dF
TkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCisgICAgSlND
OjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCitK
U0NfRk9SRUFDSF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRl
ZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fRVhJU1RT
KG9iamVjdCwgZnVuYykgZGVmaW5lZCBKU0NfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVu
YworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTQ0J1aWx0aW5zX2gKKworIyMj
IEVuZCBGaWxlOiBKU0NCdWlsdGlucy5oCisKKyMjIyBCZWdpbiBGaWxlOiBKU0NCdWlsdGlucy5j
cHAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBh
dXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWls
dGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0
ZS1qcy1idWlsdGlucy5weQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNDQnVp
bHRpbnMuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkV4
ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0
aW5Db25zdHJ1Y3Rvck9mQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxp
dHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0aW5Db25zdHJ1Y3Rvck9mQ29k
ZUxlbmd0aCA9IDI5NDsKK2NvbnN0IGNoYXIqIHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2RlID0K
KyAgICAiKGZ1bmN0aW9uICgpXG4iIFwKKyAgICAie1xuIiBcCisgICAgIiAgICBcInVzZSBzdHJp
Y3RcIjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5s
ZW5ndGg7XG4iIFwKKyAgICAiICAgIC8vXG4iIFwKKyAgICAiICAgIHZhciBhcnJheSA9IHR5cGVv
ZiB0aGlzID09PSAnZnVuY3Rpb24nID8gbmV3IHRoaXMobGVuZ3RoKSA6IG5ldyBAQXJyYXkobGVu
Z3RoKTtcbiIgXAorICAgICIgICAgZm9yICh2YXIgayA9IDA7IGsgPCBsZW5ndGg7ICsraylcbiIg
XAorICAgICIgICAgICAgIEBwdXRCeVZhbERpcmVjdChhcnJheSwgaywgYXJndW1lbnRzW2tdKTtc
biIgXAorICAgICIgICAgYXJyYXkubGVuZ3RoID0gbGVuZ3RoO1xuIiBcCisgICAgIiAgICByZXR1
cm4gYXJyYXk7XG4iIFwKKyAgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFi
aWxpdHkgc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6
OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0aW5D
b25zdHJ1Y3RvckZyb21Db2RlTGVuZ3RoID0gMjA0NjsKK2NvbnN0IGNoYXIqIHNfYnVpbHRpbkNv
bnN0cnVjdG9yRnJvbUNvZGUgPQorICAgICIoZnVuY3Rpb24gKGl0ZW1zIClcbiIgXAorICAgICJ7
XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAg
ICB2YXIgdGhpc09iaiA9IHRoaXM7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHZhciBtYXBG
biA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuIiBc
CisgICAgIlxuIiBcCisgICAgIiAgICB2YXIgdGhpc0FyZztcbiIgXAorICAgICJcbiIgXAorICAg
ICIgICAgaWYgKG1hcEZuICE9PSB1bmRlZmluZWQpIHtcbiIgXAorICAgICIgICAgICAgIGlmICh0
eXBlb2YgbWFwRm4gIT09IFwiZnVuY3Rpb25cIilcbiIgXAorICAgICIgICAgICAgICAgICB0aHJv
dyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LmZyb20gcmVxdWlyZXMgdGhhdCB0aGUgc2Vjb25kIGFy
Z3VtZW50LCB3aGVuIHByb3ZpZGVkLCBiZSBhIGZ1bmN0aW9uXCIpO1xuIiBcCisgICAgIlxuIiBc
CisgICAgIiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKVxuIiBcCisgICAgIiAgICAg
ICAgICAgIHRoaXNBcmcgPSBhcmd1bWVudHNbMl07XG4iIFwKKyAgICAiICAgIH1cbiIgXAorICAg
ICJcbiIgXAorICAgICIgICAgaWYgKGl0ZW1zID09IG51bGwpXG4iIFwKKyAgICAiICAgICAgICB0
aHJvdyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LmZyb20gcmVxdWlyZXMgYW4gYXJyYXktbGlrZSBv
YmplY3QgLSBub3QgbnVsbCBvciB1bmRlZmluZWRcIik7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAi
ICAgIHZhciBpdGVyYXRvck1ldGhvZCA9IGl0ZW1zW0BzeW1ib2xJdGVyYXRvcl07XG4iIFwKKyAg
ICAiICAgIGlmIChpdGVyYXRvck1ldGhvZCAhPSBudWxsKSB7XG4iIFwKKyAgICAiICAgICAgICBp
ZiAodHlwZW9mIGl0ZXJhdG9yTWV0aG9kICE9PSBcImZ1bmN0aW9uXCIpXG4iIFwKKyAgICAiICAg
ICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5mcm9tIHJlcXVpcmVzIHRoYXQg
dGhlIHByb3BlcnR5IG9mIHRoZSBmaXJzdCBhcmd1bWVudCwgaXRlbXNbU3ltYm9sLml0ZXJhdG9y
XSwgd2hlbiBleGlzdHMsIGJlIGEgZnVuY3Rpb25cIik7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAi
ICAgICAgICAvL1xuIiBcCisgICAgIiAgICAgICAgdmFyIHJlc3VsdCA9ICh0eXBlb2YgdGhpc09i
aiA9PT0gXCJmdW5jdGlvblwiKSA/IEBPYmplY3QobmV3IHRoaXNPYmooKSkgOiBbXTtcbiIgXAor
ICAgICJcbiIgXAorICAgICIgICAgICAgIHZhciBrID0gMDtcbiIgXAorICAgICIgICAgICAgIHZh
ciBpdGVyYXRvciA9IGl0ZXJhdG9yTWV0aG9kLkBjYWxsKGl0ZW1zKTtcbiIgXAorICAgICJcbiIg
XAorICAgICIgICAgICAgIC8vXG4iIFwKKyAgICAiICAgICAgICAvL1xuIiBcCisgICAgIiAgICAg
ICAgLy9cbiIgXAorICAgICIgICAgICAgIHZhciB3cmFwcGVyID0ge1xuIiBcCisgICAgIiAgICAg
ICAgICAgIFtAc3ltYm9sSXRlcmF0b3JdKCkge1xuIiBcCisgICAgIiAgICAgICAgICAgICAgICBy
ZXR1cm4gaXRlcmF0b3I7XG4iIFwKKyAgICAiICAgICAgICAgICAgfVxuIiBcCisgICAgIiAgICAg
ICAgfTtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgICAgIGZvciAodmFyIHZhbHVlIG9mIHdy
YXBwZXIpIHtcbiIgXAorICAgICIgICAgICAgICAgICBpZiAobWFwRm4pXG4iIFwKKyAgICAiICAg
ICAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHRoaXNBcmcgPT09IHVuZGVm
aW5lZCA/IG1hcEZuKHZhbHVlLCBrKSA6IG1hcEZuLkBjYWxsKHRoaXNBcmcsIHZhbHVlLCBrKSk7
XG4iIFwKKyAgICAiICAgICAgICAgICAgZWxzZVxuIiBcCisgICAgIiAgICAgICAgICAgICAgICBA
cHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB2YWx1ZSk7XG4iIFwKKyAgICAiICAgICAgICAgICAg
ayArPSAxO1xuIiBcCisgICAgIiAgICAgICAgfVxuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICAg
ICAgcmVzdWx0Lmxlbmd0aCA9IGs7XG4iIFwKKyAgICAiICAgICAgICByZXR1cm4gcmVzdWx0O1xu
IiBcCisgICAgIiAgICB9XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHZhciBhcnJheUxpa2Ug
PSBAT2JqZWN0KGl0ZW1zKTtcbiIgXAorICAgICIgICAgdmFyIGFycmF5TGlrZUxlbmd0aCA9IEB0
b0xlbmd0aChhcnJheUxpa2UubGVuZ3RoKTtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgLy9c
biIgXAorICAgICIgICAgdmFyIHJlc3VsdCA9ICh0eXBlb2YgdGhpc09iaiA9PT0gXCJmdW5jdGlv
blwiKSA/IEBPYmplY3QobmV3IHRoaXNPYmooYXJyYXlMaWtlTGVuZ3RoKSkgOiBuZXcgQEFycmF5
KGFycmF5TGlrZUxlbmd0aCk7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHZhciBrID0gMDtc
biIgXAorICAgICIgICAgd2hpbGUgKGsgPCBhcnJheUxpa2VMZW5ndGgpIHtcbiIgXAorICAgICIg
ICAgICAgIHZhciB2YWx1ZSA9IGFycmF5TGlrZVtrXTtcbiIgXAorICAgICIgICAgICAgIGlmICht
YXBGbilcbiIgXAorICAgICIgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB0
aGlzQXJnID09PSB1bmRlZmluZWQgPyBtYXBGbih2YWx1ZSwgaykgOiBtYXBGbi5AY2FsbCh0aGlz
QXJnLCB2YWx1ZSwgaykpO1xuIiBcCisgICAgIiAgICAgICAgZWxzZVxuIiBcCisgICAgIiAgICAg
ICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHZhbHVlKTtcbiIgXAorICAgICIgICAg
ICAgIGsgKz0gMTtcbiIgXAorICAgICIgICAgfVxuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICBy
ZXN1bHQubGVuZ3RoID0gYXJyYXlMaWtlTGVuZ3RoO1xuIiBcCisgICAgIiAgICByZXR1cm4gcmVz
dWx0O1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0dF
TkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCitKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAore1wK
KyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxl
KCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkp
OyB9CitKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQor
I3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgorCisKK30gLy8gbmFtZXNwYWNlIEpTQwor
IyMjIEVuZCBGaWxlOiBKU0NCdWlsdGlucy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1
aWx0aW5Db25zdHJ1Y3Rvci1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGlu
Q29uc3RydWN0b3ItU2VwYXJhdGUuanMtcmVzdWx0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyNjZkMDVkNDAwZDVk
NzY0YmYyZGQ2N2MyYjg2NWJjYTU3OWQzYjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29y
ZS1CdWlsdGluQ29uc3RydWN0b3ItU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0wLDAgKzEsMjIzIEBA
CisjIyMgQmVnaW4gRmlsZTogQnVpbHRpbkNvbnN0cnVjdG9yQnVpbHRpbnMuaAorLyoKKyAqIENv
cHlyaWdodCAoYykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
KiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkg
Z2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBz
Y3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5z
LnB5CisKKyNpZm5kZWYgQnVpbHRpbkNvbnN0cnVjdG9yQnVpbHRpbnNfaAorI2RlZmluZSBCdWls
dGluQ29uc3RydWN0b3JCdWlsdGluc19oCisKKworCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEZ1
bmN0aW9uRXhlY3V0YWJsZTsKK30KKworbmFtZXNwYWNlIEpTQyB7CisKKy8qIEJ1aWx0aW5Db25z
dHJ1Y3RvciAqLworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2Rl
OworZXh0ZXJuIGNvbnN0IGludCBzX2J1aWx0aW5Db25zdHJ1Y3Rvck9mQ29kZUxlbmd0aDsKK2V4
dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluQ29uc3RydWN0b3JPZkNv
ZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfYnVpbHRpbkNvbnN0cnVj
dG9yRnJvbUNvZGU7CitleHRlcm4gY29uc3QgaW50IHNfYnVpbHRpbkNvbnN0cnVjdG9yRnJvbUNv
ZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpbkNv
bnN0cnVjdG9yRnJvbUNvZGVDb25zdHJ1Y3RBYmlsaXR5OworCisjZGVmaW5lIEpTQ19GT1JFQUNI
X0JVSUxUSU5DT05TVFJVQ1RPUl9CVUlMVElOX0RBVEEobWFjcm8pIFwKKyAgICBtYWNybyhvZiwg
YnVpbHRpbkNvbnN0cnVjdG9yT2YsIDApIFwKKyAgICBtYWNybyhmcm9tLCBidWlsdGluQ29uc3Ry
dWN0b3JGcm9tLCAxKSBcCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTkNPTlNUUlVDVE9S
X09GIDEKKyNkZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTkNPTlNUUlVDVE9SX0ZST00gMQorCisj
ZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5DT05TVFJVQ1RPUl9CVUlMVElOX0NPREUobWFjcm8p
IFwKKyAgICBtYWNybyhidWlsdGluQ29uc3RydWN0b3JPZkNvZGUsIG9mLCBzX2J1aWx0aW5Db25z
dHJ1Y3Rvck9mQ29kZUxlbmd0aCkgXAorICAgIG1hY3JvKGJ1aWx0aW5Db25zdHJ1Y3RvckZyb21D
b2RlLCBmcm9tLCBzX2J1aWx0aW5Db25zdHJ1Y3RvckZyb21Db2RlTGVuZ3RoKSBcCisKKyNkZWZp
bmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTkNPTlNUUlVDVE9SX0JVSUxUSU5fRlVOQ1RJT05fTkFNRSht
YWNybykgXAorICAgIG1hY3JvKGZyb20pIFwKKyAgICBtYWNybyhvZikgXAorCisjZGVmaW5lIERF
Q0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRD
b3VudCkgXAorICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9y
KEpTQzo6Vk0mKTsKKworSlNDX0ZPUkVBQ0hfQlVJTFRJTkNPTlNUUlVDVE9SX0JVSUxUSU5fQ09E
RShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5F
UkFUT1IKKworI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOQ09OU1RSVUNUT1JfRVhJU1RTKG9i
amVjdCwgZnVuYykgZGVmaW5lZCBKU0NfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVuYwor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEJ1aWx0aW5Db25zdHJ1Y3RvckJ1aWx0
aW5zX2gKKworIyMjIEVuZCBGaWxlOiBCdWlsdGluQ29uc3RydWN0b3JCdWlsdGlucy5oCisKKyMj
IyBCZWdpbiBGaWxlOiBCdWlsdGluQ29uc3RydWN0b3JCdWlsdGlucy5jcHAKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICog
CisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdl
bmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2Ny
aXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5w
eQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnVpbHRpbkNvbnN0cnVjdG9yQnVp
bHRpbnMuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkV4
ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0
aW5Db25zdHJ1Y3Rvck9mQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxp
dHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0aW5Db25zdHJ1Y3Rvck9mQ29k
ZUxlbmd0aCA9IDI5NDsKK2NvbnN0IGNoYXIqIHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2RlID0K
KyAgICAiKGZ1bmN0aW9uICgpXG4iIFwKKyAgICAie1xuIiBcCisgICAgIiAgICBcInVzZSBzdHJp
Y3RcIjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5s
ZW5ndGg7XG4iIFwKKyAgICAiICAgIC8vXG4iIFwKKyAgICAiICAgIHZhciBhcnJheSA9IHR5cGVv
ZiB0aGlzID09PSAnZnVuY3Rpb24nID8gbmV3IHRoaXMobGVuZ3RoKSA6IG5ldyBAQXJyYXkobGVu
Z3RoKTtcbiIgXAorICAgICIgICAgZm9yICh2YXIgayA9IDA7IGsgPCBsZW5ndGg7ICsraylcbiIg
XAorICAgICIgICAgICAgIEBwdXRCeVZhbERpcmVjdChhcnJheSwgaywgYXJndW1lbnRzW2tdKTtc
biIgXAorICAgICIgICAgYXJyYXkubGVuZ3RoID0gbGVuZ3RoO1xuIiBcCisgICAgIiAgICByZXR1
cm4gYXJyYXk7XG4iIFwKKyAgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFi
aWxpdHkgc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6
OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0aW5D
b25zdHJ1Y3RvckZyb21Db2RlTGVuZ3RoID0gMjA0NjsKK2NvbnN0IGNoYXIqIHNfYnVpbHRpbkNv
bnN0cnVjdG9yRnJvbUNvZGUgPQorICAgICIoZnVuY3Rpb24gKGl0ZW1zIClcbiIgXAorICAgICJ7
XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAg
ICB2YXIgdGhpc09iaiA9IHRoaXM7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHZhciBtYXBG
biA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuIiBc
CisgICAgIlxuIiBcCisgICAgIiAgICB2YXIgdGhpc0FyZztcbiIgXAorICAgICJcbiIgXAorICAg
ICIgICAgaWYgKG1hcEZuICE9PSB1bmRlZmluZWQpIHtcbiIgXAorICAgICIgICAgICAgIGlmICh0
eXBlb2YgbWFwRm4gIT09IFwiZnVuY3Rpb25cIilcbiIgXAorICAgICIgICAgICAgICAgICB0aHJv
dyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LmZyb20gcmVxdWlyZXMgdGhhdCB0aGUgc2Vjb25kIGFy
Z3VtZW50LCB3aGVuIHByb3ZpZGVkLCBiZSBhIGZ1bmN0aW9uXCIpO1xuIiBcCisgICAgIlxuIiBc
CisgICAgIiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKVxuIiBcCisgICAgIiAgICAg
ICAgICAgIHRoaXNBcmcgPSBhcmd1bWVudHNbMl07XG4iIFwKKyAgICAiICAgIH1cbiIgXAorICAg
ICJcbiIgXAorICAgICIgICAgaWYgKGl0ZW1zID09IG51bGwpXG4iIFwKKyAgICAiICAgICAgICB0
aHJvdyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LmZyb20gcmVxdWlyZXMgYW4gYXJyYXktbGlrZSBv
YmplY3QgLSBub3QgbnVsbCBvciB1bmRlZmluZWRcIik7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAi
ICAgIHZhciBpdGVyYXRvck1ldGhvZCA9IGl0ZW1zW0BzeW1ib2xJdGVyYXRvcl07XG4iIFwKKyAg
ICAiICAgIGlmIChpdGVyYXRvck1ldGhvZCAhPSBudWxsKSB7XG4iIFwKKyAgICAiICAgICAgICBp
ZiAodHlwZW9mIGl0ZXJhdG9yTWV0aG9kICE9PSBcImZ1bmN0aW9uXCIpXG4iIFwKKyAgICAiICAg
ICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5mcm9tIHJlcXVpcmVzIHRoYXQg
dGhlIHByb3BlcnR5IG9mIHRoZSBmaXJzdCBhcmd1bWVudCwgaXRlbXNbU3ltYm9sLml0ZXJhdG9y
XSwgd2hlbiBleGlzdHMsIGJlIGEgZnVuY3Rpb25cIik7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAi
ICAgICAgICAvL1xuIiBcCisgICAgIiAgICAgICAgdmFyIHJlc3VsdCA9ICh0eXBlb2YgdGhpc09i
aiA9PT0gXCJmdW5jdGlvblwiKSA/IEBPYmplY3QobmV3IHRoaXNPYmooKSkgOiBbXTtcbiIgXAor
ICAgICJcbiIgXAorICAgICIgICAgICAgIHZhciBrID0gMDtcbiIgXAorICAgICIgICAgICAgIHZh
ciBpdGVyYXRvciA9IGl0ZXJhdG9yTWV0aG9kLkBjYWxsKGl0ZW1zKTtcbiIgXAorICAgICJcbiIg
XAorICAgICIgICAgICAgIC8vXG4iIFwKKyAgICAiICAgICAgICAvL1xuIiBcCisgICAgIiAgICAg
ICAgLy9cbiIgXAorICAgICIgICAgICAgIHZhciB3cmFwcGVyID0ge1xuIiBcCisgICAgIiAgICAg
ICAgICAgIFtAc3ltYm9sSXRlcmF0b3JdKCkge1xuIiBcCisgICAgIiAgICAgICAgICAgICAgICBy
ZXR1cm4gaXRlcmF0b3I7XG4iIFwKKyAgICAiICAgICAgICAgICAgfVxuIiBcCisgICAgIiAgICAg
ICAgfTtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgICAgIGZvciAodmFyIHZhbHVlIG9mIHdy
YXBwZXIpIHtcbiIgXAorICAgICIgICAgICAgICAgICBpZiAobWFwRm4pXG4iIFwKKyAgICAiICAg
ICAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHRoaXNBcmcgPT09IHVuZGVm
aW5lZCA/IG1hcEZuKHZhbHVlLCBrKSA6IG1hcEZuLkBjYWxsKHRoaXNBcmcsIHZhbHVlLCBrKSk7
XG4iIFwKKyAgICAiICAgICAgICAgICAgZWxzZVxuIiBcCisgICAgIiAgICAgICAgICAgICAgICBA
cHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB2YWx1ZSk7XG4iIFwKKyAgICAiICAgICAgICAgICAg
ayArPSAxO1xuIiBcCisgICAgIiAgICAgICAgfVxuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICAg
ICAgcmVzdWx0Lmxlbmd0aCA9IGs7XG4iIFwKKyAgICAiICAgICAgICByZXR1cm4gcmVzdWx0O1xu
IiBcCisgICAgIiAgICB9XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHZhciBhcnJheUxpa2Ug
PSBAT2JqZWN0KGl0ZW1zKTtcbiIgXAorICAgICIgICAgdmFyIGFycmF5TGlrZUxlbmd0aCA9IEB0
b0xlbmd0aChhcnJheUxpa2UubGVuZ3RoKTtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgLy9c
biIgXAorICAgICIgICAgdmFyIHJlc3VsdCA9ICh0eXBlb2YgdGhpc09iaiA9PT0gXCJmdW5jdGlv
blwiKSA/IEBPYmplY3QobmV3IHRoaXNPYmooYXJyYXlMaWtlTGVuZ3RoKSkgOiBuZXcgQEFycmF5
KGFycmF5TGlrZUxlbmd0aCk7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHZhciBrID0gMDtc
biIgXAorICAgICIgICAgd2hpbGUgKGsgPCBhcnJheUxpa2VMZW5ndGgpIHtcbiIgXAorICAgICIg
ICAgICAgIHZhciB2YWx1ZSA9IGFycmF5TGlrZVtrXTtcbiIgXAorICAgICIgICAgICAgIGlmICht
YXBGbilcbiIgXAorICAgICIgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB0
aGlzQXJnID09PSB1bmRlZmluZWQgPyBtYXBGbih2YWx1ZSwgaykgOiBtYXBGbi5AY2FsbCh0aGlz
QXJnLCB2YWx1ZSwgaykpO1xuIiBcCisgICAgIiAgICAgICAgZWxzZVxuIiBcCisgICAgIiAgICAg
ICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHZhbHVlKTtcbiIgXAorICAgICIgICAg
ICAgIGsgKz0gMTtcbiIgXAorICAgICIgICAgfVxuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICBy
ZXN1bHQubGVuZ3RoID0gYXJyYXlMaWtlTGVuZ3RoO1xuIiBcCisgICAgIiAgICByZXR1cm4gcmVz
dWx0O1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0dF
TkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCitKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAore1wK
KyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxl
KCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkp
OyB9CitKU0NfRk9SRUFDSF9CVUlMVElOQ09OU1RSVUNUT1JfQlVJTFRJTl9DT0RFKERFRklORV9C
VUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKyMjIyBFbmQgRmlsZTogQnVpbHRpbkNvbnN0cnVjdG9yQnVpbHRp
bnMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1PcGVyYXRpb25zLlByb21pc2UtQ29tYmlu
ZWQuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRp
bnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtT3BlcmF0aW9ucy5Qcm9taXNlLUNvbWJpbmVkLmpz
LXJlc3VsdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jMTQ1MTExMWNhN2Q2NzU1ZmUyNzVhMzk0NGU3NzE2NDFiM2I5
ZGY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtT3BlcmF0aW9ucy5Qcm9taXNlLUNv
bWJpbmVkLmpzLXJlc3VsdApAQCAtMCwwICsxLDQxNSBAQAorIyMjIEJlZ2luIEZpbGU6IEpTQ0J1
aWx0aW5zLmgKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPi4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMg
RklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVz
IGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lmbmRlZiBKU0NCdWlsdGluc19oCisj
ZGVmaW5lIEpTQ0J1aWx0aW5zX2gKKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4
ZWN1dGFibGU7CitjbGFzcyBWTTsKKworZW51bSBjbGFzcyBDb25zdHJ1Y3RBYmlsaXR5IDogdW5z
aWduZWQ7Cit9CisKK25hbWVzcGFjZSBKU0MgeworCisvKiBPcGVyYXRpb25zLlByb21pc2UgKi8K
K2V4dGVybiBjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQcm9taXNlSXNQcm9taXNlQ29kZTsKK2V4
dGVybiBjb25zdCBpbnQgc19vcGVyYXRpb25zUHJvbWlzZUlzUHJvbWlzZUNvZGVMZW5ndGg7Citl
eHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VJc1By
b21pc2VDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX29wZXJhdGlv
bnNQcm9taXNlTmV3UHJvbWlzZVJlYWN0aW9uQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19vcGVy
YXRpb25zUHJvbWlzZU5ld1Byb21pc2VSZWFjdGlvbkNvZGVMZW5ndGg7CitleHRlcm4gY29uc3Qg
SlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VOZXdQcm9taXNlUmVhY3Rp
b25Db2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQ
cm9taXNlTmV3UHJvbWlzZUNhcGFiaWxpdHlDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX29wZXJh
dGlvbnNQcm9taXNlTmV3UHJvbWlzZUNhcGFiaWxpdHlDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0
IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9taXNlTmV3UHJvbWlzZUNhcGFi
aWxpdHlDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX29wZXJhdGlv
bnNQcm9taXNlVHJpZ2dlclByb21pc2VSZWFjdGlvbnNDb2RlOworZXh0ZXJuIGNvbnN0IGludCBz
X29wZXJhdGlvbnNQcm9taXNlVHJpZ2dlclByb21pc2VSZWFjdGlvbnNDb2RlTGVuZ3RoOworZXh0
ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9taXNlVHJpZ2dl
clByb21pc2VSZWFjdGlvbnNDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFy
KiBzX29wZXJhdGlvbnNQcm9taXNlUmVqZWN0UHJvbWlzZUNvZGU7CitleHRlcm4gY29uc3QgaW50
IHNfb3BlcmF0aW9uc1Byb21pc2VSZWplY3RQcm9taXNlQ29kZUxlbmd0aDsKK2V4dGVybiBjb25z
dCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19vcGVyYXRpb25zUHJvbWlzZVJlamVjdFByb21pc2VD
b2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQcm9t
aXNlRnVsZmlsbFByb21pc2VDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX29wZXJhdGlvbnNQcm9t
aXNlRnVsZmlsbFByb21pc2VDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0
QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9taXNlRnVsZmlsbFByb21pc2VDb2RlQ29uc3RydWN0QWJp
bGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQcm9taXNlQ3JlYXRlUmVzb2x2
aW5nRnVuY3Rpb25zQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19vcGVyYXRpb25zUHJvbWlzZUNy
ZWF0ZVJlc29sdmluZ0Z1bmN0aW9uc0NvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25z
dHJ1Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VDcmVhdGVSZXNvbHZpbmdGdW5jdGlvbnND
b2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQcm9t
aXNlUHJvbWlzZVJlYWN0aW9uSm9iQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19vcGVyYXRpb25z
UHJvbWlzZVByb21pc2VSZWFjdGlvbkpvYkNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpD
b25zdHJ1Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVhY3Rpb25Kb2JDb2Rl
Q29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQcm9taXNl
UHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYkNvZGU7CitleHRlcm4gY29uc3QgaW50IHNfb3BlcmF0
aW9uc1Byb21pc2VQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZUxlbmd0aDsKK2V4dGVybiBj
b25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19vcGVyYXRpb25zUHJvbWlzZVByb21pc2VSZXNv
bHZlVGhlbmFibGVKb2JDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBz
X29wZXJhdGlvbnNQcm9taXNlSW5pdGlhbGl6ZVByb21pc2VDb2RlOworZXh0ZXJuIGNvbnN0IGlu
dCBzX29wZXJhdGlvbnNQcm9taXNlSW5pdGlhbGl6ZVByb21pc2VDb2RlTGVuZ3RoOworZXh0ZXJu
IGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9taXNlSW5pdGlhbGl6
ZVByb21pc2VDb2RlQ29uc3RydWN0QWJpbGl0eTsKKworI2RlZmluZSBKU0NfRk9SRUFDSF9PUEVS
QVRJT05TUFJPTUlTRV9CVUlMVElOX0RBVEEobWFjcm8pIFwKKyAgICBtYWNybyhpc1Byb21pc2Us
IG9wZXJhdGlvbnNQcm9taXNlSXNQcm9taXNlLCAxKSBcCisgICAgbWFjcm8obmV3UHJvbWlzZVJl
YWN0aW9uLCBvcGVyYXRpb25zUHJvbWlzZU5ld1Byb21pc2VSZWFjdGlvbiwgMikgXAorICAgIG1h
Y3JvKG5ld1Byb21pc2VDYXBhYmlsaXR5LCBvcGVyYXRpb25zUHJvbWlzZU5ld1Byb21pc2VDYXBh
YmlsaXR5LCAxKSBcCisgICAgbWFjcm8odHJpZ2dlclByb21pc2VSZWFjdGlvbnMsIG9wZXJhdGlv
bnNQcm9taXNlVHJpZ2dlclByb21pc2VSZWFjdGlvbnMsIDIpIFwKKyAgICBtYWNybyhyZWplY3RQ
cm9taXNlLCBvcGVyYXRpb25zUHJvbWlzZVJlamVjdFByb21pc2UsIDIpIFwKKyAgICBtYWNybyhm
dWxmaWxsUHJvbWlzZSwgb3BlcmF0aW9uc1Byb21pc2VGdWxmaWxsUHJvbWlzZSwgMikgXAorICAg
IG1hY3JvKGNyZWF0ZVJlc29sdmluZ0Z1bmN0aW9ucywgb3BlcmF0aW9uc1Byb21pc2VDcmVhdGVS
ZXNvbHZpbmdGdW5jdGlvbnMsIDEpIFwKKyAgICBtYWNybyhwcm9taXNlUmVhY3Rpb25Kb2IsIG9w
ZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJlYWN0aW9uSm9iLCAyKSBcCisgICAgbWFjcm8ocHJvbWlz
ZVJlc29sdmVUaGVuYWJsZUpvYiwgb3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVzb2x2ZVRoZW5h
YmxlSm9iLCAzKSBcCisgICAgbWFjcm8oaW5pdGlhbGl6ZVByb21pc2UsIG9wZXJhdGlvbnNQcm9t
aXNlSW5pdGlhbGl6ZVByb21pc2UsIDEpIFwKKworI2RlZmluZSBKU0NfQlVJTFRJTl9PUEVSQVRJ
T05TUFJPTUlTRV9JU1BST01JU0UgMQorI2RlZmluZSBKU0NfQlVJTFRJTl9PUEVSQVRJT05TUFJP
TUlTRV9ORVdQUk9NSVNFUkVBQ1RJT04gMQorI2RlZmluZSBKU0NfQlVJTFRJTl9PUEVSQVRJT05T
UFJPTUlTRV9ORVdQUk9NSVNFQ0FQQUJJTElUWSAxCisjZGVmaW5lIEpTQ19CVUlMVElOX09QRVJB
VElPTlNQUk9NSVNFX1RSSUdHRVJQUk9NSVNFUkVBQ1RJT05TIDEKKyNkZWZpbmUgSlNDX0JVSUxU
SU5fT1BFUkFUSU9OU1BST01JU0VfUkVKRUNUUFJPTUlTRSAxCisjZGVmaW5lIEpTQ19CVUlMVElO
X09QRVJBVElPTlNQUk9NSVNFX0ZVTEZJTExQUk9NSVNFIDEKKyNkZWZpbmUgSlNDX0JVSUxUSU5f
T1BFUkFUSU9OU1BST01JU0VfQ1JFQVRFUkVTT0xWSU5HRlVOQ1RJT05TIDEKKyNkZWZpbmUgSlND
X0JVSUxUSU5fT1BFUkFUSU9OU1BST01JU0VfUFJPTUlTRVJFQUNUSU9OSk9CIDEKKyNkZWZpbmUg
SlNDX0JVSUxUSU5fT1BFUkFUSU9OU1BST01JU0VfUFJPTUlTRVJFU09MVkVUSEVOQUJMRUpPQiAx
CisjZGVmaW5lIEpTQ19CVUlMVElOX09QRVJBVElPTlNQUk9NSVNFX0lOSVRJQUxJWkVQUk9NSVNF
IDEKKworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUobWFjcm8pIFwKKyAgICBtYWNy
byhvcGVyYXRpb25zUHJvbWlzZUlzUHJvbWlzZUNvZGUsIGlzUHJvbWlzZSwgc19vcGVyYXRpb25z
UHJvbWlzZUlzUHJvbWlzZUNvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhvcGVyYXRpb25zUHJvbWlz
ZU5ld1Byb21pc2VSZWFjdGlvbkNvZGUsIG5ld1Byb21pc2VSZWFjdGlvbiwgc19vcGVyYXRpb25z
UHJvbWlzZU5ld1Byb21pc2VSZWFjdGlvbkNvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhvcGVyYXRp
b25zUHJvbWlzZU5ld1Byb21pc2VDYXBhYmlsaXR5Q29kZSwgbmV3UHJvbWlzZUNhcGFiaWxpdHks
IHNfb3BlcmF0aW9uc1Byb21pc2VOZXdQcm9taXNlQ2FwYWJpbGl0eUNvZGVMZW5ndGgpIFwKKyAg
ICBtYWNybyhvcGVyYXRpb25zUHJvbWlzZVRyaWdnZXJQcm9taXNlUmVhY3Rpb25zQ29kZSwgdHJp
Z2dlclByb21pc2VSZWFjdGlvbnMsIHNfb3BlcmF0aW9uc1Byb21pc2VUcmlnZ2VyUHJvbWlzZVJl
YWN0aW9uc0NvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhvcGVyYXRpb25zUHJvbWlzZVJlamVjdFBy
b21pc2VDb2RlLCByZWplY3RQcm9taXNlLCBzX29wZXJhdGlvbnNQcm9taXNlUmVqZWN0UHJvbWlz
ZUNvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhvcGVyYXRpb25zUHJvbWlzZUZ1bGZpbGxQcm9taXNl
Q29kZSwgZnVsZmlsbFByb21pc2UsIHNfb3BlcmF0aW9uc1Byb21pc2VGdWxmaWxsUHJvbWlzZUNv
ZGVMZW5ndGgpIFwKKyAgICBtYWNybyhvcGVyYXRpb25zUHJvbWlzZUNyZWF0ZVJlc29sdmluZ0Z1
bmN0aW9uc0NvZGUsIGNyZWF0ZVJlc29sdmluZ0Z1bmN0aW9ucywgc19vcGVyYXRpb25zUHJvbWlz
ZUNyZWF0ZVJlc29sdmluZ0Z1bmN0aW9uc0NvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhvcGVyYXRp
b25zUHJvbWlzZVByb21pc2VSZWFjdGlvbkpvYkNvZGUsIHByb21pc2VSZWFjdGlvbkpvYiwgc19v
cGVyYXRpb25zUHJvbWlzZVByb21pc2VSZWFjdGlvbkpvYkNvZGVMZW5ndGgpIFwKKyAgICBtYWNy
byhvcGVyYXRpb25zUHJvbWlzZVByb21pc2VSZXNvbHZlVGhlbmFibGVKb2JDb2RlLCBwcm9taXNl
UmVzb2x2ZVRoZW5hYmxlSm9iLCBzX29wZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJlc29sdmVUaGVu
YWJsZUpvYkNvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhvcGVyYXRpb25zUHJvbWlzZUluaXRpYWxp
emVQcm9taXNlQ29kZSwgaW5pdGlhbGl6ZVByb21pc2UsIHNfb3BlcmF0aW9uc1Byb21pc2VJbml0
aWFsaXplUHJvbWlzZUNvZGVMZW5ndGgpIFwKKworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElO
X0ZVTkNUSU9OX05BTUUobWFjcm8pIFwKKyAgICBtYWNybyhjcmVhdGVSZXNvbHZpbmdGdW5jdGlv
bnMpIFwKKyAgICBtYWNybyhmdWxmaWxsUHJvbWlzZSkgXAorICAgIG1hY3JvKGluaXRpYWxpemVQ
cm9taXNlKSBcCisgICAgbWFjcm8oaXNQcm9taXNlKSBcCisgICAgbWFjcm8obmV3UHJvbWlzZUNh
cGFiaWxpdHkpIFwKKyAgICBtYWNybyhuZXdQcm9taXNlUmVhY3Rpb24pIFwKKyAgICBtYWNybyhw
cm9taXNlUmVhY3Rpb25Kb2IpIFwKKyAgICBtYWNybyhwcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9i
KSBcCisgICAgbWFjcm8ocmVqZWN0UHJvbWlzZSkgXAorICAgIG1hY3JvKHRyaWdnZXJQcm9taXNl
UmVhY3Rpb25zKSBcCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFt
ZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCisgICAgSlNDOjpGdW5jdGlvbkV4ZWN1
dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCitKU0NfRk9SRUFDSF9CVUlM
VElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUNMQVJFX0JVSUxU
SU5fR0VORVJBVE9SCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fRVhJU1RTKG9iamVjdCwgZnVuYykg
ZGVmaW5lZCBKU0NfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVuYworCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vIEpTQ0J1aWx0aW5zX2gKKworIyMjIEVuZCBGaWxlOiBKU0NC
dWlsdGlucy5oCisKKyMjIyBCZWdpbiBGaWxlOiBKU0NCdWlsdGlucy5jcHAKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAq
IAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGlj
YWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkg
dGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVp
bHRpbnMucHkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgi
CisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxl
LmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19vcGVyYXRpb25zUHJv
bWlzZUlzUHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19vcGVyYXRpb25zUHJvbWlzZUlzUHJvbWlz
ZUNvZGVMZW5ndGggPSAxNTg7Citjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQcm9taXNlSXNQcm9t
aXNlQ29kZSA9CisgICAiKGZ1bmN0aW9uIChwcm9taXNlKVxuIiBcCisgICAie1xuIiBcCisgICAi
ICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgcmV0dXJuIEBpc09i
amVjdChwcm9taXNlKSAmJiAhIXByb21pc2UuQHByb21pc2VTdGF0ZTtcbiIgXAorICAgIn0pXG4i
IFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VO
ZXdQcm9taXNlUmVhY3Rpb25Db2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJp
bGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfb3BlcmF0aW9uc1Byb21pc2VOZXdQ
cm9taXNlUmVhY3Rpb25Db2RlTGVuZ3RoID0gMjIwOworY29uc3QgY2hhciogc19vcGVyYXRpb25z
UHJvbWlzZU5ld1Byb21pc2VSZWFjdGlvbkNvZGUgPQorICAgIihmdW5jdGlvbiAoY2FwYWJpbGl0
eSwgaGFuZGxlcilcbiIgXAorICAgIntcbiIgXAorICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIg
XAorICAgIlxuIiBcCisgICAiICAgIHJldHVybiB7XG4iIFwKKyAgICIgICAgICAgIEBjYXBhYmls
aXRpZXM6IGNhcGFiaWxpdHksXG4iIFwKKyAgICIgICAgICAgIEBoYW5kbGVyOiBoYW5kbGVyXG4i
IFwKKyAgICIgICAgfTtcbiIgXAorICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VOZXdQcm9taXNlQ2FwYWJpbGl0eUNvZGVDb25z
dHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citj
b25zdCBpbnQgc19vcGVyYXRpb25zUHJvbWlzZU5ld1Byb21pc2VDYXBhYmlsaXR5Q29kZUxlbmd0
aCA9IDE0Mjc7Citjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQcm9taXNlTmV3UHJvbWlzZUNhcGFi
aWxpdHlDb2RlID0KKyAgICIoZnVuY3Rpb24gKGNvbnN0cnVjdG9yKVxuIiBcCisgICAie1xuIiBc
CisgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgLy9cbiIg
XAorICAgIiAgICBpZiAodHlwZW9mIGNvbnN0cnVjdG9yICE9PSBcImZ1bmN0aW9uXCIpXG4iIFwK
KyAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwicHJvbWlzZSBjYXBhYmlsaXR5IHJl
cXVpcmVzIGEgY29uc3RydWN0b3IgZnVuY3Rpb25cIik7XG4iIFwKKyAgICJcbiIgXAorICAgIiAg
ICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSB7XG4iIFwKKyAgICIgICAgICAgIEBwcm9taXNlOiB1
bmRlZmluZWQsXG4iIFwKKyAgICIgICAgICAgIEByZXNvbHZlOiB1bmRlZmluZWQsXG4iIFwKKyAg
ICIgICAgICAgIEByZWplY3Q6IHVuZGVmaW5lZFxuIiBcCisgICAiICAgIH07XG4iIFwKKyAgICJc
biIgXAorICAgIiAgICBmdW5jdGlvbiBleGVjdXRvcihyZXNvbHZlLCByZWplY3QpXG4iIFwKKyAg
ICIgICAge1xuIiBcCisgICAiICAgICAgICBpZiAocHJvbWlzZUNhcGFiaWxpdHkuQHJlc29sdmUg
IT09IHVuZGVmaW5lZClcbiIgXAorICAgIiAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9y
KFwicmVzb2x2ZSBmdW5jdGlvbiBpcyBhbHJlYWR5IHNldFwiKTtcbiIgXAorICAgIiAgICAgICAg
aWYgKHByb21pc2VDYXBhYmlsaXR5LkByZWplY3QgIT09IHVuZGVmaW5lZClcbiIgXAorICAgIiAg
ICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwicmVqZWN0IGZ1bmN0aW9uIGlzIGFscmVh
ZHkgc2V0XCIpO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgICAgIHByb21pc2VDYXBhYmlsaXR5
LkByZXNvbHZlID0gcmVzb2x2ZTtcbiIgXAorICAgIiAgICAgICAgcHJvbWlzZUNhcGFiaWxpdHku
QHJlamVjdCA9IHJlamVjdDtcbiIgXAorICAgIiAgICB9XG4iIFwKKyAgICJcbiIgXAorICAgIiAg
ICB2YXIgcHJvbWlzZSA9IG5ldyBjb25zdHJ1Y3RvcihleGVjdXRvcik7XG4iIFwKKyAgICJcbiIg
XAorICAgIiAgICBpZiAodHlwZW9mIHByb21pc2VDYXBhYmlsaXR5LkByZXNvbHZlICE9PSBcImZ1
bmN0aW9uXCIpXG4iIFwKKyAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiZXhlY3V0
b3IgZGlkIG5vdCB0YWtlIGEgcmVzb2x2ZSBmdW5jdGlvblwiKTtcbiIgXAorICAgIlxuIiBcCisg
ICAiICAgIGlmICh0eXBlb2YgcHJvbWlzZUNhcGFiaWxpdHkuQHJlamVjdCAhPT0gXCJmdW5jdGlv
blwiKVxuIiBcCisgICAiICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcImV4ZWN1dG9yIGRp
ZCBub3QgdGFrZSBhIHJlamVjdCBmdW5jdGlvblwiKTtcbiIgXAorICAgIlxuIiBcCisgICAiICAg
IHByb21pc2VDYXBhYmlsaXR5LkBwcm9taXNlID0gcHJvbWlzZTtcbiIgXAorICAgIlxuIiBcCisg
ICAiICAgIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eTtcbiIgXAorICAgIn0pXG4iIFwKKzsKKwor
Y29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VUcmlnZ2VyUHJv
bWlzZVJlYWN0aW9uc0NvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19vcGVyYXRpb25zUHJvbWlzZVRyaWdnZXJQ
cm9taXNlUmVhY3Rpb25zQ29kZUxlbmd0aCA9IDI2OTsKK2NvbnN0IGNoYXIqIHNfb3BlcmF0aW9u
c1Byb21pc2VUcmlnZ2VyUHJvbWlzZVJlYWN0aW9uc0NvZGUgPQorICAgIihmdW5jdGlvbiAocmVh
Y3Rpb25zLCBhcmd1bWVudClcbiIgXAorICAgIntcbiIgXAorICAgIiAgICBcInVzZSBzdHJpY3Rc
IjtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIGZvciAodmFyIGluZGV4ID0gMCwgbGVuZ3RoID0g
cmVhY3Rpb25zLmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7ICsraW5kZXgpXG4iIFwKKyAgICIgICAg
ICAgIEBlbnF1ZXVlSm9iKEBwcm9taXNlUmVhY3Rpb25Kb2IsIFtyZWFjdGlvbnNbaW5kZXhdLCBh
cmd1bWVudF0pO1xuIiBcCisgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFi
aWxpdHkgc19vcGVyYXRpb25zUHJvbWlzZVJlamVjdFByb21pc2VDb2RlQ29uc3RydWN0QWJpbGl0
eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNf
b3BlcmF0aW9uc1Byb21pc2VSZWplY3RQcm9taXNlQ29kZUxlbmd0aCA9IDU0MTsKK2NvbnN0IGNo
YXIqIHNfb3BlcmF0aW9uc1Byb21pc2VSZWplY3RQcm9taXNlQ29kZSA9CisgICAiKGZ1bmN0aW9u
IChwcm9taXNlLCByZWFzb24pXG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAgXCJ1c2Ugc3RyaWN0
XCI7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICB2YXIgcmVhY3Rpb25zID0gcHJvbWlzZS5AcHJv
bWlzZVJlamVjdFJlYWN0aW9ucztcbiIgXAorICAgIiAgICBwcm9taXNlLkBwcm9taXNlUmVzdWx0
ID0gcmVhc29uO1xuIiBcCisgICAiICAgIHByb21pc2UuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25z
ID0gdW5kZWZpbmVkO1xuIiBcCisgICAiICAgIHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlv
bnMgPSB1bmRlZmluZWQ7XG4iIFwKKyAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVN0YXRlID0gQHBy
b21pc2VSZWplY3RlZDtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIEBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24ucHJvbWlzZVJlamVjdGVkKHByb21pc2UsIHJlYXNvbiwgcmVhY3Rpb25zKTtcbiIg
XAorICAgIlxuIiBcCisgICAiICAgIEB0cmlnZ2VyUHJvbWlzZVJlYWN0aW9ucyhyZWFjdGlvbnMs
IHJlYXNvbik7XG4iIFwKKyAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJp
bGl0eSBzX29wZXJhdGlvbnNQcm9taXNlRnVsZmlsbFByb21pc2VDb2RlQ29uc3RydWN0QWJpbGl0
eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNf
b3BlcmF0aW9uc1Byb21pc2VGdWxmaWxsUHJvbWlzZUNvZGVMZW5ndGggPSA1NDA7Citjb25zdCBj
aGFyKiBzX29wZXJhdGlvbnNQcm9taXNlRnVsZmlsbFByb21pc2VDb2RlID0KKyAgICIoZnVuY3Rp
b24gKHByb21pc2UsIHZhbHVlKVxuIiBcCisgICAie1xuIiBcCisgICAiICAgIFwidXNlIHN0cmlj
dFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdmFyIHJlYWN0aW9ucyA9IHByb21pc2UuQHBy
b21pc2VGdWxmaWxsUmVhY3Rpb25zO1xuIiBcCisgICAiICAgIHByb21pc2UuQHByb21pc2VSZXN1
bHQgPSB2YWx1ZTtcbiIgXAorICAgIiAgICBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9u
cyA9IHVuZGVmaW5lZDtcbiIgXAorICAgIiAgICBwcm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rp
b25zID0gdW5kZWZpbmVkO1xuIiBcCisgICAiICAgIHByb21pc2UuQHByb21pc2VTdGF0ZSA9IEBw
cm9taXNlRnVsZmlsbGVkO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgQEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5wcm9taXNlRnVsZmlsbGVkKHByb21pc2UsIHZhbHVlLCByZWFjdGlvbnMpO1xu
IiBcCisgICAiXG4iIFwKKyAgICIgICAgQHRyaWdnZXJQcm9taXNlUmVhY3Rpb25zKHJlYWN0aW9u
cywgdmFsdWUpO1xuIiBcCisgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFi
aWxpdHkgc19vcGVyYXRpb25zUHJvbWlzZUNyZWF0ZVJlc29sdmluZ0Z1bmN0aW9uc0NvZGVDb25z
dHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citj
b25zdCBpbnQgc19vcGVyYXRpb25zUHJvbWlzZUNyZWF0ZVJlc29sdmluZ0Z1bmN0aW9uc0NvZGVM
ZW5ndGggPSAxNDY4OworY29uc3QgY2hhciogc19vcGVyYXRpb25zUHJvbWlzZUNyZWF0ZVJlc29s
dmluZ0Z1bmN0aW9uc0NvZGUgPQorICAgIihmdW5jdGlvbiAocHJvbWlzZSlcbiIgXAorICAgIntc
biIgXAorICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHZh
ciBhbHJlYWR5UmVzb2x2ZWQgPSBmYWxzZTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHZhciBy
ZXNvbHZlID0gZnVuY3Rpb24gKHJlc29sdXRpb24pIHtcbiIgXAorICAgIiAgICAgICAgaWYgKGFs
cmVhZHlSZXNvbHZlZClcbiIgXAorICAgIiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4i
IFwKKyAgICIgICAgICAgIGFscmVhZHlSZXNvbHZlZCA9IHRydWU7XG4iIFwKKyAgICJcbiIgXAor
ICAgIiAgICAgICAgaWYgKHJlc29sdXRpb24gPT09IHByb21pc2UpXG4iIFwKKyAgICIgICAgICAg
ICAgICByZXR1cm4gQHJlamVjdFByb21pc2UocHJvbWlzZSwgbmV3IEBUeXBlRXJyb3IoXCJSZXNv
bHZlIGEgcHJvbWlzZSB3aXRoIGl0c2VsZlwiKSk7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICAg
ICAgaWYgKCFAaXNPYmplY3QocmVzb2x1dGlvbikpXG4iIFwKKyAgICIgICAgICAgICAgICByZXR1
cm4gQGZ1bGZpbGxQcm9taXNlKHByb21pc2UsIHJlc29sdXRpb24pO1xuIiBcCisgICAiXG4iIFwK
KyAgICIgICAgICAgIHZhciB0aGVuO1xuIiBcCisgICAiICAgICAgICB0cnkge1xuIiBcCisgICAi
ICAgICAgICAgICAgdGhlbiA9IHJlc29sdXRpb24udGhlbjtcbiIgXAorICAgIiAgICAgICAgfSBj
YXRjaCAoZXJyb3IpIHtcbiIgXAorICAgIiAgICAgICAgICAgIHJldHVybiBAcmVqZWN0UHJvbWlz
ZShwcm9taXNlLCBlcnJvcik7XG4iIFwKKyAgICIgICAgICAgIH1cbiIgXAorICAgIlxuIiBcCisg
ICAiICAgICAgICBpZiAodHlwZW9mIHRoZW4gIT09ICdmdW5jdGlvbicpXG4iIFwKKyAgICIgICAg
ICAgICAgICByZXR1cm4gQGZ1bGZpbGxQcm9taXNlKHByb21pc2UsIHJlc29sdXRpb24pO1xuIiBc
CisgICAiXG4iIFwKKyAgICIgICAgICAgIEBlbnF1ZXVlSm9iKEBwcm9taXNlUmVzb2x2ZVRoZW5h
YmxlSm9iLCBbcHJvbWlzZSwgcmVzb2x1dGlvbiwgdGhlbl0pO1xuIiBcCisgICAiXG4iIFwKKyAg
ICIgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4iIFwKKyAgICIgICAgfTtcbiIgXAorICAgIlxu
IiBcCisgICAiICAgIHZhciByZWplY3QgPSBmdW5jdGlvbiAocmVhc29uKSB7XG4iIFwKKyAgICIg
ICAgICAgIGlmIChhbHJlYWR5UmVzb2x2ZWQpXG4iIFwKKyAgICIgICAgICAgICAgICByZXR1cm4g
dW5kZWZpbmVkO1xuIiBcCisgICAiICAgICAgICBhbHJlYWR5UmVzb2x2ZWQgPSB0cnVlO1xuIiBc
CisgICAiXG4iIFwKKyAgICIgICAgICAgIHJldHVybiBAcmVqZWN0UHJvbWlzZShwcm9taXNlLCBy
ZWFzb24pO1xuIiBcCisgICAiICAgIH07XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICByZXR1cm4g
e1xuIiBcCisgICAiICAgICAgICBAcmVzb2x2ZTogcmVzb2x2ZSxcbiIgXAorICAgIiAgICAgICAg
QHJlamVjdDogcmVqZWN0XG4iIFwKKyAgICIgICAgfTtcbiIgXAorICAgIn0pXG4iIFwKKzsKKwor
Y29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVh
Y3Rpb25Kb2JDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fu
bm90Q29uc3RydWN0OworY29uc3QgaW50IHNfb3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVhY3Rp
b25Kb2JDb2RlTGVuZ3RoID0gNDkzOworY29uc3QgY2hhciogc19vcGVyYXRpb25zUHJvbWlzZVBy
b21pc2VSZWFjdGlvbkpvYkNvZGUgPQorICAgIihmdW5jdGlvbiAocmVhY3Rpb24sIGFyZ3VtZW50
KVxuIiBcCisgICAie1xuIiBcCisgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4i
IFwKKyAgICIgICAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gcmVhY3Rpb24uQGNhcGFiaWxpdGll
cztcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHZhciByZXN1bHQ7XG4iIFwKKyAgICIgICAgdHJ5
IHtcbiIgXAorICAgIiAgICAgICAgcmVzdWx0ID0gcmVhY3Rpb24uQGhhbmRsZXIuQGNhbGwodW5k
ZWZpbmVkLCBhcmd1bWVudCk7XG4iIFwKKyAgICIgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiIgXAor
ICAgIiAgICAgICAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LkByZWplY3QuQGNhbGwodW5kZWZp
bmVkLCBlcnJvcik7XG4iIFwKKyAgICIgICAgfVxuIiBcCisgICAiXG4iIFwKKyAgICIgICAgcmV0
dXJuIHByb21pc2VDYXBhYmlsaXR5LkByZXNvbHZlLkBjYWxsKHVuZGVmaW5lZCwgcmVzdWx0KTtc
biIgXAorICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfb3Bl
cmF0aW9uc1Byb21pc2VQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZUNvbnN0cnVjdEFiaWxp
dHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBz
X29wZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYkNvZGVMZW5ndGggPSA0
NTM7Citjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJlc29sdmVUaGVuYWJs
ZUpvYkNvZGUgPQorICAgIihmdW5jdGlvbiAocHJvbWlzZVRvUmVzb2x2ZSwgdGhlbmFibGUsIHRo
ZW4pXG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICJc
biIgXAorICAgIiAgICB2YXIgcmVzb2x2aW5nRnVuY3Rpb25zID0gQGNyZWF0ZVJlc29sdmluZ0Z1
bmN0aW9ucyhwcm9taXNlVG9SZXNvbHZlKTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHRyeSB7
XG4iIFwKKyAgICIgICAgICAgIHJldHVybiB0aGVuLkBjYWxsKHRoZW5hYmxlLCByZXNvbHZpbmdG
dW5jdGlvbnMuQHJlc29sdmUsIHJlc29sdmluZ0Z1bmN0aW9ucy5AcmVqZWN0KTtcbiIgXAorICAg
IiAgICB9IGNhdGNoIChlcnJvcikge1xuIiBcCisgICAiICAgICAgICByZXR1cm4gcmVzb2x2aW5n
RnVuY3Rpb25zLkByZWplY3QuQGNhbGwodW5kZWZpbmVkLCBlcnJvcik7XG4iIFwKKyAgICIgICAg
fVxuIiBcCisgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19v
cGVyYXRpb25zUHJvbWlzZUluaXRpYWxpemVQcm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBK
U0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX29wZXJh
dGlvbnNQcm9taXNlSW5pdGlhbGl6ZVByb21pc2VDb2RlTGVuZ3RoID0gNzMxOworY29uc3QgY2hh
ciogc19vcGVyYXRpb25zUHJvbWlzZUluaXRpYWxpemVQcm9taXNlQ29kZSA9CisgICAiKGZ1bmN0
aW9uIChleGVjdXRvcilcbiIgXAorICAgIntcbiIgXAorICAgIiAgICBcInVzZSBzdHJpY3RcIjtc
biIgXAorICAgIlxuIiBcCisgICAiICAgIGlmICh0eXBlb2YgZXhlY3V0b3IgIT09ICdmdW5jdGlv
bicpXG4iIFwKKyAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiUHJvbWlzZSBjb25z
dHJ1Y3RvciB0YWtlcyBhIGZ1bmN0aW9uIGFyZ3VtZW50XCIpO1xuIiBcCisgICAiXG4iIFwKKyAg
ICIgICAgdGhpcy5AcHJvbWlzZVN0YXRlID0gQHByb21pc2VQZW5kaW5nO1xuIiBcCisgICAiICAg
IHRoaXMuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zID0gW107XG4iIFwKKyAgICIgICAgdGhpcy5A
cHJvbWlzZVJlamVjdFJlYWN0aW9ucyA9IFtdO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdmFy
IHJlc29sdmluZ0Z1bmN0aW9ucyA9IEBjcmVhdGVSZXNvbHZpbmdGdW5jdGlvbnModGhpcyk7XG4i
IFwKKyAgICIgICAgdHJ5IHtcbiIgXAorICAgIiAgICAgICAgZXhlY3V0b3IocmVzb2x2aW5nRnVu
Y3Rpb25zLkByZXNvbHZlLCByZXNvbHZpbmdGdW5jdGlvbnMuQHJlamVjdCk7XG4iIFwKKyAgICIg
ICAgfSBjYXRjaCAoZXJyb3IpIHtcbiIgXAorICAgIiAgICAgICAgcmV0dXJuIHJlc29sdmluZ0Z1
bmN0aW9ucy5AcmVqZWN0LkBjYWxsKHVuZGVmaW5lZCwgZXJyb3IpO1xuIiBcCisgICAiICAgIH1c
biIgXAorICAgIlxuIiBcCisgICAiICAgIHJldHVybiB0aGlzO1xuIiBcCisgICAifSlcbiIgXAor
OworCisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlv
bk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFt
ZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCit7XAorICAgIHJldHVybiB2bS5idWlsdGluRXhl
Y3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4
ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IH0KK0pTQ19GT1JFQUNIX0JVSUxUSU5f
Q09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VO
RVJBVE9SCisKKworfSAvLyBuYW1lc3BhY2UgSlNDCisjIyMgRW5kIEZpbGU6IEpTQ0J1aWx0aW5z
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9X
ZWJDb3JlLUd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NWEy
MWQ0NjU2ODY2ZmU4ZjczN2YxODMwN2IxMjYyNGE3NDQ4MmFhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2Vi
Q29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTAsMCArMSwzMTggQEAK
KyMjIyBCZWdpbiBGaWxlOiBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmgKKy8qCisgKiBDb3B5cmln
aHQgKGMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisg
Ki8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVy
YXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQor
CisjaWZuZGVmIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNfaAorI2RlZmluZSBHdWFyZGVkQnVpbHRp
bkJ1aWx0aW5zX2gKKworI2luY2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oPgorCituYW1l
c3BhY2UgSlNDIHsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK30KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisvKiBHdWFyZGVkQnVpbHRpbiAqLworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfZ3Vh
cmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZTsKK2V4dGVybiBjb25zdCBpbnQg
c19ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlTGVuZ3RoOworZXh0ZXJu
IGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0
cmVhbUxvY2tlZENvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfZ3Vh
cmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGU7CitleHRlcm4gY29uc3QgaW50IHNf
Z3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGVMZW5ndGg7CitleHRlcm4gY29u
c3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0
cmVhbUNvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfZ3VhcmRlZEJ1
aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19ndWFyZGVk
QnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6
Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVD
b25zdHJ1Y3RBYmlsaXR5OworCisjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJ
Tl9CVUlMVElOX0RBVEEobWFjcm8pIFwKKyAgICBtYWNybyhpc1JlYWRhYmxlU3RyZWFtTG9ja2Vk
LCBndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIDEpIFwKKyAgICBtYWNybyhj
YW5jZWxSZWFkYWJsZVN0cmVhbSwgZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbSwg
MikgXAorICAgIG1hY3JvKHByb21pc2VJbnZva2VPck5vb3AsIGd1YXJkZWRCdWlsdGluUHJvbWlz
ZUludm9rZU9yTm9vcCwgMykgXAorCisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9HVUFSREVEQlVJ
TFRJTl9JU1JFQURBQkxFU1RSRUFNTE9DS0VEIDEKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX0dV
QVJERURCVUlMVElOX0NBTkNFTFJFQURBQkxFU1RSRUFNIDEKKyNkZWZpbmUgV0VCQ09SRV9CVUlM
VElOX0dVQVJERURCVUlMVElOX1BST01JU0VJTlZPS0VPUk5PT1AgMQorCisjZGVmaW5lIFdFQkNP
UkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUobWFjcm8pIFwKKyAgICBtYWNy
byhndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlLCBpc1JlYWRhYmxlU3Ry
ZWFtTG9ja2VkLCBzX2d1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5n
dGgpIFwKKyAgICBtYWNybyhndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZSwg
Y2FuY2VsUmVhZGFibGVTdHJlYW0sIHNfZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVh
bUNvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5v
b3BDb2RlLCBwcm9taXNlSW52b2tlT3JOb29wLCBzX2d1YXJkZWRCdWlsdGluUHJvbWlzZUludm9r
ZU9yTm9vcENvZGVMZW5ndGgpIFwKKworI2RlZmluZSBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJV
SUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcCisgICAgbWFjcm8oY2FuY2VsUmVh
ZGFibGVTdHJlYW0pIFwKKyAgICBtYWNybyhpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKSBcCisgICAg
bWFjcm8ocHJvbWlzZUludm9rZU9yTm9vcCkgXAorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9H
RU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorICAgIEpT
Qzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKwor
V0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxU
SU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKKworI2RlZmlu
ZSBXRUJDT1JFX0JVSUxUSU5fR1VBUkRFREJVSUxUSU5fRVhJU1RTKG9iamVjdCwgZnVuYykgZGVm
aW5lZCBXRUJDT1JFX0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gR3VhcmRlZEJ1aWx0aW5CdWlsdGluc19oCisKKyMj
IyBFbmQgRmlsZTogR3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5oCisKKyMjIyBCZWdpbiBGaWxlOiBH
dWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmNwcAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5v
biBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1Qg
RURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNj
cmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmgiCisKKyNpbmNsdWRlICJX
ZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSA8cnVudGltZS9FeGVjdXRhYmxlLmg+Cisj
aW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUv
SlNDZWxsSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oPgor
I2luY2x1ZGUgPHJ1bnRpbWUvVk0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBK
U0M6OkNvbnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2Nr
ZWRDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29u
c3RydWN0OworY29uc3QgaW50IHNfZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2Vk
Q29kZUxlbmd0aCA9IDcxOworY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVT
dHJlYW1Mb2NrZWRDb2RlID0KKyAgICAiKGZ1bmN0aW9uIChzdHJlYW0pXG4iIFwKKyAgICAie1xu
IiBcCisgICAgIiAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICBy
ZXR1cm4gISFzdHJlYW0uQHJlYWRlcjtcbiIgXAorICAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpT
Qzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1D
b2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3Ry
dWN0OworY29uc3QgaW50IHNfZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGVM
ZW5ndGggPSA0MDI7Citjb25zdCBjaGFyKiBzX2d1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVT
dHJlYW1Db2RlID0KKyAgICAiKGZ1bmN0aW9uIChzdHJlYW0sIHJlYXNvbilcbiIgXAorICAgICJ7
XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAg
ICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xvc2VkKVxuIiBcCisgICAg
IiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuIiBcCisgICAgIiAgICBpZiAoc3Ry
ZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZClcbiIgXAorICAgICIgICAgICAg
IHJldHVybiBQcm9taXNlLnJlamVjdChzdHJlYW0uQHN0b3JlZEVycm9yKTtcbiIgXAorICAgICIg
ICAgc3RyZWFtLkBxdWV1ZSA9IFtdO1xuIiBcCisgICAgIiAgICBAZmluaXNoQ2xvc2luZ1JlYWRh
YmxlU3RyZWFtKHN0cmVhbSk7XG4iIFwKKyAgICAiICAgIHJldHVybiBAcHJvbWlzZUludm9rZU9y
Tm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsIFwiY2FuY2VsXCIsIFtyZWFzb25dKS50aGVu
KGZ1bmN0aW9uKCkgeyB9KTtcbiIgXAorICAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29u
c3RydWN0QWJpbGl0eSBzX2d1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVDb25z
dHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citj
b25zdCBpbnQgc19ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlTGVuZ3RoID0g
MzM4OworY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2Rl
ID0KKyAgICAiKGZ1bmN0aW9uIChvYmplY3QsIGtleSwgYXJncylcbiIgXAorICAgICJ7XG4iIFwK
KyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICB0cnkg
e1xuIiBcCisgICAgIiAgICAgICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldO1xuIiBcCisgICAg
IiAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QgPT09IFwidW5kZWZpbmVkXCIpXG4iIFwKKyAgICAi
ICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuIiBcCisgICAgIiAgICAgICAg
dmFyIHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBhcmdzKTtcbiIgXAorICAgICIgICAg
ICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcbiIgXAorICAgICIgICAgfVxuIiBc
CisgICAgIiAgICBjYXRjaChlcnJvcikge1xuIiBcCisgICAgIiAgICAgICAgcmV0dXJuIFByb21p
c2UucmVqZWN0KGVycm9yKTtcbiIgXAorICAgICIgICAgfVxuIiBcCisgICAgIn0pXG4iIFwKKzsK
KworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25O
YW1lLCBhcmd1bWVudENvdW50KSBcCitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUj
I0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAore1wKKyAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50
RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFwKKyAg
ICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmd1YXJkZWRCdWlsdGluQnVp
bHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWls
dGluRnVuY3Rpb25zKCkuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2Uo
KSk7IFwKK30KK1dFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVG
SU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgor
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyMjIyBFbmQgRmlsZTogR3VhcmRlZEJ1aWx0aW5C
dWlsdGlucy5jcHAKKworIyMjIEJlZ2luIEZpbGU6IEd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFw
cGVyLmgKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBp
cyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBi
dWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5l
cmF0ZS1qcy1idWlsdGlucy5weQorCisjaWZuZGVmIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFw
cGVyX2gKKyNkZWZpbmUgR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAorCisjaW5jbHVk
ZSAiR3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5oIgorI2luY2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5V
dGlscy5oPgorI2luY2x1ZGUgPGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg+
CisjaW5jbHVkZSA8cnVudGltZS9JZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0Z1
bmN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR3VhcmRlZEJ1aWx0aW5C
dWlsdGluc1dyYXBwZXIgOiBwcml2YXRlIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcihKU0M6OlZNKiB2bSkK
KyAgICAgICAgOiBtX3ZtKCp2bSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlM
VElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX0JVSUxUSU5fTkFNRVMpCisjZGVm
aW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUs
IGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKEpTQzo6bWFrZVNvdXJjZShTdHJpbmdJbXBsOjpj
cmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFtZSwgbGVuZ3RoKSkpCisgICAgICAgIFdFQkNPUkVfRk9S
RUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoSU5JVElBTElaRV9CVUlMVElOX1NPVVJD
RV9NRU1CRVJTKQorI3VuZGVmIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworICAg
IHsKKyAgICB9CisKKyNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVu
Y3Rpb25OYW1lLCBsZW5ndGgpIFwKKyAgICBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBuYW1lIyNFeGVjdXRhYmxlKCk7IFwKKyAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIG5hbWUj
I1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KKyAgICBXRUJDT1JF
X0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNV
VEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCisKKyAgICBXRUJDT1JF
X0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJ
TFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKQorCisgICAgdm9pZCBleHBvcnROYW1lcygpOworCitw
cml2YXRlOgorICAgIEpTQzo6Vk0mIG1fdm07CisKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRF
REJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FUykKKwor
I2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1l
LCBsZW5ndGgpIFwKKyAgICBKU0M6OlNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJjZTtcCisgICAg
SlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVj
dXRhYmxlOworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUo
REVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9T
T1VSQ0VfTUVNQkVSUworCit9OworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVT
KG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitpbmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4ZWN1
dGFibGUoKSBcCit7XAorICAgIGlmICghbV8jI25hbWUjI0V4ZWN1dGFibGUpXAorICAgICAgICBt
XyMjbmFtZSMjRXhlY3V0YWJsZSA9IEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlPihKU0M6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fdm0sIG1fIyNuYW1lIyNTb3Vy
Y2UsIGZ1bmN0aW9uTmFtZSMjUHVibGljTmFtZSgpLCBzXyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0
eSksIHRoaXMsICZtXyMjbmFtZSMjRXhlY3V0YWJsZSk7XAorICAgIHJldHVybiBtXyMjbmFtZSMj
RXhlY3V0YWJsZS5nZXQoKTtcCit9CitXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJ
TFRJTl9DT0RFKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIERFRklORV9CVUlM
VElOX0VYRUNVVEFCTEVTCisKK2lubGluZSB2b2lkIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFw
cGVyOjpleHBvcnROYW1lcygpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTl9OQU1FKG5hbWUp
IG1fdm0ucHJvcGVydHlOYW1lcy0+YXBwZW5kRXh0ZXJuYWxOYW1lKG5hbWUjI1B1YmxpY05hbWUo
KSwgbmFtZSMjUHJpdmF0ZU5hbWUoKSk7CisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlM
VElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShFWFBPUlRfRlVOQ1RJT05fTkFNRSkKKyN1bmRlZiBF
WFBPUlRfRlVOQ1RJT05fTkFNRQorfQorCitjbGFzcyBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5GdW5j
dGlvbnMgeworcHVibGljOgorICAgIGV4cGxpY2l0IEd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0
aW9ucyhKU0M6OlZNJiB2bSkgOiBtX3ZtKHZtKSB7IH0KKworICAgIHZvaWQgaW5pdChKU0M6OkpT
R2xvYmFsT2JqZWN0Jik7CisgICAgdm9pZCB2aXNpdChKU0M6OlNsb3RWaXNpdG9yJik7CisKK3B1
YmxpYzoKKyAgICBKU0M6OlZNJiBtX3ZtOworCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VS
Q0VfTUVNQkVSUyhmdW5jdGlvbk5hbWUpIFwKKyAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpT
RnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uOworICAgIFdFQkNPUkVfRk9SRUFD
SF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX1NP
VVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworfTsK
KworaW5saW5lIHZvaWQgR3VhcmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zOjppbml0KEpTQzo6
SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9O
KGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aClcCisgICAgbV8jI2Z1bmN0aW9uTmFtZSMj
RnVuY3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmplY3QsIEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRl
QnVpbHRpbkZ1bmN0aW9uKG1fdm0sIGNvZGVOYW1lIyNHZW5lcmF0b3IobV92bSksICZnbG9iYWxP
YmplY3QpKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RF
KEVYUE9SVF9GVU5DVElPTikKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT04KK30KKworaW5saW5lIHZv
aWQgR3VhcmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zOjp2aXNpdChKU0M6OlNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworI2RlZmluZSBWSVNJVF9GVU5DVElPTihuYW1lKSB2aXNpdG9yLmFwcGVu
ZCgmbV8jI25hbWUjI0Z1bmN0aW9uKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxU
SU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKFZJU0lUX0ZVTkNUSU9OKQorI3VuZGVmIFZJU0lUX0ZV
TkNUSU9OCit9CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gR3VhcmRl
ZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAorCisjIyMgRW5kIEZpbGU6IEd1YXJkZWRCdWlsdGlu
QnVpbHRpbnNXcmFwcGVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRp
bi1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0
cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJh
dGUuanMtcmVzdWx0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0OGExY2ZjNDQ4NGFlZjNmNzYwZTg3OTQ2NmVmYmFi
OTY2ZTUwZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4t
U2VwYXJhdGUuanMtcmVzdWx0CkBAIC0wLDAgKzEsMzE4IEBACisjIyMgQmVnaW4gRmlsZTogR3Vh
cmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zLmgKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUg
Q2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8g
Tk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEph
dmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaWZuZGVmIEd1
YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc19oCisjZGVmaW5lIEd1YXJkZWRJbnRlcm5hbEJ1
aWx0aW5CdWlsdGluc19oCisKKyNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4KKwor
bmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Cit9CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworLyogR3VhcmRlZEludGVybmFsQnVpbHRpbiAqLworZXh0ZXJuIGNvbnN0
IGNoYXIqIHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2Rl
OworZXh0ZXJuIGNvbnN0IGludCBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1JlYWRhYmxlU3Ry
ZWFtTG9ja2VkQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkg
c19ndWFyZGVkSW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVDb25zdHJ1
Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbkNh
bmNlbFJlYWRhYmxlU3RyZWFtQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19ndWFyZGVkSW50ZXJu
YWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpT
Qzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFkYWJs
ZVN0cmVhbUNvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfZ3VhcmRl
ZEludGVybmFsQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlOworZXh0ZXJuIGNvbnN0IGlu
dCBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUxlbmd0aDsK
K2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkSW50ZXJuYWxCdWls
dGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVDb25zdHJ1Y3RBYmlsaXR5OworCisjZGVmaW5lIFdF
QkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fREFUQShtYWNybykg
XAorICAgIG1hY3JvKGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIGd1YXJkZWRJbnRlcm5hbEJ1aWx0
aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkLCAxKSBcCisgICAgbWFjcm8oY2FuY2VsUmVhZGFibGVT
dHJlYW0sIGd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbSwgMikgXAor
ICAgIG1hY3JvKHByb21pc2VJbnZva2VPck5vb3AsIGd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Qcm9t
aXNlSW52b2tlT3JOb29wLCAzKSBcCisKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX0dVQVJERURJ
TlRFUk5BTEJVSUxUSU5fSVNSRUFEQUJMRVNUUkVBTUxPQ0tFRCAxCisjZGVmaW5lIFdFQkNPUkVf
QlVJTFRJTl9HVUFSREVESU5URVJOQUxCVUlMVElOX0NBTkNFTFJFQURBQkxFU1RSRUFNIDEKKyNk
ZWZpbmUgV0VCQ09SRV9CVUlMVElOX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fUFJPTUlTRUlOVk9L
RU9STk9PUCAxCisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxU
SU5fQlVJTFRJTl9DT0RFKG1hY3JvKSBcCisgICAgbWFjcm8oZ3VhcmRlZEludGVybmFsQnVpbHRp
bklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlLCBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkLCBzX2d1
YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUxlbmd0aCkgXAor
ICAgIG1hY3JvKGd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGUs
IGNhbmNlbFJlYWRhYmxlU3RyZWFtLCBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFk
YWJsZVN0cmVhbUNvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhndWFyZGVkSW50ZXJuYWxCdWlsdGlu
UHJvbWlzZUludm9rZU9yTm9vcENvZGUsIHByb21pc2VJbnZva2VPck5vb3AsIHNfZ3VhcmRlZElu
dGVybmFsQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlTGVuZ3RoKSBcCisKKyNkZWZpbmUg
V0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9O
QU1FKG1hY3JvKSBcCisgICAgbWFjcm8oY2FuY2VsUmVhZGFibGVTdHJlYW0pIFwKKyAgICBtYWNy
byhpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKSBcCisgICAgbWFjcm8ocHJvbWlzZUludm9rZU9yTm9v
cCkgXAorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0
aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBj
b2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKworV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJ
TlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisj
dW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJ
Tl9HVUFSREVESU5URVJOQUxCVUlMVElOX0VYSVNUUyhvYmplY3QsIGZ1bmMpIGRlZmluZWQgV0VC
Q09SRV9CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc19oCisKKyMj
IyBFbmQgRmlsZTogR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zLmgKKworIyMjIEJlZ2lu
IEZpbGU6IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucy5jcHAKKy8qCisgKiBDb3B5cmln
aHQgKGMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisg
Ki8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVy
YXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1
aWx0aW5zLmgiCisKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSA8
cnVudGltZS9FeGVjdXRhYmxlLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRp
bWUvU3RydWN0dXJlSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVk0uaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkSW50
ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVDb25zdHJ1Y3RBYmlsaXR5ID0g
SlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19ndWFy
ZGVkSW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5ndGggPSA3MTsK
K2NvbnN0IGNoYXIqIHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2Nr
ZWRDb2RlID0KKyAgICAiKGZ1bmN0aW9uIChzdHJlYW0pXG4iIFwKKyAgICAie1xuIiBcCisgICAg
IiAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICByZXR1cm4gISFz
dHJlYW0uQHJlYWRlcjtcbiIgXAorICAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3Ry
dWN0QWJpbGl0eSBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNv
ZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1
Y3Q7Citjb25zdCBpbnQgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJl
YW1Db2RlTGVuZ3RoID0gNDAyOworY29uc3QgY2hhciogc19ndWFyZGVkSW50ZXJuYWxCdWlsdGlu
Q2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlID0KKyAgICAiKGZ1bmN0aW9uIChzdHJlYW0sIHJlYXNv
bilcbiIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAg
IlxuIiBcCisgICAgIiAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xv
c2VkKVxuIiBcCisgICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuIiBcCisg
ICAgIiAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZClcbiIg
XAorICAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChzdHJlYW0uQHN0b3JlZEVycm9y
KTtcbiIgXAorICAgICIgICAgc3RyZWFtLkBxdWV1ZSA9IFtdO1xuIiBcCisgICAgIiAgICBAZmlu
aXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7XG4iIFwKKyAgICAiICAgIHJldHVybiBA
cHJvbWlzZUludm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsIFwiY2FuY2VsXCIs
IFtyZWFzb25dKS50aGVuKGZ1bmN0aW9uKCkgeyB9KTtcbiIgXAorICAgICJ9KVxuIiBcCis7CisK
K2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Qcm9t
aXNlSW52b2tlT3JOb29wQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxp
dHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Q
cm9taXNlSW52b2tlT3JOb29wQ29kZUxlbmd0aCA9IDMzODsKK2NvbnN0IGNoYXIqIHNfZ3VhcmRl
ZEludGVybmFsQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlID0KKyAgICAiKGZ1bmN0aW9u
IChvYmplY3QsIGtleSwgYXJncylcbiIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0
cmljdFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICB0cnkge1xuIiBcCisgICAgIiAgICAg
ICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldO1xuIiBcCisgICAgIiAgICAgICAgaWYgKHR5cGVv
ZiBtZXRob2QgPT09IFwidW5kZWZpbmVkXCIpXG4iIFwKKyAgICAiICAgICAgICAgICAgcmV0dXJu
IFByb21pc2UucmVzb2x2ZSgpO1xuIiBcCisgICAgIiAgICAgICAgdmFyIHJlc3VsdCA9IG1ldGhv
ZC5AYXBwbHkob2JqZWN0LCBhcmdzKTtcbiIgXAorICAgICIgICAgICAgIHJldHVybiBQcm9taXNl
LnJlc29sdmUocmVzdWx0KTtcbiIgXAorICAgICIgICAgfVxuIiBcCisgICAgIiAgICBjYXRjaChl
cnJvcikge1xuIiBcCisgICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtc
biIgXAorICAgICIgICAgfVxuIiBcCisgICAgIn0pXG4iIFwKKzsKKworCisjZGVmaW5lIERFRklO
RV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50
KSBcCitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZN
JiB2bSkgXAore1wKKyAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0
PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFwKKyAgICByZXR1cm4gY2xpZW50RGF0
YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucygpLmNv
ZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlv
bnMoKS5ndWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCkp
OyBcCit9CitXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0NP
REUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVS
QVRPUgorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyMjIyBFbmQgRmlsZTogR3VhcmRlZElu
dGVybmFsQnVpbHRpbkJ1aWx0aW5zLmNwcAorCisjIyMgQmVnaW4gRmlsZTogR3VhcmRlZEludGVy
bmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlci5oCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IENh
bm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5P
VCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZh
U2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lmbmRlZiBHdWFy
ZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyX2gKKyNkZWZpbmUgR3VhcmRlZEludGVy
bmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9oCisKKyNpbmNsdWRlICJHdWFyZGVkSW50ZXJuYWxC
dWlsdGluQnVpbHRpbnMuaCIKKyNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4KKyNp
bmNsdWRlIDxieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgorI2luY2x1ZGUg
PHJ1bnRpbWUvSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWls
dGluc1dyYXBwZXIgOiBwcml2YXRlIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyKEpTQzo6Vk0q
IHZtKQorICAgICAgICA6IG1fdm0oKnZtKQorICAgICAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRF
RElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElaRV9CVUlMVElO
X05BTUVTKQorI2RlZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwg
ZnVuY3Rpb25OYW1lLCBsZW5ndGgpICwgbV8jI25hbWUjI1NvdXJjZShKU0M6Om1ha2VTb3VyY2Uo
U3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc18jI25hbWUsIGxlbmd0aCkpKQorICAgICAg
ICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0NPREUoSU5J
VElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIElOSVRJQUxJWkVfQlVJTFRJ
Tl9TT1VSQ0VfTUVNQkVSUworICAgIHsKKyAgICB9CisKKyNkZWZpbmUgRVhQT1NFX0JVSUxUSU5f
RVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKKyAgICBKU0M6OlVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFwKKyAgICBjb25zdCBK
U0M6OlNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNT
b3VyY2U7IH0KKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlM
VElOX0NPREUoRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgRVhQT1NFX0JVSUxU
SU5fRVhFQ1VUQUJMRVMKKworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlM
VElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NF
U1NPUikKKworICAgIHZvaWQgZXhwb3J0TmFtZXMoKTsKKworcHJpdmF0ZToKKyAgICBKU0M6OlZN
JiBtX3ZtOworCisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJ
TFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FUykKKworI2RlZmluZSBERUNM
QVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwK
KyAgICBKU0M6OlNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJjZTtcCisgICAgSlNDOjpXZWFrPEpT
Qzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVjdXRhYmxlOworICAg
IFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShERUNM
QVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJD
RV9NRU1CRVJTCisKK307CisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFt
ZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKK2lubGluZSBKU0M6OlVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyOjpuYW1lIyNF
eGVjdXRhYmxlKCkgXAore1wKKyAgICBpZiAoIW1fIyNuYW1lIyNFeGVjdXRhYmxlKVwKKyAgICAg
ICAgbV8jI25hbWUjI0V4ZWN1dGFibGUgPSBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZT4oSlNDOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShtX3ZtLCBtXyMjbmFtZSMj
U291cmNlLCBmdW5jdGlvbk5hbWUjI1B1YmxpY05hbWUoKSwgc18jI25hbWUjI0NvbnN0cnVjdEFi
aWxpdHkpLCB0aGlzLCAmbV8jI25hbWUjI0V4ZWN1dGFibGUpO1wKKyAgICByZXR1cm4gbV8jI25h
bWUjI0V4ZWN1dGFibGUuZ2V0KCk7XAorfQorV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5B
TEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVm
IERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTCisKK2lubGluZSB2b2lkIEd1YXJkZWRJbnRlcm5h
bEJ1aWx0aW5CdWlsdGluc1dyYXBwZXI6OmV4cG9ydE5hbWVzKCkKK3sKKyNkZWZpbmUgRVhQT1JU
X0ZVTkNUSU9OX05BTUUobmFtZSkgbV92bS5wcm9wZXJ0eU5hbWVzLT5hcHBlbmRFeHRlcm5hbE5h
bWUobmFtZSMjUHVibGljTmFtZSgpLCBuYW1lIyNQcml2YXRlTmFtZSgpKTsKKyAgICBXRUJDT1JF
X0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoRVhQ
T1JUX0ZVTkNUSU9OX05BTUUpCisjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OX05BTUUKK30KKworY2xh
c3MgR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnMgeworcHVibGljOgorICAg
IGV4cGxpY2l0IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zKEpTQzo6Vk0m
IHZtKSA6IG1fdm0odm0pIHsgfQorCisgICAgdm9pZCBpbml0KEpTQzo6SlNHbG9iYWxPYmplY3Qm
KTsKKyAgICB2b2lkIHZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImKTsKKworcHVibGljOgorICAgIEpT
Qzo6Vk0mIG1fdm07CisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKGZ1
bmN0aW9uTmFtZSkgXAorICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNGdW5jdGlvbj4gbV8j
I2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb247CisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRF
Uk5BTEJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0Vf
TUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKK307CisKK2lu
bGluZSB2b2lkIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zOjppbml0KEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyNkZWZpbmUgRVhQT1JUX0ZVTkNU
SU9OKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aClcCisgICAgbV8jI2Z1bmN0aW9uTmFt
ZSMjRnVuY3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmplY3QsIEpTQzo6SlNGdW5jdGlvbjo6Y3Jl
YXRlQnVpbHRpbkZ1bmN0aW9uKG1fdm0sIGNvZGVOYW1lIyNHZW5lcmF0b3IobV92bSksICZnbG9i
YWxPYmplY3QpKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9C
VUlMVElOX0NPREUoRVhQT1JUX0ZVTkNUSU9OKQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTgorfQor
CitpbmxpbmUgdm9pZCBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbkZ1bmN0aW9uczo6dmlz
aXQoSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyNkZWZpbmUgVklTSVRfRlVOQ1RJT04o
bmFtZSkgdmlzaXRvci5hcHBlbmQoJm1fIyNuYW1lIyNGdW5jdGlvbik7CisgICAgV0VCQ09SRV9G
T1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKFZJU0lU
X0ZVTkNUSU9OKQorI3VuZGVmIFZJU0lUX0ZVTkNUSU9OCit9CisKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBl
cl9oCisKKyMjIyBFbmQgRmlsZTogR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBl
ci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWls
dGlucy9leHBlY3RlZC9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQv
V2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
OGVlMmRhYmJhYzljMWE2YjY1OWFiMTMyYjBhNmM0NzFlNjNlNDU4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQv
V2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMCwwICsxLDMx
OCBAQAorIyMjIEJlZ2luIEZpbGU6IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5oCisvKgorICog
Q29weXJpZ2h0IChjKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxs
eSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhl
IHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRp
bnMucHkKKworI2lmbmRlZiBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNfaAorI2RlZmluZSBVbmd1
YXJkZWRCdWlsdGluQnVpbHRpbnNfaAorCisjaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxz
Lmg+CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOworfQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKKy8qIFVuZ3VhcmRlZEJ1aWx0aW4gKi8KK2V4dGVybiBjb25z
dCBjaGFyKiBzX3VuZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZTsKK2V4
dGVybiBjb25zdCBpbnQgc191bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENv
ZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfdW5ndWFyZGVk
QnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVy
biBjb25zdCBjaGFyKiBzX3VuZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGU7
CitleHRlcm4gY29uc3QgaW50IHNfdW5ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFt
Q29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc191bmd1YXJk
ZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVy
biBjb25zdCBjaGFyKiBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZTsK
K2V4dGVybiBjb25zdCBpbnQgc191bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENv
ZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfdW5ndWFyZGVk
QnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlQ29uc3RydWN0QWJpbGl0eTsKKworI2RlZmlu
ZSBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0RBVEEobWFjcm8pIFwK
KyAgICBtYWNybyhpc1JlYWRhYmxlU3RyZWFtTG9ja2VkLCB1bmd1YXJkZWRCdWlsdGluSXNSZWFk
YWJsZVN0cmVhbUxvY2tlZCwgMSkgXAorICAgIG1hY3JvKGNhbmNlbFJlYWRhYmxlU3RyZWFtLCB1
bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW0sIDIpIFwKKyAgICBtYWNybyhwcm9t
aXNlSW52b2tlT3JOb29wLCB1bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcCwgMykg
XAorCisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9VTkdVQVJERURCVUlMVElOX0lTUkVBREFCTEVT
VFJFQU1MT0NLRUQgMQorI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fVU5HVUFSREVEQlVJTFRJTl9D
QU5DRUxSRUFEQUJMRVNUUkVBTSAxCisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9VTkdVQVJERURC
VUlMVElOX1BST01JU0VJTlZPS0VPUk5PT1AgMQorCisjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9V
TkdVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShtYWNybykgXAorICAgIG1hY3JvKHVuZ3VhcmRl
ZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZSwgaXNSZWFkYWJsZVN0cmVhbUxvY2tl
ZCwgc191bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5ndGgpIFwK
KyAgICBtYWNybyh1bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlLCBjYW5j
ZWxSZWFkYWJsZVN0cmVhbSwgc191bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1D
b2RlTGVuZ3RoKSBcCisgICAgbWFjcm8odW5ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5v
b3BDb2RlLCBwcm9taXNlSW52b2tlT3JOb29wLCBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52
b2tlT3JOb29wQ29kZUxlbmd0aCkgXAorCisjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJE
RURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXAorICAgIG1hY3JvKGNhbmNl
bFJlYWRhYmxlU3RyZWFtKSBcCisgICAgbWFjcm8oaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCkgXAor
ICAgIG1hY3JvKHByb21pc2VJbnZva2VPck5vb3ApIFwKKworI2RlZmluZSBERUNMQVJFX0JVSUxU
SU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKKyAg
ICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7
CisKK1dFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShERUNMQVJF
X0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKKwor
I2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fVU5HVUFSREVEQlVJTFRJTl9FWElTVFMob2JqZWN0LCBm
dW5jKSBkZWZpbmVkIFdFQkNPUkVfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVuYworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVbmd1YXJkZWRCdWlsdGluQnVpbHRp
bnNfaAorCisjIyMgRW5kIEZpbGU6IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5oCisKKyMjIyBC
ZWdpbiBGaWxlOiBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnMuY3BwCisvKgorICogQ29weXJpZ2h0
IChjKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICov
CisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0
ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDog
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5o
IgorCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUv
RXhlY3V0YWJsZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4KKyNp
bmNsdWRlIDxydW50aW1lL0pTQ2VsbElubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL1N0cnVj
dHVyZUlubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL1ZNLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfdW5ndWFyZGVkQnVpbHRpbklz
UmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0
QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfdW5ndWFyZGVkQnVpbHRpbklz
UmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlTGVuZ3RoID0gNzE7Citjb25zdCBjaGFyKiBzX3VuZ3Vh
cmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZSA9CisgICAgIihmdW5jdGlvbiAo
c3RyZWFtKVxuIiBcCisgICAgIntcbiIgXAorICAgICIgICBcInVzZSBzdHJpY3RcIjtcbiIgXAor
ICAgICJcbiIgXAorICAgICIgICAgcmV0dXJuICEhc3RyZWFtLkByZWFkZXI7XG4iIFwKKyAgICAi
fSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc191bmd1YXJkZWRCdWls
dGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3Ry
dWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfdW5ndWFyZGVkQnVpbHRp
bkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUxlbmd0aCA9IDQwMjsKK2NvbnN0IGNoYXIqIHNfdW5n
dWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZSA9CisgICAgIihmdW5jdGlvbiAo
c3RyZWFtLCByZWFzb24pXG4iIFwKKyAgICAie1xuIiBcCisgICAgIiAgICBcInVzZSBzdHJpY3Rc
IjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFk
YWJsZVN0cmVhbUNsb3NlZClcbiIgXAorICAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29s
dmUoKTtcbiIgXAorICAgICIgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVh
bUVycm9yZWQpXG4iIFwKKyAgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoc3RyZWFt
LkBzdG9yZWRFcnJvcik7XG4iIFwKKyAgICAiICAgIHN0cmVhbS5AcXVldWUgPSBbXTtcbiIgXAor
ICAgICIgICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pO1xuIiBcCisgICAg
IiAgICByZXR1cm4gQHByb21pc2VJbnZva2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291cmNl
LCBcImNhbmNlbFwiLCBbcmVhc29uXSkudGhlbihmdW5jdGlvbigpIHsgfSk7XG4iIFwKKyAgICAi
fSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc191bmd1YXJkZWRCdWls
dGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc191bmd1YXJkZWRCdWlsdGlu
UHJvbWlzZUludm9rZU9yTm9vcENvZGVMZW5ndGggPSAzMzg7Citjb25zdCBjaGFyKiBzX3VuZ3Vh
cmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZSA9CisgICAgIihmdW5jdGlvbiAob2Jq
ZWN0LCBrZXksIGFyZ3MpXG4iIFwKKyAgICAie1xuIiBcCisgICAgIiAgICBcInVzZSBzdHJpY3Rc
IjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdHJ5IHtcbiIgXAorICAgICIgICAgICAgIHZh
ciBtZXRob2QgPSBvYmplY3Rba2V5XTtcbiIgXAorICAgICIgICAgICAgIGlmICh0eXBlb2YgbWV0
aG9kID09PSBcInVuZGVmaW5lZFwiKVxuIiBcCisgICAgIiAgICAgICAgICAgIHJldHVybiBQcm9t
aXNlLnJlc29sdmUoKTtcbiIgXAorICAgICIgICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFw
cGx5KG9iamVjdCwgYXJncyk7XG4iIFwKKyAgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNv
bHZlKHJlc3VsdCk7XG4iIFwKKyAgICAiICAgIH1cbiIgXAorICAgICIgICAgY2F0Y2goZXJyb3Ip
IHtcbiIgXAorICAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4iIFwK
KyAgICAiICAgIH1cbiIgXAorICAgICJ9KVxuIiBcCis7CisKKworI2RlZmluZSBERUZJTkVfQlVJ
TFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAor
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0p
IFwKK3tcCisgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZN
Q2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcCisgICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1
aWx0aW5GdW5jdGlvbnMoKS51bmd1YXJkZWRCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhl
Y3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkudW5ndWFy
ZGVkQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpKTsgXAorfQorV0VCQ09SRV9G
T1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVS
QVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisjIyMgRW5kIEZpbGU6IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5jcHAKKwor
IyMjIEJlZ2luIEZpbGU6IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIuaAorLyoKKyAq
IENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2Fs
bHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRo
ZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0
aW5zLnB5CisKKyNpZm5kZWYgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9oCisjZGVm
aW5lIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAorCisjaW5jbHVkZSAiVW5ndWFy
ZGVkQnVpbHRpbkJ1aWx0aW5zLmgiCisjaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+
CisjaW5jbHVkZSA8Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaD4KKyNpbmNs
dWRlIDxydW50aW1lL0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24u
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBVbmd1YXJkZWRCdWlsdGluQnVpbHRp
bnNXcmFwcGVyIDogcHJpdmF0ZSBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcihKU0M6OlZNKiB2bSkKKyAg
ICAgICAgOiBtX3ZtKCp2bSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxU
SU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJWkVfQlVJTFRJTl9OQU1FUykKKyNkZWZp
bmUgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwg
bGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UoSlNDOjptYWtlU291cmNlKFN0cmluZ0ltcGw6OmNy
ZWF0ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpKSkKKyAgICAgICAgV0VCQ09SRV9GT1JF
QUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VS
Q0VfTUVNQkVSUykKKyN1bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKKyAg
ICB7CisgICAgfQorCisjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1
bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCisgICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1l
IyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CisgICAgV0VCQ09S
RV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VY
RUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCisKKyAgICBXRUJD
T1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFS
RV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCisKKyAgICB2b2lkIGV4cG9ydE5hbWVzKCk7
CisKK3ByaXZhdGU6CisgICAgSlNDOjpWTSYgbV92bTsKKworICAgIFdFQkNPUkVfRk9SRUFDSF9V
TkdVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fTkFN
RVMpCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0
aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7
XAorICAgIEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFt
ZSMjRXhlY3V0YWJsZTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlM
VElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVf
QlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworCit9OworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0VY
RUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitpbmxpbmUgSlNDOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcjo6
bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tcCisgICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSlc
CisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUobV92bSwgbV8j
I25hbWUjI1NvdXJjZSwgZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCksIHNfIyNuYW1lIyNDb25z
dHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRhYmxlKTtcCisgICAgcmV0dXJu
IG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKK30KK1dFQkNPUkVfRk9SRUFDSF9VTkdVQVJE
RURCVUlMVElOX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRl
ZiBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUworCitpbmxpbmUgdm9pZCBVbmd1YXJkZWRCdWls
dGluQnVpbHRpbnNXcmFwcGVyOjpleHBvcnROYW1lcygpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5D
VElPTl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+YXBwZW5kRXh0ZXJuYWxOYW1lKG5h
bWUjI1B1YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUoKSk7CisgICAgV0VCQ09SRV9GT1JF
QUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKEVYUE9SVF9GVU5DVElP
Tl9OQU1FKQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTl9OQU1FCit9CisKK2NsYXNzIFVuZ3VhcmRl
ZEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBVbmd1YXJk
ZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9ucyhKU0M6OlZNJiB2bSkgOiBtX3ZtKHZtKSB7IH0KKwor
ICAgIHZvaWQgaW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CisgICAgdm9pZCB2aXNpdChKU0M6
OlNsb3RWaXNpdG9yJik7CisKK3B1YmxpYzoKKyAgICBKU0M6OlZNJiBtX3ZtOworCisjZGVmaW5l
IERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhmdW5jdGlvbk5hbWUpIFwKKyAgICBKU0M6
OldyaXRlQmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9u
OworICAgIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05f
TkFNRShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlM
VElOX1NPVVJDRV9NRU1CRVJTCit9OworCitpbmxpbmUgdm9pZCBVbmd1YXJkZWRCdWlsdGluQnVp
bHRpbkZ1bmN0aW9uczo6aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7
CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgp
XAorICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihtX3ZtLCBjb2RlTmFtZSMj
R2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7CisgICAgV0VCQ09SRV9GT1JFQUNIX1VO
R1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9SVF9GVU5DVElPTikKKyN1bmRlZiBFWFBP
UlRfRlVOQ1RJT04KK30KKworaW5saW5lIHZvaWQgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5GdW5j
dGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisjZGVmaW5lIFZJU0lU
X0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFtZSMjRnVuY3Rpb24pOworICAg
IFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShW
SVNJVF9GVU5DVElPTikKKyN1bmRlZiBWSVNJVF9GVU5DVElPTgorfQorCisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJf
aAorCisjIyMgRW5kIEZpbGU6IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIuaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhw
ZWN0ZWQvV2ViQ29yZS14bWxDYXNpbmdUZXN0LVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUteG1s
Q2FzaW5nVGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODY4ZmM2ZmM2ZmJmODVl
ZGQ3YjhkM2M4OGVjNmQyMjY2N2UxZTc3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUteG1sQ2Fz
aW5nVGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTAsMCArMSwzMTggQEAKKyMjIyBCZWdpbiBG
aWxlOiB4bWxDYXNpbmdUZXN0QnVpbHRpbnMuaAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBD
YW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBO
T1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2
YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgeG1s
Q2FzaW5nVGVzdEJ1aWx0aW5zX2gKKyNkZWZpbmUgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zX2gKKwor
I2luY2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oPgorCituYW1lc3BhY2UgSlNDIHsKK2Ns
YXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvKiB4
bWxDYXNpbmdUZXN0ICovCitleHRlcm4gY29uc3QgY2hhciogc194bWxDYXNpbmdUZXN0WE1MQ2Fz
aW5nVGVzdENvZGU7CitleHRlcm4gY29uc3QgaW50IHNfeG1sQ2FzaW5nVGVzdFhNTENhc2luZ1Rl
c3RDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3htbENh
c2luZ1Rlc3RYTUxDYXNpbmdUZXN0Q29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3Qg
Y2hhciogc194bWxDYXNpbmdUZXN0Q3NzQ2FzaW5nVGVzdENvZGU7CitleHRlcm4gY29uc3QgaW50
IHNfeG1sQ2FzaW5nVGVzdENzc0Nhc2luZ1Rlc3RDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpT
Qzo6Q29uc3RydWN0QWJpbGl0eSBzX3htbENhc2luZ1Rlc3RDc3NDYXNpbmdUZXN0Q29kZUNvbnN0
cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc194bWxDYXNpbmdUZXN0VXJsQ2FzaW5n
VGVzdENvZGU7CitleHRlcm4gY29uc3QgaW50IHNfeG1sQ2FzaW5nVGVzdFVybENhc2luZ1Rlc3RD
b2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3htbENhc2lu
Z1Rlc3RVcmxDYXNpbmdUZXN0Q29kZUNvbnN0cnVjdEFiaWxpdHk7CisKKyNkZWZpbmUgV0VCQ09S
RV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9EQVRBKG1hY3JvKSBcCisgICAgbWFjcm8o
eG1sQ2FzaW5nVGVzdCwgeG1sQ2FzaW5nVGVzdFhNTENhc2luZ1Rlc3QsIDEpIFwKKyAgICBtYWNy
byhjc3NDYXNpbmdUZXN0LCB4bWxDYXNpbmdUZXN0Q3NzQ2FzaW5nVGVzdCwgMikgXAorICAgIG1h
Y3JvKHVybENhc2luZ1Rlc3QsIHhtbENhc2luZ1Rlc3RVcmxDYXNpbmdUZXN0LCAzKSBcCisKKyNk
ZWZpbmUgV0VCQ09SRV9CVUlMVElOX1hNTENBU0lOR1RFU1RfWE1MQ0FTSU5HVEVTVCAxCisjZGVm
aW5lIFdFQkNPUkVfQlVJTFRJTl9YTUxDQVNJTkdURVNUX0NTU0NBU0lOR1RFU1QgMQorI2RlZmlu
ZSBXRUJDT1JFX0JVSUxUSU5fWE1MQ0FTSU5HVEVTVF9VUkxDQVNJTkdURVNUIDEKKworI2RlZmlu
ZSBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0NPREUobWFjcm8pIFwKKyAg
ICBtYWNybyh4bWxDYXNpbmdUZXN0WE1MQ2FzaW5nVGVzdENvZGUsIHhtbENhc2luZ1Rlc3QsIHNf
eG1sQ2FzaW5nVGVzdFhNTENhc2luZ1Rlc3RDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8oeG1sQ2Fz
aW5nVGVzdENzc0Nhc2luZ1Rlc3RDb2RlLCBjc3NDYXNpbmdUZXN0LCBzX3htbENhc2luZ1Rlc3RD
c3NDYXNpbmdUZXN0Q29kZUxlbmd0aCkgXAorICAgIG1hY3JvKHhtbENhc2luZ1Rlc3RVcmxDYXNp
bmdUZXN0Q29kZSwgdXJsQ2FzaW5nVGVzdCwgc194bWxDYXNpbmdUZXN0VXJsQ2FzaW5nVGVzdENv
ZGVMZW5ndGgpIFwKKworI2RlZmluZSBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlM
VElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFwKKyAgICBtYWNybyhjc3NDYXNpbmdUZXN0KSBcCisg
ICAgbWFjcm8odXJsQ2FzaW5nVGVzdCkgXAorICAgIG1hY3JvKHhtbENhc2luZ1Rlc3QpIFwKKwor
I2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUs
IGFyZ3VtZW50Q291bnQpIFwKKyAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUj
I0dlbmVyYXRvcihKU0M6OlZNJik7CisKK1dFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JV
SUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJ
TFRJTl9HRU5FUkFUT1IKKworI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fWE1MQ0FTSU5HVEVTVF9F
WElTVFMob2JqZWN0LCBmdW5jKSBkZWZpbmVkIFdFQkNPUkVfQlVJTFRJTl8gIyMgb2JqZWN0ICMj
IF8gIyMgZnVuYworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyB4bWxDYXNp
bmdUZXN0QnVpbHRpbnNfaAorCisjIyMgRW5kIEZpbGU6IHhtbENhc2luZ1Rlc3RCdWlsdGlucy5o
CisKKyMjIyBCZWdpbiBGaWxlOiB4bWxDYXNpbmdUZXN0QnVpbHRpbnMuY3BwCisvKgorICogQ29w
eXJpZ2h0IChjKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
IAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBn
ZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNj
cmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMu
cHkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInhtbENhc2luZ1Rlc3RCdWlsdGlu
cy5oIgorCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgPHJ1bnRp
bWUvRXhlY3V0YWJsZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4K
KyNpbmNsdWRlIDxydW50aW1lL0pTQ2VsbElubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL1N0
cnVjdHVyZUlubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL1ZNLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfeG1sQ2FzaW5nVGVzdFhN
TENhc2luZ1Rlc3RDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6
Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfeG1sQ2FzaW5nVGVzdFhNTENhc2luZ1Rlc3RD
b2RlTGVuZ3RoID0gNzE7Citjb25zdCBjaGFyKiBzX3htbENhc2luZ1Rlc3RYTUxDYXNpbmdUZXN0
Q29kZSA9CisgICAgIihmdW5jdGlvbiAoc3RyZWFtKVxuIiBcCisgICAgIntcbiIgXAorICAgICIg
ICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgcmV0dXJuICEhc3Ry
ZWFtLkByZWFkZXI7XG4iIFwKKyAgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVj
dEFiaWxpdHkgc194bWxDYXNpbmdUZXN0Q3NzQ2FzaW5nVGVzdENvZGVDb25zdHJ1Y3RBYmlsaXR5
ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc194
bWxDYXNpbmdUZXN0Q3NzQ2FzaW5nVGVzdENvZGVMZW5ndGggPSA0MDI7Citjb25zdCBjaGFyKiBz
X3htbENhc2luZ1Rlc3RDc3NDYXNpbmdUZXN0Q29kZSA9CisgICAgIihmdW5jdGlvbiAoc3RyZWFt
LCByZWFzb24pXG4iIFwKKyAgICAie1xuIiBcCisgICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIg
XAorICAgICJcbiIgXAorICAgICIgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0
cmVhbUNsb3NlZClcbiIgXAorICAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtc
biIgXAorICAgICIgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9y
ZWQpXG4iIFwKKyAgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoc3RyZWFtLkBzdG9y
ZWRFcnJvcik7XG4iIFwKKyAgICAiICAgIHN0cmVhbS5AcXVldWUgPSBbXTtcbiIgXAorICAgICIg
ICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pO1xuIiBcCisgICAgIiAgICBy
ZXR1cm4gQHByb21pc2VJbnZva2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCBcImNh
bmNlbFwiLCBbcmVhc29uXSkudGhlbihmdW5jdGlvbigpIHsgfSk7XG4iIFwKKyAgICAifSlcbiIg
XAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc194bWxDYXNpbmdUZXN0VXJsQ2Fz
aW5nVGVzdENvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5u
b3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc194bWxDYXNpbmdUZXN0VXJsQ2FzaW5nVGVzdENvZGVM
ZW5ndGggPSAzMzg7Citjb25zdCBjaGFyKiBzX3htbENhc2luZ1Rlc3RVcmxDYXNpbmdUZXN0Q29k
ZSA9CisgICAgIihmdW5jdGlvbiAob2JqZWN0LCBrZXksIGFyZ3MpXG4iIFwKKyAgICAie1xuIiBc
CisgICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdHJ5
IHtcbiIgXAorICAgICIgICAgICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTtcbiIgXAorICAg
ICIgICAgICAgIGlmICh0eXBlb2YgbWV0aG9kID09PSBcInVuZGVmaW5lZFwiKVxuIiBcCisgICAg
IiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiIgXAorICAgICIgICAgICAg
IHZhciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9iamVjdCwgYXJncyk7XG4iIFwKKyAgICAiICAg
ICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XG4iIFwKKyAgICAiICAgIH1cbiIg
XAorICAgICIgICAgY2F0Y2goZXJyb3IpIHtcbiIgXAorICAgICIgICAgICAgIHJldHVybiBQcm9t
aXNlLnJlamVjdChlcnJvcik7XG4iIFwKKyAgICAiICAgIH1cbiIgXAorICAgICJ9KVxuIiBcCis7
CisKKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9u
TmFtZSwgYXJndW1lbnRDb3VudCkgXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1l
IyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKK3tcCisgICAgSlNWTUNsaWVudERhdGEqIGNsaWVu
dERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcCisg
ICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS54bWxDYXNpbmdUZXN0QnVp
bHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWls
dGluRnVuY3Rpb25zKCkueG1sQ2FzaW5nVGVzdEJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgp
KTsgXAorfQorV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKERFRklO
RV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKwor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjIyMgRW5kIEZpbGU6IHhtbENhc2luZ1Rlc3RCdWls
dGlucy5jcHAKKworIyMjIEJlZ2luIEZpbGU6IHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXIu
aAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1
dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0
aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRl
LWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcl9o
CisjZGVmaW5lIHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXJfaAorCisjaW5jbHVkZSAieG1s
Q2FzaW5nVGVzdEJ1aWx0aW5zLmgiCisjaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+
CisjaW5jbHVkZSA8Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaD4KKyNpbmNs
dWRlIDxydW50aW1lL0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24u
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyB4bWxDYXNpbmdUZXN0QnVpbHRpbnNX
cmFwcGVyIDogcHJpdmF0ZSBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcihKU0M6OlZNKiB2bSkKKyAgICAgICAg
OiBtX3ZtKCp2bSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJ
Tl9GVU5DVElPTl9OQU1FKElOSVRJQUxJWkVfQlVJTFRJTl9OQU1FUykKKyNkZWZpbmUgSU5JVElB
TElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAs
IG1fIyNuYW1lIyNTb3VyY2UoSlNDOjptYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21M
aXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpKSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENB
U0lOR1RFU1RfQlVJTFRJTl9DT0RFKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykK
KyN1bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKKyAgICB7CisgICAgfQor
CisjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwg
bGVuZ3RoKSBcCisgICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhl
Y3V0YWJsZSgpOyBcCisgICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSBj
b25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CisgICAgV0VCQ09SRV9GT1JFQUNIX1hN
TENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3Vu
ZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCisKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1M
Q0FTSU5HVEVTVF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJ
RVJfQUNDRVNTT1IpCisKKyAgICB2b2lkIGV4cG9ydE5hbWVzKCk7CisKK3ByaXZhdGU6CisgICAg
SlNDOjpWTSYgbV92bTsKKworICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxU
SU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fTkFNRVMpCisKKyNkZWZpbmUgREVDTEFS
RV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisg
ICAgSlNDOjpTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7XAorICAgIEpTQzo6V2VhazxKU0M6
OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKKyAgICBX
RUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElO
X1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUwor
Cit9OworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9u
TmFtZSwgbGVuZ3RoKSBcCitpbmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
eG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tcCisg
ICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRh
YmxlID0gSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6Y3Jl
YXRlQnVpbHRpbkV4ZWN1dGFibGUobV92bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25OYW1l
IyNQdWJsaWNOYW1lKCksIHNfIyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNu
YW1lIyNFeGVjdXRhYmxlKTtcCisgICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgp
O1wKK30KK1dFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fQ09ERShERUZJTkVf
QlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUwor
CitpbmxpbmUgdm9pZCB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyOjpleHBvcnROYW1lcygp
Cit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVydHlOYW1l
cy0+YXBwZW5kRXh0ZXJuYWxOYW1lKG5hbWUjI1B1YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0ZU5h
bWUoKSk7CisgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9GVU5DVElP
Tl9OQU1FKEVYUE9SVF9GVU5DVElPTl9OQU1FKQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTl9OQU1F
Cit9CisKK2NsYXNzIHhtbENhc2luZ1Rlc3RCdWlsdGluRnVuY3Rpb25zIHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCB4bWxDYXNpbmdUZXN0QnVpbHRpbkZ1bmN0aW9ucyhKU0M6OlZNJiB2bSkgOiBt
X3ZtKHZtKSB7IH0KKworICAgIHZvaWQgaW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CisgICAg
dm9pZCB2aXNpdChKU0M6OlNsb3RWaXNpdG9yJik7CisKK3B1YmxpYzoKKyAgICBKU0M6OlZNJiBt
X3ZtOworCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhmdW5jdGlvbk5h
bWUpIFwKKyAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5jdGlv
bk5hbWUjI0Z1bmN0aW9uOworICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxU
SU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYg
REVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCit9OworCitpbmxpbmUgdm9pZCB4bWxDYXNp
bmdUZXN0QnVpbHRpbkZ1bmN0aW9uczo6aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTihjb2RlTmFtZSwgZnVuY3Rpb25OYW1l
LCBsZW5ndGgpXAorICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihtX3ZtLCBj
b2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7CisgICAgV0VCQ09SRV9G
T1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKEVYUE9SVF9GVU5DVElPTikKKyN1bmRl
ZiBFWFBPUlRfRlVOQ1RJT04KK30KKworaW5saW5lIHZvaWQgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5G
dW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisjZGVmaW5lIFZJ
U0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFtZSMjRnVuY3Rpb24pOwor
ICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShW
SVNJVF9GVU5DVElPTikKKyN1bmRlZiBWSVNJVF9GVU5DVElPTgorfQorCisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXJfaAor
CisjIyMgRW5kIEZpbGU6IHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXIuaApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1VwZGF0ZUNvbnRlbnRzLnB5IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1VwZGF0ZUNvbnRlbnRzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1MmY5NTMyY2I2ZmIwYWJhZjUyMGRhZTA0ODU4YWM5MmE0ZmM2MjQxLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9V
cGRhdGVDb250ZW50cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLSMhL3Vzci9i
aW4vcHl0aG9uCi0KLSMgQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMg
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
IyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgcHV0ZXIs
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSMgICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSMgICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOwotIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSMgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0jIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBzeXMKLWltcG9ydCBvcwot
Ci1hc3NlcnQobGVuKHN5cy5hcmd2KSA9PSAzKQotCi1jb21wID0gc3lzLmFyZ3ZbMV0KLWZpbGVu
YW1lID0gc3lzLmFyZ3ZbMl0KLQotdCA9IEZhbHNlCi0KLWlmIG9zLnBhdGguaXNmaWxlKGZpbGVu
YW1lKToKLSAgICBmID0gb3BlbihmaWxlbmFtZSwgJ3InKQotICAgIGNvbXBhcmF0b3IgPSBmLnJl
YWQoKQotICAgIGYuY2xvc2UoKQotICAgIHQgPSBUcnVlCi0KLWlmIChub3QgdCBvciBjb21wICE9
IGNvbXBhcmF0b3IpOgotICAgIGYgPSBvcGVuKGZpbGVuYW1lLCAndycpCi0gICAgZi53cml0ZShj
b21wKQotICAgIGYuY2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAppbmRleCA3M2ViZTQ3OTkzNWZjYTc0MDlmZDkz
MmY4ODliNjU4NGJlNThiNjE0Li44MTZiNGE1ZDMwYjUyMGI1ZDFkZmVhZWFiMmY5Mzk0YzY4YmRj
MGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcApAQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbChWTSYsIGNvbnN0IFNvdXJjZUNv
ZAogQnVpbHRpbkV4ZWN1dGFibGVzOjpCdWlsdGluRXhlY3V0YWJsZXMoVk0mIHZtKQogICAgIDog
bV92bSh2bSkKICNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUs
IGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UobWFrZVNvdXJjZShTdHJp
bmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFtZSwgbGVuZ3RoKSkpCi0gICAgSlNDX0ZP
UkVBQ0hfQlVJTFRJTihJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisgICAgSlND
X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykK
ICN1bmRlZiBFWFBPU0VfQlVJTFRJTl9TVFJJTkdTCiB7CiB9CkBAIC0xMzIsNyArMTMyLDcgQEAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6bmFtZSMjRXhl
Y3V0YWJsZSgpIFwKICAgICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUgPSBXZWFrPFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlPihjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShtXyMjbmFtZSMjU291
cmNlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZ1bmN0aW9uTmFtZSMjUHVi
bGljTmFtZSgpLCBzXyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0eSksIHRoaXMsICZtXyMjbmFtZSMj
RXhlY3V0YWJsZSk7XAogICAgIHJldHVybiBtXyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtcCiB9
Ci1KU0NfRk9SRUFDSF9CVUlMVElOKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQorSlNDX0ZP
UkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQogI3VuZGVmIEVY
UE9TRV9CVUlMVElOX1NPVVJDRVMKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCmluZGV4IDZhOTgzMjE3YTBhODg0NTdlZjA5
OGZiY2I5NTEyM2Q1OWE1MjUxNzUuLmVjOGQ1NzcwNGI4N2M1ODRhOTM2ZGRlNDE3ZDYyOWY4NTdi
MzY1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXAogY29uc3QgU291cmNlQ29kZSYgbmFt
ZSMjU291cmNlKCkgeyByZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQogICAgIAotICAgIEpTQ19G
T1JFQUNIX0JVSUxUSU4oRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisgICAgSlNDX0ZPUkVB
Q0hfQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQogI3VuZGVmIEVYUE9T
RV9CVUlMVElOX1NPVVJDRVMKIAogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVh
dGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICNkZWZpbmUgREVDTEFSRV9CVUlMVElO
X1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKVwKICAgICBTb3VyY2VD
b2RlIG1fIyNuYW1lIyNTb3VyY2U7IFwKICAgICBXZWFrPFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKLSAgICBKU0NfRk9SRUFDSF9CVUlMVElOKERFQ0xB
UkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUo
REVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQogI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9T
T1VSQ0VfTUVNQkVSUwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Ny
ZWF0ZV9oYXNoX3RhYmxlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxl
CmluZGV4IDZmYTc4Y2VhMjg3MzhjMGYxNzQ1MTQ3ZjA0OTczYWNiNmNhODM2ZDguLmEyMjVjYmU2
N2Q4MGRhYTJmZDNlOThmMTkwNTJlYzA5ODE4ZDIzZjggMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Y3JlYXRlX2hhc2hfdGFibGUKQEAgLTMxOSw3ICszMTksNyBAQCBzdWIgb3V0cHV0KCkgewogICAg
ICAgICBpZiAoJHZhbHVlc1skaV17InR5cGUifSBlcSAiRnVuY3Rpb24iKSAgewogICAgICAgICAg
ICAgbXkgJHRhYmxlSGVhZCA9ICRuYW1lOwogICAgICAgICAgICAgJHRhYmxlSGVhZCA9fiBzL1Rh
YmxlJC8vOwotICAgICAgICAgICAgcHJpbnQgIiAjaWYgSlNDX0JVSUxUSU5fRVhJU1RTKCIgLiB1
YygkdGFibGVIZWFkIC4gJGtleSkgLiIpXG4iOworICAgICAgICAgICAgcHJpbnQgIiAjaWYgSlND
X0JVSUxUSU5fRVhJU1RTKCIgLiB1YygkdGFibGVIZWFkKSAuICIsICIgLiB1Yygka2V5KSAuIilc
biI7CiAgICAgICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwgKCgkYXR0cnNbJGldKSAmIH5G
dW5jdGlvbikgfCBCdWlsdGluLCAkaW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxC
dWlsdGluR2VuZXJhdG9yPigiIC4gJHRhYmxlSGVhZCAuIHVjZmlyc3QoJGtleSkgLiAiQ29kZUdl
bmVyYXRvciksIChpbnRwdHJfdCkkc2Vjb25kVmFsdWUgfSB9LFxuIjsKICAgICAgICAgICAgIHBy
aW50ICIgI2Vsc2VcbiIKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAwN2VjM2M4
MWU0NzY2YWI4NTdkZGEyOGI5M2ZmYjcxODMzOTZmYWM4Li4zY2E2ZTFlZThkOWE0YTdmNzA1ODcx
MzZlM2YwNGVhYWRiMTUyYTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMzM2MSwxOCArMzM2
MSw2IEBAIHNldChXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSAke0RFUklWRURf
U09VUkNFU19XRUJDT1JFX0RJUn0vV29ya2VyR2xvCiBzZXQoREVESUNBVEVEV09SS0VSR0xPQkFM
U0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCkKIHNldChJRExfQVRUUklC
VVRFU19GSUxFICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50
eHQpCiAKLXNldChXRUJDT1JFX0pTX0JVSUxUSU5TCi0gICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuanMKLSAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVz
L3N0cmVhbXMvQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5qcwotICAgICR7V0VCQ09SRV9ESVJ9
L01vZHVsZXMvc3RyZWFtcy9Db3VudFF1ZXVpbmdTdHJhdGVneS5qcwotICAgICR7V0VCQ09SRV9E
SVJ9L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5qcwotICAgICR7V0VCQ09SRV9ESVJ9
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuanMKLSAgICAke1dFQkNP
UkVfRElSfS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMKLSAgICAk
e1dFQkNPUkVfRElSfS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuanMKLSAg
ICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3N0cmVhbXMvU3RyZWFtSW50ZXJuYWxzLmpzCi0gICAg
JHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzCi0pCi0KIFdF
QktJVF9JTkNMVURFX0NPTkZJR19GSUxFU19JRl9FWElTVFMoKQogCiAjIEdlbmVyYXRlIEluc3Bl
Y3Rvck92ZXJsYXlQYWdlLmgKQEAgLTM1OTcsMjIgKzM1ODUsNTIgQEAgR0VORVJBVEVfQklORElO
R1MoV2ViQ29yZVRlc3RTdXBwb3J0X1NPVVJDRVMKICAgICAke0FERElUSU9OQUxfQklORElOR1Nf
REVQRU5ERU5DSUVTfSkKIAogIyBXZWJDb3JlIEpTIEJ1aWx0aW5zCi1mb3JlYWNoIChfYnVpbHRp
bmpzICR7V0VCQ09SRV9KU19CVUlMVElOU30pCi0gICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChf
bmFtZSAke19idWlsdGluanN9IE5BTUVfV0UpCisKK3NldChXZWJDb3JlX0JVSUxUSU5TX1NPVVJD
RVMKKyAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5q
cworICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3RyZWFtcy9CeXRlTGVuZ3RoUXVldWluZ1N0
cmF0ZWd5LmpzCisgICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zdHJlYW1zL0NvdW50UXVldWlu
Z1N0cmF0ZWd5LmpzCisgICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtLmpzCisgICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlci5qcworICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3RyZWFtcy9SZWFk
YWJsZVN0cmVhbUludGVybmFscy5qcworICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbVJlYWRlci5qcworICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3Ry
ZWFtcy9TdHJlYW1JbnRlcm5hbHMuanMKKyAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3N0cmVh
bXMvV3JpdGFibGVTdHJlYW0uanMKKykKKworc2V0KEJVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRT
CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnMucHkKKyAgICAke0ph
dmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGluc19nZW5lcmF0b3IucHkKKyAgICAke0ph
dmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGluc19tb2RlbC5weQorICAgICR7SmF2YVNj
cmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5zX3RlbXBsYXRlcy5weQorICAgICR7SmF2YVNj
cmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5w
eQorICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5zX2dlbmVyYXRlX2Nv
bWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJ
Un0vYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5CisgICAgJHtKYXZhU2NyaXB0
Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRp
b24ucHkKKyAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGluc19nZW5lcmF0
ZV9zZXBhcmF0ZV93cmFwcGVyLnB5CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0v
Z2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKyAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
fS9sYXp5d3JpdGVyLnB5CispCisKK2ZvcmVhY2ggKF9idWlsdGluU291cmNlICR7V2ViQ29yZV9C
VUlMVElOU19TT1VSQ0VTfSkKKyAgICBnZXRfZmlsZW5hbWVfY29tcG9uZW50KF9vYmplY3ROYW1l
ICR7X2J1aWx0aW5Tb3VyY2V9IE5BTUVfV0UpCiAgICAgYWRkX2N1c3RvbV9jb21tYW5kKAotICAg
ICAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9LyR7X25hbWV9QnVpbHRp
bnNXcmFwcGVyLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9LyR7X25hbWV9QnVpbHRp
bnMuaCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vJHtfbmFtZX1CdWlsdGlucy5jcHAK
LSAgICAgICAgTUFJTl9ERVBFTkRFTkNZICR7V0VCQ09SRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0
aW5zCi0gICAgICAgIERFUEVORFMgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vZ2VuZXJh
dGUtanMtYnVpbHRpbnMKLSAgICAgICAgREVQRU5EUyAke19idWlsdGluanN9Ci0gICAgICAgIENP
TU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2dl
bmVyYXRlLWpzLWJ1aWx0aW5zIC0taW5wdXQgJHtfYnVpbHRpbmpzfSAtLW91dHB1dF9kaXIgJHtE
RVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9IC0tZ2VuZXJhdGVfanNfYnVpbHRpbnNfcGF0aCAk
e0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfQorICAgICAgICBPVVRQVVQgJHtERVJJVkVEX1NP
VVJDRVNfV0VCQ09SRV9ESVJ9LyR7X29iamVjdE5hbWV9QnVpbHRpbnMuY3BwCisgICAgICAgICAg
ICAgICAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vJHtfb2JqZWN0TmFtZX1CdWlsdGlu
cy5oCisgICAgICAgICAgICAgICAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vJHtfb2Jq
ZWN0TmFtZX1CdWlsdGluc1dyYXBwZXIuaCAKKyAgICAgICAgTUFJTl9ERVBFTkRFTkNZICR7SmF2
YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisgICAgICAg
IERFUEVORFMgJHtfYnVpbHRpblNvdXJjZX0gJHtCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUU30K
KyAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1ND
UklQVFNfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucy5weSAtLWZyYW1ld29yayBXZWJDb3JlIC0t
b3V0cHV0LWRpcmVjdG9yeSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0gJHtfYnVpbHRp
blNvdXJjZX0KICAgICAgICAgVkVSQkFUSU0pCiAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCi0gICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS8ke19uYW1lfUJ1aWx0
aW5zLmgKLSAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9LyR7X25hbWV9QnVp
bHRpbnNXcmFwcGVyLmgKKyAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9LyR7
X29iamVjdE5hbWV9QnVpbHRpbnMuY3BwCisgICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNP
UkVfRElSfS8ke19vYmplY3ROYW1lfUJ1aWx0aW5zLmgKKyAgICAgICAgJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9LyR7X29iamVjdE5hbWV9QnVpbHRpbnNXcmFwcGVyLmgKICAgICApCi0g
ICAgQUREX1NPVVJDRV9XRUJDT1JFX0RFUklWRURfREVQRU5ERU5DSUVTKCR7V0VCQ09SRV9ESVJ9
L2JpbmRpbmdzL2pzL1dlYkNvcmVKU0J1aWx0aW5zLmNwcCAke19uYW1lfUJ1aWx0aW5zLmNwcCkK
KyAgICBBRERfU09VUkNFX1dFQkNPUkVfREVSSVZFRF9ERVBFTkRFTkNJRVMoJHtXRUJDT1JFX0RJ
Un0vYmluZGluZ3MvanMvV2ViQ29yZUpTQnVpbHRpbnMuY3BwICR7X29iamVjdE5hbWV9QnVpbHRp
bnMuY3BwKQogZW5kZm9yZWFjaCAoKQogCisKIEFERF9TT1VSQ0VfV0VCQ09SRV9ERVJJVkVEX0RF
UEVOREVOQ0lFUygke1dFQkNPUkVfRElSfS9odG1sL0hUTUxUcmVlQnVpbGRlci5jcHAgTWF0aE1M
TmFtZXMuY3BwKQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGMzNzE2N2U5
OTc1YzYxNmM0ZTMxM2YwMTEyZjEzZjRjZTdjNTI2YjcuLjdjYzU3NTM0NzcyNzI2MGRlZjZiNWFi
MGJkM2YwMmEyZDQzZjZlMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNzk3
LDcgKzc5Nyw2IEBAIGFsbCA6IFwKICAgICAkKFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9S
U19GSUxFKSBcCiAgICAgJChKU19ET01fSEVBREVSUykgXAogICAgICQoV0VCX0RPTV9IRUFERVJT
KSBcCi0gICAgJChXRUJDT1JFX0pTX0JVSUxUSU5TKSBcCiAgICAgXAogICAgIENTU0dyYW1tYXIu
Y3BwIFwKICAgICBDU1NQcm9wZXJ0eU5hbWVzLmNwcCBcCkBAIC0xMjU2LDcgKzEyNTUsNyBAQCBX
ZWJSZXBsYXlJbnB1dHMuaCA6ICQoSU5QVVRfR0VORVJBVE9SX1NQRUNJRklDQVRJT05TKSAkKElO
UFVUX0dFTkVSQVRPUl9TQ1JJUFRTKQogCiAjIFdlYkNvcmUgSlMgQnVpbHRpbnMKIAotV0VCQ09S
RV9KU19CVUlMVElOUyA9IFwKK1dlYkNvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmpzIFwKICAgICAkKFdlYkNv
cmUpL01vZHVsZXMvc3RyZWFtcy9CeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmpzIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvc3RyZWFtcy9Db3VudFF1ZXVpbmdTdHJhdGVneS5qcyBcCkBAIC0x
MjY4LDEwICsxMjY3LDMxIEBAIFdFQkNPUkVfSlNfQlVJTFRJTlMgPSBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uanMgXAogIwogCi1hbGwgOiAkKFdFQkNP
UkVfSlNfQlVJTFRJTlM6JS5qcz0lQnVpbHRpbnMuY3BwKQorQlVJTFRJTlNfR0VORVJBVE9SX1ND
UklQVFMgPSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnMucHkg
XAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zX2dlbmVyYXRvci5w
eSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnNfbW9kZWwucHkg
XAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zX3RlbXBsYXRlcy5w
eSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnNfZ2VuZXJhdGVf
Y29tYmluZWRfaGVhZGVyLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9i
dWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weSBcCisgICAgJChKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVy
LnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGluc19nZW5lcmF0
ZV9zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJ
UFRTX0RJUikvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfd3JhcHBlci5weSBcCisgICAgJChK
YXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgXAorICAg
ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2xhenl3cml0ZXIucHkgXAorIworCisjIEFk
ZGluZy9yZW1vdmluZyBzY3JpcHRzIHNob3VsZCB0cmlnZ2VyIHJlZ2VuZXJhdGlvbiwgYnV0IGNo
YW5naW5nIHdoaWNoIGJ1aWx0aW5zIGFyZQorIyBnZW5lcmF0ZWQgc2hvdWxkIG5vdCBhZmZlY3Qg
b3RoZXIgYnVpbHRpbnMgd2hlbiBub3QgcGFzc2luZyAnLS1jb21iaW5lZCcgdG8gdGhlIGdlbmVy
YXRvci4KKworLlBIT05ZOiBmb3JjZQorV2ViQ29yZV9CVUlMVElOU19ERVBFTkRFTkNJRVNfTElT
VCA6ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL1VwZGF0ZUNvbnRlbnRzLnB5IGZvcmNl
CisJJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL1VwZGF0ZUNvbnRlbnRz
LnB5ICckKEJVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTKScgJEAKKworJUJ1aWx0aW5zLmg6ICUu
anMgJChCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUykgV2ViQ29yZV9CVUlMVElOU19ERVBFTkRF
TkNJRVNfTElTVAorCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5l
cmF0ZS1qcy1idWlsdGlucy5weSAtLW91dHB1dC1kaXJlY3RvcnkgLiAtLWZyYW1ld29yayBXZWJD
b3JlICQ8CiAKLSVCdWlsdGlucy5jcHA6ICUuanMKLQkkKFBZVEhPTikgJChXZWJDb3JlKS9nZW5l
cmF0ZS1qcy1idWlsdGlucyAtLWlucHV0ICQ8IC0tZ2VuZXJhdGVfanNfYnVpbHRpbnNfcGF0aCAk
KEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKQorYWxsIDogJChub3RkaXIgJChXZWJDb3JlX0JV
SUxUSU5TX1NPVVJDRVM6JS5qcz0lQnVpbHRpbnMuaCkpCiAKICMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBjN2FiNWMwMTBiZDJmZjEzMjE3NzY2MzIwNTMzZDkzMzdjYzZjMWE3Li4w
N2ZiMzY1MzFmZDU4OWJjZjM2MmQ1YTUxMWJkNjc5YzQ2NmMxZjY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTQ5LDcgKzEx
NDksNyBAQAogCQkyRDUwMDJGODFCNTZENzgxMDAyMEFBRjcgLyogRE9NUGF0aC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDUwMDJGNzFCNTZENzgx
MDAyMEFBRjcgLyogRE9NUGF0aC5jcHAgKi87IH07CiAJCTJENTAwMkZCMUI1NkQ3OTkwMDIwQUFG
NyAvKiBQYXRoVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJENTAwMkY5MUI1NkQ3OTkwMDIwQUFGNyAvKiBQYXRoVXRpbGl0aWVzLmNw
cCAqLzsgfTsKIAkJMkQ1MDAyRkMxQjU2RDc5OTAwMjBBQUY3IC8qIFBhdGhVdGlsaXRpZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENTAwMkZBMUI1
NkQ3OTkwMDIwQUFGNyAvKiBQYXRoVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMkQ1MDM2NjgxQkNERERDNDAwRTIwQkIzIC8qIEdl
c3R1cmVFdmVudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkQ1MDM2NjcxQkNERERDNDAwRTIwQkIzIC8qIEdlc3R1cmVFdmVudHMuY3BwICovOyBz
ZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCTJENTAzNjY4MUJDREREQzQwMEUy
MEJCMyAvKiBHZXN0dXJlRXZlbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJENTAzNjY3MUJDREREQzQwMEUyMEJCMyAvKiBHZXN0dXJlRXZlbnRz
LmNwcCAqLzsgfTsKIAkJMkQ1NjQ2QjAxQjhGODQ5MzAwM0M0OTk0IC8qIERpY3Rpb25hcnlQb3B1
cEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
NTY0NkFGMUI4Rjg0OTMwMDNDNDk5NCAvKiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQ1OEQ4NTUxQTE1RjY1
RjAwQTVGNzI2IC8qIERhdGFEZXRlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJENThEODUzMUExNUY2NUYwMEE1RjcyNiAvKiBEYXRhRGV0ZWN0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MkQ1OEQ4NTYxQTE1RjY1RjAwQTVGNzI2IC8qIERhdGFEZXRlY3Rpb24ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDU4RDg1NDFBMTVGNjVGMDBBNUY3
MjYgLyogRGF0YURldGVjdGlvbi5tbSAqLzsgfTsKQEAgLTE1MTksOCArMTUxOSw4IEBACiAJCTQx
NkU2RkVBMUJCRDE2ODQwMDBBNjAzNCAvKiBTdHJlYW1JbnRlcm5hbHNCdWlsdGluc1dyYXBwZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA3
MUJCMzExMEQwMEI3NjRDQSAvKiBTdHJlYW1JbnRlcm5hbHNCdWlsdGluc1dyYXBwZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFODFC
QkQxMkRGMDAwQTYwNDMgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEw
RDAwQjc2NEQ5IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFOTFCQkQxMkU1
MDAwQTYwNDMgLyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEQ4IC8qIFJl
YWRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQk0MTZFNkZFQTFCQkQxNjg0MDAwQTYwNDQgLyogUmVhZGFibGVTdHJl
YW1JbnRlcm5hbHNCdWlsdGluc1dyYXBwZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA3MUJCMzExMEQwMEI3NjREQSAvKiBSZWFkYWJsZVN0
cmVhbUludGVybmFsc0J1aWx0aW5zV3JhcHBlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA1MyAvKiBXcml0
YWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTggLyogV3JpdGFibGVTdHJlYW1CdWls
dGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTQxNkU2RkVBMUJCRDE2ODQwMDBBNjA0NCAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0
aW5zV3JhcHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUIwM0Q4MDcxQkIzMTEwRDAwQjc2NERBIC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVp
bHRpbnNXcmFwcGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDE3MjUzQUExMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzI1
M0E4MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgKi87IH07CiAJ
CTQxNzI1M0FCMTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3MjUzQTkxMzU0QkJC
QzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggKi87IH07CiAJCTQxN0RBNkQ5MTM3
MzRFNkUwMDdDNTdGQiAvKiBJbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3REE0Q0YxMzczNDMyNjAwN0M1N0ZCIC8qIEludGVybmFs
cy5jcHAgKi87IH07CkBAIC0yNjU5LDExICsyNjU5LDExIEBACiAJCTdDNDhBNkQxMTkxQzlENjUw
MDAyNjY3NCAvKiBXZWJLaXROYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDNDhBNkNGMTkxQzlENjUwMDAyNjY3NCAvKiBXZWJLaXROYW1l
c3BhY2UuaCAqLzsgfTsKIAkJN0M0OTAyQTIxOEI4MjVGODAwN0Q5Mjk4IC8qIERPTVdoZWVsRXZl
bnRJbnRlcm5hbC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODU5ODlEQ0EwQUNDOEJCRDAwQTBCQzUxIC8qIERPTVdoZWVsRXZl
bnRJbnRlcm5hbC5oICovOyB9OwogCQk3QzRDOTZEQzFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFk
YWJsZVN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzRDOTZEODFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbS5jcHAgKi87
IH07CisJCTdDNEM5NkRDMUFENDQ4MzUwMDM2NUE2MCAvKiBKU1dyaXRhYmxlU3RyZWFtLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNEM5NkQ4MUFE
NDQ4MzUwMDM2NUE2MCAvKiBKU1dyaXRhYmxlU3RyZWFtLmNwcCAqLzsgfTsKIAkJN0M0Qzk2REQx
QUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBK
U1JlYWRhYmxlU3RyZWFtLmggKi87IH07CisJCTdDNEM5NkREMUFENDQ4MzUwMDM2NUE2MCAvKiBK
U1dyaXRhYmxlU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzRDOTZEOTFBRDQ0ODM1MDAzNjVBNjAgLyogSlNXcml0YWJsZVN0cmVhbS5oICov
OyB9OwogCQk3QzRDOTZERTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzRD
OTZEQTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgKi87IH07
CiAJCTdDNEM5NkRGMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzRDOTZEQjFB
RDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5oICovOyB9OwotCQk3QzRD
OTZEQzFBRDQ0ODM1MDAzNjVBNjAgLyogSlNXcml0YWJsZVN0cmVhbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzRDOTZEODFBRDQ0ODM1MDAzNjVB
NjAgLyogSlNXcml0YWJsZVN0cmVhbS5jcHAgKi87IH07Ci0JCTdDNEM5NkREMUFENDQ4MzUwMDM2
NUE2MCAvKiBKU1dyaXRhYmxlU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QzRDOTZEOTFBRDQ0ODM1MDAzNjVBNjAgLyogSlNXcml0YWJsZVN0
cmVhbS5oICovOyB9OwogCQk3QzRDOTZFMzFBRDQ0QUJGMDAzNjVBNTAgLyogTGF1bmNoU2Vydmlj
ZXNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
NEM5NkUyMUFENDRBQkYwMDM2NUE1MCAvKiBMYXVuY2hTZXJ2aWNlc1NQSS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDNEVERDc0MUE3QjYwNzgw
MDE5OEM0RCAvKiBGb250Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QzRFREQ3MzFBN0I2MDc4MDAxOThDNEQgLyogRm9udENvY29hLm1tICov
OyB9OwogCQk3QzUyMkQ0QjE1QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUyMkQ0OTE1
QjQ3N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAgKi87IH07CkBAIC01NTA4LDgg
KzU1MDgsOCBAQAogCQlCQzc3OUUxNzFCQjIyN0NBMDBDQUE4QkYgLyogU3R5bGVDdXN0b21Qcm9w
ZXJ0eURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDNzc5RTE1MUJCMjI2QTIwMENBQThCRiAvKiBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDN0Q4RkVG
MUJEMDNCNjQwMEZGRTU0MCAvKiBDU1NVbnNldFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0Q4RkVEMUJEMDNCNjQwMEZGRTU0MCAvKiBD
U1NVbnNldFZhbHVlLmNwcCAqLzsgfTsKIAkJQkM3RDhGRjAxQkQwM0I2NDAwRkZFNTQwIC8qIENT
U1Vuc2V0VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDN0Q4RkVFMUJEMDNCNjQwMEZGRTU0MCAvKiBDU1NVbnNldFZhbHVlLmggKi87IH07Ci0J
CUJDN0Q4RkYzMUJEMUE0NzkwMEZGRTU0MCAvKiBDU1NSZXZlcnRWYWx1ZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdEOEZGMTFCRDFBNDc5MDBG
RkU1NDAgLyogQ1NTUmV2ZXJ0VmFsdWUuY3BwICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0g
KCk7IH07IH07Ci0JCUJDN0Q4RkY0MUJEMUE0NzkwMEZGRTU0MCAvKiBDU1NSZXZlcnRWYWx1ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3RDhGRjIx
QkQxQTQ3OTAwRkZFNTQwIC8qIENTU1JldmVydFZhbHVlLmggKi87IHNldHRpbmdzID0ge0FTU0VU
X1RBR1MgPSAoKTsgfTsgfTsKKwkJQkM3RDhGRjMxQkQxQTQ3OTAwRkZFNTQwIC8qIENTU1JldmVy
dFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDN0Q4RkYxMUJEMUE0NzkwMEZGRTU0MCAvKiBDU1NSZXZlcnRWYWx1ZS5jcHAgKi87IH07CisJ
CUJDN0Q4RkY0MUJEMUE0NzkwMEZGRTU0MCAvKiBDU1NSZXZlcnRWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3RDhGRjIxQkQxQTQ3OTAwRkZF
NTQwIC8qIENTU1JldmVydFZhbHVlLmggKi87IH07CiAJCUJDN0Y0NEE4MEI5RTMyNEUwMEE5RDA4
MSAvKiBJbWFnZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDN0ZBNjIw
MEQxRjBDQkQwMERCMjJBOSAvKiBMaXZlTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3RkE2MUUwRDFGMENCRDAwREIyMkE5IC8qIExp
dmVOb2RlTGlzdC5jcHAgKi87IH07CiAJCUJDN0ZBNjIxMEQxRjBDQkQwMERCMjJBOSAvKiBMaXZl
Tm9kZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDN0ZBNjFGMEQxRjBDQkQwMERCMjJBOSAvKiBMaXZlTm9kZUxpc3QuaCAqLzsgfTsKQEAgLTEw
MTE4LDExICsxMDExOCwxMSBAQAogCQk3QzQ4QTZDRjE5MUM5RDY1MDAwMjY2NzQgLyogV2ViS2l0
TmFtZXNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdE5hbWVz
cGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzQ4QTZEMjE5MUM5RDhFMDAw
MjY2NzQgLyogV2ViS2l0TmFtZXNwYWNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXROYW1lc3BhY2UuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzRDOTZEODFBRDQ0ODM1MDAzNjVBNTAgLyog
SlNSZWFkYWJsZVN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1JlYWRhYmxlU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M0
Qzk2RDgxQUQ0NDgzNTAwMzY1QTYwIC8qIEpTV3JpdGFibGVTdHJlYW0uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXcml0YWJsZVN0cmVhbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRh
YmxlU3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVhZGFibGVT
dHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M0Qzk2RDkxQUQ0NDgzNTAw
MzY1QTYwIC8qIEpTV3JpdGFibGVTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNXcml0YWJsZVN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzRDOTZEQTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtUmVhZGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M0Qzk2REIxQUQ0NDgzNTAwMzY1
QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk3QzRDOTZEODFBRDQ0ODM1MDAzNjVBNjAgLyogSlNXcml0YWJsZVN0cmVhbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dyaXRhYmxlU3RyZWFtLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M0Qzk2RDkxQUQ0NDgzNTAwMzY1QTYw
IC8qIEpTV3JpdGFibGVTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNXcml0YWJsZVN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzRDOTZF
MjFBRDQ0QUJGMDAzNjVBNTAgLyogTGF1bmNoU2VydmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTGF1bmNoU2VydmljZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0M0RURENzMxQTdCNjA3ODAwMTk4QzREIC8qIEZvbnRDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZvbnRDb2NvYS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M1MjJENDkxNUI0NzdFODAwOUI3Qzk1IC8qIEluc3Bl
Y3Rvck92ZXJsYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5z
cGVjdG9yT3ZlcmxheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTM1OSwx
NiArMTEzNTksMTUgQEAKIAkJOThDRTQzMjUxMjlFMDBCRDAwNTgyMURDIC8qIExpbmtMb2FkZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGlua0xvYWRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk4Q0U0MzI5MTI5RTAwRTUwMDU4MjFEQyAv
KiBMaW5rTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmtMb2Fk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOThFQjFGOTQxMzEzRkUwNTAwRDBF
MUVBIC8qIE5vdEltcGxlbWVudGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5vdEltcGxlbWVudGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk5MDhCMEVD
MUJDQUNGMUYwMEVEMEY2NSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
c2NyaXB0LnB5dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1qcy1idWlsdGlucyI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEVEMUJDQUNGOTEwMEVEMEY2NSAvKiBCeXRlTGVuZ3Ro
UXVldWluZ1N0cmF0ZWd5LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRo
ID0gQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTkwOEIwRUUxQkNBQ0Y5MTAwRUQwRjY1IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5Lmpz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gQ291bnRRdWV1aW5nU3Ry
YXRlZ3kuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEYxMUJDQUNGOTEw
MEVEMEY1NSAvKiBTdHJlYW1JbnRlcm5hbHMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFz
Y3JpcHQ7IHBhdGggPSBTdHJlYW1JbnRlcm5hbHMuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk5MDhCMEZEMUJDQUQwN0QwMEVEMEY1NSAvKiBTdHJlYW1JbnRlcm5hbHNCdWlsdGlu
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1JbnRlcm5h
bHNCdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEVGMUJD
QUNGOTEwMEVEMEY2NSAvKiBSZWFkYWJsZVN0cmVhbS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
amF2YXNjcmlwdDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtLmpzOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5OTA4QjBFRjFCQ0FDRjkxMDBFRDBGNzUgLyogV3JpdGFibGVTdHJlYW0uanMg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBXcml0YWJsZVN0cmVhbS5q
czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRjAxQkNBQ0Y5MTAwRUQwRjY1
IC8qIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2
YXNjcmlwdDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5qczsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRjExQkNBQ0Y5MTAwRUQwRjY1IC8qIFJlYWRhYmxlU3Ry
ZWFtSW50ZXJuYWxzLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0g
UmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk5MDhCMEYyMUJDQUNGOTEwMEVEMEY2NSAvKiBSZWFkYWJsZVN0cmVhbVJlYWRlci5qcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtUmVhZGVy
LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5OTA4QjBFRjFCQ0FDRjkxMDBFRDBG
NzUgLyogV3JpdGFibGVTdHJlYW0uanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7
IHBhdGggPSBXcml0YWJsZVN0cmVhbS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTkwOEIwRjMxQkNBQ0ZGRTAwRUQwRjY1IC8qIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWls
dGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlTGVuZ3Ro
UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5OTA4QjBGNDFCQ0FDRkZFMDBFRDBGNjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1
aWx0aW5zV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlTGVu
Z3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnNXcmFwcGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk5MDhCMEY1MUJDQUQwN0QwMEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0
cmF0ZWd5QnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZUxl
bmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMTM3Niw2ICsxMTM3NSw3IEBACiAJCTk5MDhCMEY3MUJDQUQwN0QwMEVEMEY2NSAvKiBD
b3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTkwOEIwRjgxQkNBRDA3RDAwRUQwRjY1IC8qIENvdW50UXVldWluZ1N0cmF0
ZWd5QnVpbHRpbnNXcmFwcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
dW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnNXcmFwcGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk5MDhCMEY5MUJDQUQwN0QwMEVEMEY2NSAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0
aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWRhYmxlU3Ry
ZWFtQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTA4QjBGOTFC
Q0FEMDdEMDBFRDBGNzUgLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRkExQkNBRDA3RDAwRUQwRjY1IC8qIFJl
YWRhYmxlU3RyZWFtQ29udHJvbGxlckJ1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlckJ1aWx0aW5zLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRkIxQkNBRDA3RDAwRUQwRjY1IC8qIFJl
YWRhYmxlU3RyZWFtQ29udHJvbGxlckJ1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlckJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEZDMUJDQUQwN0QwMEVEMEY2NSAvKiBSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXJCdWlsdGluc1dyYXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQnVpbHRpbnNXcmFwcGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTM4Myw3ICsxMTM4Myw2IEBACiAJCTk5MDhCMEZF
MUJDQUQwN0QwMEVEMEY2NSAvKiBSZWFkYWJsZVN0cmVhbVJlYWRlckJ1aWx0aW5zLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtUmVhZGVyQnVp
bHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGRjFCQ0FEMDdE
MDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1SZWFkZXJCdWlsdGlucy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZVN0cmVhbVJlYWRlckJ1aWx0aW5zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMTAwMUJDQUQwN0QwMEVEMEY2NSAvKiBSZWFk
YWJsZVN0cmVhbVJlYWRlckJ1aWx0aW5zV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZWFkYWJsZVN0cmVhbVJlYWRlckJ1aWx0aW5zV3JhcHBlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk5OTA4QjBGOTFCQ0FEMDdEMDBFRDBGNzUgLyogV3JpdGFi
bGVTdHJlYW1CdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTkyMDM5ODAxOEI5NUJDNjAwQjM5QUY5IC8qIFVzZXJJbnB1dEJyaWRnZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VySW5wdXRCcmlkZ2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTIwMzk4MTE4Qjk1QkM2MDBCMzlBRjkgLyogVXNl
cklucHV0QnJpZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJJbnB1
dEJyaWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUM3Q0NCMjE4QzY2M0U0
MDAzMkU0MTMgLyogTWVtb2l6ZWRET01SZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWVtb2l6ZWRET01SZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTExNDI0LDkgKzExNDIzLDkgQEAKIAkJOUIwM0Q4MDcxQkIzMTEwRDAwQjc2NENBIC8qIFN0
cmVhbUludGVybmFsc0J1aWx0aW5zV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdHJlYW1JbnRlcm5hbHNCdWlsdGluc1dyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEQ4IC8qIFJlYWRhYmxlU3RyZWFt
QnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVTdHJl
YW1CdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjAzRDgwNjFCQjMx
MTBEMDBCNzY0RDkgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCMDNEODA2MUJCMzExMEQwMEI3NjRF
OCAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOUIwM0Q4MDcxQkIzMTEwRDAwQjc2NEQ4IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnNX
cmFwcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFt
QnVpbHRpbnNXcmFwcGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDNEODA3
MUJCMzExMEQwMEI3NjREQSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zV3JhcHBl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUludGVy
bmFsc0J1aWx0aW5zV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5QjAz
RDgwNjFCQjMxMTBEMDBCNzY0RTggLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDNEODA3MUJCMzExMEQwMEI3NjRFOCAvKiBXcml0
YWJsZVN0cmVhbUJ1aWx0aW5zV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5QjE5QjY3RTFCOTY0RTUyMDAzNDg3NDUgLyogU2hhZG93Um9vdC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2hhZG93Um9vdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlCMUFCMDc5MTY0OEM2OUQwMDUxRjNGMiAvKiBIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUzNTEsNyArMTUzNTAsNiBAQAogCQkwODY3RDY5MUZF
ODQwMjhGQzAyQUFDMDcgLyogV2ViS2l0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKLQkJCQk5OTA4QjBFQzFCQ0FDRjFGMDBFRDBGNjUgLyogZ2VuZXJhdGUtanMt
YnVpbHRpbnMgKi8sCiAJCQkJNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oICov
LAogCQkJCUVERUM5ODAyMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4LmggKi8sCiAJ
CQkJOTMwNzA2MTMwOUUwQ0E4MjAwQjE3RkU0IC8qIERlcml2ZWRTb3VyY2VzLm1ha2UgKi8sCkBA
IC0xNjQwMSw3ICsxNjM5OSw2IEBACiAJCQkJOTkwOEIwRjExQkNBQ0Y5MTAwRUQwRjU1IC8qIFN0
cmVhbUludGVybmFscy5qcyAqLywKIAkJCQk0MUEwMjNFRDFBMzlEQjc5MDBGNzIyREYgLyogV3Jp
dGFibGVTdHJlYW0uaWRsICovLAogCQkJCTk5MDhCMEVGMUJDQUNGOTEwMEVEMEY3NSAvKiBXcml0
YWJsZVN0cmVhbS5qcyAqLywKLQogCQkJKTsKIAkJCXBhdGggPSBzdHJlYW1zOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE3MjU3LDkgKzE3MjU0LDkgQEAKIAkJCQkxQTE0MTRCNDEz
QTBGMDUwMDAxOTk5NkMgLyogV2ViS2l0Rm9udEZhbWlseU5hbWVzLmggKi8sCiAJCQkJOTlDQzBC
NjgxOEJFQTFGRjAwNkNFQkNDIC8qIFdlYlJlcGxheUlucHV0cy5jcHAgKi8sCiAJCQkJOTlDQzBC
NjkxOEJFQTFGRjAwNkNFQkNDIC8qIFdlYlJlcGxheUlucHV0cy5oICovLAorCQkJCTk5MDhCMEY5
MUJDQUQwN0QwMEVEMEY3NSAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmNwcCAqLywKIAkJCQk5
QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTggLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oICovLAog
CQkJCTlCMDNEODA3MUJCMzExMEQwMEI3NjRFOCAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zV3Jh
cHBlci5oICovLAotCQkJCTk5MDhCMEY5MUJDQUQwN0QwMEVEMEY3NSAvKiBXcml0YWJsZVN0cmVh
bUJ1aWx0aW5zLmNwcCAqLywKIAkJCQk2NTY1ODFFQTA5RDE1MDhEMDAwRTYxRDcgLyogWExpbmtO
YW1lcy5jcHAgKi8sCiAJCQkJNjU2NTgxRUIwOUQxNTA4RDAwMEU2MUQ3IC8qIFhMaW5rTmFtZXMu
aCAqLywKIAkJCQlBODMzQzgwQTBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMuY3BwICovLApA
QCAtMjkxMjMsNiArMjkxMjAsNyBAQAogCQkJCTk3NDZBRjI2MTRGNERERTYwMDNFN0E3MCAvKiBH
ZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCNjI1MkUxOERF
MUIxNTAwQTA3QzA1IC8qIEdlb21ldHJ5VXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTQ2QzgzRUZEMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkyRDUwMzY2ODFCQ0REREM0MDBFMjBCQjMgLyogR2VzdHVyZUV2ZW50cy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMkFGRkM4MzBEMDBBNUMxMDAzMDA3NEQgLyogR2x5cGhQYWdlTWFj
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNTNDNjA4MERBNTZDNTcwMDIxRUI1RCAvKiBHcmFk
aWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzUzQzYwQjBEQTU2Q0YxMDAyMUVCNUQgLyog
R3JhZGllbnRDRy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5NzUxLDcgKzI5NzQ5LDYgQEAKIAkJ
CQkwNzA1ODUzMzE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwNTg1MzUxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFU
cmFja0NvbnN0cmFpbnRTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEwNzQwMEQwRTc3QkRD
MDAwMzNBRjI0IC8qIEpTTWVzc2FnZUNoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEZF
RjIwQ0UxQkQ0QTI0MTAwMTI4RTVEIC8qIExlbmd0aFNpemUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTFBNUY5OUIwRTdFQUEyNTAwQUY4NUVBIC8qIEpTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNzU3OTNFQzgwRDBDRTcyRDAwN0ZDMEFDIC8qIEpTTWVzc2Fn
ZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxMEI3RTcyMTA0NUZBQjAwMEQ4MjI0RiAv
KiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwMTYzLDYgKzMw
MTYwLDcgQEAKIAkJCQk1MUIyNDE3QjBEOTMxRjNGMDBFODNGNUMgLyogTGVnYWN5V2ViQXJjaGl2
ZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDRTY1QkVBMEVBQ0RGMTYwMDdFNDUzMyAvKiBM
ZW5ndGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTU1RjQ5N0ExNTFCODg4MDAwQkI2N0RCIC8q
IExlbmd0aEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkVGMjBDRTFCRDRBMjQx
MDAxMjhFNUQgLyogTGVuZ3RoU2l6ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRkI2OThDQzE4
MzNFRTBEMDAxNThBMzEgLyogTGluZUJyZWFrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODlC
NUVBQTExMUU4MDAzRDAwRjIzNjdFIC8qIExpbmVFbmRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRkZCNjk4Q0YxODM0MDJCQjAwMTU4QTMxIC8qIExpbmVJbmZvLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMzA0OTQsNyArMzA0OTIsNiBAQAogCQkJCUQzMDI3NTQ5MTJBNUZFODQwMDRCRDgyOCAv
KiBSZW5kZXJEZXRhaWxzTWFya2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlCMzJDREFBMTNE
RjdGQTkwMEYzNEQxMyAvKiBSZW5kZXJlZFBvc2l0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUU0M0EwMjNEMTdFQjM3MTMwMDRDREQyNSAvKiBSZW5kZXJFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTBGRUYyMEQwMUJENEE2NEYwMDEyOEU1RCAvKiBSZW5kZXJTdHlsZUNvbnN0YW50
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjVCN0E1NDEwRjY1RDdBMDAzNzYzMDIgLyogUmVu
ZGVyRW1iZWRkZWRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThFQTczQzMwQTE5MDBF
MzAwQThFRjVGIC8qIFJlbmRlckZpZWxkc2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA2NkM3
NzMwMEFCNjAzRkQwMDIzOENDNCAvKiBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTMwNTY2LDYgKzMwNTYzLDcgQEAKIAkJCQlBQjI0N0E2QzBBRkQ2MzgzMDAz
RkE1RkQgLyogUmVuZGVyU2xpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxOTU1QTg2MTYw
RDE5OTAwMDg1ODAyNSAvKiBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQzhDOEZBRDBERENEMzFCMDBCNTkyRjQgLyogUmVuZGVyU3R5bGUuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMEZFRjIwRDAxQkQ0QTY0RjAwMTI4RTVEIC8qIFJlbmRlclN0eWxlQ29u
c3RhbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNEU1NzE3MTMxMzI3NjIwMENGODVBRiAv
KiBSZW5kZXJTVkdBbGxJbk9uZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOERGNEFFQzA5ODBD
NDJDMDA1Mjk4MUIgLyogUmVuZGVyVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkVEODc4
QzQxNDc0OTNGNDAwNEMzNTk3IC8qIFJlbmRlclRhYmxlQ2FwdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTMwODgxLDcgKzMwODc5LDYgQEAKIAkJCQkyNEQ5MTJCNzEzQ0E5QTY5MDBEMjE5MTUg
LyogU1ZHQWx0R2x5cGhJdGVtRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzk3
NjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5nbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIy
Mjc5NzkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJMkQ1MDM2NjgxQkNERERDNDAwRTIwQkIzIC8qIEdlc3R1cmVFdmVudHMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM2MkM3QjkxM0FDNkYxQTAwMzQ0QkVCIC8qIFNWR0Fu
aW1hdGVkQW5nbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDMxQTMwODgxM0I4Rjk3ODAwNzc5
MUU0IC8qIFNWR0FuaW1hdGVkQm9vbGVhbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0M0E2MjVG
OTEzQjMzMDQwMDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRDb2xvci5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4
IGZhMmEzMDk4OTkwNDFjNTI1MjhmYzc5NDk3YzgxZWU4M2RjYjZhOGUuLmQzYTFhNzFhN2M0OGYz
MDUzY2Y1Nzk0NmVlNjhiZTI0MmFlNmQ0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtOTUsMTMgKzk1LDEzIEBAIHZvaWQgSlNET01X
aW5kb3dCYXNlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTRE9NV2luZG93U2hlbGwqIHNoZWxs
KQogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oXAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbkZ1bmN0aW9ucygpLnJlYWRh
YmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMoKS5uYW1lIyNQcml2YXRlTmFtZSgpLCBcCiAgICAg
ICAgICAgICBtX3ByaXZhdGVGdW5jdGlvbnMucmVhZGFibGVTdHJlYW1JbnRlcm5hbHMoKS5tXyMj
bmFtZSMjRnVuY3Rpb24uZ2V0KCkgLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAotICAgICAgICBX
RUJDT1JFUkVBREFCTEVTVFJFQU1JTlRFUk5BTFNfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05B
TUUoREVDTEFSRV9HTE9CQUxfU1RBVElDKQorICAgICAgICBXRUJDT1JFX0ZPUkVBQ0hfUkVBREFC
TEVTVFJFQU1JTlRFUk5BTFNfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfR0xPQkFMX1NU
QVRJQykKICN1bmRlZiBERUNMQVJFX0dMT0JBTF9TVEFUSUMKICNkZWZpbmUgREVDTEFSRV9HTE9C
QUxfU1RBVElDKG5hbWUpXAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oXAogICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbkZ1
bmN0aW9ucygpLnN0cmVhbUludGVybmFsc0J1aWx0aW5zKCkubmFtZSMjUHJpdmF0ZU5hbWUoKSwg
XAogICAgICAgICAgICAgbV9wcml2YXRlRnVuY3Rpb25zLnN0cmVhbUludGVybmFscygpLm1fIyNu
YW1lIyNGdW5jdGlvbi5nZXQoKSAsIERvbnREZWxldGUgfCBSZWFkT25seSksCi0gICAgICAgIFdF
QkNPUkVTVFJFQU1JTlRFUk5BTFNfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFS
RV9HTE9CQUxfU1RBVElDKQorICAgICAgICBXRUJDT1JFX0ZPUkVBQ0hfU1RSRUFNSU5URVJOQUxT
X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0dMT0JBTF9TVEFUSUMpCiAjdW5kZWYgREVD
TEFSRV9HTE9CQUxfU1RBVElDCiAjZW5kaWYKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMgYi9Tb3VyY2UvV2ViQ29yZS9nZW5lcmF0ZS1qcy1i
dWlsdGlucwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjFkZDY0MmU3Y2EyZjg5YTc4
ZTFkMWE1MDNkOGI5NzgyYjQwNDQ4MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucworKysgL2Rl
di9udWxsCkBAIC0xLDE4MSArMCwwIEBACi0jIS91c3IvYmluL3B5dGhvbgotIyBDb3B5cmlnaHQg
KEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSMgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0jIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0jIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotIyBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0jIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0jIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LQotCi1pbXBvcnQgYXJncGFyc2UKLWltcG9ydCBmaWxlY21wCi1pbXBvcnQgb3MKLWltcG9ydCBz
dWJwcm9jZXNzCi0KLWZyb20gc3RyaW5nIGltcG9ydCBUZW1wbGF0ZQotCi0KLXBhcnNlciA9IGFy
Z3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKLXBhcnNlci5hZGRfYXJndW1lbnQoJy0tb3V0cHV0X2Rp
cicsIGRlZmF1bHQ9JycsIGhlbHA9J291dHB1dCBkaXJlY3RvcnknKQotcGFyc2VyLmFkZF9hcmd1
bWVudCgnLS1pbnB1dCcsIGhlbHA9J3BhdGggdG8gaW5wdXQgSlMgZmlsZScpCi1wYXJzZXIuYWRk
X2FyZ3VtZW50KCctLWdlbmVyYXRlX2pzX2J1aWx0aW5zX3BhdGgnLCBoZWxwPSdwYXRoIHRvIGRp
cmVjdG9yeSBjb250YWluaW5nIEphdmFTY3JpcHRDb3JlXCdzIGdlbmVyYXRlLWpzLWJ1aWx0aW5z
JykKLQotYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKLWZpbGVuYW1lID0gb3MucGF0aC5zcGxp
dGV4dChvcy5wYXRoLmJhc2VuYW1lKGFyZ3MuaW5wdXQpKVswXQotCi0jIGdlbmVyYXRlIEpTIGJ1
aWx0aW5zCi1uYW1lc3BhY2UgPSAiV2ViQ29yZSIKLXByZWZpeCA9ICJXRUJDT1JFIiArIGZpbGVu
YW1lLnVwcGVyKCkKLW91dHB1dCA9IG9zLnBhdGguam9pbihhcmdzLm91dHB1dF9kaXIsIGZpbGVu
YW1lICsgIkJ1aWx0aW5zIikKLWpzY19nZW5lcmF0ZV9idWlsdGluX3NjcmlwdCA9IG9zLnBhdGgu
am9pbihhcmdzLmdlbmVyYXRlX2pzX2J1aWx0aW5zX3BhdGgsICJnZW5lcmF0ZS1qcy1idWlsdGlu
cyIpCi0KLXN1YnByb2Nlc3MuY2FsbChbInB5dGhvbiIsIGpzY19nZW5lcmF0ZV9idWlsdGluX3Nj
cmlwdCwgIi0tb3V0cHV0Iiwgb3V0cHV0LCAiLS1uYW1lc3BhY2UiLCBuYW1lc3BhY2UsICItLXBy
ZWZpeCIsIHByZWZpeCwgYXJncy5pbnB1dF0sIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKLQot
IyBnZW5lcmF0ZSBKUyBidWlsdGlucyB3cmFwcGVyCi1vdXRwdXRfYmFzZSA9IG91dHB1dCArICJX
cmFwcGVyIgotCi1idWlsdGluc1dyYXBwZXJIZWFkZXIgPSBvcGVuKG91dHB1dF9iYXNlICsgIi5o
LnRtcCIsICJ3IikKLQotYnVpbHRpbnNXcmFwcGVySGVhZGVyLndyaXRlKFRlbXBsYXRlKAotIiIi
Ci0vKiBHZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtanMtYnVpbHRpbnMgZG8gbm90IGhhbmQgZWRpdC4g
Ki8KLQotLyoKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgot
ICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGlj
ZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT
b2Z0d2FyZQotICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICovCi0KLSNpZm5kZWYgJHtGaWxl
bmFtZX1CdWlsdGluc1dyYXBwZXJfaAotI2RlZmluZSAke0ZpbGVuYW1lfUJ1aWx0aW5zV3JhcHBl
cl9oCi0KLSNpbmNsdWRlICIke0ZpbGVuYW1lfUJ1aWx0aW5zLmgiCi0jaW5jbHVkZSA8Ynl0ZWNv
ZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaD4KLSNpbmNsdWRlIDxidWlsdGlucy9CdWls
dGluVXRpbHMuaD4KLSNpbmNsdWRlIDxydW50aW1lL0lkZW50aWZpZXIuaD4KLSNpbmNsdWRlIDxy
dW50aW1lL0pTRnVuY3Rpb24uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyAke0Zp
bGVuYW1lfUJ1aWx0aW5zV3JhcHBlciA6IHByaXZhdGUgSlNDOjpXZWFrSGFuZGxlT3duZXIgewot
cHVibGljOgotICAgIGV4cGxpY2l0ICR7RmlsZW5hbWV9QnVpbHRpbnNXcmFwcGVyKEpTQzo6Vk0q
IHZtKQotICAgICAgICA6IG1fdm0oKnZtKQotICAgICAgICAke1ByZWZpeH1fRk9SRUFDSF9CVUlM
VElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElaRV9CVUlMVElOX05BTUVTKQotI2RlZmluZSBJTklU
SUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgp
ICwgbV8jI25hbWUjI1NvdXJjZShKU0M6Om1ha2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJv
bUxpdGVyYWwoc18jI25hbWUsIGxlbmd0aCkpKQotICAgICAgICAke1ByZWZpeH1fRk9SRUFDSF9C
VUlMVElOKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKLSN1bmRlZiBJTklUSUFM
SVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKLSAgICB7Ci0gICAgfQotCi0jZGVmaW5lIEVYUE9T
RV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcXAotICAg
IEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXFwK
LSAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJu
IG1fIyNuYW1lIyNTb3VyY2U7IH0KLSAgICAke1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOKEVYUE9T
RV9CVUlMVElOX0VYRUNVVEFCTEVTKQotI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVT
Ci0KLSAgICAke1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9C
VUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCi0KLSAgICB2b2lkIGV4cG9ydE5hbWVzKCk7Ci0K
LXByaXZhdGU6Ci0gICAgSlNDOjpWTSYgbV92bTsKLQotICAgICR7UHJlZml4fV9GT1JFQUNIX0JV
SUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fTkFNRVMpCi0KLSNkZWZpbmUgREVD
TEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBc
XAotICAgIEpTQzo6U291cmNlQ29kZSBtXyMjbmFtZSMjU291cmNlO1xcCi0gICAgSlNDOjpXZWFr
PEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVjdXRhYmxlOwot
ICAgICR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU4oREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1C
RVJTKQotI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUwotCi19OwotCi0jZGVm
aW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3Ro
KSBcXAotaW5saW5lIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqICR7RmlsZW5hbWV9
QnVpbHRpbnNXcmFwcGVyOjpuYW1lIyNFeGVjdXRhYmxlKCkgXFwKLXtcXAotICAgIGlmICghbV8j
I25hbWUjI0V4ZWN1dGFibGUpXFwKLSAgICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUgPSBKU0M6
OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4oSlNDOjpjcmVhdGVCdWlsdGlu
RXhlY3V0YWJsZShtX3ZtLCBtXyMjbmFtZSMjU291cmNlLCBmdW5jdGlvbk5hbWUjI1B1YmxpY05h
bWUoKSwgc18jI25hbWUjI0NvbnN0cnVjdEFiaWxpdHkpLCB0aGlzLCAmbV8jI25hbWUjI0V4ZWN1
dGFibGUpO1xcCi0gICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1xcCi19Ci0k
e1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQotI3Vu
ZGVmIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTCi0KLWlubGluZSB2b2lkICR7RmlsZW5hbWV9
QnVpbHRpbnNXcmFwcGVyOjpleHBvcnROYW1lcygpCi17Ci0jZGVmaW5lIEVYUE9SVF9GVU5DVElP
Tl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+YXBwZW5kRXh0ZXJuYWxOYW1lKG5hbWUj
I1B1YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUoKSk7Ci0gICAgJHtQcmVmaXh9X0ZPUkVB
Q0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKEVYUE9SVF9GVU5DVElPTl9OQU1FKQotI3VuZGVmIEVY
UE9SVF9GVU5DVElPTl9OQU1FCi19Ci0KLWNsYXNzICR7RmlsZW5hbWV9QnVpbHRpbkZ1bmN0aW9u
cyB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgJHtGaWxlbmFtZX1CdWlsdGluRnVuY3Rpb25zKEpT
Qzo6Vk0mIHZtKSA6IG1fdm0odm0pIHsgfQotCi0gICAgdm9pZCBpbml0KEpTQzo6SlNHbG9iYWxP
YmplY3QmKTsKLSAgICB2b2lkIHZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImKTsKLQotcHVibGljOgot
ICAgIEpTQzo6Vk0mIG1fdm07Ci0KLSNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1C
RVJTKGZ1bmN0aW9uTmFtZSkgXFwKLSAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTRnVuY3Rp
b24+IG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uOwotICAgICR7UHJlZml4fV9GT1JFQUNIX0JV
SUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCi0jdW5k
ZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCi19OwotCi1pbmxpbmUgdm9pZCAke0Zp
bGVuYW1lfUJ1aWx0aW5GdW5jdGlvbnM6OmluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQotewotI2RlZmluZSBFWFBPUlRfRlVOQ1RJT04oY29kZU5hbWUsIGZ1bmN0aW9uTmFt
ZSwgbGVuZ3RoKVxcCi0gICAgbV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb24uc2V0KG1fdm0sICZn
bG9iYWxPYmplY3QsIEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKG1fdm0s
IGNvZGVOYW1lIyNHZW5lcmF0b3IobV92bSksICZnbG9iYWxPYmplY3QpKTsKLSAgICAke1ByZWZp
eH1fRk9SRUFDSF9CVUlMVElOKEVYUE9SVF9GVU5DVElPTikKLSN1bmRlZiBFWFBPUlRfRlVOQ1RJ
T04KLX0KLQotaW5saW5lIHZvaWQgJHtGaWxlbmFtZX1CdWlsdGluRnVuY3Rpb25zOjp2aXNpdChK
U0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQotewotI2RlZmluZSBWSVNJVF9GVU5DVElPTihuYW1l
KSB2aXNpdG9yLmFwcGVuZCgmbV8jI25hbWUjI0Z1bmN0aW9uKTsKLSAgICAke1ByZWZpeH1fRk9S
RUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoVklTSVRfRlVOQ1RJT04pCi0jdW5kZWYgVklTSVRf
RlVOQ1RJT04KLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gJHtGaWxl
bmFtZX1CdWlsdGluc1dyYXBwZXJfaAotIiIiKS5zdWJzdGl0dXRlKGRpY3QoRmlsZW5hbWU9Zmls
ZW5hbWUsIFByZWZpeD1wcmVmaXgpKSkKLQotYnVpbHRpbnNXcmFwcGVySGVhZGVyLmNsb3NlKCkK
LQotaWYgKG5vdCBvcy5wYXRoLmV4aXN0cyhvdXRwdXRfYmFzZSArICIuaCIpKSBvciAobm90IGZp
bGVjbXAuY21wKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsIG91dHB1dF9iYXNlICsgIi5oIiwgc2hh
bGxvdz1GYWxzZSkpOgotICAgIGlmIChvcy5wYXRoLmV4aXN0cyhvdXRwdXRfYmFzZSArICIuaCIp
KToKLSAgICAgICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5oIikKLSAgICBvcy5yZW5hbWUo
b3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmgiKQotZWxzZToKLSAgICBv
cy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmgudG1wIikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5YTJhY2U4MmMzMmY4ODg1M2E5MGMzMmRmZGVi
OTQwNzE0ZWY2MDg0Li4wMTkwMDA0YzNiMTJmNTU2NTIwYTdkNDJlZGIyNzg0OGE4OWM2Nzk0IDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzAgQEAKKzIwMTUtMTAtMTMgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVzdHJ1Y3R1cmUgZ2VuZXJhdGUtanMtYmluZGluZ3Mgc2NyaXB0IHRvIGJlIG1vZHVs
YXIgYW5kIHRlc3RhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDk5MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgYSBzdHViIHNoZWxsIHNjcmlwdCBhbmQgYmFzaWMgd2Via2l0cHkgc3VwcG9y
dCBmb3IgcnVubmluZyBidWlsdGlucworICAgICAgICBnZW5lcmF0b3IgdGVzdHMuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3J1bi1idWlsdGlucy1nZW5lcmF0b3ItdGVzdHM6IEFkZGVkLgorICAgICAg
ICAobWFpbik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb2RlZ2VuL19faW5pdF9fLnB5
OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvZGVnZW4vbWFpbi5weTogQWRk
ZWQuCisKKyAgICAgICAgICAgIFRoZSBvbmx5IGludGVyZXN0aW5nIGRpZmZlcmVuY2UgaGVyZSBm
cm9tIHRoZSBpbnNwZWN0b3IgcHJvdG9jb2wKKyAgICAgICAgICAgIGdlbmVyYXRvciBlcXVpdmFs
ZW50IGlzIHRoYXQgdGhpcyBpbXBsZW1lbnRhdGlvbiBkZWNvZGVzIHRoZSB0YXJnZXQKKyAgICAg
ICAgICAgIGZyYW1ld29yayBhbmQgb3V0cHV0IG1vZGUgKGNvbWJpbmVkIG9yIHNlcGFyYXRlKSBm
cm9tIHRoZSB0ZXN0J3MgZmlsZSBuYW1lLgorCisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvclRl
c3RzKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHMuX19pbml0X18pOgorICAgICAg
ICAoQnVpbHRpbnNHZW5lcmF0b3JUZXN0cy5nZW5lcmF0ZV9mcm9tX2pzX2J1aWx0aW5zKToKKyAg
ICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHMud3JpdGVfZXJyb3JfZmlsZSk6CisgICAgICAg
IChCdWlsdGluc0dlbmVyYXRvclRlc3RzLmRldGVjdF9jaGFuZ2VzKToKKyAgICAgICAgKEJ1aWx0
aW5zR2VuZXJhdG9yVGVzdHMucnVuX3Rlc3RzKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9y
VGVzdHMubWFpbik6CisKIDIwMTUtMTAtMjAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEVuYWJsZSBPcGVuV2ViUlRDIHRlc3QgdmlkZW8v
YXVkaW8gc291cmNlcyBpbiB0ZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4tYnVp
bHRpbnMtZ2VuZXJhdG9yLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4tYnVpbHRpbnMtZ2VuZXJh
dG9yLXRlc3RzCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzOThjNzhjYTEwZWM1OTc2MjY2MTJjODU1NTNhYmQxYTRl
NmZiZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3J1bi1idWlsdGlucy1nZW5l
cmF0b3ItdGVzdHMKQEAgLTAsMCArMSw0MiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgc3lzCitmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGV4ZWN1dGl2ZQorCitkZWYgbWFpbihhcmd2KToKKyAg
ICAiIiJSdW5zIHRoZSBKUyBidWlsdGlucyBjb2RlIGdlbmVyYXRvciBvbiB0ZXN0IGlucHV0IGZp
bGVzIGFuZCBjb21wYXJlcworICAgIHRoZSByZXN1bHRzIHdpdGggcmVmZXJlbmNlIGZpbGVzLgor
CisgICAgT3B0aW9uczoKKyAgICAgICAtLXJlc2V0LXJlc3VsdHM6IE92ZXJ3cml0ZXMgdGhlIHJl
ZmVyZW5jZSBmaWxlcyB3aXRoIHRoZSBnZW5lcmF0ZWQgcmVzdWx0cy4KKworICAgICIiIgorICAg
IHJlc2V0X3Jlc3VsdHMgPSAiLS1yZXNldC1yZXN1bHRzIiBpbiBhcmd2CisKKyAgICBmcm9tIHdl
YmtpdHB5LmNvZGVnZW4ubWFpbiBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3JUZXN0cworICAgIHJl
dHVybiBCdWlsdGluc0dlbmVyYXRvclRlc3RzKHJlc2V0X3Jlc3VsdHMsIGV4ZWN1dGl2ZS5FeGVj
dXRpdmUoKSkubWFpbigpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgc3lzLmV4
aXQobWFpbihzeXMuYXJndikpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
ZGVnZW4vX19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvZGVnZW4vX19pbml0
X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZWY2NWJlZTViYjc3ZTk2ZWJjN2NkOWM0NzY0MDY5MGZiZGE4YWMx
OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29kZWdlbi9fX2lu
aXRfXy5weQpAQCAtMCwwICsxIEBACisjIFJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRo
aXMgZGlyZWN0b3J5IGZvciBtb2R1bGUgZmlsZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29kZWdlbi9tYWluLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb2RlZ2Vu
L21haW4ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDAzOTZkYjlhMzhiZTBmMDdiZTE4NjNiODhhZWQ0MWVkZjk3
ZDk2OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29kZWdlbi9t
YWluLnB5CkBAIC0wLDAgKzEsMTQ0IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCisjIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRAorIyBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEKKyMgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIEhPTERFUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBvcworaW1wb3J0IG9zLnBhdGgKK2ltcG9y
dCBzaHV0aWwKK2ltcG9ydCBzeXMKK2ltcG9ydCB0ZW1wZmlsZQorZnJvbSB3ZWJraXRweS5jb21t
b24uY2hlY2tvdXQuc2NtLmRldGVjdGlvbiBpbXBvcnQgZGV0ZWN0X3NjbV9zeXN0ZW0KK2Zyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCisKKwor
Y2xhc3MgQnVpbHRpbnNHZW5lcmF0b3JUZXN0czoKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBy
ZXNldF9yZXN1bHRzLCBleGVjdXRpdmUpOgorICAgICAgICBzZWxmLnJlc2V0X3Jlc3VsdHMgPSBy
ZXNldF9yZXN1bHRzCisgICAgICAgIHNlbGYuZXhlY3V0aXZlID0gZXhlY3V0aXZlCisKKyAgICBk
ZWYgZ2VuZXJhdGVfZnJvbV9qc19idWlsdGlucyhzZWxmLCBidWlsdGluc19maWxlLCBvdXRwdXRf
ZGlyZWN0b3J5LCBmcmFtZXdvcmtfbmFtZT0iIiwgY29tYmluZWRfb3V0cHV0cz1GYWxzZSk6Cisg
ICAgICAgIGNtZCA9IFsncHl0aG9uJywKKyAgICAgICAgICAgICAgICdKYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5JywKKyAgICAgICAgICAgICAgICctLW91dHB1
dC1kaXJlY3RvcnknLCBvdXRwdXRfZGlyZWN0b3J5LAorICAgICAgICAgICAgICAgJy0tZm9yY2Un
LAorICAgICAgICAgICAgICAgJy0tZnJhbWV3b3JrJywgZnJhbWV3b3JrX25hbWUsCisgICAgICAg
ICAgICAgICAnLS10ZXN0J10KKworICAgICAgICBpZiBjb21iaW5lZF9vdXRwdXRzOgorICAgICAg
ICAgICAgY21kLmFwcGVuZCgnLS1jb21iaW5lZCcpCisKKyAgICAgICAgY21kLmFwcGVuZChidWls
dGluc19maWxlKQorCisgICAgICAgIGV4aXRfY29kZSA9IDAKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgc3RkZXJyX291dHB1dCA9IHNlbGYuZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGNtZCkKKyAg
ICAgICAgICAgIGlmIHN0ZGVycl9vdXRwdXQ6CisgICAgICAgICAgICAgICAgc2VsZi53cml0ZV9l
cnJvcl9maWxlKGJ1aWx0aW5zX2ZpbGUsIG91dHB1dF9kaXJlY3RvcnksIHN0ZGVycl9vdXRwdXQp
CisgICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciwgZToKKyAgICAgICAgICAgIHByaW50IGUub3V0
cHV0CisgICAgICAgICAgICBleGl0X2NvZGUgPSBlLmV4aXRfY29kZQorICAgICAgICByZXR1cm4g
ZXhpdF9jb2RlCisKKyAgICBkZWYgd3JpdGVfZXJyb3JfZmlsZShzZWxmLCBpbnB1dF9maWxlcGF0
aCwgb3V0cHV0X2RpcmVjdG9yeSwgZXJyb3Jfb3V0cHV0KToKKyAgICAgICAgb3V0cHV0X2ZpbGVw
YXRoID0gb3MucGF0aC5qb2luKG91dHB1dF9kaXJlY3RvcnksIG9zLnBhdGguYmFzZW5hbWUoaW5w
dXRfZmlsZXBhdGgpICsgJy1lcnJvcicpCisKKyAgICAgICAgd2l0aCBvcGVuKG91dHB1dF9maWxl
cGF0aCwgInciKSBhcyBvdXRwdXRfZmlsZToKKyAgICAgICAgICAgIG91dHB1dF9maWxlLndyaXRl
KGVycm9yX291dHB1dCkKKworICAgIGRlZiBkZXRlY3RfY2hhbmdlcyhzZWxmLCB3b3JrX2RpcmVj
dG9yeSwgcmVmZXJlbmNlX2RpcmVjdG9yeSk6CisgICAgICAgIGNoYW5nZXNfZm91bmQgPSBGYWxz
ZQorICAgICAgICBmb3Igb3V0cHV0X2ZpbGUgaW4gb3MubGlzdGRpcih3b3JrX2RpcmVjdG9yeSk6
CisgICAgICAgICAgICBjbWQgPSBbJ2RpZmYnLAorICAgICAgICAgICAgICAgICAgICctdScsCisg
ICAgICAgICAgICAgICAgICAgJy1OJywKKyAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4o
cmVmZXJlbmNlX2RpcmVjdG9yeSwgb3V0cHV0X2ZpbGUpLAorICAgICAgICAgICAgICAgICAgIG9z
LnBhdGguam9pbih3b3JrX2RpcmVjdG9yeSwgb3V0cHV0X2ZpbGUpXQorCisgICAgICAgICAgICBl
eGl0X2NvZGUgPSAwCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3V0cHV0ID0g
c2VsZi5leGVjdXRpdmUucnVuX2NvbW1hbmQoY21kKQorICAgICAgICAgICAgZXhjZXB0IFNjcmlw
dEVycm9yLCBlOgorICAgICAgICAgICAgICAgIG91dHB1dCA9IGUub3V0cHV0CisgICAgICAgICAg
ICAgICAgZXhpdF9jb2RlID0gZS5leGl0X2NvZGUKKworICAgICAgICAgICAgaWYgZXhpdF9jb2Rl
IG9yIG91dHB1dDoKKyAgICAgICAgICAgICAgICBwcmludCAnRkFJTDogJXMnICUgb3V0cHV0X2Zp
bGUKKyAgICAgICAgICAgICAgICBwcmludCBvdXRwdXQKKyAgICAgICAgICAgICAgICBjaGFuZ2Vz
X2ZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwcmludCAn
UEFTUzogJXMnICUgb3V0cHV0X2ZpbGUKKyAgICAgICAgcmV0dXJuIGNoYW5nZXNfZm91bmQKKwor
ICAgIGRlZiBydW5fdGVzdHMoc2VsZiwgaW5wdXRfZGlyZWN0b3J5LCByZWZlcmVuY2VfZGlyZWN0
b3J5KToKKyAgICAgICAgd29ya19kaXJlY3RvcnkgPSByZWZlcmVuY2VfZGlyZWN0b3J5CisKKyAg
ICAgICAgcGFzc2VkID0gVHJ1ZQorICAgICAgICBmb3IgaW5wdXRfZmlsZSBpbiBvcy5saXN0ZGly
KGlucHV0X2RpcmVjdG9yeSk6CisgICAgICAgICAgICAodGVzdF9uYW1lLCBleHRlbnNpb24pID0g
b3MucGF0aC5zcGxpdGV4dChpbnB1dF9maWxlKQorICAgICAgICAgICAgaWYgZXh0ZW5zaW9uICE9
ICcuanMnOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAjIEdlbmVyYXRl
IG91dHB1dCBpbnRvIHRoZSB3b3JrIGRpcmVjdG9yeSAoZWl0aGVyIHRoZSBnaXZlbiBvbmUgb3Ig
YQorICAgICAgICAgICAgIyB0ZW1wIG9uZSBpZiBub3QgcmVzZXRfcmVzdWx0cyBpcyBwZXJmb3Jt
ZWQpCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5yZXNldF9yZXN1bHRzOgorICAgICAgICAgICAg
ICAgIHdvcmtfZGlyZWN0b3J5ID0gdGVtcGZpbGUubWtkdGVtcCgpCisKKyAgICAgICAgICAgIChm
cmFtZXdvcmtfbmFtZSwgdGVzdF9jYXNlLCBvdXRwdXRfbW9kZSkgPSB0ZXN0X25hbWUuc3BsaXQo
Jy0nKQorICAgICAgICAgICAgaWYgbm90IGZyYW1ld29ya19uYW1lIG9yIG5vdCBvdXRwdXRfbW9k
ZSBvciBub3QgdGVzdF9jYXNlOgorICAgICAgICAgICAgICAgIHByaW50ICJJbnZhbGlkIHRlc3Qg
Y2FzZSBuYW1lOiBzaG91bGQgYmUgRnJhbWV3b3JrLVRlc3RDYXNlTmFtZS1PdXRwdXRNb2RlLmpz
IgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGNvbWJpbmVkX291dHB1
dHMgPSBvdXRwdXRfbW9kZSA9PSAiQ29tYmluZWQiCisgICAgICAgICAgICBpZiBzZWxmLmdlbmVy
YXRlX2Zyb21fanNfYnVpbHRpbnMob3MucGF0aC5qb2luKGlucHV0X2RpcmVjdG9yeSwgaW5wdXRf
ZmlsZSksIHdvcmtfZGlyZWN0b3J5LCBmcmFtZXdvcmtfbmFtZT1mcmFtZXdvcmtfbmFtZSwgY29t
YmluZWRfb3V0cHV0cz1jb21iaW5lZF9vdXRwdXRzKToKKyAgICAgICAgICAgICAgICBwYXNzZWQg
PSBGYWxzZQorCisgICAgICAgICAgICBpZiBzZWxmLnJlc2V0X3Jlc3VsdHM6CisgICAgICAgICAg
ICAgICAgcHJpbnQgIlJlc2V0IHJlc3VsdHMgZm9yIHRlc3Q6ICVzIiAlIChpbnB1dF9maWxlKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICMgRGV0ZWN0IGNoYW5nZXMK
KyAgICAgICAgICAgIGlmIHNlbGYuZGV0ZWN0X2NoYW5nZXMod29ya19kaXJlY3RvcnksIHJlZmVy
ZW5jZV9kaXJlY3RvcnkpOgorICAgICAgICAgICAgICAgIHBhc3NlZCA9IEZhbHNlCisgICAgICAg
ICAgICBzaHV0aWwucm10cmVlKHdvcmtfZGlyZWN0b3J5KQorCisgICAgICAgIHJldHVybiBwYXNz
ZWQKKworICAgIGRlZiBtYWluKHNlbGYpOgorICAgICAgICBjdXJyZW50X3NjbSA9IGRldGVjdF9z
Y21fc3lzdGVtKG9zLmN1cmRpcikKKyAgICAgICAgb3MuY2hkaXIob3MucGF0aC5qb2luKGN1cnJl
bnRfc2NtLmNoZWNrb3V0X3Jvb3QsICdTb3VyY2UnKSkKKworICAgICAgICBhbGxfdGVzdHNfcGFz
c2VkID0gVHJ1ZQorCisgICAgICAgIGlucHV0X2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbignSmF2
YVNjcmlwdENvcmUnLCAnU2NyaXB0cycsICd0ZXN0cycsICdidWlsdGlucycpCisgICAgICAgIHJl
ZmVyZW5jZV9kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oJ0phdmFTY3JpcHRDb3JlJywgJ1Njcmlw
dHMnLCAndGVzdHMnLCAnYnVpbHRpbnMnLCAnZXhwZWN0ZWQnKQorICAgICAgICBpZiBub3Qgc2Vs
Zi5ydW5fdGVzdHMoaW5wdXRfZGlyZWN0b3J5LCByZWZlcmVuY2VfZGlyZWN0b3J5KToKKyAgICAg
ICAgICAgIGFsbF90ZXN0c19wYXNzZWQgPSBGYWxzZQorCisgICAgICAgIHByaW50ICcnCisgICAg
ICAgIGlmIGFsbF90ZXN0c19wYXNzZWQ6CisgICAgICAgICAgICBwcmludCAnQWxsIHRlc3RzIFBB
U1MhJworICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBy
aW50ICdTb21lIHRlc3RzIEZBSUwhIChUbyB1cGRhdGUgdGhlIHJlZmVyZW5jZSBmaWxlcywgZXhl
Y3V0ZSAicnVuLWJ1aWx0aW5zLWdlbmVyYXRvci10ZXN0cyAtLXJlc2V0LXJlc3VsdHMiKScKKyAg
ICAgICAgICAgIHJldHVybiAtMQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263632</attachid>
            <date>2015-10-20 16:39:08 -0700</date>
            <delta_ts>2015-10-21 13:04:19 -0700</delta_ts>
            <desc>Proposed Fix (rebased)</desc>
            <filename>bug-149929-20151020163824.patch</filename>
            <type>text/plain</type>
            <size>344197</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
YjkzNDc3ODhkYjYwNzIwZjU1MjM0ZjJkYmJhOGNhOGViNjJmZTNmLi4yODY3NTlhNGNkNWQzOTdm
MGI5YzY5ZjlhZWY5ZTg4OGJmYTY2YWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTUgQEAKKzIwMTUtMTAtMjAgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmVzdHJ1Y3R1cmUgZ2VuZXJhdGUtanMtYmluZGluZ3Mgc2NyaXB0IHRvIGJlIG1v
ZHVsYXIgYW5kIHRlc3RhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDk5MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGlzIGEgbmV3IGNvZGUgZ2VuZXJhdG9yLCBiYXNlZCBvbiB0aGUgcmVw
bGF5IGlucHV0cyBjb2RlIGdlbmVyYXRvciBhbmQKKyAgICAgICAgdGhlIGluc3BlY3RvciBwcm90
b2NvbCBjb2RlIGdlbmVyYXRvciwgd2hpY2ggcHJvZHVjZXMgdmFyaW91cyBmaWxlcyBmb3IgSlMK
KyAgICAgICAgYnVpbHRpbnMuCisKKyAgICAgICAgUmVsYXRpdmUgdG8gdGhlIGdlbmVyYXRvciBp
dCByZXBsYWNlcywgdGhpcyBvbmUgY29uc29saWRhdGVzIHR3byBzY3JpcHRzIGluCisgICAgICAg
IEphdmFTY3JpcHRDb3JlIGFuZCBXZWJDb3JlIGludG8gYSBzaW5nbGUgc2NyaXB0IHdpdGggbXVs
dGlwbGUgZmlsZXMuIFBhcnNlZAorICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnVpbHRp
bnMgZmlsZSBpcyBzdG9yZWQgaW4gYmFja2VuZC1pbmRlcGVuZGVudCBtb2RlbAorICAgICAgICBv
YmplY3RzLiBFYWNoIG91dHB1dCBmaWxlIGhhcyBpdHMgb3duIGNvZGUgZ2VuZXJhdG9yIHRoYXQg
dXNlcyB0aGUgbW9kZWwgdG8KKyAgICAgICAgcHJvZHVjZSByZXN1bHRpbmcgY29kZS4gR2VuZXJh
dG9ycyBhcmUgYWRkaXRpb25hbGx5IHBhcmFtZXRlcml6ZWQgYnkgdGhlIHRhcmdldAorICAgICAg
ICBmcmFtZXdvcmsgKHRvIGNob29zZSBjb3JyZWN0IG1hY3JvcyBhbmQgaW5jbHVkZXMpIGFuZCBv
dXRwdXQgbW9kZSAob25lCisgICAgICAgIGhlYWRlci9pbXBsZW1lbnRhdGlvbiBmaWxlIHBlciBi
dWlsdGluIG9yIHBlciBmcmFtZXdvcmspLgorCisgICAgICAgIEl0IGluY2x1ZGVzIGEgZmV3IHNp
bXBsZSB0ZXN0cyBvZiB0aGUgZ2VuZXJhdG9yJ3MgZnVuY3Rpb25hbGl0eS4gVGhlc2UgcmVzdWx0
LQorICAgICAgICBiYXNlZCB0ZXN0cyB3aWxsIGJlY29tZSBpbmNyZWFzaW5nbHkgbW9yZSBpbXBv
cnRhbnQgYXMgd2Ugc3RhcnQgdG8gYWRkIHN1cHBvcnQKKyAgICAgICAgZm9yIGJ1aWx0aW5zIGFu
bm90YXRpb24gc3VjaCBhcyBAb3B0aW9uYWwsIEBpbnRlcm5hbCwgZXRjLiB0byB0aGUgY29kZSBn
ZW5lcmF0b3IuCisKKyAgICAgICAgU29tZSBvZiB0aGVzZSBjb21wbGV4aXRpZXMsIHN1Y2ggYXMg
aGF2aW5nIHR3byBvdXRwdXQgbW9kZXMsIHdpbGwgYmUgcmVtb3ZlZCBpbgorICAgICAgICBzdWJz
ZXF1ZW50IHBhdGNoZXMuIFRoaXMgcGF0Y2ggaXMgaW50ZW5kZWQgdG8gZXhhY3RseSByZXBsYWNl
IHRoZSBleGlzdGluZworICAgICAgICBmdW5jdGlvbmFsaXR5IHdpdGggYSB1bmlmaWVkIHNjcmlw
dCB0aGF0IG1ha2VzIGFkZGl0aW9uYWwgY2xlYW51cHMgc3RyYWlnaHRmb3J3YXJkLgorCisgICAg
ICAgIEFkZGl0aW9uYWwgY2xlYW51cCBhbmQgY29uc29saWRhdGlvbiBiZXR3ZWVuIGluc3BlY3Rv
ciBjb2RlIGdlbmVyYXRvciBzY3JpcHRzCisgICAgICAgIGFuZCB0aGlzIHNjcmlwdCB3aWxsIGJl
IHB1cnN1ZWQgaW4gZm9sbG93dXAgcGF0Y2hlcy4KKworICAgICAgICBOZXcgdGVzdHM6CisKKyAg
ICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21p
c2UtQ29tYmluZWQuanMKKyAgICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0
Q29yZS1CdWlsdGluLlByb21pc2UtU2VwYXJhdGUuanMKKyAgICAgICAgU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5qcworICAg
ICAgICBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90
eXBlLVNlcGFyYXRlLmpzCisgICAgICAgIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlw
dENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpzCisgICAgICAgIFNjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFyYXRlLmpz
CisgICAgICAgIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1T
ZXBhcmF0ZS5qcworICAgICAgICBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRl
ZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcworICAgICAgICBTY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcworICAgICAgICBTY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcworCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKworICAgICAgICAgICAgRGVmaW5lIEphdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSIGV4cGxpY2l0bHkgc28gdGhlIGFkZF9jdXN0b21fY29tbWFuZCBhbmQK
KyAgICAgICAgICAgIHNoYXJlZCBmaWxlIGxpc3RzIGFyZSBpZGVudGljYWwgYmV0d2VlbiBKYXZh
U2NyaXB0Q29yZSBhbmQgV2ViQ29yZS4KKworICAgICAgICAgICAgVGhlIG91dHB1dCBmaWxlcyBh
ZGRpdGlvbmFsbHkgZGVwZW5kIG9uIGFsbCBidWlsdGluIGdlbmVyYXRvciBzY3JpcHQgZmlsZXMK
KyAgICAgICAgICAgIGFuZCBpbnB1dCBmaWxlcyB0aGF0IGFyZSBjb21iaW5lZCBpbnRvIHRoZSBz
aW5nbGUgaGVhZGVyL2ltcGxlbWVudGF0aW9uIGZpbGUuCisKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy5tYWtlOgorCisgICAgICAgICAgICBEZWZpbmUgSmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVIgZXhwbGljaXRseSBzbyB0aGUgcnVsZSBmb3IgY29kZSBnZW5lcmF0aW9uIGFuZAorICAgICAg
ICAgICAgc2hhcmVkIGZpbGUgbGlzdHMgYXJlIGlkZW50aWNhbCBiZXR3ZWVuIEphdmFTY3JpcHRD
b3JlIGFuZCBXZWJDb3JlLgorCisgICAgICAgICAgICBUaGUgb3V0cHV0IGZpbGVzIGFkZGl0aW9u
YWxseSBkZXBlbmQgb24gYWxsIGJ1aWx0aW4gZ2VuZXJhdG9yIHNjcmlwdCBmaWxlcworICAgICAg
ICAgICAgYW5kIGlucHV0IGZpbGVzIHRoYXQgYXJlIGNvbWJpbmVkIGludG8gdGhlIHNpbmdsZSBo
ZWFkZXIvaW1wbGVtZW50YXRpb24gZmlsZS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgICAgIE1hcmsgdGhlIG5ldyBidWls
dGlucyBnZW5lcmF0b3IgZmlsZXMgYXMgcHJpdmF0ZSBoZWFkZXJzIHNvIHdlIGNhbiB1c2UgdGhl
bSBmcm9tCisgICAgICAgICAgICBXZWJDb3JlLgorCisgICAgICAgICogU2NyaXB0cy9VcGRhdGVD
b250ZW50cy5weTogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9VcGRhdGVDb250
ZW50cy5weS4KKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL19faW5pdF9fLnB5OiBBZGRlZC4K
KyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zLnB5OiBBZGRlZC4KKyAgICAgICAg
KiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5weTogQWRkZWQuIFRoaXMgZmls
ZSBjb250YWlucyB0aGUgYmFzZSBnZW5lcmF0b3IuCisgICAgICAgIChXS19sY2ZpcnN0KToKKyAg
ICAgICAgKFdLX3VjZmlyc3QpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3IpOgorICAgICAg
ICAoQnVpbHRpbnNHZW5lcmF0b3IuX19pbml0X18pOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0
b3IubW9kZWwpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3IuZ2VuZXJhdGVfbGljZW5zZSk6
CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvci5nZW5lcmF0ZV9pbmNsdWRlc19mcm9tX2VudHJp
ZXMpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAg
ICAgKEJ1aWx0aW5zR2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSk6CisgICAgICAgIChCdWlsdGlu
c0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvckZ1bmN0aW9uKToKKyAgICAgICAgKEJ1aWx0aW5zR2Vu
ZXJhdG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rpb24udG9DYW1lbCk6CisgICAgICAgIChCdWlsdGlu
c0dlbmVyYXRvci5nZW5lcmF0ZV9lbWJlZGRlZF9jb2RlX3N0cmluZ19zZWN0aW9uX2Zvcl9mdW5j
dGlvbik6CisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19tb2RlbC5weTogQWRk
ZWQuIFRoaXMgZmlsZSBjb250YWlucyBidWlsdGlucyBtb2RlbCBvYmplY3RzLgorICAgICAgICAo
UGFyc2VFeGNlcHRpb24pOgorICAgICAgICAoRnJhbWV3b3JrKToKKyAgICAgICAgKEZyYW1ld29y
ay5fX2luaXRfXyk6CisgICAgICAgIChGcmFtZXdvcmsuc2V0dGluZyk6CisgICAgICAgIChGcmFt
ZXdvcmsuZnJvbVN0cmluZyk6CisgICAgICAgIChGcmFtZXdvcmtzKToKKyAgICAgICAgKEJ1aWx0
aW5PYmplY3QpOgorICAgICAgICAoQnVpbHRpbk9iamVjdC5fX2luaXRfXyk6CisgICAgICAgIChC
dWlsdGluRnVuY3Rpb24pOgorICAgICAgICAoQnVpbHRpbkZ1bmN0aW9uLl9faW5pdF9fKToKKyAg
ICAgICAgKEJ1aWx0aW5GdW5jdGlvbi5mcm9tU3RyaW5nKToKKyAgICAgICAgKEJ1aWx0aW5GdW5j
dGlvbi5fX3N0cl9fKToKKyAgICAgICAgKEJ1aWx0aW5zQ29sbGVjdGlvbik6CisgICAgICAgIChC
dWlsdGluc0NvbGxlY3Rpb24uX19pbml0X18pOgorICAgICAgICAoQnVpbHRpbnNDb2xsZWN0aW9u
LnBhcnNlX2J1aWx0aW5zX2ZpbGUpOgorICAgICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLmNvcHly
aWdodHMpOgorICAgICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLmFsbF9mdW5jdGlvbnMpOgorICAg
ICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLl9wYXJzZV9jb3B5cmlnaHRfbGluZXMpOgorICAgICAg
ICAoQnVpbHRpbnNDb2xsZWN0aW9uLl9wYXJzZV9mdW5jdGlvbnMpOgorICAgICAgICAqIFNjcmlw
dHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5OiBBZGRlZC4KKyAgICAgICAgKEJ1aWx0
aW5zR2VuZXJhdG9yVGVtcGxhdGVzKToKKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0
aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weTogQWRkZWQuCisgICAgICAgIChCdWlsdGlu
c0NvbWJpbmVkSGVhZGVyR2VuZXJhdG9yKToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFk
ZXJHZW5lcmF0b3IuX19pbml0X18pOgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEhlYWRlckdl
bmVyYXRvci5vdXRwdXRfZmlsZW5hbWUpOgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEhlYWRl
ckdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEhl
YWRlckdlbmVyYXRvci5nZW5lcmF0ZV9mb3J3YXJkX2RlY2xhcmF0aW9ucyk6CisgICAgICAgIChG
dW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoVk0pOgorICAgICAgICAoQ29uc3RydWN0QWJp
bGl0eSk6CisgICAgICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9vYmplY3QpOgorICAgICAgICAo
Z2VuZXJhdGVfZXh0ZXJuc19mb3Jfb2JqZWN0KToKKyAgICAgICAgKGdlbmVyYXRlX21hY3Jvc19m
b3Jfb2JqZWN0KToKKyAgICAgICAgKGdlbmVyYXRlX2RlZmluZXNfZm9yX29iamVjdCk6CisgICAg
ICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX3RhYmxlX21hY3JvKToKKyAgICAgICAgKGdl
bmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfbmFtZV9tYWNybyk6CisgICAgICAgICogU2NyaXB0cy9i
dWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weTogQWRk
ZWQuCisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSW1wbGVtZW50YXRpb25HZW5lcmF0b3IpOgor
ICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9faW5pdF9f
KToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5vdXRw
dXRfZmlsZW5hbWUpOgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2Vu
ZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSW1wbGVt
ZW50YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKToKKyAgICAgICAgKiBT
Y3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weTogQWRk
ZWQuCisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlSGVhZGVyR2VuZXJhdG9yKToKKyAgICAgICAg
KEJ1aWx0aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0b3IuX19pbml0X18pOgorICAgICAgICAoQnVp
bHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvci5vdXRwdXRfZmlsZW5hbWUpOgorICAgICAgICAo
QnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvci5tYWNyb19wcmVmaXgpOgorICAgICAgICAo
QnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAg
ICAoQnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvci5nZW5lcmF0ZV9mb3J3YXJkX2RlY2xh
cmF0aW9ucyk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoZ2VuZXJh
dGVfaGVhZGVyX2luY2x1ZGVzKToKKyAgICAgICAgKGdlbmVyYXRlX3NlY3Rpb25fZm9yX29iamVj
dCk6CisgICAgICAgIChnZW5lcmF0ZV9leHRlcm5zX2Zvcl9vYmplY3QpOgorICAgICAgICAoZ2Vu
ZXJhdGVfbWFjcm9zX2Zvcl9vYmplY3QpOgorICAgICAgICAoZ2VuZXJhdGVfZGVmaW5lc19mb3Jf
b2JqZWN0KToKKyAgICAgICAgKGdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfdGFibGVfbWFjcm8p
OgorICAgICAgICAoZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV9uYW1lX21hY3JvKToKKyAgICAg
ICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVu
dGF0aW9uLnB5OiBBZGRlZC4KKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlv
bkdlbmVyYXRvcik6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlSW1wbGVtZW50YXRpb25HZW5l
cmF0b3IuX19pbml0X18pOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9u
R2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSk6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlSW1w
bGVtZW50YXRpb25HZW5lcmF0b3IubWFjcm9fcHJlZml4KToKKyAgICAgICAgKEJ1aWx0aW5zU2Vw
YXJhdGVJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAo
QnVpbHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZXJhdG9yLmdlbmVyYXRlX2hlYWRlcl9p
bmNsdWRlcyk6CisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9z
ZXBhcmF0ZV93cmFwcGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFw
cGVyR2VuZXJhdG9yKToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9y
Ll9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9yLm91
dHB1dF9maWxlbmFtZSk6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlV3JhcHBlckdlbmVyYXRv
ci5tYWNyb19wcmVmaXgpOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZVdyYXBwZXJHZW5lcmF0
b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2Vu
ZXJhdG9yLmdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcyk6CisgICAgICAgICogU2NyaXB0cy9nZW5l
cmF0ZS1qcy1idWlsdGlucy5weTogQWRkZWQuCisKKyAgICAgICAgICAgIFBhcnNlIGNvbW1hbmQg
bGluZSBvcHRpb25zLCBkZWNpZGUgd2hpY2ggZ2VuZXJhdG9ycyBhbmQgb3V0cHV0IG1vZGVzIHRv
IHVzZS4KKworICAgICAgICAoZ2VuZXJhdGVfYmluZGluZ3NfZm9yX2J1aWx0aW5zX2ZpbGVzKToK
KyAgICAgICAgKiBTY3JpcHRzL2xhenl3cml0ZXIucHk6IENvcGllZCBmcm9tIHRoZSBpbnNwZWN0
b3IgcHJvdG9jb2wgZ2VuZXJhdG9yLgorICAgICAgICAoTGF6eUZpbGVXcml0ZXIpOgorICAgICAg
ICAoTGF6eUZpbGVXcml0ZXIuX19pbml0X18pOgorICAgICAgICAoTGF6eUZpbGVXcml0ZXIud3Jp
dGUpOgorICAgICAgICAoTGF6eUZpbGVXcml0ZXIuY2xvc2UpOgorICAgICAgICAqIFNjcmlwdHMv
dGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpz
OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3Jl
LUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS5qczogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5q
czogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29y
ZS1CdWlsdGluLnByb3RvdHlwZS1TZXBhcmF0ZS5qczogQWRkZWQuCisgICAgICAgICogU2NyaXB0
cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmlu
ZWQuanM6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlw
dENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFyYXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBT
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanM6
IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVk
SW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qczogQWRkZWQu
CisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLXhtbENhc2luZ1Rlc3Qt
U2VwYXJhdGUuanM6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhw
ZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzLXJlc3VsdDog
QWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2Ny
aXB0Q29yZS1CdWlsdGluLlByb21pc2UtU2VwYXJhdGUuanMtcmVzdWx0OiBBZGRlZC4KKyAgICAg
ICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0
aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzLXJlc3VsdDogQWRkZWQuCisgICAgICAgICogU2NyaXB0
cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlw
ZS1TZXBhcmF0ZS5qcy1yZXN1bHQ6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVk
LmpzLXJlc3VsdDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBl
Y3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItU2VwYXJhdGUuanMtcmVzdWx0
OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNv
cmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0OiBBZGRlZC4KKyAgICAgICAgKiBT
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVp
bHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQ6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMv
YnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJl
c3VsdDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9X
ZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0OiBBZGRlZC4KKyAgICAgICAg
KiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwOgorICAgICAgICAoSlNDOjpCdWlsdGlu
RXhlY3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyk6CisgICAgICAgICogYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgICogY3JlYXRlX2hhc2hfdGFibGU6CisKKyAgICAg
ICAgICAgIFVwZGF0ZSB0aGUgZ2VuZXJhdGVkIGJ1aWx0aW4gbWFjcm8gbmFtZXMuCisKKyAgICAg
ICAgKiBnZW5lcmF0ZS1qcy1idWlsdGluczogUmVtb3ZlZC4KKwogMjAxNS0xMC0yMCAgTWljaGFl
bCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTkx
MTc1KTogT1NSIEV4aXQgZnJvbSBhbiBpbmxpbmVkIHRhaWwgY2FsbGVlIHRyYXNoZXMgY2FsbGVl
IHNhdmUgcmVnaXN0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzdhOTJhMmRlYzNjYzYzZGFlYjExMTM5MDVk
MWYwMWFiZmJkZjg5Ni4uMTE1NTQzNjRmODViZGU4ZjYyZWE4NDY5MDZjODRkZWNmZmExZTRmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE1LTEwLTIwICBCcmlhbiBCdXJnICA8YmJ1
cmdAYXBwbGUuY29tPgorCisgICAgICAgIFJlc3RydWN0dXJlIGdlbmVyYXRlLWpzLWJpbmRpbmdz
IHNjcmlwdCB0byBiZSBtb2R1bGFyIGFuZCB0ZXN0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5OTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKworICAgICAgICAg
ICAgRGVmaW5lIEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSIGV4cGxpY2l0bHkgc28gdGhlIGFk
ZF9jdXN0b21fY29tbWFuZCBhbmQKKyAgICAgICAgICAgIHNoYXJlZCBmaWxlIGxpc3RzIGFyZSBp
ZGVudGljYWwgYmV0d2VlbiBKYXZhU2NyaXB0Q29yZSBhbmQgV2ViQ29yZS4KKworICAgICAgICAg
ICAgVGhlIG91dHB1dCBmaWxlcyBhZGRpdGlvbmFsbHkgZGVwZW5kIG9uIGFsbCBidWlsdGluIGdl
bmVyYXRvciBzY3JpcHQgZmlsZXMuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgor
CisgICAgICAgICAgICBVc2UgSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIgc28gdGhhdCB0aGUg
cnVsZSBmb3IgY29kZSBnZW5lcmF0aW9uIGFuZAorICAgICAgICAgICAgc2hhcmVkIGZpbGUgbGlz
dHMgYXJlIGlkZW50aWNhbCBiZXR3ZWVuIEphdmFTY3JpcHRDb3JlIGFuZCBXZWJDb3JlLgorCisg
ICAgICAgICAgICBUaGUgb3V0cHV0IGZpbGVzIGFkZGl0aW9uYWxseSBkZXBlbmQgb24gYWxsIGJ1
aWx0aW4gZ2VuZXJhdG9yIHNjcmlwdCBmaWxlcy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAgICAgRGVmaW5lIEphdmFTY3JpcHRDb3Jl
X1NDUklQVFNfRElSIGJlZm9yZSBjYWxsaW5nIERlcml2ZWRTb3VyY2VzLm1ha2UuCisgICAgICAg
ICAgICBUaGlzIHdpbGwgZXZlbnR1YWxseSBiZSBtZXJnZWQgd2l0aCB0aGUgb3RoZXIgc2ltaWxh
ciBzY3JpcHQgcGF0aHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpmaW5pc2hDcmVhdGlvbik6
CisKKyAgICAgICAgICAgIFVwZGF0ZSB0aGUgZ2VuZXJhdGVkIGJ1aWx0aW4gbWFjcm8gbmFtZXMu
CisKKyAgICAgICAgKiBnZW5lcmF0ZS1qcy1idWlsdGluczogUmVtb3ZlZC4KKwogMjAxNS0xMC0y
MCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IEFub3RoZXIgR1RLIGJ1aWxkIGZpeCBhZnRlciByMTkxMzUxLgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDM3ZjQ2MzM1OTZhODcxNjk2NzMxZjczZjdiODFjMzcyMmRjMGY5
ZWUuLjY4ZDFmM2YzM2I3NTE4Y2FjZTU3MzRjMmQ5M2VmZTkxZTg1OGYxMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTcwMCwxMyArNzAwLDI5IEBAIHNldChKYXZhU2Ny
aXB0Q29yZV9MVVRfRklMRVMKICAgICBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAKICkKIAot
c2V0KEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vU2Ny
aXB0cyIpCi0KIHNldChKYXZhU2NyaXB0Q29yZV9MSUJSQVJJRVMKICAgICBXVEYke0RFQlVHX1NV
RkZJWH0KICAgICAke0lDVV9JMThOX0xJQlJBUklFU30KICkKIAorc2V0KEphdmFTY3JpcHRDb3Jl
X1NDUklQVFNfRElSICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vU2NyaXB0cyIpCisKKyMgR2xvYmJp
bmcgcmVsaWVzIG9uIHRoZSBmYWN0IHRoYXQgZ2VuZXJhdG9yLXNwZWNpZmljIGZpbGUgbmFtZXMg
YXJlIHByZWZpeGVkIHdpdGggdGhlaXIgZGlyZWN0b3J5LgorIyBUb3AtbGV2ZWwgc2NyaXB0cyBz
aG91bGQgaGF2ZSBhIGZpbGUgZXh0ZW5zaW9uLCBzaW5jZSB0aGV5IGFyZSBpbnZva2VkIGR1cmlu
ZyB0aGUgYnVpbGQuCisKK3NldChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX1BBVEhTCisgICAgJHtK
YXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vKi5wbAorICAgICR7SmF2YVNjcmlwdENvcmVfU0NS
SVBUU19ESVJ9LyoucHkKKyAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGlu
cy9idWlsdGlucyoucHkKKykKKworIyBUaGUgZGlyZWN0b3J5IGZsYXR0ZW5pbmcgcGVyZm9ybWVk
IGJlbG93IG1pcnJvcnMgd2hhdCB0aGUgTWFjIHBvcnQgZG9lcyB3aXRoIHByaXZhdGUgaGVhZGVy
cy4KKworZmlsZShHTE9CIEphdmFTY3JpcHRDb3JlX1NDUklQVFMgJHtKYXZhU2NyaXB0Q29yZV9T
Q1JJUFRTX1BBVEhTfSkKK2ZvcmVhY2ggKF9zY3JpcHQgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRT
fSkKKyAgICBmaWxlKENPUFkgJHtfc2NyaXB0fSBERVNUSU5BVElPTiAke0RFUklWRURfU09VUkNF
U19ESVJ9L0ZvcndhcmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMpCitlbmRmb3Jl
YWNoICgpCisKIGlmIChVU0VfVURJUzg2KQogICAgIHNldChVRElTX0dFTl9ERVAKICAgICAgICAg
ZGlzYXNzZW1ibGVyL3VkaXM4Ni91ZF9vcGNvZGUucHkKQEAgLTk0MSw3ICs5NTcsNyBAQCBzZXQo
SEFTSF9MVVRfR0VORVJBVE9SICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9jcmVhdGVfaGFz
aF90YWJsZSkKIG1hY3JvKEdFTkVSQVRFX0hBU0hfTFVUIF9pbnB1dCBfb3V0cHV0KQogICAgIGFk
ZF9jdXN0b21fY29tbWFuZCgKICAgICAgICAgT1VUUFVUICR7X291dHB1dH0KLSAgICAgICAgREVQ
RU5EUyAke0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtfaW5wdXR9ICR7SmF2YVNjcmlwdENvcmVfU0NS
SVBUU19ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zCisgICAgICAgIERFUEVORFMgJHtIQVNIX0xV
VF9HRU5FUkFUT1J9ICR7X2lucHV0fSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9nZW5l
cmF0ZS1qcy1idWlsdGlucy5weQogICAgICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAk
e0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtfaW5wdXR9IC1pID4gJHtfb3V0cHV0fQogICAgICAgICBW
RVJCQVRJTSkKICAgICBsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTICR7X291dHB1
dH0pCkBAIC0xMDgwLDYgKzEwOTYsMjEgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAgIFZFUkJB
VElNKQogCiAjIEpTQ0J1aWx0aW5zCisKK3NldChCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUwor
ICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5
CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vbGF6eXdyaXRlci5weQorICAgICR7
SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5zL2J1aWx0aW5zLnB5CisgICAgJHtK
YXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5
CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnMvYnVpbHRpbnNfbW9k
ZWwucHkKKyAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGlucy9idWlsdGlu
c190ZW1wbGF0ZXMucHkKKyAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGlu
cy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkKKyAgICAke0phdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSfS9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9pbXBs
ZW1lbnRhdGlvbi5weQorICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5z
L2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weQorICAgICR7SmF2YVNjcmlwdENv
cmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxl
bWVudGF0aW9uLnB5CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnMv
YnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfd3JhcHBlci5weQorKQorCiBzZXQoSmF2YVNjcmlw
dENvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlu
cy9BcnJheUNvbnN0cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5z
L0FycmF5SXRlcmF0b3IucHJvdG90eXBlLmpzCkBAIC0xMTAyLDEwICsxMTMzLDExIEBAIHNldChK
YXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTCiApCiAKIGFkZF9jdXN0b21fY29tbWFuZCgK
LSAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0
aW5zLmNwcCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5z
LmgKLSAgIE1BSU5fREVQRU5ERU5DWSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9nZW5l
cmF0ZS1qcy1idWlsdGlucwotICAgREVQRU5EUyAke0phdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NP
VVJDRVN9Ci0gICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVf
U0NSSVBUU19ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zIC0taW5wdXQtZGlyZWN0b3J5ICR7Q01B
S0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9idWlsdGlucyAtLW91dHB1dCAke0RFUklWRURfU09VUkNF
U19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmNwcAorICAgT1VUUFVUICR7REVSSVZF
RF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuY3BwCisgICAgICAgICAg
JHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlucy5oCisgICBN
QUlOX0RFUEVOREVOQ1kgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vZ2VuZXJhdGUtanMt
YnVpbHRpbnMucHkKKyAgIERFUEVORFMgJHtKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VT
fSAke0JVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTfQorICAgQ09NTUFORCAke1BZVEhPTl9FWEVD
VVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlu
cy5weSAtLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtLW91dHB1dC1kaXJlY3RvcnkgJHtERVJJ
VkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfSAtLWNvbWJpbmVkICR7SmF2YVNjcmlwdENv
cmVfQlVJTFRJTlNfU09VUkNFU30KICAgIFZFUkJBVElNKQogCiBsaXN0KEFQUEVORCBKYXZhU2Ny
aXB0Q29yZV9TT1VSQ0VTCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CmluZGV4IDkwOTExMmQ0MGY0ZGZlMmRmZGVhNGQ0YmM3OTA4YjI5YjQzOTY4ZjEuLjQxNDRhN2Zh
M2Y3ZjA3MWMzZDYwZTM0MGYyZGUzZGIwZmM3MzhiZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC03MSwxMCArNzEsOSBAQCBhbGwgOiBcCiAgICAgdWRp
czg2X2l0YWIuaCBcCiAgICAgQnl0ZWNvZGVzLmggXAogICAgIEluaXRCeXRlY29kZXMuYXNtIFwK
LSAgICBKU0NCdWlsdGlucyBcCisgICAgSlNDQnVpbHRpbnMuaCBcCiAjCiAKLSMgYnVpbHRpbiBm
dW5jdGlvbnMKIFBZVEhPTiA9IHB5dGhvbgogUEVSTCA9IHBlcmwKIApAQCAtODcsMTUgKzg2LDI0
IEBAIGVsc2UKIGVuZGlmCiAjIC0tLS0tLS0tCiAKLS5QSE9OWTogSlNDQnVpbHRpbnMKLUpTQ0J1
aWx0aW5zOiAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZS1qcy1idWlsdGlu
cyBKU0NCdWlsdGlucy5oIEpTQ0J1aWx0aW5zLmNwcAotSlNDQnVpbHRpbnMuaDogJChKYXZhU2Ny
aXB0Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGUtanMtYnVpbHRpbnMgJChKYXZhU2NyaXB0Q29y
ZSkvYnVpbHRpbnMgSlNDQnVpbHRpbnNTb3VyY2VzCi0JJChQWVRIT04pICQoSmF2YVNjcmlwdENv
cmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zIC0taW5wdXQtZGlyZWN0b3J5ICQo
SmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zIC0tb3V0cHV0ICRACi0KLUpTQ0J1aWx0aW5zLmNwcDog
SlNDQnVpbHRpbnMuaAorIyBKYXZhU2NyaXB0IGJ1aWx0aW5zLgorCitCVUlMVElOU19HRU5FUkFU
T1JfU0NSSVBUUyA9IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGlu
cy9fX2luaXRfXy5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRp
bnMvYnVpbHRpbnMucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0
aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRT
X0RJUikvYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVf
U0NSSVBUU19ESVIpL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weSBcCisgICAgJChKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmlu
ZWRfaGVhZGVyLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGlu
cy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weSBcCisgICAgJChK
YXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2Vw
YXJhdGVfaGVhZGVyLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWls
dGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weSBcCisgICAg
JChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVf
c2VwYXJhdGVfd3JhcHBlci5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikv
Z2VuZXJhdGUtanMtYnVpbHRpbnMucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVIpL2xhenl3cml0ZXIucHkgXAorIwogCi0uUEhPTlk6IEpTQ0J1aWx0aW5zU291cmNlcwotSlND
QnVpbHRpbnNTb3VyY2VzOiBcCitKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTID0gXAog
ICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0FycmF5Q29uc3RydWN0b3IuanMgXAogICAg
ICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0FycmF5SXRlcmF0b3IucHJvdG90eXBlLmpzIFwK
ICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMgXApAQCAt
MTEyLDggKzEyMCwyMCBAQCBKU0NCdWlsdGluc1NvdXJjZXM6IFwKICAgICAkKEphdmFTY3JpcHRD
b3JlKS9idWlsdGlucy9SZWZsZWN0T2JqZWN0LmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9i
dWlsdGlucy9TdHJpbmdDb25zdHJ1Y3Rvci5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVp
bHRpbnMvU3RyaW5nSXRlcmF0b3IucHJvdG90eXBlLmpzIFwKKyAgICAkKEphdmFTY3JpcHRDb3Jl
KS9idWlsdGlucy9UeXBlZEFycmF5Q29uc3RydWN0b3IuanMgXAorICAgICQoSmF2YVNjcmlwdENv
cmUpL2J1aWx0aW5zL1R5cGVkQXJyYXkucHJvdG90eXBlLmpzIFwKICMKIAorIyBUaGUgY29tYmlu
ZWQgb3V0cHV0IGZpbGUgZGVwZW5kcyBvbiB0aGUgY29udGVudHMgb2YgYnVpbHRpbnMgYW5kIGdl
bmVyYXRvciBzY3JpcHRzLCBzbworIyBhZGRpbmcsIG1vZGlmeWluZywgb3IgcmVtb3ZpbmcgYnVp
bHRpbnMgb3Igc2NyaXB0cyB3aWxsIHRyaWdnZXIgcmVnZW5lcmF0aW9uIG9mIGZpbGVzLgorCisu
UEhPTlk6IGZvcmNlCitKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19ERVBFTkRFTkNJRVNfTElTVCA6
ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL1VwZGF0ZUNvbnRlbnRzLnB5IGZvcmNlCisJ
JChQWVRIT04pICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL1VwZGF0ZUNvbnRlbnRzLnB5
ICckKEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMpICQoQlVJTFRJTlNfR0VORVJBVE9S
X1NDUklQVFMpJyAkQAorCitKU0NCdWlsdGlucy5oOiAkKEJVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJ
UFRTKSAkKEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMpIEphdmFTY3JpcHRDb3JlX0JV
SUxUSU5TX0RFUEVOREVOQ0lFU19MSVNUCisJJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmVfU0NS
SVBUU19ESVIpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5IC0tY29tYmluZWQgLS1vdXRwdXQtZGly
ZWN0b3J5IC4gLS1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgJChKYXZhU2NyaXB0Q29yZV9CVUlM
VElOU19TT1VSQ0VTKQorCiAjIGxvb2t1cCB0YWJsZXMgZm9yIGNsYXNzZXMKIAogJS5sdXQuaDog
Y3JlYXRlX2hhc2hfdGFibGUgJS5jcHAKQEAgLTIwMSw4ICsyMjEsOCBAQCBhbGwgOiBcCiAjIGFk
ZGluZywgbW9kaWZ5aW5nLCBvciByZW1vdmluZyBkb21haW5zIHdpbGwgdHJpZ2dlciByZWdlbmVy
YXRpb24gb2YgaW5zcGVjdG9yIGZpbGVzLgogCiAuUEhPTlk6IGZvcmNlCi1FbmFibGVkSW5zcGVj
dG9yRG9tYWlucyA6ICQoSmF2YVNjcmlwdENvcmUpL1VwZGF0ZUNvbnRlbnRzLnB5IGZvcmNlCi0J
JChQWVRIT04pICQoSmF2YVNjcmlwdENvcmUpL1VwZGF0ZUNvbnRlbnRzLnB5ICckKElOU1BFQ1RP
Ul9ET01BSU5TKScgJEAKK0VuYWJsZWRJbnNwZWN0b3JEb21haW5zIDogJChKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTX0RJUikvVXBkYXRlQ29udGVudHMucHkgZm9yY2UKKwkkKFBZVEhPTikgJChKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvVXBkYXRlQ29udGVudHMucHkgJyQoSU5TUEVDVE9SX0RP
TUFJTlMpJyAkQAogCiBDb21iaW5lZERvbWFpbnMuanNvbiA6ICQoSmF2YVNjcmlwdENvcmVfU0NS
SVBUU19ESVIpL2dlbmVyYXRlLWNvbWJpbmVkLWluc3BlY3Rvci1qc29uLnB5ICQoSU5TUEVDVE9S
X0RPTUFJTlMpIEVuYWJsZWRJbnNwZWN0b3JEb21haW5zCiAJJChQWVRIT04pICQoSmF2YVNjcmlw
dENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlLWNvbWJpbmVkLWluc3BlY3Rvci1qc29uLnB5ICQo
SU5TUEVDVE9SX0RPTUFJTlMpID4gLi9Db21iaW5lZERvbWFpbnMuanNvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAxMzM4ZTQ4MjY4ZmIxODdkNWZkNWEzY2Y4YTcwYjlkZWU4YWVm
NWQzLi5lNWUxNzRlNDAxMzI2ZWVmZmQzYzIwZTkyZWI3NzNkNzliMWM3YTc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIxNCw3ICsxMjE0LDYgQEAKIAkJOTkyOEZGM0IxOEFD
NEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MjhGRjM5MThBQzRBRUMwMEI4Q0YxMiAvKiBKU1Jl
cGxheUlucHV0cy5jcHAgKi87IH07CiAJCTk5MjhGRjNDMThBQzRBRUMwMEI4Q0YxMiAvKiBKU1Jl
cGxheUlucHV0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTkyOEZGM0ExOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTk1OUU5MkIxQkQxN0ZB
NDAwMUFBNDEzIC8qIGNzc21pbi5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk5NTlFOTI3MUJEMTdGQTAwMDFBQTQxMyAvKiBjc3NtaW4ucHkgKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTk1OUU5MkMxQkQx
N0ZBNDAwMUFBNDEzIC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1OUU5MjgxQkQxN0ZBMDAwMUFBNDEzIC8qIGdl
bmVyYXRlLWpzLWJ1aWx0aW5zICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTk5NTlFOTJEMUJEMTdGQTQwMDFBQTQxMyAvKiBqc21pbi5weSBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTlFOTI5MUJEMTdGQTAw
MDFBQTQxMyAvKiBqc21pbi5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5OTU5RTkyRTFCRDE3RkE0MDAxQUE0MTMgLyogeHhkLnBsIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1OUU5MkExQkQxN0ZBMDAw
MUFBNDEzIC8qIHh4ZC5wbCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5OTU5RTkzMTFCRDE4MjcyMDAxQUE0MTMgLyogZ2VuZXJhdGUtY29tYmluZWQt
aW5zcGVjdG9yLWpzb24ucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5OTU5RTkyRjFCRDE4MUY2MDAxQUE0MTMgLyogZ2VuZXJhdGUtY29tYmluZWQtaW5z
cGVjdG9yLWpzb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTEyMjIsNiArMTIyMSwxOCBAQAogCQk5OTYyMzFFOTE4RDE4MDQyMDBDMDNGREEg
LyogSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTUzMjQzOTYxODU2QTQ3NTAwMkVENjkyIC8qIEluc3BlY3Rv
ckJhY2tlbmRDb21tYW5kcy5qcyAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5OUNDMEI2MjE4QkU5OTQ2MDA2Q0VCQ0MgLyogQ29kZUdlbmVyYXRvclJl
cGxheUlucHV0c1RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk5RTQ1QTFFMThBMUIxRTcwMDI2RDg4RiAvKiBDb2RlR2VuZXJhdG9yUmVw
bGF5SW5wdXRzVGVtcGxhdGVzLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTk5Q0MwQjYzMThCRTk5NTAwMDZDRUJDQyAvKiBDb2RlR2VuZXJhdG9y
UmVwbGF5SW5wdXRzLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTlFNDVBMUQxOEExQjFFNzAwMjZEODhGIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1
dHMucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
OTlEQTAwQTMxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRvci5weSBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5REEwMDlBMUJENTk5Mjcw
MEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0b3IucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlEQTAwQTQxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1
aWx0aW5zX21vZGVsLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTlEQTAwOUIxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX21vZGVsLnB5ICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5REEwMEE1MUJE
NTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc190ZW1wbGF0ZXMucHkgaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OURBMDA5QzFCRDU5OTI3MDBGNDU3NUMgLyog
YnVpbHRpbnNfdGVtcGxhdGVzLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTk5REEwMEE2MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGlucy5weSBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5REEwMDlEMUJE
NTk5MjcwMEY0NTc1QyAvKiBidWlsdGlucy5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk5OURBMDBBNzFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRp
bnNfZ2VuZXJhdGVfY29tYmluZWRfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTlEQTAwOUUxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5z
X2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk5OURBMDBBODFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRp
bnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OURBMDA5RjFCRDU5OTI3MDBGNDU3NUMgLyog
YnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlEQTAwQTkxQkQ1OTkzMTAw
RjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weSBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5REEwMEEwMUJENTk5MjcwMEY0
NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkgKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlEQTAwQUExQkQ1OTkzMTAw
RjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5IGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlEQTAwQTExQkQ1
OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9u
LnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5
REEwMEFCMUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFw
cGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlE
QTAwQTIxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX3dyYXBw
ZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
OTlEQTAwQUYxQkQ1OTk0RTAwRjQ1NzVDIC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5IGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlEQTAwQUMxQkQ1OTkz
RTAwRjQ1NzVDIC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5REEwMEIwMUJENTk5NEUwMEY0NTc1QyAv
KiBsYXp5d3JpdGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTlEQTAwQUQxQkQ1OTkzRTAwRjQ1NzVDIC8qIGxhenl3cml0ZXIucHkgKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlEQTAwQjExQkQ1OTk0
RTAwRjQ1NzVDIC8qIFVwZGF0ZUNvbnRlbnRzLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTlEQTAwQUUxQkQ1OTkzRTAwRjQ1NzVDIC8qIFVwZGF0ZUNv
bnRlbnRzLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTk5RTQ1QTI0MThBMUIyNTkwMDI2RDg4RiAvKiBFbXB0eUlucHV0Q3Vyc29yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUU0NUExRjE4QTFCMjU5
MDAyNkQ4OEYgLyogRW1wdHlJbnB1dEN1cnNvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5RTQ1QTI1MThBMUIyNTkwMDI2RDg4RiAvKiBFbmNv
ZGVkVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTlFNDVBMjAxOEExQjI1OTAwMjZEODhGIC8qIEVuY29kZWRWYWx1ZS5jcHAgKi87IH07CiAJ
CTk5RTQ1QTI2MThBMUIyNTkwMDI2RDg4RiAvKiBFbmNvZGVkVmFsdWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5RTQ1QTIxMThBMUIyNTkwMDI2RDg4
RiAvKiBFbmNvZGVkVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTc5NCw3ICsxODA1LDcgQEAKIAkJRkU3QzQxOTYxQjk3RkM0QjAwRjRE
NTk4IC8qIFBpbmdQb25nU3RhY2tPdmVyZmxvd1Rlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEQTUwRDQxQjk3RjQ0MjAwOUEzQjRGIC8qIFBp
bmdQb25nU3RhY2tPdmVyZmxvd1Rlc3QuY3BwICovOyB9OwogCQlGRUEwODYyMDE4MkI3QTA0MDBG
NkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkVBMDg2MUUxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUEwODYyMTE4
MkI3QTA0MDBGNkQ4NTEgLyogRGVidWdnZXJQcmltaXRpdmVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUEwODYxRjE4MkI3QTA0MDBGNkQ4NTEgLyog
RGVidWdnZXJQcmltaXRpdmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJRkVCMTM3NTcxQkIxMUVGOTAwQ0Q1MTAwIC8qIE1hY3JvQXNzZW1ibGVy
QVJNNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkVCMTM3NTYxQkIxMUVFRTAwQ0Q1MTAwIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuY3BwICovOyBz
ZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCUZFQjEzNzU3MUJCMTFFRjkwMENE
NTEwMCAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjEzNzU2MUJCMTFFRUUwMENENTEwMCAvKiBNYWNyb0Fz
c2VtYmxlckFSTTY0LmNwcCAqLzsgfTsKIAkJRkVCNTFGNkMxQTk3QjY4ODAwMUY5MjFDIC8qIFJl
Z3Jlc3MxNDE4MDkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRUI1MUY2QjFBOTdCNjg4MDAxRjkyMUMgLyogUmVncmVzczE0MTgwOS5tbSAqLzsgfTsK
IAkJRkVCNThDMTQxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUI1OEMxMjE4N0I4
QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmNwcCAqLzsgfTsKIAkJRkVCNThDMTUx
ODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVCNThDMTMxODdCOEIxNjAwOThFRjBCIC8q
IEVycm9ySGFuZGxpbmdTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0zMTE4LDExICszMTI5LDIzIEBACiAJCTk5MjhGRjNBMThBQzRBRUMw
MEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1JlcGxheUlucHV0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTI4
RkYzRDE4QUM0QjFDMDBCOENGMTIgLyogSlNJbnB1dHMuanNvbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuanNv
bjsgcGF0aCA9IEpTSW5wdXRzLmpzb247IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5
NTlFOTI3MUJEMTdGQTAwMDFBQTQxMyAvKiBjc3NtaW4ucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlw
dC5weXRob247IHBhdGggPSBjc3NtaW4ucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTk5NTlFOTI4MUJEMTdGQTAwMDFBQTQxMyAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1qcy1idWlsdGlucyI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NTlFOTI5MUJEMTdGQTAwMDFBQTQxMyAvKiBq
c21pbi5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGpzbWluLnB5OyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTU5RTkyQTFCRDE3RkEwMDAxQUE0MTMgLyog
eHhkLnBsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgcGF0aCA9IHh4ZC5wbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk1OUU5MkYxQkQxODFGNjAwMUFBNDEzIC8qIGdlbmVy
YXRlLWNvbWJpbmVkLWluc3BlY3Rvci1qc29uLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0
aG9uOyBwYXRoID0gImdlbmVyYXRlLWNvbWJpbmVkLWluc3BlY3Rvci1qc29uLnB5Ijsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk1OUU5MzAxQkQxODFGNjAwMUFBNDEzIC8qIGlubGlu
ZS1hbmQtbWluaWZ5LXN0eWxlc2hlZXRzLWFuZC1zY3JpcHRzLnB5ICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5z
Y3JpcHQucHl0aG9uOyBwYXRoID0gImlubGluZS1hbmQtbWluaWZ5LXN0eWxlc2hlZXRzLWFuZC1z
Y3JpcHRzLnB5Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlEQTAwOTkxQkQ1OTky
NzAwRjQ1NzVDIC8qIF9faW5pdF9fLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBw
YXRoID0gX19pbml0X18ucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5REEwMDlB
MUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0b3IucHkgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnNjcmlwdC5weXRob247IHBhdGggPSBidWlsdGluc19nZW5lcmF0b3IucHk7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTk5REEwMDlCMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19t
b2RlbC5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGJ1aWx0aW5zX21v
ZGVsLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OURBMDA5QzFCRDU5OTI3MDBG
NDU3NUMgLyogYnVpbHRpbnNfdGVtcGxhdGVzLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0
aG9uOyBwYXRoID0gYnVpbHRpbnNfdGVtcGxhdGVzLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5OURBMDA5RDFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnMucHkgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBidWlsdGlucy5weTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTlEQTAwOUUxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVy
YXRlX2NvbWJpbmVkX2hlYWRlci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0
aCA9IGJ1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTlEQTAwOUYxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVy
YXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0
aG9uOyBwYXRoID0gYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHk7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5REEwMEEwMUJENTk5MjcwMEY0NTc1QyAv
KiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNj
cmlwdC5weXRob247IHBhdGggPSBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHk7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5REEwMEExMUJENTk5MjcwMEY0NTc1QyAv
KiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2lt
cGxlbWVudGF0aW9uLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OURBMDBBMjFC
RDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfd3JhcHBlci5weSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGJ1aWx0aW5zX2dlbmVyYXRlX3Nl
cGFyYXRlX3dyYXBwZXIucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5REEwMEFD
MUJENTk5M0UwMEY0NTc1QyAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucy5weSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1qcy1idWlsdGlucy5weSI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5REEwMEFEMUJENTk5M0UwMEY0NTc1QyAvKiBsYXp5
d3JpdGVyLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gbGF6eXdyaXRl
ci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlEQTAwQUUxQkQ1OTkzRTAwRjQ1
NzVDIC8qIFVwZGF0ZUNvbnRlbnRzLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBw
YXRoID0gVXBkYXRlQ29udGVudHMucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5
RTQ1QTFEMThBMUIxRTcwMDI2RDg4RiAvKiBDb2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzLnB5ICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gQ29kZUdlbmVyYXRvclJlcGxheUlu
cHV0cy5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlFNDVBMUUxOEExQjFFNzAw
MjZEODhGIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHNUZW1wbGF0ZXMucHkgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBDb2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzVGVt
cGxhdGVzLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUU0NUExRjE4QTFCMjU5
MDAyNkQ4OEYgLyogRW1wdHlJbnB1dEN1cnNvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFbXB0eUlucHV0Q3Vyc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0zODEwLDkgKzM4MzMsOSBAQAogCQkwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyogUHJvZHVj
dHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGRjky
MkNGMTRGNDZCMTMwMDQxQTI0RSAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCiAJCQkJ
OTMyRjVCRDkwODIyQTFDNzAwNzM2OTc1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLywK
IAkJCQk5MzJGNUJFMTA4MjJBMUM3MDA3MzY5NzUgLyoganNjICovLAotCQkJCTBGRjkyMkNGMTRG
NDZCMTMwMDQxQTI0RSAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCiAJCQkJMEZDRUZB
QjYxODA1RDYxNjAwNDcyQ0U0IC8qIGxpYmxsdm1Gb3JKU0MuZHlsaWIgKi8sCiAJCQkJMTQxMjEx
MjAwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8sCiAJCQkJMTRCRDU5QkYwQTNFOEY5MDAw
QkFGNTlDIC8qIHRlc3RhcGkgKi8sCkBAIC01NzMyLDE2ICs1NzU1LDM2IEBACiAJCTk5NTlFOTI1
MUJEMTdGMUUwMDFBQTQxMyAvKiBTY3JpcHRzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKLQkJCQk5OTU5RTkyODFCRDE3RkEwMDAxQUE0MTMgLyogZ2VuZXJhdGUt
anMtYnVpbHRpbnMgKi8sCisJCQkJOTlEQTAwOTcxQkQ1OThFMDAwRjQ1NzVDIC8qIGJ1aWx0aW5z
ICovLAogCQkJCTk5NTlFOTI3MUJEMTdGQTAwMDFBQTQxMyAvKiBjc3NtaW4ucHkgKi8sCiAJCQkJ
OTk1OUU5MkYxQkQxODFGNjAwMUFBNDEzIC8qIGdlbmVyYXRlLWNvbWJpbmVkLWluc3BlY3Rvci1q
c29uLnB5ICovLAorCQkJCTk5REEwMEFDMUJENTk5M0UwMEY0NTc1QyAvKiBnZW5lcmF0ZS1qcy1i
dWlsdGlucy5weSAqLywKIAkJCQk5OTU5RTkzMDFCRDE4MUY2MDAxQUE0MTMgLyogaW5saW5lLWFu
ZC1taW5pZnktc3R5bGVzaGVldHMtYW5kLXNjcmlwdHMucHkgKi8sCiAJCQkJOTk1OUU5MjkxQkQx
N0ZBMDAwMUFBNDEzIC8qIGpzbWluLnB5ICovLAorCQkJCTk5REEwMEFEMUJENTk5M0UwMEY0NTc1
QyAvKiBsYXp5d3JpdGVyLnB5ICovLAorCQkJCTk5REEwMEFFMUJENTk5M0UwMEY0NTc1QyAvKiBV
cGRhdGVDb250ZW50cy5weSAqLywKIAkJCQk5OTU5RTkyQTFCRDE3RkEwMDAxQUE0MTMgLyogeHhk
LnBsICovLAogCQkJKTsKIAkJCXBhdGggPSBTY3JpcHRzOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKIAkJfTsKKwkJOTlEQTAwOTcxQkQ1OThFMDAwRjQ1NzVDIC8qIGJ1aWx0aW5zICovID0g
eworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk5OURBMDA5OTFCRDU5
OTI3MDBGNDU3NUMgLyogX19pbml0X18ucHkgKi8sCisJCQkJOTlEQTAwOUQxQkQ1OTkyNzAwRjQ1
NzVDIC8qIGJ1aWx0aW5zLnB5ICovLAorCQkJCTk5REEwMDlFMUJENTk5MjcwMEY0NTc1QyAvKiBi
dWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkgKi8sCisJCQkJOTlEQTAwOUYxQkQ1
OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9u
LnB5ICovLAorCQkJCTk5REEwMEEwMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0
ZV9zZXBhcmF0ZV9oZWFkZXIucHkgKi8sCisJCQkJOTlEQTAwQTExQkQ1OTkyNzAwRjQ1NzVDIC8q
IGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5ICovLAorCQkJCTk5
REEwMEEyMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFw
cGVyLnB5ICovLAorCQkJCTk5REEwMDlBMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19nZW5l
cmF0b3IucHkgKi8sCisJCQkJOTlEQTAwOUIxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX21v
ZGVsLnB5ICovLAorCQkJCTk5REEwMDlDMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc190ZW1w
bGF0ZXMucHkgKi8sCisJCQkpOworCQkJcGF0aCA9IGJ1aWx0aW5zOworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKIAkJOTlFNDVBMEMxOEEwMUU5MzAwMjZEODhGIC8qIHJlcGxheSAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC02MDM3LDYgKzYw
ODAsMTUgQEAKIAkJCQlGRUEwODYyMDE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVj
dXRhYmxlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc1RUU5QjIxOEFBQjdFMjAwQUFEMDQzIC8q
IEJ1aWx0aW5OYW1lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTlEQTAwQTYxQkQ1OTkzMTAwRjQ1
NzVDIC8qIGJ1aWx0aW5zLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJOTlEQTAwQTcxQkQ1OTkzMTAw
RjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weSBpbiBIZWFkZXJz
ICovLAorCQkJCTk5REEwMEE4MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9j
b21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovLAorCQkJCTk5REEwMEE5MUJE
NTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkgaW4g
SGVhZGVycyAqLywKKwkJCQk5OURBMDBBQTFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfZ2Vu
ZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKKwkJCQk5OURB
MDBBQjFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfd3JhcHBl
ci5weSBpbiBIZWFkZXJzICovLAorCQkJCTk5REEwMEEzMUJENTk5MzEwMEY0NTc1QyAvKiBidWls
dGluc19nZW5lcmF0b3IucHkgaW4gSGVhZGVycyAqLywKKwkJCQk5OURBMDBBNDFCRDU5OTMxMDBG
NDU3NUMgLyogYnVpbHRpbnNfbW9kZWwucHkgaW4gSGVhZGVycyAqLywKKwkJCQk5OURBMDBBNTFC
RDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfdGVtcGxhdGVzLnB5IGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDFERUExMzIxQjlGMzE2MzAwNkQ2NUREIC8qIEJ1aWx0aW5VdGlscy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOUU3Mjk0MEIxOTBGMDUxNDAwMUE5MUI1IC8qIEJ1bmRsZVBhdGguaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQjdGMzk3MTVFRDhFNDYwMEYxNjdCMiAvKiBCdXR0ZXJmbHkuaCBpbiBI
ZWFkZXJzICovLApAQCAtNjEwNCw2ICs2MTU2LDcgQEAKIAkJCQlDMkZDOUJEMzE2NjQ0REZCMDA4
MTBEMzMgLyogQ29waWVkQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkVBQTNG
QTE0OUE4MzVFMDBGQ0UxMTIgLyogQ29waWVkU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUMy
QzhEMDJEMTRBM0M2RTAwMDU3OEU2NSAvKiBDb3BpZWRTcGFjZUlubGluZXMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGN0MxMUFEMUJDMzg2MkMwMEM3NENEQiAvKiBDb3B5QmFycmllci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY1QTUyRDAxN0FERDcxNzAwOEVDQjJEIC8qIENvcHlUb2tlbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzIyMzlEMTgxNjI2MkJERDAwNUFDNUZEIC8qIENvcHlWaXNpdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjIzOUQxOTE2MjYyQkREMDA1QUM1RkQgLyogQ29weVZp
c2l0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTYxNzQsNiArNjIyNyw3IEBACiAJCQkJ
MEYzOEIwMUExN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uTW9kZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYzQjNBMUIxNTNFNjhGNDAwM0VEMEZGIC8qIERGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVENjdCQTFCMjYyNTZEMDA2NkNFMTUgLyog
REZHQ29uc3RhbnRIb2lzdGluZ1BoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjA5ODFGODFC
QzVFNTY1MDA0ODE0RjggLyogREZHQ29weUJhcnJpZXJPcHRpbWl6YXRpb25QaGFzZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZCRTBGNzMxNkMxREIwNTAwODJDNUU4IC8qIERGR0NQU1JldGhyZWFk
aW5nUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0Y2MTdBMEI4Q0MwMDc3M0FEOCAv
KiBERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZG
Qzk1QTE0RUY5MEE5MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAt
NjQxMCw3ICs2NDY0LDcgQEAKIAkJCQlBNTRFOEVCMTE4QkZGQkJFMDA1NTZEMjggLyogR0NTZWdt
ZW50ZWRBcnJheUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NTlFOTMxMUJEMTgyNzIw
MDFBQTQxMyAvKiBnZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSBpbiBIZWFkZXJz
ICovLAogCQkJCUM0NzAzQ0MwMTkyODQ0OTYwMDEzRkJFQSAvKiBnZW5lcmF0ZS1pbnNwZWN0b3It
cHJvdG9jb2wtYmluZGluZ3MucHkgaW4gSGVhZGVycyAqLywKLQkJCQk5OTU5RTkyQzFCRDE3RkE0
MDAxQUE0MTMgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMgaW4gSGVhZGVycyAqLywKKwkJCQk5OURB
MDBBRjFCRDU5OTRFMDBGNDU3NUMgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgaW4gSGVhZGVy
cyAqLywKIAkJCQlBNUVBNzBFQzE5RjVCM0VBMDA5OEY1RUMgLyogZ2VuZXJhdGVfY3BwX2FsdGVy
bmF0ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQTVF
RjlCMTQxQTFENDNGNjAwNzAyRTkwIC8qIGdlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJf
aGVhZGVyLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFRjlCMTUxQTFENDNGQTAwNzAyRTkwIC8q
IGdlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVh
ZGVycyAqLywKQEAgLTY1NDIsNyArNjU5Niw2IEBACiAJCQkJMEY3NjZEMkMxNUE4Q0MzQTAwOEYz
NjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVFRjkxRjE2
ODc4RjdEMDAzRTVDMjUgLyogSklUVGh1bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkM3MTJF
MzE3Q0Q4NzkzMDA4Q0M5M0MgLyogSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2su
aCBpbiBIZWFkZXJzICovLAotCQkJCTBGMDk4MUY4MUJDNUU1NjUwMDQ4MTRGOCAvKiBERkdDb3B5
QmFycmllck9wdGltaXphdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzZGNTRBMzEz
QjI4QUFCMDBFRjJCQ0UgLyogSklUV3JpdGVCYXJyaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NDA0ODAxMzEwMjFBMUQ5MDA4RTdGMDEgLyogSlNBUElWYWx1ZVdyYXBwZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUMyQ0YzOUMyMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3Qu
aCBpbiBIZWFkZXJzICovLApAQCAtNjYwMSw3ICs2NjU0LDYgQEAKIAkJCQk3OTdFMDdBQTFCOEZD
RkI5MDA4NDAwQkEgLyogSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDNDIxMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0dsb2JhbE9iamVjdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTVGRDAwODYxODlCMUI3RTAwNjMzMjMxIC8qIEpTR2xvYmFsT2JqZWN0
Q29uc29sZUFnZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MzRDNDU3QzFCQzcyNDExMDA3NDc2
QTcgLyogSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NUMzQTFBNjE4QzA0OTAyMDBDOTU5M0EgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTk0NTU5MzE4MjQ3NDQ3MDBDQzM4NDMgLyogSlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTdEMjNFQTE4OTFCMDc3MDAz
MUM3RkEgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLywKQEAg
LTY2NzAsNiArNjcyMiw3IEBACiAJCQkJMEYyQjY2RkIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlw
ZWRBcnJheUNvbnN0cnVjdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RkQxN0I2QjVB
QjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheVByb3RvdHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMkI2NkZGMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlzLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1MzRDNDU3QzFCQzcyNDExMDA3NDc2QTcgLyogSlNUeXBlZEFycmF5Vmlld0NvbnN0
cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlERUE3RTI0NTFCQkM2NzdGMDBENzg0NDAgLyog
SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUwN0QyOUUw
RTg3MUU1RTAwRDdEODk2IC8qIEpTVHlwZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2
NzAyMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1VpbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLywKQEAg
LTY2OTQsNiArNjc0Nyw3IEBACiAJCQkJOTY5QTA3MkEwRUQxQ0U2OTAwRjFGNjgxIC8qIExhYmVs
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjAwOTdBNjBFQkFCQjU4MDA3QTcyOTcgLyogTGFiZWxT
Y29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCNTQ2NzcxNEY1OUI1QzAwMkMyOTg5IC8qIExh
enlPcGVyYW5kVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OURBMDBCMDFCRDU5
OTRFMDBGNDU3NUMgLyogbGF6eXdyaXRlci5weSBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDUy
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBMZWdhY3lQcm9maWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMxOEM0MzEwRTE2RjVDRDAwQjM0NDYwIC8qIExleGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzE4QzUyRTBFMTZGQ0UxMDBCMzQ0NjAgLyogTGV4ZXIubHV0LmggaW4gSGVhZGVycyAqLywKQEAg
LTY3OTAsNyArNjg0NCw2IEBACiAJCQkJODY4OTE2QjAxNTVGMjg2MzAwQ0IyQjlBIC8qIFByaXZh
dGVOYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1MDBFMTZGNUNEMDBCMzQ0NjAgLyog
UHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTVDRDQ1NzcwRTFDNEZERDAwODUzNThFIC8q
IFByb2ZpbGVHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGN0MxMUFEMUJDMzg2MkMw
MEM3NENEQiAvKiBDb3B5QmFycmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NTEwRTE2
RjVDRDAwQjM0NDYwIC8qIFByb2ZpbGVOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MjlB
NTE2NkFEMzUxMDAwRjVCQTMgLyogUHJvZmlsZXJCeXRlY29kZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZGNzI5QjkxNjZBRDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVyQnl0ZWNvZGVzLmggaW4gSGVh
ZGVycyAqLywKQEAgLTY5NDksNiArNzAwMiw3IEBACiAJCQkJQTdCNjAxODIxNjM5RkQyQTAwMzcy
QkEzIC8qIFVubGlua2VkQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDE0MkU1MTFC
Nzk2RUNFMDBGNEJGNEIgLyogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMkU4OTJDMTZEMDI4QUQwMDlFNEZEMiAvKiBVbnVzZWRQb2ludGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5OURBMDBCMTFCRDU5OTRFMDBGNDU3NUMgLyogVXBkYXRlQ29udGVu
dHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2M0IzODEzRkM2RkU5MDAwMkQ5QjIgLyogVmFs
dWVQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQyNkE0ODE0NjBDQkIzMDAxMzFGOEYg
LyogVmFsdWVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlFRTBDMDAxQjRBRkI4NTAw
MDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtNzQ4OCw3
ICs3NTQyLDYgQEAKIAkJCQkwRjYzOTQ1NDE1RDA3MDU1MDA2QTU5N0MgLyogQXJyYXlQcm9maWxl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUMwMTA3RUMzNzYwMDQyN0E0OCAvKiBBcnJh
eVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI0RTU0MDE3RUE5RjU5MDBBQkIy
MTcgLyogQXNzZW1ibHlIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZFQjEzNzU3MUJC
MTFFRjkwMENENTEwMCAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUyNjc4RjhFMUEwMzEwMDkwMDZBMzA2RCAvKiBCYXNpY0Jsb2NrTG9jYXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY2NEIyNzExQTc4NEJBRjAwNkU0RTY2IC8qIEJpbmFyeVN3aXRj
aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDg2MzEwN0VDMTFBMDAxM0U3QjIgLyogQm9v
bGVhbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzUyMCw3ICs3NTczLDYgQEAK
IAkJCQlBNzdGMTgyMTE2NDA4OEIyMDA2NDBBNDcgLyogQ29kZUNhY2hlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGOEY5NDQ2MTY2NzY0RjEwMEQ2MTk3MSAvKiBDb2RlT3JpZ2luLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTg2QjU4MjY3MTREMjc5NkMwMEE5QzMwNiAvKiBDb2RlUHJvZmlsZS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlERTVBMEEwMDFCQTNBQzNFMDAzRDQ0MjQgLyogSW50cmlu
c2ljRW1pdHRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkI1ODI2OTE0RDI3OTcwMDBBOUMz
MDYgLyogQ29kZVByb2ZpbGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGOTQzQzE2Njc2
MzEzMDBENjE5NzEgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjhGOTQ0MjE2Njc2MzM1MDBENjE5NzEgLyogQ29kZVR5cGUuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC03NTM4LDYgKzc1OTAsNyBAQAogCQkJCTE0MjgwODJFMTA3RUMwNTcwMDEzRTdCMiAv
KiBDb25zdHJ1Y3REYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1N0QyM0YxMTg5MUI1QjQw
MDMxQzdGQSAvKiBDb250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUyQjcxN0I1MUEwNTk3RTEwMDdBRjRGMyAvKiBDb250cm9sRmxvd1Byb2ZpbGVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTBGQkFERjU0MUJEMUY0QjgwMEUwNzNDMSAvKiBDb3BpZWRCbG9jay5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDMjQwMzA1NTE0QjQwNEU2MDA3OUVCNjQgLyogQ29waWVk
U3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzIyMzlEMTcxNjI2MkJERDAwNUFDNUZEIC8q
IENvcHlWaXNpdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJBMTExMjQ1MTkyRkNFNzkwMDVF
RTE4RCAvKiBDdXN0b21HZXR0ZXJTZXR0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03NTg0LDYg
Kzc2MzcsNyBAQAogCQkJCTBGMzhCMDE5MTdDRkU3NTUwMEIxNDREMyAvKiBERkdDb21waWxhdGlv
bk1vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzQjNBMUExNTNFNjhGMjAwM0VEMEZGIC8q
IERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUQ2N0I5
MUIyNjI1NkQwMDY2Q0UxNSAvKiBERkdDb25zdGFudEhvaXN0aW5nUGhhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEYwOTgxRjcxQkM1RTU2NTAwNDgxNEY4IC8qIERGR0NvcHlCYXJyaWVyT3B0
aW1pemF0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCRTBGNzIxNkMxREIwMzAw
ODJDNUU4IC8qIERGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTdEODlDRjUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0NyaXRpY2FsRWRnZUJyZWFraW5nUGhhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5NTkxNEVGOTBBNjAwQzcyNTMyIC8qIERGR0NT
RVBoYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzgyNCw2ICs3ODc4LDcgQEAKIAkJCQlBMUQ3
OTJGRTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUExRDc5MzAwMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExMkJCRkY0MUIwNDRBOTgw
MDY2NEI2OSAvKiBJbnRsT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCURFNUEwQTAwMUJB
M0FDM0UwMDNENDQyNCAvKiBJbnRyaW5zaWNFbWl0dGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTcwMTEzRDRCMUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJhdGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNzBEQzNFMDkxQjJERjJDNzAwMDU0Mjk5IC8qIEl0ZXJhdG9yUHJvdG90
eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MDNGQTE5MTg4RTBGQjAwMDExMEYxNCAvKiBK
YXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzg0MSw3ICs3ODk2LDYg
QEAKIAkJCQkwRjI0RTU0QzE3RUUyNzQ5MDBBQkIyMTcgLyogSklUT3BlcmF0aW9ucy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4NkNDODVDNDBFRTdBODk0MDAyODg2ODIgLyogSklUUHJvcGVydHlB
Y2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdDMUU4RTQxMTJFNzJFRjAwQTM3Rjk4IC8q
IEpJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEZCQURGNTQx
QkQxRjRCODAwRTA3M0MxIC8qIENvcGllZEJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
NzY2RDI4MTVBOENDMUUwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjc2NkQyQjE1QThDQzM4MDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1RUY5MUUxNjg3OEY3QTAwM0U1QzI1IC8qIEpJVFRodW5r
cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc5MzQsNiArNzk4OCw3IEBACiAJCQkJMEYyQjY2RkEx
N0I2QjVBQjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjJCNjZGQzE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5UHJvdG90
eXBlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjZGRTE3QjZCNUFCMDBBN0FFM0YgLyog
SlNUeXBlZEFycmF5cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzRDNDU3RTFCQzcyNTQ5MDA3
NDc2QTcgLyogSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCURFQTdFMjQ0MUJCQzY3NzIwMEQ3ODQ0MCAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RTNDNjFBMTY3QkFCRUUwMDZENzYwQSAvKiBKU1Zh
bHVlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRCRDVBMzIwQTNFOTFGNjAwQkFGNTlDIC8qIEpT
VmFsdWVSZWYuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03OTY1LDYgKzgwMjAsNyBAQAogCQkJCTE0
QjcyM0IyMTJEN0RBNDYwMDNCRDVFRCAvKiBNYWNoaW5lU3RhY2tNYXJrZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZFQjNFQ0YxNjIzN0Y2QzAwQUI2N0FEIC8qIE1hY3JvQXNzZW1ibGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fz
c2VtYmxlckFSTS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRUIxMzc1NzFCQjExRUY5MDBDRDUx
MDAgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzI5MDA5
QzE3OTc2QzYwMDAzMTcyOTggLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGRTY4QzYzODFCOTBERTBCMDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQcmludGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3QTRBRTA4MTc5NzNCMjYwMDU2MTJCMSAvKiBNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTgwNDQsNyArODEwMCw2
IEBACiAJCQkJNjU0MEM3QTAxQjgyRTFDMzAwMEY2Qjc5IC8qIFJlZ2lzdGVyQXRPZmZzZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNjU0MEM3QTExQjgyRTFDMzAwMEY2Qjc5IC8qIFJlZ2lzdGVy
QXRPZmZzZXRMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzMxNDE1MTgxNDZENzAwMDAz
MzIzMiAvKiBSZWdpc3RlclNldC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MzRDNDU3RTFCQzcy
NTQ5MDA3NDc2QTcgLyogSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE1N0QyM0VEMTg5MUI1NTQwMDMxQzdGQSAvKiBSZWd1bGFyRXhwcmVzc2lvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUJBMTVFOTE4MjM0MEIzMDBBODJFNjkgLyogUmVtb3Rl
SW5zcGVjdG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5NDU1OEYxODI0NUVGRDAwQ0MzODQz
IC8qIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC04MTQ1
LDcgKzgyMDAsNiBAQAogCQkJCTcwOUZCODZCMUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJv
dG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJBNEVDOTBCMTg2MEQ2QzIwMDk0Rjc4MiAv
KiBXcml0ZUJhcnJpZXJCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDODE1MEIxNDA0
M0MwRTAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJMEYwOTgxRjcxQkM1RTU2NTAwNDgxNEY4IC8qIERGR0NvcHlCYXJyaWVyT3B0aW1pemF0aW9u
UGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdFNUFCM0ExNzk5RTRCMjAwRDI4MzNEIC8q
IFg4NkRpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjNDNkQ5QzE1MjExMTFB
MDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
ODY3MDRCODQxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJJbnRlcnByZXRlci5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybVdpbi5jbWFr
ZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCAwOTcxZDQ0
NGJmNzMzZTExOWQ1NWZhMjMwNjFjZTQyNWQ2ZTdkNTNhLi5jM2Q1NWViODQ4NzQ4YzgwYjMzZmU4
NGI2Yjg0NTgyNjY2ZDg4Y2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxh
dGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtV2luLmNt
YWtlCkBAIC0zMCwxNSArMzAsMTIgQEAgZmlsZShDT1BZCiAKIGZpbGUoTUFLRV9ESVJFQ1RPUlkg
JHtERVJJVkVEX1NPVVJDRVNfRElSfS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0Q29yZSkK
IAotZmlsZShHTE9CIF9KYXZhU2NyaXB0Q29yZV9TY3JpcHRzICIke0phdmFTY3JpcHRDb3JlX1ND
UklQVFNfRElSfS8qIikKLWZvcmVhY2ggKF9zY3JpcHQgJHtfSmF2YVNjcmlwdENvcmVfU2NyaXB0
c30pCi0gICAgZmlsZShDT1BZICR7X3NjcmlwdH0gREVTVElOQVRJT04gJHtERVJJVkVEX1NPVVJD
RVNfRElSfS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzKQotZW5kZm9y
ZWFjaCgpCi0KIHNldChKYXZhU2NyaXB0Q29yZV9QT1NUX0JVSUxEX0NPTU1BTkQgIiR7Q01BS0Vf
QklOQVJZX0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvcG9zdEJ1aWxkLmNtZCIp
CiBmaWxlKFdSSVRFICIke0phdmFTY3JpcHRDb3JlX1BPU1RfQlVJTERfQ09NTUFORH0iICJAeGNv
cHkgL3kgL2QgL2YgXCIke0RFUklWRURfU09VUkNFU19ESVJ9L0phdmFTY3JpcHRDb3JlLyouaFwi
IFwiJHtERVJJVkVEX1NPVVJDRVNfRElSfS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0Q29y
ZVwiID5udWwgMj5udWxcbiIpCiBmaWxlKEFQUEVORCAiJHtKYXZhU2NyaXB0Q29yZV9QT1NUX0JV
SUxEX0NPTU1BTkR9IiAiQHhjb3B5IC95IC9kIC9mIFwiJHtERVJJVkVEX1NPVVJDRVNfRElSfS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvKi5oXCIgXCIke0RFUklWRURfU09VUkNFU19ESVJ9L0Zv
cndhcmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlXCIgPm51bCAyPm51bFxuIikKLWZpbGUoQVBQ
RU5EICIke0phdmFTY3JpcHRDb3JlX1BPU1RfQlVJTERfQ09NTUFORH0iICJAeGNvcHkgL3kgL2Qg
L2YgXCIke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS8qLipcIiBcIiR7REVSSVZFRF9TT1VS
Q0VTX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMvSmF2YVNjcmlwdENvcmUvU2NyaXB0c1wiID5udWwg
Mj5udWxcbiIpCitmb3JlYWNoIChfc2NyaXB0ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU30pCisg
ICAgZmlsZShBUFBFTkQgIiR7SmF2YVNjcmlwdENvcmVfUE9TVF9CVUlMRF9DT01NQU5EfSIgIkB4
Y29weSAveSAvZiBcIiR7X3NjcmlwdH1cIiBcIiR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vRm9yd2Fy
ZGluZ0hlYWRlcnMvSmF2YVNjcmlwdENvcmUvU2NyaXB0c1wiID5udWwgMj5udWxcbiIpCitlbmRm
b3JlYWNoICgpCiBmb3JlYWNoIChfZGlyZWN0b3J5ICR7SmF2YVNjcmlwdENvcmVfRk9SV0FSRElO
R19IRUFERVJTX0RJUkVDVE9SSUVTfSkKICAgICBmaWxlKEFQUEVORCAiJHtKYXZhU2NyaXB0Q29y
ZV9QT1NUX0JVSUxEX0NPTU1BTkR9IiAiQHhjb3B5IC95IC9kIC9mIFwiJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9LyR7X2RpcmVjdG9yeX0vKi5oXCIgXCIke0RFUklWRURfU09VUkNFU19ESVJ9L0Zvcndh
cmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlXCIgPm51bCAyPm51bFxuIikKIGVuZGZvcmVhY2gg
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL1VwZGF0ZUNvbnRl
bnRzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvVXBkYXRlQ29udGVudHMucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzc2ZDQ2ZmI0YzQyMzAyYjg1ZmYxMGM4NTFlYjM0YzFlMjc4OTRjMwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL1VwZGF0ZUNvbnRl
bnRzLnB5CkBAIC0wLDAgKzEsNDggQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisKKyMgQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMgMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyMgICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyMgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK2ltcG9ydCBzeXMKK2ltcG9ydCBvcworCithc3NlcnQobGVuKHN5cy5hcmd2KSA9PSAzKQor
Citjb21wID0gc3lzLmFyZ3ZbMV0KK2ZpbGVuYW1lID0gc3lzLmFyZ3ZbMl0KKwordCA9IEZhbHNl
CisKK2lmIG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lKToKKyAgICBmID0gb3BlbihmaWxlbmFtZSwg
J3InKQorICAgIGNvbXBhcmF0b3IgPSBmLnJlYWQoKQorICAgIGYuY2xvc2UoKQorICAgIHQgPSBU
cnVlCisKK2lmIChub3QgdCBvciBjb21wICE9IGNvbXBhcmF0b3IpOgorICAgIGYgPSBvcGVuKGZp
bGVuYW1lLCAndycpCisgICAgZi53cml0ZShjb21wKQorICAgIGYuY2xvc2UoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvX19pbml0X18ucHkgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9fX2luaXRfXy5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mZGZjYmE5ODFkOGY4ZGEwNzgxMzU4Y2ZlNjRmYTFjNzgwNzRhMTYwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvX19pbml0X18u
cHkKQEAgLTAsMCArMSwzIEBACisjIFJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMg
ZGlyZWN0b3J5IGZvciBtb2R1bGUgZmlsZXMKKworZnJvbSBidWlsdGlucyBpbXBvcnQgKgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnMu
cHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGlucy5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jNjdjZGFkOGEzMGQ3MGNjYzQ1YTE5ZDgzZDIyNGE2NGYzYmVmZjcyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVp
bHRpbnMucHkKQEAgLTAsMCArMSwxMiBAQAorIyBUaGlzIGZpbGUgaXMgdXNlZCB0byBzaW11bGF0
ZSB0aGUgYnVpbHRpbnMvIGRpcmVjdG9yeSB3aGVuIGdlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5Cisj
IGlzIHJ1biBmcm9tIEphdmFTY3JpcHRDb3JlIGZyYW1ld29yaydzIHByaXZhdGUgaGVhZGVycyBk
aXJlY3RvcnksIHdoaWNoIGlzIGZsYXR0ZW5lZC4KKworZnJvbSBidWlsdGluc19tb2RlbCBpbXBv
cnQgKgorZnJvbSBidWlsdGluc190ZW1wbGF0ZXMgaW1wb3J0ICoKKworZnJvbSBidWlsdGluc19n
ZW5lcmF0b3IgaW1wb3J0ICoKK2Zyb20gYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaGVhZGVy
IGltcG9ydCAqCitmcm9tIGJ1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9u
IGltcG9ydCAqCitmcm9tIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlciBpbXBvcnQg
KgorZnJvbSBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbiBpbXBvcnQg
KgorZnJvbSBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFwcGVyIGltcG9ydCAqCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19n
ZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTA4OWZkZjU5YTJiYWU5NjE1ZTk4YThhNmUyY2MyOTgwNDkzZTYxMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dl
bmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weQpAQCAtMCwwICsxLDE2MiBAQAorIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hp
bmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisj
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgcmUKK2ltcG9ydCBzdHJpbmcK
K2Zyb20gc3RyaW5nIGltcG9ydCBUZW1wbGF0ZQorCitmcm9tIGJ1aWx0aW5zX2dlbmVyYXRvciBp
bXBvcnQgQnVpbHRpbnNHZW5lcmF0b3IKK2Zyb20gYnVpbHRpbnNfdGVtcGxhdGVzIGltcG9ydCBC
dWlsdGluc0dlbmVyYXRvclRlbXBsYXRlcyBhcyBUZW1wbGF0ZXMKKworbG9nID0gbG9nZ2luZy5n
ZXRMb2dnZXIoJ2dsb2JhbCcpCisKKworY2xhc3MgQnVpbHRpbnNDb21iaW5lZEhlYWRlckdlbmVy
YXRvcihCdWlsdGluc0dlbmVyYXRvcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZGVsKToK
KyAgICAgICAgQnVpbHRpbnNHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWwpCisKKyAgICBk
ZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gIiVzQnVpbHRpbnMuaCIg
JSBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpCisKKyAgICBkZWYg
Z2VuZXJhdGVfb3V0cHV0KHNlbGYpOgorICAgICAgICBhcmdzID0geworICAgICAgICAgICAgJ25h
bWVzcGFjZSc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNlJyksCisg
ICAgICAgICAgICAnaGVhZGVyR3VhcmQnOiBzZWxmLm91dHB1dF9maWxlbmFtZSgpLnJlcGxhY2Uo
Jy4nLCAnXycpLAorICAgICAgICAgICAgJ21hY3JvUHJlZml4Jzogc2VsZi5tb2RlbCgpLmZyYW1l
d29yay5zZXR0aW5nKCdtYWNyb19wcmVmaXgnKSwKKyAgICAgICAgfQorCisgICAgICAgIHNlY3Rp
b25zID0gW10KKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfbGljZW5zZSgp
KQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkRvTm90RWRpdFdh
cm5pbmcpLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0
ZShUZW1wbGF0ZXMuSGVhZGVySW5jbHVkZUd1YXJkVG9wKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAg
ICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9mb3J3YXJkX2RlY2xhcmF0aW9ucygp
KQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZVRv
cCkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgZm9yIG9iamVjdCBpbiBzZWxmLm1vZGVsKCku
b2JqZWN0czoKKyAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX3NlY3Rp
b25fZm9yX29iamVjdChvYmplY3QpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5l
cmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX3RhYmxlX21hY3JvKCkpCisgICAgICAgIHNlY3Rpb25zLmFw
cGVuZChzZWxmLmdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfbmFtZV9tYWNybygpKQorICAgICAg
ICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkNvbWJpbmVkSGVhZGVyU3RhdGlj
TWFjcm9zKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxh
dGUoVGVtcGxhdGVzLk5hbWVzcGFjZUJvdHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAg
c2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5IZWFkZXJJbmNsdWRlR3VhcmRCb3R0
b20pLnN1YnN0aXR1dGUoYXJncykpCisKKyAgICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNlY3Rp
b25zKQorCisgICAgZGVmIGdlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zKHNlbGYpOgorICAg
ICAgICByZXR1cm4gIiIibmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7
CitjbGFzcyBWTTsKKworZW51bSBjbGFzcyBDb25zdHJ1Y3RBYmlsaXR5IDogdW5zaWduZWQ7Cit9
IiIiCisKKyAgICBkZWYgZ2VuZXJhdGVfc2VjdGlvbl9mb3Jfb2JqZWN0KHNlbGYsIG9iamVjdCk6
CisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCcvKiAlcyAqLycgJSBv
YmplY3Qub2JqZWN0X25hbWUpCisgICAgICAgIGxpbmVzLmV4dGVuZChzZWxmLmdlbmVyYXRlX2V4
dGVybnNfZm9yX29iamVjdChvYmplY3QpKQorICAgICAgICBsaW5lcy5hcHBlbmQoIiIpCisgICAg
ICAgIGxpbmVzLmV4dGVuZChzZWxmLmdlbmVyYXRlX21hY3Jvc19mb3Jfb2JqZWN0KG9iamVjdCkp
CisgICAgICAgIGxpbmVzLmFwcGVuZCgiIikKKyAgICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2Vu
ZXJhdGVfZGVmaW5lc19mb3Jfb2JqZWN0KG9iamVjdCkpCisgICAgICAgIHJldHVybiAnXG4nLmpv
aW4obGluZXMpCisKKyAgICBkZWYgZ2VuZXJhdGVfZXh0ZXJuc19mb3Jfb2JqZWN0KHNlbGYsIG9i
amVjdCk6CisgICAgICAgIGxpbmVzID0gW10KKworICAgICAgICBmb3IgZnVuY3Rpb24gaW4gb2Jq
ZWN0LmZ1bmN0aW9uczoKKyAgICAgICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSB7CisgICAgICAgICAg
ICAgICAgJ2NvZGVOYW1lJzogQnVpbHRpbnNHZW5lcmF0b3IubWFuZ2xlZE5hbWVGb3JGdW5jdGlv
bihmdW5jdGlvbikgKyAnQ29kZScsCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxpbmVz
LmFwcGVuZCgiIiJleHRlcm4gY29uc3QgY2hhciogc18lKGNvZGVOYW1lKXM7CitleHRlcm4gY29u
c3QgaW50IHNfJShjb2RlTmFtZSlzTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0
QWJpbGl0eSBzXyUoY29kZU5hbWUpc0NvbnN0cnVjdEFiaWxpdHk7IiIiICUgZnVuY3Rpb25fYXJn
cykKKworICAgICAgICByZXR1cm4gbGluZXMKKworICAgIGRlZiBnZW5lcmF0ZV9tYWNyb3NfZm9y
X29iamVjdChzZWxmLCBvYmplY3QpOgorICAgICAgICBhcmdzID0geworICAgICAgICAgICAgJ21h
Y3JvUHJlZml4Jzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdtYWNyb19wcmVmaXgn
KSwKKyAgICAgICAgICAgICdvYmplY3RNYWNybyc6IG9iamVjdC5vYmplY3RfbmFtZS5yZXBsYWNl
KCcuJywgJycpLnVwcGVyKCksCisgICAgICAgIH0KKworICAgICAgICBsaW5lcyA9IFtdCisgICAg
ICAgIGxpbmVzLmFwcGVuZCgiI2RlZmluZSAlKG1hY3JvUHJlZml4KXNfRk9SRUFDSF8lKG9iamVj
dE1hY3JvKXNfQlVJTFRJTl9EQVRBKG1hY3JvKSBcXCIgJSBhcmdzKQorICAgICAgICBmb3IgZnVu
Y3Rpb24gaW4gb2JqZWN0LmZ1bmN0aW9uczoKKyAgICAgICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSB7
CisgICAgICAgICAgICAgICAgJ2Z1bmNOYW1lJzogZnVuY3Rpb24uZnVuY3Rpb25fbmFtZSwKKyAg
ICAgICAgICAgICAgICAnbWFuZ2xlZE5hbWUnOiBCdWlsdGluc0dlbmVyYXRvci5tYW5nbGVkTmFt
ZUZvckZ1bmN0aW9uKGZ1bmN0aW9uKSwKKyAgICAgICAgICAgICAgICAncGFyYW1Db3VudCc6IGxl
bihmdW5jdGlvbi5wYXJhbWV0ZXJzKSwKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGlu
ZXMuYXBwZW5kKCIgICAgbWFjcm8oJShmdW5jTmFtZSlzLCAlKG1hbmdsZWROYW1lKXMsICUocGFy
YW1Db3VudClkKSBcXCIgJSBmdW5jdGlvbl9hcmdzKQorICAgICAgICByZXR1cm4gbGluZXMKKwor
ICAgIGRlZiBnZW5lcmF0ZV9kZWZpbmVzX2Zvcl9vYmplY3Qoc2VsZiwgb2JqZWN0KToKKyAgICAg
ICAgbGluZXMgPSBbXQorICAgICAgICBmb3IgZnVuY3Rpb24gaW4gb2JqZWN0LmZ1bmN0aW9uczoK
KyAgICAgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ21hY3JvUHJlZml4Jzogc2Vs
Zi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdtYWNyb19wcmVmaXgnKSwKKyAgICAgICAgICAg
ICAgICAnb2JqZWN0TWFjcm8nOiBvYmplY3Qub2JqZWN0X25hbWUucmVwbGFjZSgnLicsICcnKS51
cHBlcigpLAorICAgICAgICAgICAgICAgICdmdW5jdGlvbk1hY3JvJzogZnVuY3Rpb24uZnVuY3Rp
b25fbmFtZS51cHBlcigpLAorICAgICAgICAgICAgfQorICAgICAgICAgICAgbGluZXMuYXBwZW5k
KCIjZGVmaW5lICUobWFjcm9QcmVmaXgpc19CVUlMVElOXyUob2JqZWN0TWFjcm8pc18lKGZ1bmN0
aW9uTWFjcm8pcyAxIiAlIGFyZ3MpCisKKyAgICAgICAgcmV0dXJuIGxpbmVzCisKKyAgICBkZWYg
Z2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV90YWJsZV9tYWNybyhzZWxmKToKKyAgICAgICAgYXJn
cyA9IHsKKyAgICAgICAgICAgICdtYWNyb1ByZWZpeCc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsu
c2V0dGluZygnbWFjcm9fcHJlZml4JyksCisgICAgICAgIH0KKworICAgICAgICBsaW5lcyA9IFtd
CisgICAgICAgIGxpbmVzLmFwcGVuZCgiI2RlZmluZSAlKG1hY3JvUHJlZml4KXNfRk9SRUFDSF9C
VUlMVElOX0NPREUobWFjcm8pIFxcIiAlIGFyZ3MpCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBz
ZWxmLm1vZGVsKCkuYWxsX2Z1bmN0aW9ucygpOgorICAgICAgICAgICAgZnVuY3Rpb25fYXJncyA9
IHsKKyAgICAgICAgICAgICAgICAnZnVuY05hbWUnOiBmdW5jdGlvbi5mdW5jdGlvbl9uYW1lLAor
ICAgICAgICAgICAgICAgICdjb2RlTmFtZSc6IEJ1aWx0aW5zR2VuZXJhdG9yLm1hbmdsZWROYW1l
Rm9yRnVuY3Rpb24oZnVuY3Rpb24pICsgJ0NvZGUnLAorICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBsaW5lcy5hcHBlbmQoIiAgICBtYWNybyglKGNvZGVOYW1lKXMsICUoZnVuY05hbWUpcywg
c18lKGNvZGVOYW1lKXNMZW5ndGgpIFxcIiAlIGZ1bmN0aW9uX2FyZ3MpCisgICAgICAgIHJldHVy
biAnXG4nLmpvaW4obGluZXMpCisKKyAgICBkZWYgZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV9u
YW1lX21hY3JvKHNlbGYpOgorICAgICAgICBhcmdzID0geworICAgICAgICAgICAgJ21hY3JvUHJl
Zml4Jzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdtYWNyb19wcmVmaXgnKSwKKyAg
ICAgICAgfQorCisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCIjZGVm
aW5lICUobWFjcm9QcmVmaXgpc19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykg
XFwiICUgYXJncykKKyAgICAgICAgdW5pcXVlX25hbWVzID0gbGlzdChzZXQoW2Z1bmN0aW9uLmZ1
bmN0aW9uX25hbWUgZm9yIGZ1bmN0aW9uIGluIHNlbGYubW9kZWwoKS5hbGxfZnVuY3Rpb25zKCld
KSkKKyAgICAgICAgdW5pcXVlX25hbWVzLnNvcnQoKQorICAgICAgICBmb3IgZnVuY3Rpb25fbmFt
ZSBpbiB1bmlxdWVfbmFtZXM6CisgICAgICAgICAgICBmdW5jdGlvbl9hcmdzID0geworICAgICAg
ICAgICAgICAgICdmdW5jTmFtZSc6IGZ1bmN0aW9uX25hbWUsCisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGxpbmVzLmFwcGVuZCgiICAgIG1hY3JvKCUoZnVuY05hbWUpcykgXFwiICUgZnVu
Y3Rpb25fYXJncykKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRl
X2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjI4NzhkMzYxMGJjM2QxMzk3ZGMxMTU4M2I0ZDM5YjgyZjQyNmQ4OAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1
aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5CkBAIC0wLDAgKzEsOTAg
QEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTQgVW5p
dmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHJl
CitpbXBvcnQgc3RyaW5nCitmcm9tIHN0cmluZyBpbXBvcnQgVGVtcGxhdGUKKworZnJvbSBidWls
dGluc19nZW5lcmF0b3IgaW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9yCitmcm9tIGJ1aWx0aW5zX21v
ZGVsIGltcG9ydCBGcmFtZXdvcmssIEZyYW1ld29ya3MKK2Zyb20gYnVpbHRpbnNfdGVtcGxhdGVz
IGltcG9ydCBCdWlsdGluc0dlbmVyYXRvclRlbXBsYXRlcyBhcyBUZW1wbGF0ZXMKKworbG9nID0g
bG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcpCisKKworY2xhc3MgQnVpbHRpbnNDb21iaW5lZElt
cGxlbWVudGF0aW9uR2VuZXJhdG9yKEJ1aWx0aW5zR2VuZXJhdG9yKToKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgbW9kZWwpOgorICAgICAgICBCdWlsdGluc0dlbmVyYXRvci5fX2luaXRfXyhzZWxm
LCBtb2RlbCkKKworICAgIGRlZiBvdXRwdXRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHJldHVy
biAiJXNCdWlsdGlucy5jcHAiICUgc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCduYW1l
c3BhY2UnKQorCisgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKKyAgICAgICAgYXJncyA9
IHsKKyAgICAgICAgICAgICduYW1lc3BhY2UnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRp
bmcoJ25hbWVzcGFjZScpLAorICAgICAgICAgICAgJ21hY3JvUHJlZml4Jzogc2VsZi5tb2RlbCgp
LmZyYW1ld29yay5zZXR0aW5nKCdtYWNyb19wcmVmaXgnKSwKKyAgICAgICAgfQorCisgICAgICAg
IHNlY3Rpb25zID0gW10KKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfbGlj
ZW5zZSgpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkRvTm90
RWRpdFdhcm5pbmcpLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChz
ZWxmLmdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcygpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQo
VGVtcGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZVRvcCkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAg
ICAgZm9yIGZ1bmN0aW9uIGluIHNlbGYubW9kZWwoKS5hbGxfZnVuY3Rpb25zKCk6CisgICAgICAg
ICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9lbWJlZGRlZF9jb2RlX3N0cmluZ19z
ZWN0aW9uX2Zvcl9mdW5jdGlvbihmdW5jdGlvbikpCisgICAgICAgIGlmIHNlbGYubW9kZWwoKS5m
cmFtZXdvcmsgaXMgRnJhbWV3b3Jrcy5KYXZhU2NyaXB0Q29yZToKKyAgICAgICAgICAgIHNlY3Rp
b25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuQ29tYmluZWRKU0NJbXBsZW1lbnRhdGlvblN0
YXRpY01hY3Jvcykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgZWxpZiBzZWxmLm1vZGVsKCku
ZnJhbWV3b3JrIGlzIEZyYW1ld29ya3MuV2ViQ29yZToKKyAgICAgICAgICAgIHNlY3Rpb25zLmFw
cGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuQ29tYmluZWRXZWJDb3JlSW1wbGVtZW50YXRpb25TdGF0
aWNNYWNyb3MpLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1w
bGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlQm90dG9tKS5zdWJzdGl0dXRlKGFyZ3MpKQorCisgICAg
ICAgIHJldHVybiAiXG5cbiIuam9pbihzZWN0aW9ucykKKworICAgIGRlZiBnZW5lcmF0ZV9oZWFk
ZXJfaW5jbHVkZXMoc2VsZik6CisgICAgICAgIGhlYWRlcl9pbmNsdWRlcyA9IFsKKyAgICAgICAg
ICAgIChbIkphdmFTY3JpcHRDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29y
ZSIsICJidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaCIpLAorICAgICAgICAgICAgKSwKKyAg
ICAgICAgICAgIChbIkphdmFTY3JpcHRDb3JlIiwgIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAg
ICAoIkphdmFTY3JpcHRDb3JlIiwgInJ1bnRpbWUvRXhlY3V0YWJsZS5oIiksCisgICAgICAgICAg
ICApLAorICAgICAgICAgICAgKFsiSmF2YVNjcmlwdENvcmUiLCAiV2ViQ29yZSJdLAorICAgICAg
ICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9KU0NlbGxJbmxpbmVzLmgiKSwK
KyAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAg
ICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCIpLAorICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAo
IkphdmFTY3JpcHRDb3JlIiwgInJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCIpLAorICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgIChbIkphdmFTY3JpcHRDb3JlIiwgIldlYkNvcmUiXSwKKyAg
ICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgInJ1bnRpbWUvVk0uaCIpLAorICAgICAg
ICAgICAgKSwKKyAgICAgICAgXQorCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4oc2VsZi5nZW5l
cmF0ZV9pbmNsdWRlc19mcm9tX2VudHJpZXMoaGVhZGVyX2luY2x1ZGVzKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRl
X3NlcGFyYXRlX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0
aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjFl
YjdkNjcxY2ExMWMzNThhNTE5N2RhZGFkZTc5NTE5MGQwMDMwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVf
c2VwYXJhdGVfaGVhZGVyLnB5CkBAIC0wLDAgKzEsMTc1IEBACisjIS91c3IvYmluL2VudiBweXRo
b24KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCByZQoraW1wb3J0IHN0cmluZworZnJvbSBz
dHJpbmcgaW1wb3J0IFRlbXBsYXRlCisKK2Zyb20gYnVpbHRpbnNfZ2VuZXJhdG9yIGltcG9ydCBC
dWlsdGluc0dlbmVyYXRvcgorZnJvbSBidWlsdGluc190ZW1wbGF0ZXMgaW1wb3J0IEJ1aWx0aW5z
R2VuZXJhdG9yVGVtcGxhdGVzIGFzIFRlbXBsYXRlcworCitsb2cgPSBsb2dnaW5nLmdldExvZ2dl
cignZ2xvYmFsJykKKworCitjbGFzcyBCdWlsdGluc1NlcGFyYXRlSGVhZGVyR2VuZXJhdG9yKEJ1
aWx0aW5zR2VuZXJhdG9yKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZWwsIG9iamVjdCk6
CisgICAgICAgIEJ1aWx0aW5zR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYsIG1vZGVsKQorICAgICAg
ICBzZWxmLm9iamVjdCA9IG9iamVjdAorCisgICAgZGVmIG91dHB1dF9maWxlbmFtZShzZWxmKToK
KyAgICAgICAgcmV0dXJuICIlc0J1aWx0aW5zLmgiICUgQnVpbHRpbnNHZW5lcmF0b3IubWFuZ2xl
ZE5hbWVGb3JPYmplY3Qoc2VsZi5vYmplY3QpCisKKyAgICBkZWYgbWFjcm9fcHJlZml4KHNlbGYp
OgorICAgICAgICByZXR1cm4gc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdtYWNyb19w
cmVmaXgnKQorCisgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKKyAgICAgICAgYXJncyA9
IHsKKyAgICAgICAgICAgICduYW1lc3BhY2UnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRp
bmcoJ25hbWVzcGFjZScpLAorICAgICAgICAgICAgJ2hlYWRlckd1YXJkJzogc2VsZi5vdXRwdXRf
ZmlsZW5hbWUoKS5yZXBsYWNlKCcuJywgJ18nKSwKKyAgICAgICAgICAgICdtYWNyb1ByZWZpeCc6
IHNlbGYubWFjcm9fcHJlZml4KCksCisgICAgICAgICAgICAnb2JqZWN0TmFtZSc6IHNlbGYub2Jq
ZWN0Lm9iamVjdF9uYW1lLnVwcGVyKCksCisgICAgICAgIH0KKworICAgICAgICBzZWN0aW9ucyA9
IFtdCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2xpY2Vuc2UoKSkKKyAg
ICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5Eb05vdEVkaXRXYXJuaW5n
KS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVt
cGxhdGVzLkhlYWRlckluY2x1ZGVHdWFyZFRvcCkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAg
c2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKCkpCisgICAgICAg
IHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zKCkpCisg
ICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlVG9wKS5z
dWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9z
ZWN0aW9uX2Zvcl9vYmplY3Qoc2VsZi5vYmplY3QpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQo
c2VsZi5nZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX3RhYmxlX21hY3JvKCkpCisgICAgICAgIHNl
Y3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfbmFtZV9tYWNybygp
KQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLlNlcGFyYXRlSGVh
ZGVyU3RhdGljTWFjcm9zKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBl
bmQoVGVtcGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZUJvdHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkK
KyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5IZWFkZXJJbmNsdWRl
R3VhcmRCb3R0b20pLnN1YnN0aXR1dGUoYXJncykpCisKKyAgICAgICAgcmV0dXJuICJcblxuIi5q
b2luKHNlY3Rpb25zKQorCisgICAgZGVmIGdlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zKHNl
bGYpOgorICAgICAgICByZXR1cm4gIiIibmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4
ZWN1dGFibGU7Cit9IiIiCisKKyAgICBkZWYgZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKHNlbGYp
OgorICAgICAgICBoZWFkZXJfaW5jbHVkZXMgPSBbCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0s
CisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJidWlsdGlucy9CdWlsdGluVXRp
bHMuaCIpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgXQorCisgICAgICAgIHJldHVybiAnXG4n
LmpvaW4oc2VsZi5nZW5lcmF0ZV9pbmNsdWRlc19mcm9tX2VudHJpZXMoaGVhZGVyX2luY2x1ZGVz
KSkKKworICAgIGRlZiBnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9vYmplY3Qoc2VsZiwgb2JqZWN0KToK
KyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoJy8qICVzICovJyAlIG9i
amVjdC5vYmplY3RfbmFtZSkKKyAgICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2VuZXJhdGVfZXh0
ZXJuc19mb3Jfb2JqZWN0KG9iamVjdCkpCisgICAgICAgIGxpbmVzLmFwcGVuZCgiIikKKyAgICAg
ICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2VuZXJhdGVfbWFjcm9zX2Zvcl9vYmplY3Qob2JqZWN0KSkK
KyAgICAgICAgbGluZXMuYXBwZW5kKCIiKQorICAgICAgICBsaW5lcy5leHRlbmQoc2VsZi5nZW5l
cmF0ZV9kZWZpbmVzX2Zvcl9vYmplY3Qob2JqZWN0KSkKKyAgICAgICAgcmV0dXJuICdcbicuam9p
bihsaW5lcykKKworICAgIGRlZiBnZW5lcmF0ZV9leHRlcm5zX2Zvcl9vYmplY3Qoc2VsZiwgb2Jq
ZWN0KToKKyAgICAgICAgbGluZXMgPSBbXQorCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBvYmpl
Y3QuZnVuY3Rpb25zOgorICAgICAgICAgICAgZnVuY3Rpb25fYXJncyA9IHsKKyAgICAgICAgICAg
ICAgICAnY29kZU5hbWUnOiBCdWlsdGluc0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvckZ1bmN0aW9u
KGZ1bmN0aW9uKSArICdDb2RlJywKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGluZXMu
YXBwZW5kKCIiImV4dGVybiBjb25zdCBjaGFyKiBzXyUoY29kZU5hbWUpczsKK2V4dGVybiBjb25z
dCBpbnQgc18lKGNvZGVOYW1lKXNMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RB
YmlsaXR5IHNfJShjb2RlTmFtZSlzQ29uc3RydWN0QWJpbGl0eTsiIiIgJSBmdW5jdGlvbl9hcmdz
KQorCisgICAgICAgIHJldHVybiBsaW5lcworCisgICAgZGVmIGdlbmVyYXRlX21hY3Jvc19mb3Jf
b2JqZWN0KHNlbGYsIG9iamVjdCk6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbWFj
cm9QcmVmaXgnOiBzZWxmLm1hY3JvX3ByZWZpeCgpLAorICAgICAgICAgICAgJ29iamVjdE1hY3Jv
Jzogb2JqZWN0Lm9iamVjdF9uYW1lLnJlcGxhY2UoJy4nLCAnXycpLnVwcGVyKCksCisgICAgICAg
IH0KKworICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZCgiI2RlZmluZSAl
KG1hY3JvUHJlZml4KXNfRk9SRUFDSF8lKG9iamVjdE1hY3JvKXNfQlVJTFRJTl9EQVRBKG1hY3Jv
KSBcXCIgJSBhcmdzKQorICAgICAgICBmb3IgZnVuY3Rpb24gaW4gb2JqZWN0LmZ1bmN0aW9uczoK
KyAgICAgICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ2Z1bmNOYW1l
JzogZnVuY3Rpb24uZnVuY3Rpb25fbmFtZSwKKyAgICAgICAgICAgICAgICAnbWFuZ2xlZE5hbWUn
OiBCdWlsdGluc0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvckZ1bmN0aW9uKGZ1bmN0aW9uKSwKKyAg
ICAgICAgICAgICAgICAncGFyYW1Db3VudCc6IGxlbihmdW5jdGlvbi5wYXJhbWV0ZXJzKSwKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIgICAgbWFjcm8oJShmdW5j
TmFtZSlzLCAlKG1hbmdsZWROYW1lKXMsICUocGFyYW1Db3VudClkKSBcXCIgJSBmdW5jdGlvbl9h
cmdzKQorICAgICAgICByZXR1cm4gbGluZXMKKworICAgIGRlZiBnZW5lcmF0ZV9kZWZpbmVzX2Zv
cl9vYmplY3Qoc2VsZiwgb2JqZWN0KToKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBmb3Ig
ZnVuY3Rpb24gaW4gb2JqZWN0LmZ1bmN0aW9uczoKKyAgICAgICAgICAgIGFyZ3MgPSB7CisgICAg
ICAgICAgICAgICAgJ21hY3JvUHJlZml4Jzogc2VsZi5tYWNyb19wcmVmaXgoKSwKKyAgICAgICAg
ICAgICAgICAnb2JqZWN0TWFjcm8nOiBvYmplY3Qub2JqZWN0X25hbWUucmVwbGFjZSgnLicsICdf
JykudXBwZXIoKSwKKyAgICAgICAgICAgICAgICAnZnVuY3Rpb25NYWNybyc6IGZ1bmN0aW9uLmZ1
bmN0aW9uX25hbWUudXBwZXIoKSwKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxpbmVzLmFw
cGVuZCgiI2RlZmluZSAlKG1hY3JvUHJlZml4KXNfQlVJTFRJTl8lKG9iamVjdE1hY3JvKXNfJShm
dW5jdGlvbk1hY3JvKXMgMSIgJSBhcmdzKQorCisgICAgICAgIHJldHVybiBsaW5lcworCisgICAg
ZGVmIGdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfdGFibGVfbWFjcm8oc2VsZik6CisgICAgICAg
IGFyZ3MgPSB7CisgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1vZGVsKCkuZnJhbWV3
b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZpeCcpLAorICAgICAgICAgICAgJ29iamVjdE1hY3JvJzog
c2VsZi5vYmplY3Qub2JqZWN0X25hbWUudXBwZXIoKSwKKyAgICAgICAgfQorCisgICAgICAgIGxp
bmVzID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCIjZGVmaW5lICUobWFjcm9QcmVmaXgpc19G
T1JFQUNIXyUob2JqZWN0TWFjcm8pc19CVUlMVElOX0NPREUobWFjcm8pIFxcIiAlIGFyZ3MpCisg
ICAgICAgIGZvciBmdW5jdGlvbiBpbiBzZWxmLm9iamVjdC5mdW5jdGlvbnM6CisgICAgICAgICAg
ICBmdW5jdGlvbl9hcmdzID0geworICAgICAgICAgICAgICAgICdmdW5jTmFtZSc6IGZ1bmN0aW9u
LmZ1bmN0aW9uX25hbWUsCisgICAgICAgICAgICAgICAgJ2NvZGVOYW1lJzogQnVpbHRpbnNHZW5l
cmF0b3IubWFuZ2xlZE5hbWVGb3JGdW5jdGlvbihmdW5jdGlvbikgKyAnQ29kZScsCisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiICAgIG1hY3JvKCUoY29kZU5hbWUp
cywgJShmdW5jTmFtZSlzLCBzXyUoY29kZU5hbWUpc0xlbmd0aCkgXFwiICUgZnVuY3Rpb25fYXJn
cykKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKKworICAgIGRlZiBnZW5lcmF0ZV9z
ZWN0aW9uX2Zvcl9jb2RlX25hbWVfbWFjcm8oc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAg
ICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1hY3JvX3ByZWZpeCgpLAorICAgICAgICAgICAg
J29iamVjdE1hY3JvJzogc2VsZi5vYmplY3Qub2JqZWN0X25hbWUudXBwZXIoKSwKKyAgICAgICAg
fQorCisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCIjZGVmaW5lICUo
bWFjcm9QcmVmaXgpc19GT1JFQUNIXyUob2JqZWN0TWFjcm8pc19CVUlMVElOX0ZVTkNUSU9OX05B
TUUobWFjcm8pIFxcIiAlIGFyZ3MpCisgICAgICAgIHVuaXF1ZV9uYW1lcyA9IGxpc3Qoc2V0KFtm
dW5jdGlvbi5mdW5jdGlvbl9uYW1lIGZvciBmdW5jdGlvbiBpbiBzZWxmLm9iamVjdC5mdW5jdGlv
bnNdKSkKKyAgICAgICAgdW5pcXVlX25hbWVzLnNvcnQoKQorICAgICAgICBmb3IgZnVuY3Rpb25f
bmFtZSBpbiB1bmlxdWVfbmFtZXM6CisgICAgICAgICAgICBmdW5jdGlvbl9hcmdzID0geworICAg
ICAgICAgICAgICAgICdmdW5jTmFtZSc6IGZ1bmN0aW9uX25hbWUsCisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiICAgIG1hY3JvKCUoZnVuY05hbWUpcykgXFwiICUg
ZnVuY3Rpb25fYXJncykKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVy
YXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24u
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmMyMjkwNGI1Y2UwMjVkNzg2ZWM5MzM1MTA1ZWY5YmQ1Y2VkNjQ0Nwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5z
L2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5CkBAIC0wLDAgKzEs
OTkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTQg
VW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
IyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitpbXBvcnQgbG9nZ2luZworaW1wb3J0
IHJlCitpbXBvcnQgc3RyaW5nCitmcm9tIHN0cmluZyBpbXBvcnQgVGVtcGxhdGUKKworZnJvbSBi
dWlsdGluc19nZW5lcmF0b3IgaW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9yLCBXS19sY2ZpcnN0Citm
cm9tIGJ1aWx0aW5zX21vZGVsIGltcG9ydCBGcmFtZXdvcmssIEZyYW1ld29ya3MKK2Zyb20gYnVp
bHRpbnNfdGVtcGxhdGVzIGltcG9ydCBCdWlsdGluc0dlbmVyYXRvclRlbXBsYXRlcyBhcyBUZW1w
bGF0ZXMKKworbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcpCisKKworY2xhc3MgQnVp
bHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEJ1aWx0aW5zR2VuZXJhdG9yKToK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZWwsIG9iamVjdCk6CisgICAgICAgIEJ1aWx0aW5z
R2VuZXJhdG9yLl9faW5pdF9fKHNlbGYsIG1vZGVsKQorICAgICAgICBzZWxmLm9iamVjdCA9IG9i
amVjdAorCisgICAgZGVmIG91dHB1dF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuICIl
c0J1aWx0aW5zLmNwcCIgJSBCdWlsdGluc0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvck9iamVjdChz
ZWxmLm9iamVjdCkKKworICAgIGRlZiBtYWNyb19wcmVmaXgoc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZpeCcpCisKKyAgICBk
ZWYgZ2VuZXJhdGVfb3V0cHV0KHNlbGYpOgorICAgICAgICBhcmdzID0geworICAgICAgICAgICAg
J25hbWVzcGFjZSc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNlJyks
CisgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1hY3JvX3ByZWZpeCgpLAorICAgICAg
ICAgICAgJ29iamVjdE1hY3JvJzogc2VsZi5vYmplY3Qub2JqZWN0X25hbWUudXBwZXIoKSwKKyAg
ICAgICAgICAgICdvYmplY3ROYW1lTEMnOiBXS19sY2ZpcnN0KHNlbGYub2JqZWN0Lm9iamVjdF9u
YW1lKSwKKyAgICAgICAgfQorCisgICAgICAgIHNlY3Rpb25zID0gW10KKyAgICAgICAgc2VjdGlv
bnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfbGljZW5zZSgpKQorICAgICAgICBzZWN0aW9ucy5hcHBl
bmQoVGVtcGxhdGUoVGVtcGxhdGVzLkRvTm90RWRpdFdhcm5pbmcpLnN1YnN0aXR1dGUoYXJncykp
CisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcygp
KQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZVRv
cCkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgZm9yIGZ1bmN0aW9uIGluIHNlbGYub2JqZWN0
LmZ1bmN0aW9uczoKKyAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2Vt
YmVkZGVkX2NvZGVfc3RyaW5nX3NlY3Rpb25fZm9yX2Z1bmN0aW9uKGZ1bmN0aW9uKSkKKyAgICAg
ICAgaWYgc2VsZi5tb2RlbCgpLmZyYW1ld29yayBpcyBGcmFtZXdvcmtzLkphdmFTY3JpcHRDb3Jl
OgorICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5TZXBhcmF0
ZUpTQ0ltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9zKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAg
ICBlbGlmIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsgaXMgRnJhbWV3b3Jrcy5XZWJDb3JlOgorICAg
ICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5TZXBhcmF0ZVdlYkNv
cmVJbXBsZW1lbnRhdGlvblN0YXRpY01hY3Jvcykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAg
c2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VCb3R0b20pLnN1YnN0
aXR1dGUoYXJncykpCisKKyAgICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNlY3Rpb25zKQorCisg
ICAgZGVmIGdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcyhzZWxmKToKKyAgICAgICAgaGVhZGVyX2lu
Y2x1ZGVzID0gWworICAgICAgICAgICAgKFsiSmF2YVNjcmlwdENvcmUiXSwKKyAgICAgICAgICAg
ICAgICAoIkphdmFTY3JpcHRDb3JlIiwgImJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIiks
CisgICAgICAgICAgICApLAorICAgICAgICAgICAgKFsiSmF2YVNjcmlwdENvcmUiLCAiV2ViQ29y
ZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9FeGVjdXRh
YmxlLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZSIs
ICJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1l
L0pTQ2VsbElubGluZXMuaCIpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIChbIldlYkNv
cmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgInJ1bnRpbWUvU3RydWN0
dXJlSW5saW5lcy5oIiksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKFsiV2ViQ29yZSJd
LAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oIiksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKFsiSmF2YVNjcmlwdENv
cmUiLCAiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVu
dGltZS9WTS5oIiksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAor
ICAgICAgICAgICAgICAgICgiV2ViQ29yZSIsICJiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnRE
YXRhLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAgIF0KKworICAgICAgICByZXR1cm4gJ1xu
Jy5qb2luKHNlbGYuZ2VuZXJhdGVfaW5jbHVkZXNfZnJvbV9lbnRyaWVzKGhlYWRlcl9pbmNsdWRl
cykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9i
dWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFwcGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfd3JhcHBlci5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kYWE4OGNmNzYyMGNkYTEzNzE4NmI5OTE2NDM3YmM2ZDBiNDgxZDllCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMv
YnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfd3JhcHBlci5weQpAQCAtMCwwICsxLDk0IEBACisj
IS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNp
dHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCByZQoraW1w
b3J0IHN0cmluZworZnJvbSBzdHJpbmcgaW1wb3J0IFRlbXBsYXRlCisKK2Zyb20gYnVpbHRpbnNf
Z2VuZXJhdG9yIGltcG9ydCBCdWlsdGluc0dlbmVyYXRvcgorZnJvbSBidWlsdGluc190ZW1wbGF0
ZXMgaW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVzIGFzIFRlbXBsYXRlcworCitsb2cg
PSBsb2dnaW5nLmdldExvZ2dlcignZ2xvYmFsJykKKworCitjbGFzcyBCdWlsdGluc1NlcGFyYXRl
V3JhcHBlckdlbmVyYXRvcihCdWlsdGluc0dlbmVyYXRvcik6CisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIG1vZGVsLCBvYmplY3QpOgorICAgICAgICBCdWlsdGluc0dlbmVyYXRvci5fX2luaXRfXyhz
ZWxmLCBtb2RlbCkKKyAgICAgICAgc2VsZi5vYmplY3QgPSBvYmplY3QKKworICAgIGRlZiBvdXRw
dXRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiAiJXNCdWlsdGluc1dyYXBwZXIuaCIg
JSBCdWlsdGluc0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvck9iamVjdChzZWxmLm9iamVjdCkKKwor
ICAgIGRlZiBtYWNyb19wcmVmaXgoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLm1vZGVsKCku
ZnJhbWV3b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZpeCcpCisKKyAgICBkZWYgZ2VuZXJhdGVfb3V0
cHV0KHNlbGYpOgorICAgICAgICBhcmdzID0geworICAgICAgICAgICAgJ25hbWVzcGFjZSc6IHNl
bGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNlJyksCisgICAgICAgICAgICAn
aGVhZGVyR3VhcmQnOiBzZWxmLm91dHB1dF9maWxlbmFtZSgpLnJlcGxhY2UoJy4nLCAnXycpLAor
ICAgICAgICAgICAgJ21hY3JvUHJlZml4Jzogc2VsZi5tYWNyb19wcmVmaXgoKSwKKyAgICAgICAg
ICAgICdvYmplY3ROYW1lJzogc2VsZi5vYmplY3Qub2JqZWN0X25hbWUsCisgICAgICAgICAgICAn
b2JqZWN0TWFjcm8nOiBzZWxmLm9iamVjdC5vYmplY3RfbmFtZS51cHBlcigpLAorICAgICAgICB9
CisKKyAgICAgICAgc2VjdGlvbnMgPSBbXQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5n
ZW5lcmF0ZV9saWNlbnNlKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1w
bGF0ZXMuRG9Ob3RFZGl0V2FybmluZykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlv
bnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5IZWFkZXJJbmNsdWRlR3VhcmRUb3ApLnN1YnN0
aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2hlYWRl
cl9pbmNsdWRlcygpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVz
Lk5hbWVzcGFjZVRvcCkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5k
KFRlbXBsYXRlKFRlbXBsYXRlcy5TZXBhcmF0ZVdyYXBwZXJIZWFkZXJCb2lsZXJwbGF0ZSkuc3Vi
c3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRl
cy5OYW1lc3BhY2VCb3R0b20pLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFw
cGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuSGVhZGVySW5jbHVkZUd1YXJkQm90dG9tKS5zdWJzdGl0
dXRlKGFyZ3MpKQorCisgICAgICAgIHJldHVybiAiXG5cbiIuam9pbihzZWN0aW9ucykKKworICAg
IGRlZiBnZW5lcmF0ZV9oZWFkZXJfaW5jbHVkZXMoc2VsZik6CisgICAgICAgIGhlYWRlcl9pbmNs
dWRlcyA9IFsKKyAgICAgICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIldl
YkNvcmUiLCAiJXNCdWlsdGlucy5oIiAlIHNlbGYub2JqZWN0Lm9iamVjdF9uYW1lKSwKKyAgICAg
ICAgICAgICksCisKKyAgICAgICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAo
IkphdmFTY3JpcHRDb3JlIiwgImJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgi
KSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAg
ICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgImJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oIiksCisg
ICAgICAgICAgICApLAorCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAg
ICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL0lkZW50aWZpZXIuaCIpLAorICAgICAgICAg
ICAgKSwKKworICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2
YVNjcmlwdENvcmUiLCAicnVudGltZS9KU0Z1bmN0aW9uLmgiKSwKKyAgICAgICAgICAgICksCisg
ICAgICAgIF0KKworICAgICAgICByZXR1cm4gJ1xuJy5qb2luKHNlbGYuZ2VuZXJhdGVfaW5jbHVk
ZXNfZnJvbV9lbnRyaWVzKGhlYWRlcl9pbmNsdWRlcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0b3IucHkgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0b3IucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTg0ODNlMGMyMjMxNWY3N2RiYWE5NzZkNGJhZGNmNzdkZTJkM2YxOQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1
aWx0aW5zX2dlbmVyYXRvci5weQpAQCAtMCwwICsxLDE3MSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCByZQorZnJvbSBz
dHJpbmcgaW1wb3J0IFRlbXBsYXRlCitpbXBvcnQganNvbgorCitmcm9tIGJ1aWx0aW5zX21vZGVs
IGltcG9ydCBCdWlsdGluRnVuY3Rpb24sIEJ1aWx0aW5PYmplY3QKK2Zyb20gYnVpbHRpbnNfdGVt
cGxhdGVzIGltcG9ydCBCdWlsdGluc0dlbmVyYXRvclRlbXBsYXRlcyBhcyBUZW1wbGF0ZXMKKwor
bG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcpCisKKyMgVGhlc2UgbWF0Y2ggV0tfbGNm
aXJzdCBhbmQgV0tfdWNmaXJzdCBkZWZpbmVkIGluIENvZGVHZW5lcmF0b3IucG0uCitkZWYgV0tf
bGNmaXJzdChzdHIpOgorICAgIHN0ciA9IHN0cls6MV0ubG93ZXIoKSArIHN0clsxOl0KKyAgICBz
dHIgPSBzdHIucmVwbGFjZSgnaFRNTCcsICdodG1sJykKKyAgICBzdHIgPSBzdHIucmVwbGFjZSgn
dVJMJywgJ3VybCcpCisgICAgc3RyID0gc3RyLnJlcGxhY2UoJ2pTJywgJ2pzJykKKyAgICBzdHIg
PSBzdHIucmVwbGFjZSgneE1MJywgJ3htbCcpCisgICAgc3RyID0gc3RyLnJlcGxhY2UoJ3hTTFQn
LCAneHNsdCcpCisgICAgc3RyID0gc3RyLnJlcGxhY2UoJ2NTUycsICdjc3MnKQorICAgIHJldHVy
biBzdHIKKworZGVmIFdLX3VjZmlyc3Qoc3RyKToKKyAgICBzdHIgPSBzdHJbOjFdLnVwcGVyKCkg
KyBzdHJbMTpdCisgICAgc3RyID0gc3RyLnJlcGxhY2UoJ1htbCcsICdYTUwnKQorICAgIHN0ciA9
IHN0ci5yZXBsYWNlKCdTdmcnLCAnU1ZHJykKKyAgICByZXR1cm4gc3RyCisKK2NsYXNzIEJ1aWx0
aW5zR2VuZXJhdG9yOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCk6CisgICAgICAgIHNl
bGYuX21vZGVsID0gbW9kZWwKKworICAgIGRlZiBtb2RlbChzZWxmKToKKyAgICAgICAgcmV0dXJu
IHNlbGYuX21vZGVsCisKKyAgICAjIFRoZXNlIG1ldGhvZHMgYXJlIG92ZXJyaWRkZW4gYnkgc3Vi
Y2xhc3Nlcy4KKworICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6CisgICAgICAgIHBhc3MK
KworICAgIGRlZiBvdXRwdXRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHBhc3MKKworCisgICAg
IyBTaGFyZWQgY29kZSBnZW5lcmF0aW9uIG1ldGhvZHMuCisgICAgZGVmIGdlbmVyYXRlX2xpY2Vu
c2Uoc2VsZik6CisgICAgICAgIHJhd19saWNlbnNlID0gVGVtcGxhdGUoVGVtcGxhdGVzLkxpY2Vu
c2VUZXh0KS5zdWJzdGl0dXRlKE5vbmUpCisgICAgICAgIGNvcHlyaWdodHMgPSBzZWxmLl9tb2Rl
bC5jb3B5cmlnaHRzKCkKKyAgICAgICAgY29weXJpZ2h0cy5zb3J0KCkKKworICAgICAgICBsaWNl
bnNlX2Jsb2NrID0gW10KKyAgICAgICAgbGljZW5zZV9ibG9jay5hcHBlbmQoIi8qIikKKyAgICAg
ICAgZm9yIGNvcHlyaWdodCBpbiBjb3B5cmlnaHRzOgorICAgICAgICAgICAgbGljZW5zZV9ibG9j
ay5hcHBlbmQoIiAqIENvcHlyaWdodCAoYykgJXMiICUgY29weXJpZ2h0KQorICAgICAgICBpZiBs
ZW4oY29weXJpZ2h0cykgPiAwOgorICAgICAgICAgICAgbGljZW5zZV9ibG9jay5hcHBlbmQoIiAq
ICIpCisKKyAgICAgICAgZm9yIGxpbmUgaW4gcmF3X2xpY2Vuc2Uuc3BsaXQoJ1xuJyk6CisgICAg
ICAgICAgICBsaWNlbnNlX2Jsb2NrLmFwcGVuZCgiICogIiArIGxpbmUpCisKKyAgICAgICAgbGlj
ZW5zZV9ibG9jay5hcHBlbmQoIiAqLyIpCisKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaWNl
bnNlX2Jsb2NrKQorCisgICAgZGVmIGdlbmVyYXRlX2luY2x1ZGVzX2Zyb21fZW50cmllcyhzZWxm
LCBlbnRyaWVzKToKKyAgICAgICAgaW5jbHVkZXMgPSBzZXQoKQorICAgICAgICBmb3IgZW50cnkg
aW4gZW50cmllczoKKyAgICAgICAgICAgIChhbGxvd2VkX2ZyYW1ld29ya19uYW1lcywgZGF0YSkg
PSBlbnRyeQorICAgICAgICAgICAgKGZyYW1ld29ya19uYW1lLCBoZWFkZXJfcGF0aCkgPSBkYXRh
CisKKyAgICAgICAgICAgIGlmIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsubmFtZSBub3QgaW4gYWxs
b3dlZF9mcmFtZXdvcmtfbmFtZXM6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAg
ICAgIGlmIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsubmFtZSAhPSBmcmFtZXdvcmtfbmFtZToKKyAg
ICAgICAgICAgICAgICBpbmNsdWRlcy5hZGQoIiNpbmNsdWRlIDwlcz4iICUgaGVhZGVyX3BhdGgp
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGluY2x1ZGVzLmFkZCgiI2luY2x1
ZGUgXCIlc1wiIiAlIG9zLnBhdGguYmFzZW5hbWUoaGVhZGVyX3BhdGgpKQorCisgICAgICAgIHNv
cnRlZF9pbmNsdWRlcyA9IHNvcnRlZChsaXN0KGluY2x1ZGVzKSkKKyAgICAgICAgIyBBbHdheXMg
aW5jbHVkZSBjb25maWcuaCBhbmQgdGhlIGNvdW50ZXJwYXJ0IGhlYWRlciBiZWZvcmUgb3RoZXIg
aGVhZGVycy4KKyAgICAgICAgbmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChzZWxmLm91dHB1
dF9maWxlbmFtZSgpKQorICAgICAgICBpZiBleHQgIT0gJy5oJzoKKyAgICAgICAgICAgIHNvcnRl
ZF9pbmNsdWRlc1s6MF0gPSBbCisgICAgICAgICAgICAgICAgIiNpbmNsdWRlIFwiY29uZmlnLmhc
IiIsCisgICAgICAgICAgICAgICAgIiNpbmNsdWRlIFwiJXMuaFwiIiAlIG5hbWUsCisgICAgICAg
ICAgICAgICAgIiIsCisgICAgICAgICAgICBdCisKKyAgICAgICAgcmV0dXJuIHNvcnRlZF9pbmNs
dWRlcworCisgICAgZGVmIGdlbmVyYXRlX2VtYmVkZGVkX2NvZGVfc3RyaW5nX3NlY3Rpb25fZm9y
X2Z1bmN0aW9uKHNlbGYsIGZ1bmN0aW9uKToKKyAgICAgICAgdGV4dCA9IGZ1bmN0aW9uLmZ1bmN0
aW9uX3NvdXJjZQorICAgICAgICAjIFdyYXAgaXQgaW4gcGFyZW5zIHRvIGF2b2lkIGFkZGluZyB0
byBnbG9iYWwgc2NvcGUuCisgICAgICAgIHRleHQgPSAiKGZ1bmN0aW9uICIgKyB0ZXh0W3RleHQu
aW5kZXgoIigiKTpdICsgIikiCisgICAgICAgIGVtYmVkZGVkU291cmNlTGVuZ3RoID0gbGVuKHRl
eHQpICsgMSAgIyBGb3IgZXh0cmEgXG4uCisgICAgICAgICMgTGF6eSB3YXkgdG8gZXNjYXBlIHF1
b3RlcywgSSB0aGluaz8KKyAgICAgICAgdGV4dExpbmVzID0ganNvbi5kdW1wcyh0ZXh0KVsxOi0x
XS5zcGxpdCgiXFxuIikKKyAgICAgICAgIyBUaGlzIGxvb2tzIHNjYXJ5IGJlY2F1c2Ugd2UgbmVl
ZCB0aGUgSlMgc291cmNlIGl0c2VsZiB0byBoYXZlIG5ld2xpbmVzLgorICAgICAgICBlbWJlZGRl
ZFNvdXJjZSA9ICdcbicuam9pbihbJyAgICAiJXNcXG4iIFxcJyAlIGxpbmUgZm9yIGxpbmUgaW4g
dGV4dExpbmVzXSkKKworICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gIkNhbm5vdENvbnN0cnVj
dCIKKyAgICAgICAgaWYgZnVuY3Rpb24uaXNfY29uc3RydWN0b3I6CisgICAgICAgICAgICBjb25z
dHJ1Y3RBYmlsaXR5ID0gIkNhbkNvbnN0cnVjdCIKKworICAgICAgICBhcmdzID0geworICAgICAg
ICAgICAgJ2NvZGVOYW1lJzogQnVpbHRpbnNHZW5lcmF0b3IubWFuZ2xlZE5hbWVGb3JGdW5jdGlv
bihmdW5jdGlvbikgKyAnQ29kZScsCisgICAgICAgICAgICAnZW1iZWRkZWRTb3VyY2UnOiBlbWJl
ZGRlZFNvdXJjZSwKKyAgICAgICAgICAgICdlbWJlZGRlZFNvdXJjZUxlbmd0aCc6IGVtYmVkZGVk
U291cmNlTGVuZ3RoLAorICAgICAgICAgICAgJ2NhbkNvbnN0cnVjdCc6IGNvbnN0cnVjdEFiaWxp
dHkKKyAgICAgICAgfQorCisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5k
KCJjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc18lKGNvZGVOYW1lKXNDb25zdHJ1Y3RBYmls
aXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjolKGNhbkNvbnN0cnVjdClzOyIgJSBhcmdzKTsK
KyAgICAgICAgbGluZXMuYXBwZW5kKCJjb25zdCBpbnQgc18lKGNvZGVOYW1lKXNMZW5ndGggPSAl
KGVtYmVkZGVkU291cmNlTGVuZ3RoKWQ7IiAlIGFyZ3MpOworICAgICAgICBsaW5lcy5hcHBlbmQo
ImNvbnN0IGNoYXIqIHNfJShjb2RlTmFtZSlzID1cbiUoZW1iZWRkZWRTb3VyY2Upc1xuOyIgJSBh
cmdzKTsKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKKworICAgICMgSGVscGVyIG1l
dGhvZHMuCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIG1hbmdsZWROYW1lRm9yT2JqZWN0
KG9iamVjdCk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG9iamVjdCwgQnVpbHRpbk9iamVj
dCk6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkludmFsaWQgYXJndW1lbnQgcGFzc2Vk
IHRvIG1hbmdsZWROYW1lRm9yT2JqZWN0KCkiKQorCisgICAgICAgIGRlZiB0b0NhbWVsKG1hdGNo
KToKKyAgICAgICAgICAgIHN0ciA9IG1hdGNoLmdyb3VwKDApCisgICAgICAgICAgICByZXR1cm4g
c3RyWzFdLnVwcGVyKCkKKyAgICAgICAgcmV0dXJuIHJlLnN1YihyJ1wuW2Etel0nLCB0b0NhbWVs
LCBvYmplY3Qub2JqZWN0X25hbWUsIGZsYWdzPXJlLklHTk9SRUNBU0UpCisKKworICAgIEBzdGF0
aWNtZXRob2QKKyAgICBkZWYgbWFuZ2xlZE5hbWVGb3JGdW5jdGlvbihmdW5jdGlvbik6CisgICAg
ICAgIGlmIG5vdCBpc2luc3RhbmNlKGZ1bmN0aW9uLCBCdWlsdGluRnVuY3Rpb24pOgorICAgICAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKCJJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBtYW5nbGVk
TmFtZUZvckZ1bmN0aW9uKCkiKQorCisgICAgICAgIGZ1bmN0aW9uX25hbWUgPSBXS191Y2ZpcnN0
KGZ1bmN0aW9uLmZ1bmN0aW9uX25hbWUpCisKKyAgICAgICAgZGVmIHRvQ2FtZWwobWF0Y2gpOgor
ICAgICAgICAgICAgc3RyID0gbWF0Y2guZ3JvdXAoMCkKKyAgICAgICAgICAgIHJldHVybiBzdHJb
MV0udXBwZXIoKQorICAgICAgICBmdW5jdGlvbl9uYW1lID0gcmUuc3ViKHInXC5bYS16XScsIHRv
Q2FtZWwsIGZ1bmN0aW9uX25hbWUsIGZsYWdzPXJlLklHTk9SRUNBU0UpCisgICAgICAgIGlmIGZ1
bmN0aW9uLmlzX2NvbnN0cnVjdG9yOgorICAgICAgICAgICAgZnVuY3Rpb25fbmFtZSA9IGZ1bmN0
aW9uX25hbWUgKyAiQ29uc3RydWN0b3IiCisKKyAgICAgICAgb2JqZWN0X25hbWUgPSBCdWlsdGlu
c0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvck9iamVjdChmdW5jdGlvbi5vYmplY3QpCisgICAgICAg
IHJldHVybiBXS19sY2ZpcnN0KG9iamVjdF9uYW1lICsgZnVuY3Rpb25fbmFtZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVs
LnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfbW9k
ZWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjVkNGJkZTY0ZDZiYTZjZDFkMDczNTNkNGYyYmQ1ZWExNDUwYWEz
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0
aW5zL2J1aWx0aW5zX21vZGVsLnB5CkBAIC0wLDAgKzEsMjMzIEBACisjIS91c3IvYmluL2VudiBw
eXRob24KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBs
b2dnaW5nCitpbXBvcnQgcmUKK2ltcG9ydCBvcworCitsb2cgPSBsb2dnaW5nLmdldExvZ2dlcign
Z2xvYmFsJykKKworX0ZSQU1FV09SS19DT05GSUdfTUFQID0geworICAgICJKYXZhU2NyaXB0Q29y
ZSI6IHsKKyAgICAgICAgIm1hY3JvX3ByZWZpeCI6ICJKU0MiLAorICAgICAgICAibmFtZXNwYWNl
IjogIkpTQyIsCisgICAgfSwKKyAgICAiV2ViQ29yZSI6IHsKKyAgICAgICAgIm1hY3JvX3ByZWZp
eCI6ICJXRUJDT1JFIiwKKyAgICAgICAgIm5hbWVzcGFjZSI6ICJXZWJDb3JlIiwKKyAgICB9LAor
fQorCitmdW5jdGlvbkhlYWRSZWdFeHAgPSByZS5jb21waWxlKHIiKD86ZnVuY3Rpb258Y29uc3Ry
dWN0b3IpXHMrXHcrXHMqXCguKj9cKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitmdW5jdGlvbk5h
bWVSZWdFeHAgPSByZS5jb21waWxlKHIiKD86ZnVuY3Rpb258Y29uc3RydWN0b3IpXHMrKFx3Kylc
cypcKCIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitmdW5jdGlvbklzQ29uc3RydWN0b3JSZWdFeHAg
PSByZS5jb21waWxlKHIiXmNvbnN0cnVjdG9yIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0
aW9uUGFyYW1ldGVyRmluZGVyID0gcmUuY29tcGlsZShyIl4oPzpmdW5jdGlvbnxjb25zdHJ1Y3Rv
cilccysoPzpcdyspXHMqXCgoKD86XHMqXHcrKT9ccyooPzpccyosXHMqXHcrKSopP1xzKlwpIiwg
cmUuTVVMVElMSU5FIHwgcmUuUykKKworbXVsdGlsaW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBp
bGUociJcL1wqLio/XCpcLyIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitzaW5nbGVMaW5lQ29tbWVu
dFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wvLio/XG4iLCByZS5NVUxUSUxJTkUgfCByZS5TKQor
CisKK2NsYXNzIFBhcnNlRXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgcGFzcworCisKK2NsYXNz
IEZyYW1ld29yazoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CisgICAgICAgIHNlbGYu
X3NldHRpbmdzID0gX0ZSQU1FV09SS19DT05GSUdfTUFQW25hbWVdCisgICAgICAgIHNlbGYubmFt
ZSA9IG5hbWUKKworICAgIGRlZiBzZXR0aW5nKHNlbGYsIGtleSwgZGVmYXVsdD0nJyk6CisgICAg
ICAgIHJldHVybiBzZWxmLl9zZXR0aW5ncy5nZXQoa2V5LCBkZWZhdWx0KQorCisgICAgQHN0YXRp
Y21ldGhvZAorICAgIGRlZiBmcm9tU3RyaW5nKGZyYW1ld29ya1N0cmluZyk6CisgICAgICAgIGlm
IGZyYW1ld29ya1N0cmluZyA9PSAiSmF2YVNjcmlwdENvcmUiOgorICAgICAgICAgICAgcmV0dXJu
IEZyYW1ld29ya3MuSmF2YVNjcmlwdENvcmUKKworICAgICAgICBpZiBmcmFtZXdvcmtTdHJpbmcg
PT0gIldlYkNvcmUiOgorICAgICAgICAgICAgcmV0dXJuIEZyYW1ld29ya3MuV2ViQ29yZQorCisg
ICAgICAgIHJhaXNlIFBhcnNlRXhjZXB0aW9uKCJVbmtub3duIGZyYW1ld29yazogJXMiICUgZnJh
bWV3b3JrU3RyaW5nKQorCisKK2NsYXNzIEZyYW1ld29ya3M6CisgICAgSmF2YVNjcmlwdENvcmUg
PSBGcmFtZXdvcmsoIkphdmFTY3JpcHRDb3JlIikKKyAgICBXZWJDb3JlID0gRnJhbWV3b3JrKCJX
ZWJDb3JlIikKKworCitjbGFzcyBCdWlsdGluT2JqZWN0OgorICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBvYmplY3RfbmFtZSwgZnVuY3Rpb25zKToKKyAgICAgICAgc2VsZi5vYmplY3RfbmFtZSA9IG9i
amVjdF9uYW1lCisgICAgICAgIHNlbGYuZnVuY3Rpb25zID0gZnVuY3Rpb25zCisgICAgICAgIHNl
bGYuY29sbGVjdGlvbiA9IE5vbmUgICMgU2V0IGJ5IHRoZSBvd25pbmcgQnVpbHRpbnNDb2xsZWN0
aW9uCisKKyAgICAgICAgZm9yIGZ1bmN0aW9uIGluIHNlbGYuZnVuY3Rpb25zOgorICAgICAgICAg
ICAgZnVuY3Rpb24ub2JqZWN0ID0gc2VsZgorCisKK2NsYXNzIEJ1aWx0aW5GdW5jdGlvbjoKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgZnVuY3Rpb25fbmFtZSwgZnVuY3Rpb25fc291cmNlLCBpc19j
b25zdHJ1Y3RvciwgcGFyYW1ldGVycyk6CisgICAgICAgIHNlbGYuZnVuY3Rpb25fbmFtZSA9IGZ1
bmN0aW9uX25hbWUKKyAgICAgICAgc2VsZi5mdW5jdGlvbl9zb3VyY2UgPSBmdW5jdGlvbl9zb3Vy
Y2UKKyAgICAgICAgc2VsZi5pc19jb25zdHJ1Y3RvciA9IGlzX2NvbnN0cnVjdG9yCisgICAgICAg
IHNlbGYucGFyYW1ldGVycyA9IHBhcmFtZXRlcnMKKyAgICAgICAgc2VsZi5vYmplY3QgPSBOb25l
ICAjIFNldCBieSB0aGUgb3duaW5nIEJ1aWx0aW5PYmplY3QKKworICAgIEBzdGF0aWNtZXRob2QK
KyAgICBkZWYgZnJvbVN0cmluZyhmdW5jdGlvbl9zdHJpbmcpOgorICAgICAgICBmdW5jdGlvbl9z
b3VyY2UgPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiIiwgZnVuY3Rpb25fc3RyaW5nKQor
ICAgICAgICBmdW5jdGlvbl9uYW1lID0gZnVuY3Rpb25OYW1lUmVnRXhwLmZpbmRhbGwoZnVuY3Rp
b25fc291cmNlKVswXQorICAgICAgICBpc19jb25zdHJ1Y3RvciA9IGZ1bmN0aW9uSXNDb25zdHJ1
Y3RvclJlZ0V4cC5tYXRjaChmdW5jdGlvbl9zb3VyY2UpICE9IE5vbmUKKyAgICAgICAgcGFyYW1l
dGVycyA9IFtzLnN0cmlwKCkgZm9yIHMgaW4gZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIuZmluZGFs
bChmdW5jdGlvbl9zb3VyY2UpWzBdLnNwbGl0KCcsJyldCisgICAgICAgIGlmIGxlbihwYXJhbWV0
ZXJzWzBdKSA9PSAwOgorICAgICAgICAgICAgcGFyYW1ldGVycyA9IFtdCisKKyAgICAgICAgcmV0
dXJuIEJ1aWx0aW5GdW5jdGlvbihmdW5jdGlvbl9uYW1lLCBmdW5jdGlvbl9zb3VyY2UsIGlzX2Nv
bnN0cnVjdG9yLCBwYXJhbWV0ZXJzKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAg
IGludGVyZmFjZSA9ICIlcyglcykiICUgKHNlbGYuZnVuY3Rpb25fbmFtZSwgJywgJy5qb2luKHNl
bGYucGFyYW1ldGVycykpCisgICAgICAgIGlmIHNlbGYuaXNfY29uc3RydWN0b3I6CisgICAgICAg
ICAgICBpbnRlcmZhY2UgPSBpbnRlcmZhY2UgKyAiIFtDb25zdHJ1Y3Rvcl0iCisKKyAgICAgICAg
cmV0dXJuIGludGVyZmFjZQorCisKK2NsYXNzIEJ1aWx0aW5zQ29sbGVjdGlvbjoKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgZnJhbWV3b3JrX25hbWUpOgorICAgICAgICBzZWxmLl9jb3B5cmlnaHRf
bGluZXMgPSBzZXQoKQorICAgICAgICBzZWxmLm9iamVjdHMgPSBbXQorICAgICAgICBzZWxmLmZy
YW1ld29yayA9IEZyYW1ld29yay5mcm9tU3RyaW5nKGZyYW1ld29ya19uYW1lKQorICAgICAgICBs
b2cuZGVidWcoIkNyZWF0ZWQgbmV3IEJ1aWx0aW5zIGNvbGxlY3Rpb24uIikKKworICAgIGRlZiBw
YXJzZV9idWlsdGluc19maWxlKHNlbGYsIGZpbGVuYW1lLCB0ZXh0KToKKyAgICAgICAgbG9nLmRl
YnVnKCJQYXJzaW5nIGJ1aWx0aW5zIGZpbGU6ICVzIiAlIGZpbGVuYW1lKQorCisgICAgICAgIHBh
cnNlZF9jb3B5cmlnaHRzID0gc2V0KHNlbGYuX3BhcnNlX2NvcHlyaWdodF9saW5lcyh0ZXh0KSkK
KyAgICAgICAgc2VsZi5fY29weXJpZ2h0X2xpbmVzID0gc2VsZi5fY29weXJpZ2h0X2xpbmVzLnVu
aW9uKHBhcnNlZF9jb3B5cmlnaHRzKQorCisgICAgICAgIGxvZy5kZWJ1ZygiRm91bmQgY29weXJp
Z2h0IGxpbmVzOiIpCisgICAgICAgIGZvciBsaW5lIGluIHNlbGYuX2NvcHlyaWdodF9saW5lczoK
KyAgICAgICAgICAgIGxvZy5kZWJ1ZyhsaW5lKQorICAgICAgICBsb2cuZGVidWcoIiIpCisKKyAg
ICAgICAgb2JqZWN0X25hbWUsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFt
ZShmaWxlbmFtZSkpCisgICAgICAgIGxvZy5kZWJ1ZygiUGFyc2luZyBvYmplY3Q6ICVzIiAlIG9i
amVjdF9uYW1lKQorCisgICAgICAgIHBhcnNlZF9mdW5jdGlvbnMgPSBzZWxmLl9wYXJzZV9mdW5j
dGlvbnModGV4dCkKKyAgICAgICAgZm9yIGZ1bmN0aW9uIGluIHBhcnNlZF9mdW5jdGlvbnM6Cisg
ICAgICAgICAgICBmdW5jdGlvbi5vYmplY3QgPSBvYmplY3RfbmFtZQorCisgICAgICAgIGxvZy5k
ZWJ1ZygiUGFyc2VkIGZ1bmN0aW9uczoiKQorICAgICAgICBmb3IgZnVuYyBpbiBwYXJzZWRfZnVu
Y3Rpb25zOgorICAgICAgICAgICAgbG9nLmRlYnVnKGZ1bmMpCisgICAgICAgIGxvZy5kZWJ1Zygi
IikKKworICAgICAgICBuZXdfb2JqZWN0ID0gQnVpbHRpbk9iamVjdChvYmplY3RfbmFtZSwgcGFy
c2VkX2Z1bmN0aW9ucykKKyAgICAgICAgbmV3X29iamVjdC5jb2xsZWN0aW9uID0gc2VsZgorICAg
ICAgICBzZWxmLm9iamVjdHMuYXBwZW5kKG5ld19vYmplY3QpCisKKyAgICBkZWYgY29weXJpZ2h0
cyhzZWxmKToKKyAgICAgICAgb3duZXJfdG9feWVhcnMgPSBkaWN0KCkKKyAgICAgICAgY29weXJp
Z2h0WWVhclJlZ0V4cCA9IHJlLmNvbXBpbGUociIoXGR7NH0pWywgXXswLDJ9IikKKyAgICAgICAg
b3duZXJTdGFydFJlZ0V4cCA9IHJlLmNvbXBpbGUociJbXlxkLCBdIikKKworICAgICAgICAjIFJl
dHVybnMgZGVkdXBsaWNhdGVkIGNvcHlyaWdodHMga2V5ZWQgb24gdGhlIG93bmVyLgorICAgICAg
ICBmb3IgbGluZSBpbiBzZWxmLl9jb3B5cmlnaHRfbGluZXM6CisgICAgICAgICAgICB5ZWFycyA9
IHNldChjb3B5cmlnaHRZZWFyUmVnRXhwLmZpbmRhbGwobGluZSkpCisgICAgICAgICAgICBvd25l
ckluZGV4ID0gb3duZXJTdGFydFJlZ0V4cC5zZWFyY2gobGluZSkuc3RhcnQoKQorICAgICAgICAg
ICAgb3duZXIgPSBsaW5lW293bmVySW5kZXg6XQorICAgICAgICAgICAgbG9nLmRlYnVnKCJGb3Vu
ZCB5ZWFyczogJXMgYW5kIG93bmVyOiAlcyIgJSAoeWVhcnMsIG93bmVyKSkKKyAgICAgICAgICAg
IGlmIG93bmVyIG5vdCBpbiBvd25lcl90b195ZWFyczoKKyAgICAgICAgICAgICAgICBvd25lcl90
b195ZWFyc1tvd25lcl0gPSBzZXQoKQorCisgICAgICAgICAgICBvd25lcl90b195ZWFyc1tvd25l
cl0gPSBvd25lcl90b195ZWFyc1tvd25lcl0udW5pb24oeWVhcnMpCisKKyAgICAgICAgcmVzdWx0
ID0gW10KKworICAgICAgICBmb3Igb3duZXIsIHllYXJzIGluIG93bmVyX3RvX3llYXJzLml0ZW1z
KCk6CisgICAgICAgICAgICBzb3J0ZWRfeWVhcnMgPSBsaXN0KHllYXJzKQorICAgICAgICAgICAg
c29ydGVkX3llYXJzLnNvcnQoKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiJXMgJXMiICUg
KCcsICcuam9pbihzb3J0ZWRfeWVhcnMpLCBvd25lcikpCisKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dAorCisgICAgZGVmIGFsbF9mdW5jdGlvbnMoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IFtdCisg
ICAgICAgIGZvciBvYmplY3QgaW4gc2VsZi5vYmplY3RzOgorICAgICAgICAgICAgcmVzdWx0LmV4
dGVuZChvYmplY3QuZnVuY3Rpb25zKQorCisgICAgICAgIHJlc3VsdC5zb3J0KCkKKyAgICAgICAg
cmV0dXJuIHJlc3VsdAorCisgICAgIyBQcml2YXRlIG1ldGhvZHMuCisKKyAgICBkZWYgX3BhcnNl
X2NvcHlyaWdodF9saW5lcyhzZWxmLCB0ZXh0KToKKyAgICAgICAgbGljZW5zZUJsb2NrID0gbXVs
dGlsaW5lQ29tbWVudFJlZ0V4cC5maW5kYWxsKHRleHQpWzBdCisgICAgICAgIGxpY2Vuc2VCbG9j
ayA9IGxpY2Vuc2VCbG9ja1s6bGljZW5zZUJsb2NrLmluZGV4KCJSZWRpc3RyaWJ1dGlvbiIpXQor
CisgICAgICAgIGNvcHlyaWdodExpbmVzID0gW10KKyAgICAgICAgZm9yIGxpbmUgaW4gbGljZW5z
ZUJsb2NrLnNwbGl0KCJcbiIpOgorICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiLyoi
LCAiIikKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIiovIiwgIiIpCisgICAgICAg
ICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIqIiwgIiIpCisgICAgICAgICAgICBsaW5lID0gbGlu
ZS5yZXBsYWNlKCJDb3B5cmlnaHQiLCAiIikKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxh
Y2UoImNvcHlyaWdodCIsICIiKQorICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKEMp
IiwgIiIpCisgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIoYykiLCAiIikKKyAgICAg
ICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKworICAgICAgICAgICAgaWYgbGVuKGxpbmUpID09
IDA6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgY29weXJpZ2h0TGlu
ZXMuYXBwZW5kKGxpbmUpCisKKyAgICAgICAgcmV0dXJuIGNvcHlyaWdodExpbmVzCisKKyAgICBk
ZWYgX3BhcnNlX2Z1bmN0aW9ucyhzZWxmLCB0ZXh0KToKKyAgICAgICAgdGV4dCA9IG11bHRpbGlu
ZUNvbW1lbnRSZWdFeHAuc3ViKCIvKiovIiwgc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAuc3ViKCIv
L1xuIiwgdGV4dCkpCisKKyAgICAgICAgbWF0Y2hlcyA9IFtmdW5jIGZvciBmdW5jIGluIGZ1bmN0
aW9uSGVhZFJlZ0V4cC5maW5kaXRlcih0ZXh0KV0KKyAgICAgICAgZnVuY3Rpb25Cb3VuZHMgPSBb
XQorICAgICAgICBzdGFydCA9IDAKKyAgICAgICAgZW5kID0gMAorICAgICAgICBmb3IgbWF0Y2gg
aW4gbWF0Y2hlczoKKyAgICAgICAgICAgIHN0YXJ0ID0gbWF0Y2guc3RhcnQoKQorICAgICAgICAg
ICAgaWYgc3RhcnQgPCBlbmQ6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAg
IGVuZCA9IG1hdGNoLmVuZCgpCisgICAgICAgICAgICB3aGlsZSB0ZXh0W2VuZF0gIT0gJ3snOgor
ICAgICAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAgICAgICAgICAgIGRlcHRoID0gMQorICAg
ICAgICAgICAgZW5kID0gZW5kICsgMQorICAgICAgICAgICAgd2hpbGUgZGVwdGggPiAwOgorICAg
ICAgICAgICAgICAgIGlmIHRleHRbZW5kXSA9PSAneyc6CisgICAgICAgICAgICAgICAgICAgIGRl
cHRoID0gZGVwdGggKyAxCisgICAgICAgICAgICAgICAgZWxpZiB0ZXh0W2VuZF0gPT0gJ30nOgor
ICAgICAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRoIC0gMQorICAgICAgICAgICAgICAgIGVu
ZCA9IGVuZCArIDEKKyAgICAgICAgICAgIGZ1bmN0aW9uQm91bmRzLmFwcGVuZCgoc3RhcnQsIGVu
ZCkpCisKKyAgICAgICAgZnVuY3Rpb25TdHJpbmdzID0gW3RleHRbc3RhcnQ6ZW5kXS5zdHJpcCgp
IGZvciAoc3RhcnQsIGVuZCkgaW4gZnVuY3Rpb25Cb3VuZHNdCisgICAgICAgIHJldHVybiBtYXAo
QnVpbHRpbkZ1bmN0aW9uLmZyb21TdHJpbmcsIGZ1bmN0aW9uU3RyaW5ncykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRl
cy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX3Rl
bXBsYXRlcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNWVkZjY1NmVhMmNlYTRkMGQ0ZjFmNjkyNWQzNGE4ZTEw
YWYzZDgzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
YnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5CkBAIC0wLDAgKzEsMjE5IEBACisjIS91c3Iv
YmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyMgQnVpbHRpbnMgZ2VuZXJhdG9yIHRlbXBsYXRlcywgd2hpY2ggY2FuIGJlIGZpbGxlZCB3
aXRoIHN0cmluZy5UZW1wbGF0ZS4KKworCitjbGFzcyBCdWlsdGluc0dlbmVyYXRvclRlbXBsYXRl
czoKKworICAgIExpY2Vuc2VUZXh0ID0gKAorICAgICIiIlJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCith
cmUgbWV0OgorMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKzIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCitBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKK1RIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKK1BVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKK1NVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KK0NPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCitBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCitU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiIpCisKKyAgICBEb05vdEVkaXRXYXJu
aW5nID0gKAorICAgICIiIi8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGlj
YWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkg
dGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVp
bHRpbnMucHkiIiIpCisKKyAgICBIZWFkZXJJbmNsdWRlR3VhcmRUb3AgPSAoCisgICAgIiIiI2lm
bmRlZiAke2hlYWRlckd1YXJkfQorI2RlZmluZSAke2hlYWRlckd1YXJkfSIiIikKKworICAgIEhl
YWRlckluY2x1ZGVHdWFyZEJvdHRvbSA9ICgKKyAgICAiIiIjZW5kaWYgLy8gJHtoZWFkZXJHdWFy
ZH0KKyIiIikKKworICAgIE5hbWVzcGFjZVRvcCA9ICgKKyAgICAiIiJuYW1lc3BhY2UgJHtuYW1l
c3BhY2V9IHsiIiIpCisKKyAgICBOYW1lc3BhY2VCb3R0b20gPSAoCisgICAgIiIifSAvLyBuYW1l
c3BhY2UgJHtuYW1lc3BhY2V9IiIiKQorCisgICAgQ29tYmluZWRIZWFkZXJTdGF0aWNNYWNyb3Mg
PSAoCisgICAgIiIiI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBm
dW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCisgICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCiske21hY3JvUHJlZml4fV9GT1JF
QUNIX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xB
UkVfQlVJTFRJTl9HRU5FUkFUT1IKKworI2RlZmluZSAke21hY3JvUHJlZml4fV9CVUlMVElOX0VY
SVNUUyhvYmplY3QsIGZ1bmMpIGRlZmluZWQgJHttYWNyb1ByZWZpeH1fQlVJTFRJTl8gIyMgb2Jq
ZWN0ICMjIF8gIyMgZnVuYyIiIikKKworICAgIFNlcGFyYXRlSGVhZGVyU3RhdGljTWFjcm9zID0g
KAorICAgICIiIiNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVu
Y3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAorICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
KiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKworJHttYWNyb1ByZWZpeH1fRk9SRUFD
SF8ke29iamVjdE5hbWV9X0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQor
I3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKKworI2RlZmluZSAke21hY3JvUHJlZml4
fV9CVUlMVElOXyR7b2JqZWN0TmFtZX1fRVhJU1RTKG9iamVjdCwgZnVuYykgZGVmaW5lZCAke21h
Y3JvUHJlZml4fV9CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jIiIiKQorCisgICAgQ29t
YmluZWRKU0NJbXBsZW1lbnRhdGlvblN0YXRpY01hY3JvcyA9ICgKKyAgICAiIiIKKyNkZWZpbmUg
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50
Q291bnQpIFxcCitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihK
U0M6OlZNJiB2bSkgXFwKK3tcXAorICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+
Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCkt
PmNvZGVOYW1lIyNTb3VyY2UoKSk7IFwKK30KKyR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJ
Tl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9H
RU5FUkFUT1IKKyIiIikKKworICAgIFNlcGFyYXRlSlNDSW1wbGVtZW50YXRpb25TdGF0aWNNYWNy
b3MgPSAoCisgICAgIiIiCisjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFt
ZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCit7XFwKKyAgICByZXR1cm4g
dm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0s
IHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyBcCit9Ciske21h
Y3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShERUZJTkVfQlVJ
TFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCisiIiIpCisK
KyAgICBDb21iaW5lZFdlYkNvcmVJbXBsZW1lbnRhdGlvblN0YXRpY01hY3JvcyA9ICgKKyAgICAg
ICAgIiIiCisjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rp
b25OYW1lLCBhcmd1bWVudENvdW50KSBcXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVO
YW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCit7XFwKKyAgICBKU1ZNQ2xpZW50RGF0YSog
Y2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7
IFxcCisgICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5h
bWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERh
dGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1l
IyNTb3VyY2UoKSk7IFxcCit9Ciske21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShE
RUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9S
CisiIiIpCisKKyAgICBTZXBhcmF0ZVdlYkNvcmVJbXBsZW1lbnRhdGlvblN0YXRpY01hY3JvcyA9
ICgKKyAgICAgICAgIiIiCisjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFt
ZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCit7XFwKKyAgICBKU1ZNQ2xp
ZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xp
ZW50RGF0YSk7IFxcCisgICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4k
e29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0s
IGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygp
LmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCit9Ciske21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2Jq
ZWN0TWFjcm99X0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYg
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCisiIiIpCisKKyAgICBTZXBhcmF0ZVdyYXBwZXJIZWFk
ZXJCb2lsZXJwbGF0ZSA9ICgKKyAgICAiIiJjbGFzcyAke29iamVjdE5hbWV9QnVpbHRpbnNXcmFw
cGVyIDogcHJpdmF0ZSBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgJHtvYmplY3ROYW1lfUJ1aWx0aW5zV3JhcHBlcihKU0M6OlZNKiB2bSkKKyAgICAgICAgOiBt
X3ZtKCp2bSkKKyAgICAgICAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9C
VUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElaRV9CVUlMVElOX05BTUVTKQorI2RlZmluZSBJ
TklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5n
dGgpICwgbV8jI25hbWUjI1NvdXJjZShKU0M6Om1ha2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRl
RnJvbUxpdGVyYWwoc18jI25hbWUsIGxlbmd0aCkpKQorICAgICAgICAke21hY3JvUHJlZml4fV9G
T1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShJTklUSUFMSVpFX0JVSUxUSU5fU09V
UkNFX01FTUJFUlMpCisjdW5kZWYgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCisg
ICAgeworICAgIH0KKworI2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBm
dW5jdGlvbk5hbWUsIGxlbmd0aCkgXFwKKyAgICBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFxcCisgICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBu
YW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CisgICAgJHtt
YWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoRVhQT1NFX0JV
SUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMKKwor
ICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9GVU5DVElP
Tl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKQorCisgICAgdm9pZCBl
eHBvcnROYW1lcygpOworCitwcml2YXRlOgorICAgIEpTQzo6Vk0mIG1fdm07CisKKyAgICAke21h
Y3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShE
RUNMQVJFX0JVSUxUSU5fTkFNRVMpCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9N
RU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcXAorICAgIEpTQzo6U291cmNlQ29k
ZSBtXyMjbmFtZSMjU291cmNlO1xcCisgICAgSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVjdXRhYmxlOworICAgICR7bWFjcm9QcmVmaXh9X0ZP
UkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0Vf
TUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKKworfTsKKwor
I2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxl
bmd0aCkgXFwKK2lubGluZSBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiAke29iamVj
dE5hbWV9QnVpbHRpbnNXcmFwcGVyOjpuYW1lIyNFeGVjdXRhYmxlKCkgXFwKK3tcXAorICAgIGlm
ICghbV8jI25hbWUjI0V4ZWN1dGFibGUpXFwKKyAgICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUg
PSBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4oSlNDOjpjcmVhdGVC
dWlsdGluRXhlY3V0YWJsZShtX3ZtLCBtXyMjbmFtZSMjU291cmNlLCBmdW5jdGlvbk5hbWUjI1B1
YmxpY05hbWUoKSwgc18jI25hbWUjI0NvbnN0cnVjdEFiaWxpdHkpLCB0aGlzLCAmbV8jI25hbWUj
I0V4ZWN1dGFibGUpO1xcCisgICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1xc
Cit9Ciske21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShE
RUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9FWEVDVVRB
QkxFUworCitpbmxpbmUgdm9pZCAke29iamVjdE5hbWV9QnVpbHRpbnNXcmFwcGVyOjpleHBvcnRO
YW1lcygpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVy
dHlOYW1lcy0+YXBwZW5kRXh0ZXJuYWxOYW1lKG5hbWUjI1B1YmxpY05hbWUoKSwgbmFtZSMjUHJp
dmF0ZU5hbWUoKSk7CisgICAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9C
VUlMVElOX0ZVTkNUSU9OX05BTUUoRVhQT1JUX0ZVTkNUSU9OX05BTUUpCisjdW5kZWYgRVhQT1JU
X0ZVTkNUSU9OX05BTUUKK30KKworY2xhc3MgJHtvYmplY3ROYW1lfUJ1aWx0aW5GdW5jdGlvbnMg
eworcHVibGljOgorICAgIGV4cGxpY2l0ICR7b2JqZWN0TmFtZX1CdWlsdGluRnVuY3Rpb25zKEpT
Qzo6Vk0mIHZtKSA6IG1fdm0odm0pIHsgfQorCisgICAgdm9pZCBpbml0KEpTQzo6SlNHbG9iYWxP
YmplY3QmKTsKKyAgICB2b2lkIHZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImKTsKKworcHVibGljOgor
ICAgIEpTQzo6Vk0mIG1fdm07CisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1C
RVJTKGZ1bmN0aW9uTmFtZSkgXFwKKyAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTRnVuY3Rp
b24+IG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uOworICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVB
Q0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9T
T1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKK307
CisKK2lubGluZSB2b2lkICR7b2JqZWN0TmFtZX1CdWlsdGluRnVuY3Rpb25zOjppbml0KEpTQzo6
SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9O
KGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aClcXAorICAgIG1fIyNmdW5jdGlvbk5hbWUj
I0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0
ZUJ1aWx0aW5GdW5jdGlvbihtX3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFs
T2JqZWN0KSk7CisgICAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlM
VElOX0NPREUoRVhQT1JUX0ZVTkNUSU9OKQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTgorfQorCitp
bmxpbmUgdm9pZCAke29iamVjdE5hbWV9QnVpbHRpbkZ1bmN0aW9uczo6dmlzaXQoSlNDOjpTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyNkZWZpbmUgVklTSVRfRlVOQ1RJT04obmFtZSkgdmlzaXRv
ci5hcHBlbmQoJm1fIyNuYW1lIyNGdW5jdGlvbik7CisgICAgJHttYWNyb1ByZWZpeH1fRk9SRUFD
SF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0ZVTkNUSU9OX05BTUUoVklTSVRfRlVOQ1RJT04pCisj
dW5kZWYgVklTSVRfRlVOQ1RJT04KK30KKyIiIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGRmZjQxODczZGEyYjY1YTc3MTE0Y2Y1ZDQxZTg3YTRjMGQzMDYzN2MuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMKKysrIC9kZXYvbnVsbApAQCAtMSwzNDMg
KzAsMCBAQAotIyEvdXNyL2Jpbi9weXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBh
cmUgbWV0OgotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotIyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSMgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotIyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBhcmdwYXJz
ZQotaW1wb3J0IGZpbGVjbXAKLWltcG9ydCBmbm1hdGNoCi1pbXBvcnQgb3MKLWltcG9ydCByZQot
aW1wb3J0IHNodXRpbAotaW1wb3J0IHN5cwotaW1wb3J0IGRhdGV0aW1lCi1pbXBvcnQganNvbgot
Ci1wYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCi1wYXJzZXIuYWRkX2FyZ3VtZW50
KCdpbnB1dF9maWxlJywgbmFyZ3M9JyonLCBoZWxwPSdJbnB1dCBKUyBmaWxlcyB3aGljaCBidWls
dGlucyBnZW5lcmF0ZWQgZnJvbScpCi1wYXJzZXIuYWRkX2FyZ3VtZW50KCctLWlucHV0LWRpcmVj
dG9yeScsIGhlbHA9J0FsbCBKUyBmaWxlcyB3aWxsIGJlIHVzZWQgYXMgaW5wdXQgZnJvbSB0aGlz
IGRpcmVjdG9yeS4nKQotcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1vdXRwdXQnLCBoZWxwPSdwYXRo
IHRvIG91dHB1dCBjcHAgb3IgaCBmaWxlJykKLXBhcnNlci5hZGRfYXJndW1lbnQoJy0tcHJlZml4
JywgZGVmYXVsdD0nSlNDJywgaGVscD0ncHJlZml4IHVzZWQgZm9yIHB1YmxpYyBtYWNyb3MnKQot
cGFyc2VyLmFkZF9hcmd1bWVudCgnLS1uYW1lc3BhY2UnLCBkZWZhdWx0PSdKU0MnLCBoZWxwPSdD
KysgbmFtZXNwYWNlJykKLWFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCi0KLWNvcHlyaWdodFRl
eHQgPSAiIiIgKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqL1xuCi0iIiIK
LQotZ2VuZXJhdG9yU3RyaW5nID0gIi8qIEdlbmVyYXRlZCBieSAlcyBkbyBub3QgaGFuZCBlZGl0
LiAqL1xuIiAlIG9zLnBhdGguYmFzZW5hbWUoX19maWxlX18pCi0KLWZ1bmN0aW9uSGVhZFJlZ0V4
cCA9IHJlLmNvbXBpbGUociIoPzpmdW5jdGlvbnxjb25zdHJ1Y3RvcilccytcdytccypcKC4qP1wp
IiwgcmUuTVVMVElMSU5FIHwgcmUuUykKLWZ1bmN0aW9uTmFtZVJlZ0V4cCA9IHJlLmNvbXBpbGUo
ciIoPzpmdW5jdGlvbnxjb25zdHJ1Y3RvcilccysoXHcrKVxzKlwoIiwgcmUuTVVMVElMSU5FIHwg
cmUuUykKLWZ1bmN0aW9uSXNDb25zdHJ1Y3RvclJlZ0V4cCA9IHJlLmNvbXBpbGUociJeY29uc3Ry
dWN0b3IiLCByZS5NVUxUSUxJTkUgfCByZS5TKQotZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIgPSBy
ZS5jb21waWxlKHIiXig/OmZ1bmN0aW9ufGNvbnN0cnVjdG9yKVxzKyg/Olx3KylccypcKCgoPzpc
cypcdyspP1xzKig/OlxzKixccypcdyspKik/XHMqXCkiLCByZS5NVUxUSUxJTkUgfCByZS5TKQot
Ci1tdWx0aWxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXCouKj9cKlwvIiwgcmUu
TVVMVElMSU5FIHwgcmUuUykKLXNpbmdsZUxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShy
IlwvXC8uKj9cbiIsIHJlLk1VTFRJTElORSB8IHJlLlMpCi0KLWRlZiBnZXRDb3B5cmlnaHQoc291
cmNlKToKLSAgICBjb3B5cmlnaHRCbG9jayA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuZmluZGFs
bChzb3VyY2UpWzBdCi0gICAgY29weXJpZ2h0QmxvY2sgPSBjb3B5cmlnaHRCbG9ja1s6Y29weXJp
Z2h0QmxvY2suaW5kZXgoIlJlZGlzdHJpYnV0aW9uIildCi0gICAgY29weVJpZ2h0TGluZXMgPSBb
XQotCi0gICAgZm9yIGxpbmUgaW4gY29weXJpZ2h0QmxvY2suc3BsaXQoIlxuIik6Ci0gICAgICAg
IGxpbmUgPSBsaW5lLnJlcGxhY2UoIi8qIiwgIiIpCi0gICAgICAgIGxpbmUgPSBsaW5lLnJlcGxh
Y2UoIiovIiwgIiIpCi0gICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIioiLCAiIikKLSAgICAg
ICAgbGluZSA9IGxpbmUucmVwbGFjZSgiQ29weXJpZ2h0IiwgIiIpCi0gICAgICAgIGxpbmUgPSBs
aW5lLnJlcGxhY2UoImNvcHlyaWdodCIsICIiKQotICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNl
KCIoQykiLCAiIikKLSAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKGMpIiwgIiIpCi0gICAg
ICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKLSAgICAgICAgaWYgbGVuKGxpbmUpID09IDA6Ci0gICAg
ICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGNvcHlSaWdodExpbmVzLmFwcGVuZChsaW5lKQot
ICAgIAotICAgIHJldHVybiBsaXN0KHNldChjb3B5UmlnaHRMaW5lcykpCi0KLWNsYXNzIEZ1bmN0
aW9uKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHNvdXJjZSwgaXNDb25z
dHJ1Y3RvciwgcGFyYW1ldGVycyk6Ci0gICAgICAgIHNlbGYubmFtZSA9IG5hbWUKLSAgICAgICAg
c2VsZi5zb3VyY2UgPSBzb3VyY2UKLSAgICAgICAgc2VsZi5pc0NvbnN0cnVjdG9yID0gaXNDb25z
dHJ1Y3RvcgotICAgICAgICBzZWxmLnBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzCi0KLSAgICBkZWYg
bWFuZ2xlTmFtZShzZWxmLCBvYmplY3QpOgotICAgICAgICBxTmFtZSA9IG9iamVjdCArICIuIiAr
IHNlbGYubmFtZQotICAgICAgICBtYW5nbGVkTmFtZSA9ICIiCi0gICAgICAgIGkgPSAwCi0gICAg
ICAgIHdoaWxlIGkgPCBsZW4ocU5hbWUpOgotICAgICAgICAgICAgaWYgcU5hbWVbaV0gPT0gJy4n
OgotICAgICAgICAgICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtpICsg
MV0udXBwZXIoKQotICAgICAgICAgICAgICAgIGkgPSBpICsgMQotICAgICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lICsgcU5hbWVbaV0KLSAg
ICAgICAgICAgIGkgPSBpICsgMQotICAgICAgICBpZiBzZWxmLmlzQ29uc3RydWN0b3I6Ci0gICAg
ICAgICAgICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lICsgIkNvbnN0cnVjdG9yIgotICAgICAg
ICByZXR1cm4gbWFuZ2xlZE5hbWUKLQotZGVmIGdldEZ1bmN0aW9ucyhzb3VyY2UpOgotCi0gICAg
c291cmNlID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5zdWIoIi8qKi8iLCBzaW5nbGVMaW5lQ29t
bWVudFJlZ0V4cC5zdWIoIi8vXG4iLCBzb3VyY2UpKQotCi0gICAgbWF0Y2hlcyA9IFsgZiBmb3Ig
ZiBpbiBmdW5jdGlvbkhlYWRSZWdFeHAuZmluZGl0ZXIoc291cmNlKV0KLSAgICBmdW5jdGlvbkJv
dW5kcyA9IFtdCi0gICAgc3RhcnQgPSAwCi0gICAgZW5kID0gMAotICAgIGZvciBtYXRjaCBpbiBt
YXRjaGVzOgotICAgICAgICBzdGFydCA9IG1hdGNoLnN0YXJ0KCkKLSAgICAgICAgaWYgc3RhcnQg
PCBlbmQ6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBlbmQgPSBtYXRjaC5lbmQoKQot
ICAgICAgICB3aGlsZSBzb3VyY2VbZW5kXSAhPSAneyc6Ci0gICAgICAgICAgICBlbmQgPSBlbmQg
KyAxCi0gICAgICAgIGRlcHRoID0gMQotICAgICAgICBlbmQgPSBlbmQgKyAxCi0gICAgICAgIHdo
aWxlIGRlcHRoID4gMDoKLSAgICAgICAgICAgIGlmIHNvdXJjZVtlbmRdID09ICd7JzoKLSAgICAg
ICAgICAgICAgICBkZXB0aCA9IGRlcHRoICsgMQotICAgICAgICAgICAgZWxpZiBzb3VyY2VbZW5k
XSA9PSAnfSc6Ci0gICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCAtIDEKLSAgICAgICAgICAg
IGVuZCA9IGVuZCArIDEKLSAgICAgICAgZnVuY3Rpb25Cb3VuZHMuYXBwZW5kKChzdGFydCwgZW5k
KSkKLQotICAgIGZ1bmN0aW9ucyA9IFtzb3VyY2Vbc3RhcnQ6ZW5kXS5zdHJpcCgpIGZvciAoc3Rh
cnQsIGVuZCkgaW4gZnVuY3Rpb25Cb3VuZHNdCi0gICAgcmVzdWx0ID0gW10KLSAgICBmb3IgZnVu
Y3Rpb24gaW4gZnVuY3Rpb25zOgotICAgICAgICBmdW5jdGlvbiA9IG11bHRpbGluZUNvbW1lbnRS
ZWdFeHAuc3ViKCIiLCBmdW5jdGlvbikKLSAgICAgICAgZnVuY3Rpb25OYW1lID0gZnVuY3Rpb25O
YW1lUmVnRXhwLmZpbmRhbGwoZnVuY3Rpb24pWzBdCi0gICAgICAgIGZ1bmN0aW9uSXNDb25zdHJ1
Y3RvciA9IGZ1bmN0aW9uSXNDb25zdHJ1Y3RvclJlZ0V4cC5tYXRjaChmdW5jdGlvbikgIT0gTm9u
ZQotICAgICAgICBmdW5jdGlvblBhcmFtZXRlcnMgPSBmdW5jdGlvblBhcmFtZXRlckZpbmRlci5m
aW5kYWxsKGZ1bmN0aW9uKVswXS5zcGxpdCgnLCcpCi0gICAgICAgIGlmIGxlbihmdW5jdGlvblBh
cmFtZXRlcnNbMF0pID09IDA6Ci0gICAgICAgICAgICBmdW5jdGlvblBhcmFtZXRlcnMgPSBbXQot
Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoRnVuY3Rpb24oZnVuY3Rpb25OYW1lLCBmdW5jdGlvbiwg
ZnVuY3Rpb25Jc0NvbnN0cnVjdG9yLCBmdW5jdGlvblBhcmFtZXRlcnMpKQotICAgIHJldHVybiBy
ZXN1bHQKLQotZGVmIHdyaXRlSW5jbHVkZURpcmVjdGl2ZXMod3JpdGVyLCBoZWFkZXJOYW1lcyk6
Ci0gICAgZm9yIGhlYWRlck5hbWUgaW4gaGVhZGVyTmFtZXM6Ci0gICAgICAgIHdyaXRlci53cml0
ZSgiI2luY2x1ZGUgIiArIGhlYWRlck5hbWUgKyAiXG4iKQotCi1kZWYgZ2VuZXJhdGVDb2RlKHNv
dXJjZSk6Ci0gICAgaW5wdXRGaWxlID0gb3Blbihzb3VyY2UsICJyIikKLSAgICBiYXNlTmFtZSA9
IG9zLnBhdGguYmFzZW5hbWUoc291cmNlKS5yZXBsYWNlKCIuanMiLCAiIikKLSAgICAKLSAgICBz
b3VyY2UgPSAiIgotICAgIGZvciBsaW5lIGluIGlucHV0RmlsZToKLSAgICAgICAgc291cmNlID0g
c291cmNlICsgbGluZQotICAgIAotICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAiY3lnd2luIjoKLSAg
ICAgICAgc291cmNlID0gc291cmNlLnJlcGxhY2UoIlxyXG4iLCAiXG4iKQotICAgIHJldHVybiAo
YmFzZU5hbWUsIGdldEZ1bmN0aW9ucyhzb3VyY2UpLCBnZXRDb3B5cmlnaHQoc291cmNlKSkKLQot
YnVpbHRpbnMgPSBbXQotY29weXJpZ2h0cyA9IFtdCi0ob3V0cHV0X2Jhc2UsIF8pID0gb3MucGF0
aC5zcGxpdGV4dChhcmdzLm91dHB1dCkKLQotaWYgYXJncy5pbnB1dF9kaXJlY3Rvcnk6Ci0gICAg
Zm9yIGZpbGUgaW4gb3MubGlzdGRpcihhcmdzLmlucHV0X2RpcmVjdG9yeSk6Ci0gICAgICAgIGFy
Z3MuaW5wdXRfZmlsZS5hcHBlbmQob3MucGF0aC5qb2luKGFyZ3MuaW5wdXRfZGlyZWN0b3J5LCBm
aWxlKSkKLQotZm9yIGZpbGUgaW4gYXJncy5pbnB1dF9maWxlOgotICAgIGlmIGZubWF0Y2guZm5t
YXRjaChmaWxlLCAnKi5qcycpOgotICAgICAgICAoYmFzZU5hbWUsIGZ1bmN0aW9ucywgb2JqZWN0
Q29weXJpZ2h0cykgPSBnZW5lcmF0ZUNvZGUoZmlsZSkKLSAgICAgICAgY29weXJpZ2h0cy5leHRl
bmQob2JqZWN0Q29weXJpZ2h0cykKLSAgICAgICAgYnVpbHRpbnMuYXBwZW5kKChiYXNlTmFtZSwg
ZnVuY3Rpb25zKSkKLW5hbWVzcGFjZSA9IGFyZ3MubmFtZXNwYWNlCi1tYWNyb1ByZWZpeCA9IGFy
Z3MucHJlZml4Ci1zY29wZU5hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUo
YXJncy5vdXRwdXQpKVswXQotaW5jbHVkZUd1YXJkID0gc2NvcGVOYW1lICsgIl9IIgotaGVhZGVy
TmFtZSA9IHNjb3BlTmFtZSArICIuaCIKLQotaGVhZGVySW5jbHVkZXMgPSBbIlwiQnVpbHRpblV0
aWxzLmhcIiJdIGlmIG5hbWVzcGFjZSA9PSAiSlNDIiBlbHNlIFsiPGJ1aWx0aW5zL0J1aWx0aW5V
dGlscy5oPiJdCi1jb250ZW50SW5jbHVkZXMgPSBbIlwiQnVpbHRpbkV4ZWN1dGFibGVzLmhcIiIs
ICJcIkV4ZWN1dGFibGUuaFwiIiwgIlwiSlNDZWxsSW5saW5lcy5oXCIiLCAiXCJWTS5oXCIiXSBp
ZiBuYW1lc3BhY2UgPT0gIkpTQyIgZWxzZSBbIjxydW50aW1lL0V4ZWN1dGFibGUuaD4iLCAiPHJ1
bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oPiIsICI8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5o
PiIsICI8cnVudGltZS9KU0NlbGxJbmxpbmVzLmg+IiwgIjxydW50aW1lL1ZNLmg+IiwgIlwiV2Vi
Q29yZUpTQ2xpZW50RGF0YS5oXCIiXQotCi1jb3B5cmlnaHRzID0gbGlzdChzZXQoY29weXJpZ2h0
cykpCi0KLWNvcHlyaWdodEJvZHkgPSAiIgotZm9yIGNvcHlyaWdodCBpbiBjb3B5cmlnaHRzOgot
ICAgIGNvcHlyaWdodEJvZHkgPSBjb3B5cmlnaHRCb2R5ICsiICogQ29weXJpZ2h0IChDKSAiICsg
Y29weXJpZ2h0ICsgIlxuIgotCi1idWlsdGluc0hlYWRlciA9IG9wZW4ob3V0cHV0X2Jhc2UgKyAi
LmgudG1wIiwgInciKQotYnVpbHRpbnNJbXBsZW1lbnRhdGlvbiA9IG9wZW4ob3V0cHV0X2Jhc2Ug
KyAiLmNwcC50bXAiLCAidyIpCi1jb3B5cmlnaHRUZXh0ID0gIi8qXG4iICsgY29weXJpZ2h0Qm9k
eSArIGNvcHlyaWdodFRleHQKLWJ1aWx0aW5zSGVhZGVyLndyaXRlKCIiIiVzCi0lcwotCi0jaWZu
ZGVmICVzCi0jZGVmaW5lICVzCi0KLSIiIiAlIChnZW5lcmF0b3JTdHJpbmcsIGNvcHlyaWdodFRl
eHQsIGluY2x1ZGVHdWFyZCwgaW5jbHVkZUd1YXJkKSkKLQotd3JpdGVJbmNsdWRlRGlyZWN0aXZl
cyhidWlsdGluc0hlYWRlciwgaGVhZGVySW5jbHVkZXMpCi0KLWJ1aWx0aW5zSGVhZGVyLndyaXRl
KCIiIgotbmFtZXNwYWNlIEpTQyB7Ci0gICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwotfQot
Ci1uYW1lc3BhY2UgJXMgewotCi0iIiIgJSBuYW1lc3BhY2UpCi0KLWNvZGVSZWZlcmVuY2VzID0g
W10KLQotZm9yIChvYmplY3ROYW1lLCBmdW5jdGlvbnMpIGluIGJ1aWx0aW5zOgotICAgIHByaW50
KCJHZW5lcmF0aW5nIGJpbmRpbmdzIGZvciB0aGUgJXMgYnVpbHRpbi4iICUgb2JqZWN0TmFtZSkK
LSAgICBidWlsdGluc0hlYWRlci53cml0ZSgiLyogJXMgZnVuY3Rpb25zICovXG4iICUgb2JqZWN0
TmFtZSkKLSAgICBmb3IgZnVuY3Rpb24gaW4gZnVuY3Rpb25zOgotICAgICAgICBuYW1lID0gZnVu
Y3Rpb24ubmFtZQotICAgICAgICBtYW5nbGVkTmFtZSA9IGZ1bmN0aW9uLm1hbmdsZU5hbWUob2Jq
ZWN0TmFtZSkKLSAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZVswXS5sb3dlcigpICsg
bWFuZ2xlZE5hbWVbMTpdICsgIkNvZGUiCi0gICAgICAgIGNvZGVSZWZlcmVuY2VzLmFwcGVuZCgo
bWFuZ2xlZE5hbWUsIGZ1bmN0aW9uKSkKLSAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoImV4
dGVybiBjb25zdCBjaGFyKiBzXyVzO1xuIiAlIG1hbmdsZWROYW1lKQotICAgICAgICBidWlsdGlu
c0hlYWRlci53cml0ZSgiZXh0ZXJuIGNvbnN0IGludCBzXyVzTGVuZ3RoO1xuIiAlIG1hbmdsZWRO
YW1lKQotICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiZXh0ZXJuIGNvbnN0IEpTQzo6Q29u
c3RydWN0QWJpbGl0eSBzXyVzQ29uc3RydWN0QWJpbGl0eTtcbiIgJSBtYW5nbGVkTmFtZSkKLSAg
ICBidWlsdGluc0hlYWRlci53cml0ZSgiXG4iKQotICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIj
ZGVmaW5lICVzX0ZPUkVBQ0hfJXNfQlVJTFRJTihtYWNybykgXFxcbiIgJSAobWFjcm9QcmVmaXgs
IG9iamVjdE5hbWUucmVwbGFjZSgiLiIsICJfIikudXBwZXIoKSkpCi0gICAgZm9yIGZ1bmN0aW9u
IGluIGZ1bmN0aW9uczoKLSAgICAgICAgbWFuZ2xlZE5hbWUgPSBmdW5jdGlvbi5tYW5nbGVOYW1l
KG9iamVjdE5hbWUpCi0gICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIgICAgbWFjcm8oJXMs
ICVzLCAlZCkgXFxcbiIgJSAoZnVuY3Rpb24ubmFtZSwgbWFuZ2xlZE5hbWUsIGxlbihmdW5jdGlv
bi5wYXJhbWV0ZXJzKSkpCi0gICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuIikKLSAgICBmb3Ig
ZnVuY3Rpb24gaW4gZnVuY3Rpb25zOgotICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiI2Rl
ZmluZSAlc19CVUlMVElOXyVzIDFcbiIgJSAobWFjcm9QcmVmaXgsIGZ1bmN0aW9uLm1hbmdsZU5h
bWUob2JqZWN0TmFtZSkudXBwZXIoKSkpCi0gICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxuXG4i
KQotbmFtZXMgPSBbXQotYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgJXNfRk9SRUFDSF9C
VUlMVElOKG1hY3JvKVxcXG4iICUgbWFjcm9QcmVmaXgpCi1mb3IgKGNvZGVSZWZlcmVuY2UsIGZ1
bmN0aW9uKSBpbiBjb2RlUmVmZXJlbmNlczoKLSAgICBidWlsdGluc0hlYWRlci53cml0ZSgiICAg
IG1hY3JvKCVzLCAlcywgc18lc0xlbmd0aCkgXFxcbiIgJSAoY29kZVJlZmVyZW5jZSwgZnVuY3Rp
b24ubmFtZSwgY29kZVJlZmVyZW5jZSkpCi0gICAgbmFtZXMuYXBwZW5kKGZ1bmN0aW9uLm5hbWUp
Ci0KLWJ1aWx0aW5zSGVhZGVyLndyaXRlKCJcblxuIikKLWJ1aWx0aW5zSGVhZGVyLndyaXRlKCIj
ZGVmaW5lICVzX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcXFxuIiAlIG1h
Y3JvUHJlZml4KQotZm9yIG5hbWUgaW4gc29ydGVkKHNldChuYW1lcykpOgotICAgIGJ1aWx0aW5z
SGVhZGVyLndyaXRlKCIgICAgbWFjcm8oJXMpIFxcXG4iICUgbmFtZSkKLWJ1aWx0aW5zSGVhZGVy
LndyaXRlKCIiIgotCi0jZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUs
IGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKLSAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0
YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7Ci0KLSVzX0ZPUkVBQ0hfQlVJTFRJ
TihERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQotI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5F
UkFUT1IKLQotI2RlZmluZSAlc19CVUlMVElOX0VYSVNUUyhuYW1lKSBkZWZpbmVkICVzX0JVSUxU
SU5fICMjIG5hbWUKLQotfQotCi0jZW5kaWYgLy8gJXMKLQotIiIiICUgKG1hY3JvUHJlZml4LCBt
YWNyb1ByZWZpeCwgbWFjcm9QcmVmaXgsIGluY2x1ZGVHdWFyZCkpCi0KLWJ1aWx0aW5zSW1wbGVt
ZW50YXRpb24ud3JpdGUoIiIiJXMKLSVzCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1
ZGUgIiVzIgotCi0iIiIgICUgKGdlbmVyYXRvclN0cmluZywgY29weXJpZ2h0VGV4dCwgaGVhZGVy
TmFtZSkpCi0KLXdyaXRlSW5jbHVkZURpcmVjdGl2ZXMoYnVpbHRpbnNJbXBsZW1lbnRhdGlvbiwg
Y29udGVudEluY2x1ZGVzKQotCi1idWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIgotbmFt
ZXNwYWNlICVzIHsKLQotIiIiICAlIChuYW1lc3BhY2UpKQotCi0KLQotZm9yIChjb2RlUmVmZXJl
bmNlLCBmdW5jdGlvbikgaW4gY29kZVJlZmVyZW5jZXM6Ci0gICAgc291cmNlID0gZnVuY3Rpb24u
c291cmNlCi0gICAgc291cmNlID0gIihmdW5jdGlvbiAiICsgc291cmNlW3NvdXJjZS5pbmRleCgi
KCIpOl0gKyAiKSIKLSAgICBsaW5lcyA9IGpzb24uZHVtcHMoc291cmNlKVsxOi0xXS5zcGxpdCgi
XFxuIikKLSAgICBzb3VyY2VMZW5ndGggPSBsZW4oc291cmNlKQotICAgIHNvdXJjZSA9ICIiCi0g
ICAgZm9yIGxpbmUgaW4gbGluZXM6Ci0gICAgICAgIHNvdXJjZSA9IHNvdXJjZSArICgiICAgIFwi
JXNcXG5cIiBcXFxuIiAlIGxpbmUpCi0gICAgYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgi
Y29uc3QgY2hhciogc18lcyA9XG4lcztcblxuIiAlIChjb2RlUmVmZXJlbmNlLCBzb3VyY2UpKQot
ICAgIGJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoImNvbnN0IGludCBzXyVzTGVuZ3RoID0g
JWQ7XG5cbiIgJSAoY29kZVJlZmVyZW5jZSwgc291cmNlTGVuZ3RoICsgMSkpICMgKyAxIGZvciBc
bgotICAgIGNvbnN0cnVjdEFiaWxpdHkgPSAiSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RD
b25zdHJ1Y3QiCi0gICAgaWYgZnVuY3Rpb24uaXNDb25zdHJ1Y3RvcjoKLSAgICAgICAgY29uc3Ry
dWN0QWJpbGl0eSA9ICJKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCIKLSAgICBi
dWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCJjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkg
c18lc0NvbnN0cnVjdEFiaWxpdHkgPSAlcztcblxuIiAlIChjb2RlUmVmZXJlbmNlLCBjb25zdHJ1
Y3RBYmlsaXR5KSkgIyArIDEgZm9yIFxuCi0KLWJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUo
IiIiCi0jZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25O
YW1lLCBhcmd1bWVudENvdW50KSBcXAotSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1l
IyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCi0iIiIpOwotCi1pZiAobmFtZXNwYWNlID09ICJK
U0MiKToKLSAgICBidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIntcXAotICAgIHJldHVy
biB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2
bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCi0iIiIp
Ci1lbHNlOgotICAgIGJ1aWx0aW5OYW1lID0gc2NvcGVOYW1lWzBdLmxvd2VyKCkgKyBzY29wZU5h
bWVbMTpdCi0gICAgYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiIiJ7XFwKLSAgICBKU1ZN
Q2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0u
Y2xpZW50RGF0YSk7IFxcCi0gICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMo
KS4lcygpLmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0
aW5GdW5jdGlvbnMoKS4lcygpLmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCi0iIiIlIChidWlsdGlu
TmFtZSwgYnVpbHRpbk5hbWUpKQotCi1idWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIn0K
LSVzX0ZPUkVBQ0hfQlVJTFRJTihERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCi0jdW5kZWYgREVG
SU5FX0JVSUxUSU5fR0VORVJBVE9SCi19Ci0KLSIiIiUgKG1hY3JvUHJlZml4KSkKLQotYnVpbHRp
bnNIZWFkZXIuY2xvc2UoKQotYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi5jbG9zZSgpCi0KLWlmIChu
b3Qgb3MucGF0aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmgiKSkgb3IgKG5vdCBmaWxlY21wLmNt
cChvdXRwdXRfYmFzZSArICIuaC50bXAiLCBvdXRwdXRfYmFzZSArICIuaCIsIHNoYWxsb3c9RmFs
c2UpKToKLSAgICBpZiAob3MucGF0aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmgiKSk6Ci0gICAg
ICAgIG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIuaCIpCi0gICAgb3MucmVuYW1lKG91dHB1dF9i
YXNlICsgIi5oLnRtcCIsIG91dHB1dF9iYXNlICsgIi5oIikKLWVsc2U6Ci0gICAgb3MucmVtb3Zl
KG91dHB1dF9iYXNlICsgIi5oLnRtcCIpCi0KLWlmIChub3Qgb3MucGF0aC5leGlzdHMob3V0cHV0
X2Jhc2UgKyAiLmNwcCIpKSBvciAobm90IGZpbGVjbXAuY21wKG91dHB1dF9iYXNlICsgIi5jcHAu
dG1wIiwgb3V0cHV0X2Jhc2UgKyAiLmNwcCIsIHNoYWxsb3c9RmFsc2UpKToKLSAgICBpZiAob3Mu
cGF0aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmNwcCIpKToKLSAgICAgICAgb3MucmVtb3ZlKG91
dHB1dF9iYXNlICsgIi5jcHAiKQotICAgIG9zLnJlbmFtZShvdXRwdXRfYmFzZSArICIuY3BwLnRt
cCIsIG91dHB1dF9iYXNlICsgIi5jcHAiKQotZWxzZToKLSAgICBvcy5yZW1vdmUob3V0cHV0X2Jh
c2UgKyAiLmNwcC50bXAiKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNzA3MDliNDgwODM4OGU2Nzhm
M2RiMjM4MmY0NmEzZDYzMzM5MDZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKQEAgLTAsMCArMSwxNjQgQEAK
KyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTQgVW5pdmVy
c2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
IyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBUaGlzIHNjcmlwdCBnZW5lcmF0ZXMgQysrIGJp
bmRpbmdzIGZvciBKYXZhU2NyaXB0IGJ1aWx0aW5zLgorIyBHZW5lcmF0b3JzIGZvciBpbmRpdmlk
dWFsIGZpbGVzIGFyZSBsb2NhdGVkIGluIHRoZSBidWlsdGlucy8gZGlyZWN0b3J5LgorCitpbXBv
cnQgZm5tYXRjaAoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcHRwYXJzZQoraW1wb3J0IG9zCisK
K2xvZ2dpbmcuYmFzaWNDb25maWcoZm9ybWF0PSclKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2Upcycs
IGxldmVsPWxvZ2dpbmcuRVJST1IpCitsb2cgPSBsb2dnaW5nLmdldExvZ2dlcignZ2xvYmFsJykK
KworZnJvbSBsYXp5d3JpdGVyIGltcG9ydCBMYXp5RmlsZVdyaXRlcgorCitpbXBvcnQgYnVpbHRp
bnMKK2Zyb20gYnVpbHRpbnMgaW1wb3J0ICoKKworCitkZWYgZ2VuZXJhdGVfYmluZGluZ3NfZm9y
X2J1aWx0aW5zX2ZpbGVzKGJ1aWx0aW5zX2ZpbGVzPVtdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvdXRwdXRfcGF0aD1Ob25lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25jYXRlbmF0ZV9vdXRwdXQ9RmFsc2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbWJpbmVkX291dHB1dD1GYWxzZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWV3b3JrX25hbWU9
IiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlX291dHB1
dD1GYWxzZSk6CisKKyAgICBnZW5lcmF0b3JzID0gW10KKworICAgIG1vZGVsID0gQnVpbHRpbnND
b2xsZWN0aW9uKGZyYW1ld29ya19uYW1lPWZyYW1ld29ya19uYW1lKQorCisgICAgZm9yIGZpbGVw
YXRoIGluIGJ1aWx0aW5zX2ZpbGVzOgorICAgICAgICB3aXRoIG9wZW4oZmlsZXBhdGgsICJyIikg
YXMgZmlsZToKKyAgICAgICAgICAgIGZpbGVfdGV4dCA9IGZpbGUucmVhZCgpCisgICAgICAgICAg
ICBmaWxlX25hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGZpbGVwYXRoKQorCisgICAgICAgICAgICAj
IElmIHRoaXMgaXMgYSB0ZXN0IGZpbGUsIHRoZW4gcmV3cml0ZSB0aGUgZmlsZW5hbWUgdG8gcmVt
b3ZlIHRoZQorICAgICAgICAgICAgIyB0ZXN0IHJ1bm5pbmcgb3B0aW9ucyBlbmNvZGVkIGludG8g
dGhlIGZpbGVuYW1lLgorICAgICAgICAgICAgaWYgZmlsZV9uYW1lLnN0YXJ0c3dpdGgoZnJhbWV3
b3JrX25hbWUpOgorICAgICAgICAgICAgICAgIChfLCBvYmplY3RfbmFtZSwgXykgPSBmaWxlX25h
bWUuc3BsaXQoJy0nKQorICAgICAgICAgICAgICAgIGZpbGVfbmFtZSA9IG9iamVjdF9uYW1lICsg
Jy5qcycKKyAgICAgICAgICAgIG1vZGVsLnBhcnNlX2J1aWx0aW5zX2ZpbGUoZmlsZV9uYW1lLCBm
aWxlX3RleHQpCisKKyAgICBpZiBjb21iaW5lZF9vdXRwdXQ6CisgICAgICAgIGxvZy5kZWJ1Zygi
VXNpbmcgZ2VuZXJhdG9yIHN0eWxlOiBjb21iaW5lZCBmaWxlcyBmb3IgYWxsIGJ1aWx0aW5zLiIp
CisgICAgICAgIGdlbmVyYXRvcnMuYXBwZW5kKEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJHZW5lcmF0
b3IobW9kZWwpKQorICAgICAgICBnZW5lcmF0b3JzLmFwcGVuZChCdWlsdGluc0NvbWJpbmVkSW1w
bGVtZW50YXRpb25HZW5lcmF0b3IobW9kZWwpKQorICAgIGVsc2U6CisgICAgICAgIGxvZy5kZWJ1
ZygiVXNpbmcgZ2VuZXJhdG9yIHN0eWxlOiBzaW5nbGUgZmlsZXMgZm9yIGVhY2ggYnVpbHRpbi4i
KQorICAgICAgICBmb3Igb2JqZWN0IGluIG1vZGVsLm9iamVjdHM6CisgICAgICAgICAgICBnZW5l
cmF0b3JzLmFwcGVuZChCdWlsdGluc1NlcGFyYXRlSGVhZGVyR2VuZXJhdG9yKG1vZGVsLCBvYmpl
Y3QpKQorICAgICAgICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQoQnVpbHRpbnNTZXBhcmF0ZUltcGxl
bWVudGF0aW9uR2VuZXJhdG9yKG1vZGVsLCBvYmplY3QpKQorCisgICAgICAgICAgICBpZiBtb2Rl
bC5mcmFtZXdvcmsgaXMgRnJhbWV3b3Jrcy5XZWJDb3JlOgorICAgICAgICAgICAgICAgIGdlbmVy
YXRvcnMuYXBwZW5kKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9yKG1vZGVsLCBvYmpl
Y3QpKQorCisgICAgbG9nLmRlYnVnKCIiKQorICAgIGxvZy5kZWJ1ZygiR2VuZXJhdGluZyBiaW5k
aW5ncyBmb3IgYnVpbHRpbnMuIikKKworICAgIHRlc3RfcmVzdWx0X2ZpbGVfY29udGVudHMgPSBb
XQorCisgICAgZm9yIGdlbmVyYXRvciBpbiBnZW5lcmF0b3JzOgorICAgICAgICBvdXRwdXRfZmls
ZXBhdGggPSBvcy5wYXRoLmpvaW4ob3V0cHV0X3BhdGgsIGdlbmVyYXRvci5vdXRwdXRfZmlsZW5h
bWUoKSkKKyAgICAgICAgbG9nLmRlYnVnKCJHZW5lcmF0aW5nIG91dHB1dCBmaWxlOiAlcyIgJSBn
ZW5lcmF0b3Iub3V0cHV0X2ZpbGVuYW1lKCkpCisgICAgICAgIG91dHB1dCA9IGdlbmVyYXRvci5n
ZW5lcmF0ZV9vdXRwdXQoKQorCisgICAgICAgIGxvZy5kZWJ1ZygiLS0tIikKKyAgICAgICAgbG9n
LmRlYnVnKCJcbiIgKyBvdXRwdXQpCisgICAgICAgIGxvZy5kZWJ1ZygiLS0tIikKKyAgICAgICAg
aWYgY29uY2F0ZW5hdGVfb3V0cHV0OgorICAgICAgICAgICAgdGVzdF9yZXN1bHRfZmlsZV9jb250
ZW50cy5hcHBlbmQoJyMjIyBCZWdpbiBGaWxlOiAlcycgJSBnZW5lcmF0b3Iub3V0cHV0X2ZpbGVu
YW1lKCkpCisgICAgICAgICAgICB0ZXN0X3Jlc3VsdF9maWxlX2NvbnRlbnRzLmFwcGVuZChvdXRw
dXQpCisgICAgICAgICAgICB0ZXN0X3Jlc3VsdF9maWxlX2NvbnRlbnRzLmFwcGVuZCgnIyMjIEVu
ZCBGaWxlOiAlcycgJSBnZW5lcmF0b3Iub3V0cHV0X2ZpbGVuYW1lKCkpCisgICAgICAgICAgICB0
ZXN0X3Jlc3VsdF9maWxlX2NvbnRlbnRzLmFwcGVuZCgnJykKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIGxvZy5kZWJ1ZygiV3JpdGluZyBmaWxlOiAlcyIgJSBvdXRwdXRfZmlsZXBhdGgpCisg
ICAgICAgICAgICBvdXRwdXRfZmlsZSA9IExhenlGaWxlV3JpdGVyKG91dHB1dF9maWxlcGF0aCwg
Zm9yY2Vfb3V0cHV0KQorICAgICAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUob3V0cHV0KQorICAg
ICAgICAgICAgb3V0cHV0X2ZpbGUuY2xvc2UoKQorCisgICAgaWYgY29uY2F0ZW5hdGVfb3V0cHV0
OgorICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmJhc2VuYW1lKGJ1aWx0
aW5zX2ZpbGVzWzBdKSArICctcmVzdWx0JykKKyAgICAgICAgb3V0cHV0X2ZpbGVwYXRoID0gb3Mu
cGF0aC5qb2luKG91dHB1dF9wYXRoLCBmaWxlbmFtZSkKKyAgICAgICAgbG9nLmRlYnVnKCJXcml0
aW5nIGZpbGU6ICVzIiAlIG91dHB1dF9maWxlcGF0aCkgCisgICAgICAgIG91dHB1dF9maWxlID0g
TGF6eUZpbGVXcml0ZXIob3V0cHV0X2ZpbGVwYXRoLCBmb3JjZV9vdXRwdXQpCisgICAgICAgIG91
dHB1dF9maWxlLndyaXRlKCdcbicuam9pbih0ZXN0X3Jlc3VsdF9maWxlX2NvbnRlbnRzKSkKKyAg
ICAgICAgb3V0cHV0X2ZpbGUuY2xvc2UoKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgor
ICAgIGFsbG93ZWRfZnJhbWV3b3JrX25hbWVzID0gWydKYXZhU2NyaXB0Q29yZScsICdXZWJDb3Jl
J10KKyAgICBjbGlfcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlPSJ1c2FnZTog
JXByb2cgW29wdGlvbnNdIEJ1aWx0aW4xLmpzIFssIEJ1aWx0aW4yLmpzLCAuLi5dIikKKyAgICBj
bGlfcGFyc2VyLmFkZF9vcHRpb24oIi1pIiwgIi0taW5wdXQtZGlyZWN0b3J5IiwgaGVscD0iSWYg
c3BlY2lmaWVkLCBnZW5lcmF0ZXMgYnVpbHRpbnMgZnJvbSBhbGwgSmF2YVNjcmlwdCBmaWxlcyBp
biB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeSBpbiBhZGRpdGlvbiB0byBzcGVjaWZpYyBmaWxlcyBw
YXNzZWQgYXMgYXJndW1lbnRzLiIpCisgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9uKCItbyIsICIt
LW91dHB1dC1kaXJlY3RvcnkiLCBoZWxwPSJEaXJlY3Rvcnkgd2hlcmUgZ2VuZXJhdGVkIGZpbGVz
IHNob3VsZCBiZSB3cml0dGVuLiIpCisgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9uKCItLWZyYW1l
d29yayIsIHR5cGU9ImNob2ljZSIsIGNob2ljZXM9YWxsb3dlZF9mcmFtZXdvcmtfbmFtZXMsIGhl
bHA9IkRlc3RpbmF0aW9uIGZyYW1ld29yayBmb3IgZ2VuZXJhdGVkIGZpbGVzLiIpCisgICAgY2xp
X3BhcnNlci5hZGRfb3B0aW9uKCItLWZvcmNlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0i
Rm9yY2Ugb3V0cHV0IG9mIGdlbmVyYXRlZCBzY3JpcHRzLCBldmVuIGlmIG5vdGhpbmcgY2hhbmdl
ZC4iKQorICAgIGNsaV9wYXJzZXIuYWRkX29wdGlvbigiLS1jb21iaW5lZCIsIGFjdGlvbj0ic3Rv
cmVfdHJ1ZSIsIGhlbHA9IlByb2R1Y2Ugb25lIC5oLy5jcHAgZmlsZSBpbnN0ZWFkIG9mIHByb2R1
Y2luZyBvbmUgcGVyIGJ1aWx0aW4gb2JqZWN0LiIpCisgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9u
KCItdiIsICItLWRlYnVnIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iTG9nIGV4dHJhIG91
dHB1dCBmb3IgZGVidWdnaW5nIHRoZSBnZW5lcmF0b3IgaXRzZWxmLiIpCisgICAgY2xpX3BhcnNl
ci5hZGRfb3B0aW9uKCItdCIsICItLXRlc3QiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJF
bmFibGUgdGVzdCBtb2RlLiIpCisKKyAgICBhcmdfb3B0aW9ucywgYXJnX3ZhbHVlcyA9IGNsaV9w
YXJzZXIucGFyc2VfYXJncygpCisgICAgaWYgbGVuKGFyZ192YWx1ZXMpIGlzIDAgYW5kIG5vdCBh
cmdfb3B0aW9ucy5pbnB1dF9kaXJlY3Rvcnk6CisgICAgICAgIHJhaXNlIFBhcnNlRXhjZXB0aW9u
KCJBdCBsZWFzdCBvbmUgaW5wdXQgZmlsZSBvciBkaXJlY3RvcnkgZXhwZWN0ZWQuIikKKworICAg
IGlmIG5vdCBhcmdfb3B0aW9ucy5vdXRwdXRfZGlyZWN0b3J5OgorICAgICAgICByYWlzZSBQYXJz
ZUV4Y2VwdGlvbigiTWlzc2luZyBvdXRwdXQgZGlyZWN0b3J5LiIpCisKKyAgICBpZiBhcmdfb3B0
aW9ucy5kZWJ1ZzoKKyAgICAgICAgbG9nLnNldExldmVsKGxvZ2dpbmcuREVCVUcpCisKKyAgICBp
bnB1dF9maWxlcGF0aHMgPSBhcmdfdmFsdWVzWzpdCisgICAgaWYgYXJnX29wdGlvbnMuaW5wdXRf
ZGlyZWN0b3J5OgorICAgICAgICBmb3IgZmlsZXBhdGggaW4gb3MubGlzdGRpcihhcmdfb3B0aW9u
cy5pbnB1dF9kaXJlY3RvcnkpOgorICAgICAgICAgICAgaW5wdXRfZmlsZXBhdGhzLmFwcGVuZChv
cy5wYXRoLmpvaW4oYXJnX29wdGlvbnMuaW5wdXRfZGlyZWN0b3J5LCBmaWxlcGF0aCkpCisKKyAg
ICBpbnB1dF9maWxlcGF0aHMgPSBmaWx0ZXIobGFtYmRhIG5hbWU6IGZubWF0Y2guZm5tYXRjaChu
YW1lLCAnKi5qcycpLCBpbnB1dF9maWxlcGF0aHMpCisKKyAgICBvcHRpb25zID0geworICAgICAg
ICAnb3V0cHV0X3BhdGgnOiBhcmdfb3B0aW9ucy5vdXRwdXRfZGlyZWN0b3J5LAorICAgICAgICAn
ZnJhbWV3b3JrX25hbWUnOiBhcmdfb3B0aW9ucy5mcmFtZXdvcmssCisgICAgICAgICdjb21iaW5l
ZF9vdXRwdXQnOiBhcmdfb3B0aW9ucy5jb21iaW5lZCwKKyAgICAgICAgJ2ZvcmNlX291dHB1dCc6
IGFyZ19vcHRpb25zLmZvcmNlLAorICAgICAgICAnY29uY2F0ZW5hdGVfb3V0cHV0JzogYXJnX29w
dGlvbnMudGVzdCwKKyAgICB9CisKKyAgICBsb2cuZGVidWcoIkdlbmVyYXRpbmcgY29kZSBmb3Ig
YnVpbHRpbnMuIikKKyAgICBsb2cuZGVidWcoIlBhcnNlZCBvcHRpb25zOiIpCisgICAgZm9yIG9w
dGlvbiwgdmFsdWUgaW4gb3B0aW9ucy5pdGVtcygpOgorICAgICAgICBsb2cuZGVidWcoIiAgICAl
czogJXMiICUgKG9wdGlvbiwgdmFsdWUpKQorICAgIGxvZy5kZWJ1ZygiIikKKyAgICBsb2cuZGVi
dWcoIklucHV0IGZpbGVzOiIpCisgICAgZm9yIGZpbGVwYXRoIGluIGlucHV0X2ZpbGVwYXRoczoK
KyAgICAgICAgbG9nLmRlYnVnKCIgICAgJXMiICUgZmlsZXBhdGgpCisgICAgbG9nLmRlYnVnKCIi
KQorCisgICAgdHJ5OgorICAgICAgICBnZW5lcmF0ZV9iaW5kaW5nc19mb3JfYnVpbHRpbnNfZmls
ZXMoYnVpbHRpbnNfZmlsZXM9aW5wdXRfZmlsZXBhdGhzLCAqKm9wdGlvbnMpCisgICAgZXhjZXB0
IFBhcnNlRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIGlmIGFyZ19vcHRpb25zLnRlc3Q6CisgICAg
ICAgICAgICBsb2cuZXJyb3IoZS5tZXNzYWdlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
cmFpc2UgICMgRm9yY2UgdGhlIGJ1aWxkIHRvIGZhaWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy9sYXp5d3JpdGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvbGF6eXdyaXRlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTNhMmM2OTdjYWNiZDc3NDFmZTk5
OGVmMTkwZWIxY2Q2ZjI0NTM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvbGF6eXdyaXRlci5weQpAQCAtMCwwICsxLDU4IEBACisjIS91c3IvYmluL2Vu
diBweXRob24KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIEEgd3Jp
dGVyIHRoYXQgb25seSB1cGRhdGVzIGZpbGUgaWYgaXQgYWN0dWFsbHkgY2hhbmdlZC4KKworCitj
bGFzcyBMYXp5RmlsZVdyaXRlcjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZXBhdGgsIGZv
cmNlX291dHB1dCk6CisgICAgICAgIHNlbGYuX2ZpbGVwYXRoID0gZmlsZXBhdGgKKyAgICAgICAg
c2VsZi5fb3V0cHV0ID0gIiIKKyAgICAgICAgc2VsZi5mb3JjZV9vdXRwdXQgPSBmb3JjZV9vdXRw
dXQKKworICAgIGRlZiB3cml0ZShzZWxmLCB0ZXh0KToKKyAgICAgICAgc2VsZi5fb3V0cHV0ICs9
IHRleHQKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgdGV4dF9jaGFuZ2VkID0gVHJ1
ZQorICAgICAgICBzZWxmLl9vdXRwdXQgPSBzZWxmLl9vdXRwdXQucnN0cmlwKCkgKyAiXG4iCisK
KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgc2VsZi5mb3JjZV9vdXRwdXQ6CisgICAgICAg
ICAgICAgICAgcmFpc2UKKworICAgICAgICAgICAgcmVhZF9maWxlID0gb3BlbihzZWxmLl9maWxl
cGF0aCwgInIiKQorICAgICAgICAgICAgb2xkX3RleHQgPSByZWFkX2ZpbGUucmVhZCgpCisgICAg
ICAgICAgICByZWFkX2ZpbGUuY2xvc2UoKQorICAgICAgICAgICAgdGV4dF9jaGFuZ2VkID0gb2xk
X3RleHQgIT0gc2VsZi5fb3V0cHV0CisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICMgSWdu
b3JlLCBqdXN0IG92ZXJ3cml0ZSBieSBkZWZhdWx0CisgICAgICAgICAgICBwYXNzCisKKyAgICAg
ICAgaWYgdGV4dF9jaGFuZ2VkIG9yIHNlbGYuZm9yY2Vfb3V0cHV0OgorICAgICAgICAgICAgb3V0
X2ZpbGUgPSBvcGVuKHNlbGYuX2ZpbGVwYXRoLCAidyIpCisgICAgICAgICAgICBvdXRfZmlsZS53
cml0ZShzZWxmLl9vdXRwdXQpCisgICAgICAgICAgICBvdXRfZmlsZS5jbG9zZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2Ny
aXB0Q29yZS1CdWlsdGluLlByb21pc2UtQ29tYmluZWQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2Ut
Q29tYmluZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ1ZDgxY2ViOWVkOTA2NDI1ODRmYTBiYjQ1OGRjZjBk
YmFkYzNhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1Db21iaW5lZC5q
cwpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK2Z1bmN0aW9uIHJlamVjdFByb21pc2UocHJvbWlzZSwgcmVhc29uKQor
eworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciByZWFjdGlvbnMgPSBwcm9taXNlLkBwcm9t
aXNlUmVqZWN0UmVhY3Rpb25zOworICAgIHByb21pc2UuQHByb21pc2VSZXN1bHQgPSByZWFzb247
CisgICAgcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlvbnMgPSB1bmRlZmluZWQ7CisgICAg
cHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucyA9IHVuZGVmaW5lZDsKKyAgICBwcm9taXNl
LkBwcm9taXNlU3RhdGUgPSBAcHJvbWlzZVJlamVjdGVkOworCisgICAgQEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5wcm9taXNlUmVqZWN0ZWQocHJvbWlzZSwgcmVhc29uLCByZWFjdGlvbnMpOwor
CisgICAgQHRyaWdnZXJQcm9taXNlUmVhY3Rpb25zKHJlYWN0aW9ucywgcmVhc29uKTsKK30KKwor
ZnVuY3Rpb24gZnVsZmlsbFByb21pc2UocHJvbWlzZSwgdmFsdWUpCit7CisgICAgInVzZSBzdHJp
Y3QiOworCisgICAgdmFyIHJlYWN0aW9ucyA9IHByb21pc2UuQHByb21pc2VGdWxmaWxsUmVhY3Rp
b25zOworICAgIHByb21pc2UuQHByb21pc2VSZXN1bHQgPSB2YWx1ZTsKKyAgICBwcm9taXNlLkBw
cm9taXNlRnVsZmlsbFJlYWN0aW9ucyA9IHVuZGVmaW5lZDsKKyAgICBwcm9taXNlLkBwcm9taXNl
UmVqZWN0UmVhY3Rpb25zID0gdW5kZWZpbmVkOworICAgIHByb21pc2UuQHByb21pc2VTdGF0ZSA9
IEBwcm9taXNlRnVsZmlsbGVkOworCisgICAgQEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5wcm9t
aXNlRnVsZmlsbGVkKHByb21pc2UsIHZhbHVlLCByZWFjdGlvbnMpOworCisgICAgQHRyaWdnZXJQ
cm9taXNlUmVhY3Rpb25zKHJlYWN0aW9ucywgdmFsdWUpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVp
bHRpbi5Qcm9taXNlLVNlcGFyYXRlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
dGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLVNlcGFyYXRlLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI0NWQ4MWNlYjllZDkwNjQyNTg0ZmEwYmI0NThkY2YwZGJhZGMzYTIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWls
dGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtU2VwYXJhdGUuanMKQEAgLTAsMCAr
MSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCitmdW5jdGlvbiByZWplY3RQcm9taXNlKHByb21pc2UsIHJlYXNvbikKK3sKKyAgICAidXNl
IHN0cmljdCI7CisKKyAgICB2YXIgcmVhY3Rpb25zID0gcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJl
YWN0aW9uczsKKyAgICBwcm9taXNlLkBwcm9taXNlUmVzdWx0ID0gcmVhc29uOworICAgIHByb21p
c2UuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zID0gdW5kZWZpbmVkOworICAgIHByb21pc2UuQHBy
b21pc2VSZWplY3RSZWFjdGlvbnMgPSB1bmRlZmluZWQ7CisgICAgcHJvbWlzZS5AcHJvbWlzZVN0
YXRlID0gQHByb21pc2VSZWplY3RlZDsKKworICAgIEBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
cHJvbWlzZVJlamVjdGVkKHByb21pc2UsIHJlYXNvbiwgcmVhY3Rpb25zKTsKKworICAgIEB0cmln
Z2VyUHJvbWlzZVJlYWN0aW9ucyhyZWFjdGlvbnMsIHJlYXNvbik7Cit9CisKK2Z1bmN0aW9uIGZ1
bGZpbGxQcm9taXNlKHByb21pc2UsIHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAg
IHZhciByZWFjdGlvbnMgPSBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9uczsKKyAgICBw
cm9taXNlLkBwcm9taXNlUmVzdWx0ID0gdmFsdWU7CisgICAgcHJvbWlzZS5AcHJvbWlzZUZ1bGZp
bGxSZWFjdGlvbnMgPSB1bmRlZmluZWQ7CisgICAgcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0
aW9ucyA9IHVuZGVmaW5lZDsKKyAgICBwcm9taXNlLkBwcm9taXNlU3RhdGUgPSBAcHJvbWlzZUZ1
bGZpbGxlZDsKKworICAgIEBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24ucHJvbWlzZUZ1bGZpbGxl
ZChwcm9taXNlLCB2YWx1ZSwgcmVhY3Rpb25zKTsKKworICAgIEB0cmlnZ2VyUHJvbWlzZVJlYWN0
aW9ucyhyZWFjdGlvbnMsIHZhbHVlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90
eXBlLUNvbWJpbmVkLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTQ0OGI5ODMyYjY2YTRiZGYwZmUyYzRiZDg3MDEwZjYwYWQ3MmRmMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0ph
dmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzCkBAIC0wLDAgKzEsNzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKworZnVuY3Rpb24gZXZlcnkoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCit7CisgICAgInVz
ZSBzdHJpY3QiOworCisgICAgaWYgKHRoaXMgPT09IG51bGwpCisgICAgICAgIHRocm93IG5ldyBA
VHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90
IGJlIG51bGwiKTsKKyAgICAKKyAgICBpZiAodGhpcyA9PT0gdW5kZWZpbmVkKQorICAgICAgICB0
aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQg
fHRoaXN8IG5vdCBiZSB1bmRlZmluZWQiKTsKKyAgICAKKyAgICB2YXIgYXJyYXkgPSBAT2JqZWN0
KHRoaXMpOworICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsKKworICAg
IGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlvbiIpCisgICAgICAgIHRocm93IG5ldyBA
VHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0
aW9uIik7CisgICAgCisgICAgdmFyIHRoaXNBcmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFy
Z3VtZW50c1sxXSA6IHVuZGVmaW5lZDsKKyAgICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxl
bmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghKGkgaW4gYXJyYXkpKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIGlmICghY2FsbGJhY2suQGNhbGwodGhpc0FyZywgYXJyYXlbaV0sIGks
IGFycmF5KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIGZvckVhY2goY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8p
Cit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKHRoaXMgPT09IG51bGwpCisgICAgICAg
IHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCByZXF1aXJlcyB0
aGF0IHx0aGlzfCBub3QgYmUgbnVsbCIpOworICAgIAorICAgIGlmICh0aGlzID09PSB1bmRlZmlu
ZWQpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZm9yRWFj
aCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkIik7CisgICAgCisgICAgdmFy
IGFycmF5ID0gQE9iamVjdCh0aGlzKTsKKyAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5
Lmxlbmd0aCk7CisKKyAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQorICAg
ICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmZvckVhY2ggY2FsbGJh
Y2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CisgICAgCisgICAgdmFyIHRoaXNBcmcgPSBhcmd1bWVu
dHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDsKKyAgICAKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChpIGluIGFycmF5KQor
ICAgICAgICAgICAgY2FsbGJhY2suQGNhbGwodGhpc0FyZywgYXJyYXlbaV0sIGksIGFycmF5KTsK
KyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0
cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1TZXBhcmF0ZS5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRD
b3JlLUJ1aWx0aW4ucHJvdG90eXBlLVNlcGFyYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0NDhiOTgzMmI2
NmE0YmRmMGZlMmM0YmQ4NzAxMGY2MGFkNzJkZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWls
dGluLnByb3RvdHlwZS1TZXBhcmF0ZS5qcwpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Lgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKK2Z1bmN0aW9uIGV2
ZXJ5KGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAg
IGlmICh0aGlzID09PSBudWxsKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXku
cHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIik7CisgICAg
CisgICAgaWYgKHRoaXMgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5k
ZWZpbmVkIik7CisgICAgCisgICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTsKKyAgICB2YXIg
bGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7CisKKyAgICBpZiAodHlwZW9mIGNhbGxi
YWNrICE9PSAiZnVuY3Rpb24iKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXku
cHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOworICAgIAorICAg
IHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRl
ZmluZWQ7CisgICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAg
ICAgICBpZiAoIShpIGluIGFycmF5KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBp
ZiAoIWNhbGxiYWNrLkBjYWxsKHRoaXNBcmcsIGFycmF5W2ldLCBpLCBhcnJheSkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOworfQorCitm
dW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKQoreworICAgICJ1c2Ugc3Ry
aWN0IjsKKworICAgIGlmICh0aGlzID09PSBudWxsKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVF
cnJvcigiQXJyYXkucHJvdG90eXBlLmZvckVhY2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJl
IG51bGwiKTsKKyAgICAKKyAgICBpZiAodGhpcyA9PT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJv
dyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmZvckVhY2ggcmVxdWlyZXMgdGhhdCB8
dGhpc3wgbm90IGJlIHVuZGVmaW5lZCIpOworICAgIAorICAgIHZhciBhcnJheSA9IEBPYmplY3Qo
dGhpcyk7CisgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpOworCisgICAg
aWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgdGhyb3cgbmV3IEBU
eXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5mb3JFYWNoIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5j
dGlvbiIpOworICAgIAorICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBh
cmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7CisgICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBs
ZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoaSBpbiBhcnJheSkKKyAgICAgICAgICAgIGNhbGxi
YWNrLkBjYWxsKHRoaXNBcmcsIGFycmF5W2ldLCBpLCBhcnJheSk7CisgICAgfQorfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNj
cmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0
cnVjdG9yLUNvbWJpbmVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllOGMxYjQ0OTZjYzU0NGY0MDc3Mzk1MDQy
Y2ZkMjRlOGEzOTQ2NjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3It
Q29tYmluZWQuanMKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBvZigvKiBpdGVtcy4uLiAqLykKK3sKKyAgICAi
dXNlIHN0cmljdCI7CisKKyAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsKKyAgICAv
LyBUT0RPOiBOZWVkIGlzQ29uc3RydWN0b3IodGhpcykgaW5zdGVhZCBvZiB0eXBlb2YgImZ1bmN0
aW9uIiBjaGVjay4KKyAgICB2YXIgYXJyYXkgPSB0eXBlb2YgdGhpcyA9PT0gJ2Z1bmN0aW9uJyA/
IG5ldyB0aGlzKGxlbmd0aCkgOiBuZXcgQEFycmF5KGxlbmd0aCk7CisgICAgZm9yICh2YXIgayA9
IDA7IGsgPCBsZW5ndGg7ICsraykKKyAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGFycmF5LCBrLCBh
cmd1bWVudHNba10pOworICAgIGFycmF5Lmxlbmd0aCA9IGxlbmd0aDsKKyAgICByZXR1cm4gYXJy
YXk7Cit9CisKK2Z1bmN0aW9uIGZyb20oaXRlbXMgLyosIG1hcEZuLCB0aGlzQXJnICovKQorewor
ICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciB0aGlzT2JqID0gdGhpczsKKworICAgIHZhciBt
YXBGbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkOwor
CisgICAgdmFyIHRoaXNBcmc7CisKKyAgICBpZiAobWFwRm4gIT09IHVuZGVmaW5lZCkgeworICAg
ICAgICBpZiAodHlwZW9mIG1hcEZuICE9PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgdGhyb3cg
bmV3IEBUeXBlRXJyb3IoIkFycmF5LmZyb20gcmVxdWlyZXMgdGhhdCB0aGUgc2Vjb25kIGFyZ3Vt
ZW50LCB3aGVuIHByb3ZpZGVkLCBiZSBhIGZ1bmN0aW9uIik7CisKKyAgICAgICAgaWYgKGFyZ3Vt
ZW50cy5sZW5ndGggPiAyKQorICAgICAgICAgICAgdGhpc0FyZyA9IGFyZ3VtZW50c1syXTsKKyAg
ICB9CisKKyAgICBpZiAoaXRlbXMgPT0gbnVsbCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoIkFycmF5LmZyb20gcmVxdWlyZXMgYW4gYXJyYXktbGlrZSBvYmplY3QgLSBub3QgbnVsbCBv
ciB1bmRlZmluZWQiKTsKKworICAgIHZhciBpdGVyYXRvck1ldGhvZCA9IGl0ZW1zW0BzeW1ib2xJ
dGVyYXRvcl07CisgICAgaWYgKGl0ZXJhdG9yTWV0aG9kICE9IG51bGwpIHsKKyAgICAgICAgaWYg
KHR5cGVvZiBpdGVyYXRvck1ldGhvZCAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIHRocm93
IG5ldyBAVHlwZUVycm9yKCJBcnJheS5mcm9tIHJlcXVpcmVzIHRoYXQgdGhlIHByb3BlcnR5IG9m
IHRoZSBmaXJzdCBhcmd1bWVudCwgaXRlbXNbU3ltYm9sLml0ZXJhdG9yXSwgd2hlbiBleGlzdHMs
IGJlIGEgZnVuY3Rpb24iKTsKKworICAgICAgICAvLyBUT0RPOiBOZWVkIGlzQ29uc3RydWN0b3Io
dGhpc09iaikgaW5zdGVhZCBvZiB0eXBlb2YgImZ1bmN0aW9uIiBjaGVjay4KKyAgICAgICAgdmFy
IHJlc3VsdCA9ICh0eXBlb2YgdGhpc09iaiA9PT0gImZ1bmN0aW9uIikgPyBAT2JqZWN0KG5ldyB0
aGlzT2JqKCkpIDogW107CisKKyAgICAgICAgdmFyIGsgPSAwOworICAgICAgICB2YXIgaXRlcmF0
b3IgPSBpdGVyYXRvck1ldGhvZC5AY2FsbChpdGVtcyk7CisKKyAgICAgICAgLy8gU2luY2UgZm9y
LW9mIGxvb3Agb25jZSBtb3JlIGxvb2tzIHVwIHRoZSBAQGl0ZXJhdG9yIHByb3BlcnR5IG9mIGEg
Z2l2ZW4gaXRlcmFibGUsCisgICAgICAgIC8vIGl0IGNvdWxkIGJlIG9ic2VydmFibGUgaWYgdGhl
IHVzZXIgZGVmaW5lcyBhIGdldHRlciBmb3IgQEBpdGVyYXRvci4KKyAgICAgICAgLy8gVG8gYXZv
aWQgdGhpcyBzaXR1YXRpb24sIHdlIGRlZmluZSBhIHdyYXBwZXIgb2JqZWN0IHRoYXQgQEBpdGVy
YXRvciBqdXN0IHJldHVybnMgYSBnaXZlbiBpdGVyYXRvci4KKyAgICAgICAgdmFyIHdyYXBwZXIg
PSB7CisgICAgICAgICAgICBbQHN5bWJvbEl0ZXJhdG9yXSgpIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gaXRlcmF0b3I7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgZm9y
ICh2YXIgdmFsdWUgb2Ygd3JhcHBlcikgeworICAgICAgICAgICAgaWYgKG1hcEZuKQorICAgICAg
ICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHRoaXNBcmcgPT09IHVuZGVmaW5l
ZCA/IG1hcEZuKHZhbHVlLCBrKSA6IG1hcEZuLkBjYWxsKHRoaXNBcmcsIHZhbHVlLCBrKSk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwg
aywgdmFsdWUpOworICAgICAgICAgICAgayArPSAxOworICAgICAgICB9CisKKyAgICAgICAgcmVz
dWx0Lmxlbmd0aCA9IGs7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdmFy
IGFycmF5TGlrZSA9IEBPYmplY3QoaXRlbXMpOworICAgIHZhciBhcnJheUxpa2VMZW5ndGggPSBA
dG9MZW5ndGgoYXJyYXlMaWtlLmxlbmd0aCk7CisKKyAgICAvLyBUT0RPOiBOZWVkIGlzQ29uc3Ry
dWN0b3IodGhpc09iaikgaW5zdGVhZCBvZiB0eXBlb2YgImZ1bmN0aW9uIiBjaGVjay4KKyAgICB2
YXIgcmVzdWx0ID0gKHR5cGVvZiB0aGlzT2JqID09PSAiZnVuY3Rpb24iKSA/IEBPYmplY3QobmV3
IHRoaXNPYmooYXJyYXlMaWtlTGVuZ3RoKSkgOiBuZXcgQEFycmF5KGFycmF5TGlrZUxlbmd0aCk7
CisKKyAgICB2YXIgayA9IDA7CisgICAgd2hpbGUgKGsgPCBhcnJheUxpa2VMZW5ndGgpIHsKKyAg
ICAgICAgdmFyIHZhbHVlID0gYXJyYXlMaWtlW2tdOworICAgICAgICBpZiAobWFwRm4pCisgICAg
ICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB0aGlzQXJnID09PSB1bmRlZmluZWQg
PyBtYXBGbih2YWx1ZSwgaykgOiBtYXBGbi5AY2FsbCh0aGlzQXJnLCB2YWx1ZSwgaykpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB2YWx1ZSk7
CisgICAgICAgIGsgKz0gMTsKKyAgICB9CisKKyAgICByZXN1bHQubGVuZ3RoID0gYXJyYXlMaWtl
TGVuZ3RoOworICAgIHJldHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29u
c3RydWN0b3ItU2VwYXJhdGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0
cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItU2VwYXJhdGUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWU4YzFiNDQ5NmNjNTQ0ZjQwNzczOTUwNDJjZmQyNGU4YTM5NDY2MQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1TZXBhcmF0ZS5qcwpAQCAtMCww
ICsxLDExMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K2Z1bmN0aW9uIG9mKC8qIGl0ZW1zLi4uICovKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAg
IHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOworICAgIC8vIFRPRE86IE5lZWQgaXNDb25z
dHJ1Y3Rvcih0aGlzKSBpbnN0ZWFkIG9mIHR5cGVvZiAiZnVuY3Rpb24iIGNoZWNrLgorICAgIHZh
ciBhcnJheSA9IHR5cGVvZiB0aGlzID09PSAnZnVuY3Rpb24nID8gbmV3IHRoaXMobGVuZ3RoKSA6
IG5ldyBAQXJyYXkobGVuZ3RoKTsKKyAgICBmb3IgKHZhciBrID0gMDsgayA8IGxlbmd0aDsgKytr
KQorICAgICAgICBAcHV0QnlWYWxEaXJlY3QoYXJyYXksIGssIGFyZ3VtZW50c1trXSk7CisgICAg
YXJyYXkubGVuZ3RoID0gbGVuZ3RoOworICAgIHJldHVybiBhcnJheTsKK30KKworZnVuY3Rpb24g
ZnJvbShpdGVtcyAvKiwgbWFwRm4sIHRoaXNBcmcgKi8pCit7CisgICAgInVzZSBzdHJpY3QiOwor
CisgICAgdmFyIHRoaXNPYmogPSB0aGlzOworCisgICAgdmFyIG1hcEZuID0gYXJndW1lbnRzLmxl
bmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7CisKKyAgICB2YXIgdGhpc0FyZzsK
KworICAgIGlmIChtYXBGbiAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgIGlmICh0eXBlb2YgbWFw
Rm4gIT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJy
YXkuZnJvbSByZXF1aXJlcyB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQsIHdoZW4gcHJvdmlkZWQs
IGJlIGEgZnVuY3Rpb24iKTsKKworICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpCisg
ICAgICAgICAgICB0aGlzQXJnID0gYXJndW1lbnRzWzJdOworICAgIH0KKworICAgIGlmIChpdGVt
cyA9PSBudWxsKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkuZnJvbSByZXF1
aXJlcyBhbiBhcnJheS1saWtlIG9iamVjdCAtIG5vdCBudWxsIG9yIHVuZGVmaW5lZCIpOworCisg
ICAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gaXRlbXNbQHN5bWJvbEl0ZXJhdG9yXTsKKyAgICBpZiAo
aXRlcmF0b3JNZXRob2QgIT0gbnVsbCkgeworICAgICAgICBpZiAodHlwZW9mIGl0ZXJhdG9yTWV0
aG9kICE9PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFy
cmF5LmZyb20gcmVxdWlyZXMgdGhhdCB0aGUgcHJvcGVydHkgb2YgdGhlIGZpcnN0IGFyZ3VtZW50
LCBpdGVtc1tTeW1ib2wuaXRlcmF0b3JdLCB3aGVuIGV4aXN0cywgYmUgYSBmdW5jdGlvbiIpOwor
CisgICAgICAgIC8vIFRPRE86IE5lZWQgaXNDb25zdHJ1Y3Rvcih0aGlzT2JqKSBpbnN0ZWFkIG9m
IHR5cGVvZiAiZnVuY3Rpb24iIGNoZWNrLgorICAgICAgICB2YXIgcmVzdWx0ID0gKHR5cGVvZiB0
aGlzT2JqID09PSAiZnVuY3Rpb24iKSA/IEBPYmplY3QobmV3IHRoaXNPYmooKSkgOiBbXTsKKwor
ICAgICAgICB2YXIgayA9IDA7CisgICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yTWV0aG9k
LkBjYWxsKGl0ZW1zKTsKKworICAgICAgICAvLyBTaW5jZSBmb3Itb2YgbG9vcCBvbmNlIG1vcmUg
bG9va3MgdXAgdGhlIEBAaXRlcmF0b3IgcHJvcGVydHkgb2YgYSBnaXZlbiBpdGVyYWJsZSwKKyAg
ICAgICAgLy8gaXQgY291bGQgYmUgb2JzZXJ2YWJsZSBpZiB0aGUgdXNlciBkZWZpbmVzIGEgZ2V0
dGVyIGZvciBAQGl0ZXJhdG9yLgorICAgICAgICAvLyBUbyBhdm9pZCB0aGlzIHNpdHVhdGlvbiwg
d2UgZGVmaW5lIGEgd3JhcHBlciBvYmplY3QgdGhhdCBAQGl0ZXJhdG9yIGp1c3QgcmV0dXJucyBh
IGdpdmVuIGl0ZXJhdG9yLgorICAgICAgICB2YXIgd3JhcHBlciA9IHsKKyAgICAgICAgICAgIFtA
c3ltYm9sSXRlcmF0b3JdKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBmb3IgKHZhciB2YWx1ZSBvZiB3cmFw
cGVyKSB7CisgICAgICAgICAgICBpZiAobWFwRm4pCisgICAgICAgICAgICAgICAgQHB1dEJ5VmFs
RGlyZWN0KHJlc3VsdCwgaywgdGhpc0FyZyA9PT0gdW5kZWZpbmVkID8gbWFwRm4odmFsdWUsIGsp
IDogbWFwRm4uQGNhbGwodGhpc0FyZywgdmFsdWUsIGspKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB2YWx1ZSk7CisgICAgICAg
ICAgICBrICs9IDE7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQubGVuZ3RoID0gazsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgYXJyYXlMaWtlID0gQE9iamVj
dChpdGVtcyk7CisgICAgdmFyIGFycmF5TGlrZUxlbmd0aCA9IEB0b0xlbmd0aChhcnJheUxpa2Uu
bGVuZ3RoKTsKKworICAgIC8vIFRPRE86IE5lZWQgaXNDb25zdHJ1Y3Rvcih0aGlzT2JqKSBpbnN0
ZWFkIG9mIHR5cGVvZiAiZnVuY3Rpb24iIGNoZWNrLgorICAgIHZhciByZXN1bHQgPSAodHlwZW9m
IHRoaXNPYmogPT09ICJmdW5jdGlvbiIpID8gQE9iamVjdChuZXcgdGhpc09iaihhcnJheUxpa2VM
ZW5ndGgpKSA6IG5ldyBAQXJyYXkoYXJyYXlMaWtlTGVuZ3RoKTsKKworICAgIHZhciBrID0gMDsK
KyAgICB3aGlsZSAoayA8IGFycmF5TGlrZUxlbmd0aCkgeworICAgICAgICB2YXIgdmFsdWUgPSBh
cnJheUxpa2Vba107CisgICAgICAgIGlmIChtYXBGbikKKyAgICAgICAgICAgIEBwdXRCeVZhbERp
cmVjdChyZXN1bHQsIGssIHRoaXNBcmcgPT09IHVuZGVmaW5lZCA/IG1hcEZuKHZhbHVlLCBrKSA6
IG1hcEZuLkBjYWxsKHRoaXNBcmcsIHZhbHVlLCBrKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHZhbHVlKTsKKyAgICAgICAgayArPSAxOwor
ICAgIH0KKworICAgIHJlc3VsdC5sZW5ndGggPSBhcnJheUxpa2VMZW5ndGg7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUd1YXJkZWRCdWls
dGluLVNlcGFyYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2ODg3ZTdlZGNhZDZiMmE4N2VmNWU3ODI5ZDI5
M2NlZjAxZTM3MjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzCkBA
IC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisvLyBAb3B0aW9uYWw9U1RSRUFNU19BUEkKKworZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVh
bUxvY2tlZChzdHJlYW0pCit7CisgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gISFzdHJl
YW0uQHJlYWRlcjsKK30KKworCitmdW5jdGlvbiBjYW5jZWxSZWFkYWJsZVN0cmVhbShzdHJlYW0s
IHJlYXNvbikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9
PT0gQHJlYWRhYmxlU3RyZWFtQ2xvc2VkKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZl
KCk7CisgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpCisg
ICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChzdHJlYW0uQHN0b3JlZEVycm9yKTsKKyAgICBz
dHJlYW0uQHF1ZXVlID0gW107CisgICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJl
YW0pOworICAgIHJldHVybiBAcHJvbWlzZUludm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdT
b3VyY2UsICJjYW5jZWwiLCBbcmVhc29uXSkudGhlbihmdW5jdGlvbigpIHsgfSk7Cit9CisKKwor
ZnVuY3Rpb24gcHJvbWlzZUludm9rZU9yTm9vcChvYmplY3QsIGtleSwgYXJncykKK3sKKyAgICAi
dXNlIHN0cmljdCI7CisKKyAgICB0cnkgeworICAgICAgICB2YXIgbWV0aG9kID0gb2JqZWN0W2tl
eV07CisgICAgICAgIGlmICh0eXBlb2YgbWV0aG9kID09PSAidW5kZWZpbmVkIikKKyAgICAgICAg
ICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IG1ldGhv
ZC5AYXBwbHkob2JqZWN0LCBhcmdzKTsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShy
ZXN1bHQpOworICAgIH0KKyAgICBjYXRjaChlcnJvcikgeworICAgICAgICByZXR1cm4gUHJvbWlz
ZS5yZWplY3QoZXJyb3IpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRp
bi1TZXBhcmF0ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZjVlN2IzYjg0MWQ1MTBhMjlmNTc2Zjk0MzYwOTllOGUyNzYyNjU3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29y
ZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzCkBAIC0wLDAgKzEsNjUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBAb3B0aW9uYWw9
U1RSRUFNU19BUEkKKy8vIEBpbnRlcm5hbAorCitmdW5jdGlvbiBpc1JlYWRhYmxlU3RyZWFtTG9j
a2VkKHN0cmVhbSkKK3sKKyAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiAhIXN0cmVhbS5A
cmVhZGVyOworfQorCisKK2Z1bmN0aW9uIGNhbmNlbFJlYWRhYmxlU3RyZWFtKHN0cmVhbSwgcmVh
c29uKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBA
cmVhZGFibGVTdHJlYW1DbG9zZWQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsK
KyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZCkKKyAgICAg
ICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpOworICAgIHN0cmVh
bS5AcXVldWUgPSBbXTsKKyAgICBAZmluaXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7
CisgICAgcmV0dXJuIEBwcm9taXNlSW52b2tlT3JOb29wKHN0cmVhbS5AdW5kZXJseWluZ1NvdXJj
ZSwgImNhbmNlbCIsIFtyZWFzb25dKS50aGVuKGZ1bmN0aW9uKCkgeyB9KTsKK30KKworCitmdW5j
dGlvbiBwcm9taXNlSW52b2tlT3JOb29wKG9iamVjdCwga2V5LCBhcmdzKQoreworICAgICJ1c2Ug
c3RyaWN0IjsKKworICAgIHRyeSB7CisgICAgICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTsK
KyAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAg
cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgICAgICB2YXIgcmVzdWx0ID0gbWV0aG9kLkBh
cHBseShvYmplY3QsIGFyZ3MpOworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3Vs
dCk7CisgICAgfQorICAgIGNhdGNoKGVycm9yKSB7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJl
amVjdChlcnJvcik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRl
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29y
ZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliZGM4ZDNiN2U5YmUy
OTgwYWZkZDZiNjEzOGMwNDg4ZmViMjZhMGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0
aW4tU2VwYXJhdGUuanMKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQoc3Ry
ZWFtKQoreworICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuICEhc3RyZWFtLkByZWFkZXI7
Cit9CisKKworZnVuY3Rpb24gY2FuY2VsUmVhZGFibGVTdHJlYW0oc3RyZWFtLCByZWFzb24pCit7
CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJs
ZVN0cmVhbUNsb3NlZCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgIGlm
IChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKQorICAgICAgICByZXR1
cm4gUHJvbWlzZS5yZWplY3Qoc3RyZWFtLkBzdG9yZWRFcnJvcik7CisgICAgc3RyZWFtLkBxdWV1
ZSA9IFtdOworICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTsKKyAgICBy
ZXR1cm4gQHByb21pc2VJbnZva2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCAiY2Fu
Y2VsIiwgW3JlYXNvbl0pLnRoZW4oZnVuY3Rpb24oKSB7IH0pOworfQorCisKK2Z1bmN0aW9uIHBy
b21pc2VJbnZva2VPck5vb3Aob2JqZWN0LCBrZXksIGFyZ3MpCit7CisgICAgInVzZSBzdHJpY3Qi
OworCisgICAgdHJ5IHsKKyAgICAgICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldOworICAgICAg
ICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICByZXR1cm4g
UHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9i
amVjdCwgYXJncyk7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTsKKyAg
ICB9CisgICAgY2F0Y2goZXJyb3IpIHsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVy
cm9yKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLXhtbENhc2lu
Z1Rlc3QtU2VwYXJhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGUzOTNiYzU5ODE0MjgyODdlMGYwNDMxOWRi
NmU0MjAyYjU1ZTI2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcwpA
QCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworLy8gQG9wdGlvbmFsPVNUUkVBTVNfQVBJCisvLyBAaW50ZXJuYWwKKworZnVuY3Rpb24g
eG1sQ2FzaW5nVGVzdChzdHJlYW0pCit7CisgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4g
ISFzdHJlYW0uQHJlYWRlcjsKK30KKworCitmdW5jdGlvbiBjc3NDYXNpbmdUZXN0KHN0cmVhbSwg
cmVhc29uKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmIChzdHJlYW0uQHN0YXRlID09
PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUo
KTsKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZCkKKyAg
ICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpOworICAgIHN0
cmVhbS5AcXVldWUgPSBbXTsKKyAgICBAZmluaXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVh
bSk7CisgICAgcmV0dXJuIEBwcm9taXNlSW52b2tlT3JOb29wKHN0cmVhbS5AdW5kZXJseWluZ1Nv
dXJjZSwgImNhbmNlbCIsIFtyZWFzb25dKS50aGVuKGZ1bmN0aW9uKCkgeyB9KTsKK30KKworCitm
dW5jdGlvbiB1cmxDYXNpbmdUZXN0KG9iamVjdCwga2V5LCBhcmdzKQoreworICAgICJ1c2Ugc3Ry
aWN0IjsKKworICAgIHRyeSB7CisgICAgICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTsKKyAg
ICAgICAgaWYgKHR5cGVvZiBtZXRob2QgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgcmV0
dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgICAgICB2YXIgcmVzdWx0ID0gbWV0aG9kLkBhcHBs
eShvYmplY3QsIGFyZ3MpOworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7
CisgICAgfQorICAgIGNhdGNoKGVycm9yKSB7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVj
dChlcnJvcik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9t
aXNlLUNvbWJpbmVkLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1Db21i
aW5lZC5qcy1yZXN1bHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzMyYThjODlmNWFhNWQ2Yzk1MjNkYTBlNjQ4MDEx
ZjViZTk4OGRiZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlz
ZS1Db21iaW5lZC5qcy1yZXN1bHQKQEAgLTAsMCArMSwxNjggQEAKKyMjIyBCZWdpbiBGaWxlOiBK
U0NCdWlsdGlucy5oCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBU
SElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBm
aWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgSlNDQnVpbHRpbnNf
aAorI2RlZmluZSBKU0NCdWlsdGluc19oCisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRnVuY3Rp
b25FeGVjdXRhYmxlOworY2xhc3MgVk07CisKK2VudW0gY2xhc3MgQ29uc3RydWN0QWJpbGl0eSA6
IHVuc2lnbmVkOworfQorCituYW1lc3BhY2UgSlNDIHsKKworLyogQnVpbHRpbi5Qcm9taXNlICov
CitleHRlcm4gY29uc3QgY2hhciogc19idWlsdGluUHJvbWlzZVJlamVjdFByb21pc2VDb2RlOwor
ZXh0ZXJuIGNvbnN0IGludCBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNvZGVMZW5ndGg7
CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb21pc2VSZWpl
Y3RQcm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19idWls
dGluUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19idWlsdGlu
UHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0
cnVjdEFiaWxpdHkgc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZUNvbnN0cnVjdEFi
aWxpdHk7CisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTlBST01JU0VfQlVJTFRJTl9EQVRB
KG1hY3JvKSBcCisgICAgbWFjcm8ocmVqZWN0UHJvbWlzZSwgYnVpbHRpblByb21pc2VSZWplY3RQ
cm9taXNlLCAyKSBcCisgICAgbWFjcm8oZnVsZmlsbFByb21pc2UsIGJ1aWx0aW5Qcm9taXNlRnVs
ZmlsbFByb21pc2UsIDIpIFwKKworI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOUFJPTUlTRV9S
RUpFQ1RQUk9NSVNFIDEKKyNkZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTlBST01JU0VfRlVMRklM
TFBST01JU0UgMQorCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShtYWNybykgXAor
ICAgIG1hY3JvKGJ1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNvZGUsIHJlamVjdFByb21pc2Us
IHNfYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNlQ29kZUxlbmd0aCkgXAorICAgIG1hY3JvKGJ1
aWx0aW5Qcm9taXNlRnVsZmlsbFByb21pc2VDb2RlLCBmdWxmaWxsUHJvbWlzZSwgc19idWlsdGlu
UHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZUxlbmd0aCkgXAorCisjZGVmaW5lIEpTQ19GT1JFQUNI
X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXAorICAgIG1hY3JvKGZ1bGZpbGxQcm9taXNl
KSBcCisgICAgbWFjcm8ocmVqZWN0UHJvbWlzZSkgXAorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJ
Tl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorICAg
IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsK
KworSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisj
dW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIEpTQ19CVUlMVElOX0VY
SVNUUyhvYmplY3QsIGZ1bmMpIGRlZmluZWQgSlNDX0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMj
IGZ1bmMKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0NCdWlsdGluc19oCisK
KyMjIyBFbmQgRmlsZTogSlNDQnVpbHRpbnMuaAorCisjIyMgQmVnaW4gRmlsZTogSlNDQnVpbHRp
bnMuY3BwCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4uCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJ
TEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBm
b3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJKU0NCdWlsdGlucy5oIgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisj
aW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNs
dWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmls
aXR5IHNfYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBK
U0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0
aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNvZGVMZW5ndGggPSA0MTM7Citjb25zdCBjaGFyKiBzX2J1
aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNvZGUgPQorICAgICIoZnVuY3Rpb24gKHByb21pc2Us
IHJlYXNvbilcbiIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBc
CisgICAgIlxuIiBcCisgICAgIiAgICB2YXIgcmVhY3Rpb25zID0gcHJvbWlzZS5AcHJvbWlzZVJl
amVjdFJlYWN0aW9ucztcbiIgXAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlc3VsdCA9IHJl
YXNvbjtcbiIgXAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlvbnMgPSB1
bmRlZmluZWQ7XG4iIFwKKyAgICAiICAgIHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnMg
PSB1bmRlZmluZWQ7XG4iIFwKKyAgICAiICAgIHByb21pc2UuQHByb21pc2VTdGF0ZSA9IEBwcm9t
aXNlUmVqZWN0ZWQ7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIEBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24ucHJvbWlzZVJlamVjdGVkKHByb21pc2UsIHJlYXNvbiwgcmVhY3Rpb25zKTtcbiIg
XAorICAgICJcbiIgXAorICAgICIgICAgQHRyaWdnZXJQcm9taXNlUmVhY3Rpb25zKHJlYWN0aW9u
cywgcmVhc29uKTtcbiIgXAorICAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0
QWJpbGl0eSBzX2J1aWx0aW5Qcm9taXNlRnVsZmlsbFByb21pc2VDb2RlQ29uc3RydWN0QWJpbGl0
eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNf
YnVpbHRpblByb21pc2VGdWxmaWxsUHJvbWlzZUNvZGVMZW5ndGggPSA0MTI7Citjb25zdCBjaGFy
KiBzX2J1aWx0aW5Qcm9taXNlRnVsZmlsbFByb21pc2VDb2RlID0KKyAgICAiKGZ1bmN0aW9uIChw
cm9taXNlLCB2YWx1ZSlcbiIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwi
O1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICB2YXIgcmVhY3Rpb25zID0gcHJvbWlzZS5AcHJv
bWlzZUZ1bGZpbGxSZWFjdGlvbnM7XG4iIFwKKyAgICAiICAgIHByb21pc2UuQHByb21pc2VSZXN1
bHQgPSB2YWx1ZTtcbiIgXAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlv
bnMgPSB1bmRlZmluZWQ7XG4iIFwKKyAgICAiICAgIHByb21pc2UuQHByb21pc2VSZWplY3RSZWFj
dGlvbnMgPSB1bmRlZmluZWQ7XG4iIFwKKyAgICAiICAgIHByb21pc2UuQHByb21pc2VTdGF0ZSA9
IEBwcm9taXNlRnVsZmlsbGVkO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICBASW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLnByb21pc2VGdWxmaWxsZWQocHJvbWlzZSwgdmFsdWUsIHJlYWN0aW9u
cyk7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIEB0cmlnZ2VyUHJvbWlzZVJlYWN0aW9ucyhy
ZWFjdGlvbnMsIHZhbHVlKTtcbiIgXAorICAgICJ9KVxuIiBcCis7CisKKworI2RlZmluZSBERUZJ
TkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3Vu
dCkgXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpW
TSYgdm0pIFwKK3tcCisgICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFt
ZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5h
bWUjI1NvdXJjZSgpKTsgfQorSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElO
X0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKworCit9IC8vIG5h
bWVzcGFjZSBKU0MKKyMjIyBFbmQgRmlsZTogSlNDQnVpbHRpbnMuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZh
U2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtU2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENv
cmUtQnVpbHRpbi5Qcm9taXNlLVNlcGFyYXRlLmpzLXJlc3VsdApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjdiYTI0
YzVjYzI5ZTVlMjliMWRiOWY1NDYyNWZlMGYyOTUxODIyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNj
cmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMCwwICsxLDE2
NyBAQAorIyMjIEJlZ2luIEZpbGU6IEJ1aWx0aW5Qcm9taXNlQnVpbHRpbnMuaAorLyoKKyAqIENv
cHlyaWdodCAoYykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Lgor
ICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0
aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBi
eSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1i
dWlsdGlucy5weQorCisjaWZuZGVmIEJ1aWx0aW5Qcm9taXNlQnVpbHRpbnNfaAorI2RlZmluZSBC
dWlsdGluUHJvbWlzZUJ1aWx0aW5zX2gKKworCisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRnVu
Y3Rpb25FeGVjdXRhYmxlOworfQorCituYW1lc3BhY2UgSlNDIHsKKworLyogQnVpbHRpbi5Qcm9t
aXNlICovCitleHRlcm4gY29uc3QgY2hhciogc19idWlsdGluUHJvbWlzZVJlamVjdFByb21pc2VD
b2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNvZGVM
ZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb21p
c2VSZWplY3RQcm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciog
c19idWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19i
dWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6
OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZUNvbnN0
cnVjdEFiaWxpdHk7CisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9QUk9NSVNFX0JVSUxU
SU5fREFUQShtYWNybykgXAorICAgIG1hY3JvKHJlamVjdFByb21pc2UsIGJ1aWx0aW5Qcm9taXNl
UmVqZWN0UHJvbWlzZSwgMikgXAorICAgIG1hY3JvKGZ1bGZpbGxQcm9taXNlLCBidWlsdGluUHJv
bWlzZUZ1bGZpbGxQcm9taXNlLCAyKSBcCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTl9Q
Uk9NSVNFX1JFSkVDVFBST01JU0UgMQorI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOX1BST01J
U0VfRlVMRklMTFBST01JU0UgMQorCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU4uUFJPTUlT
RV9CVUlMVElOX0NPREUobWFjcm8pIFwKKyAgICBtYWNybyhidWlsdGluUHJvbWlzZVJlamVjdFBy
b21pc2VDb2RlLCByZWplY3RQcm9taXNlLCBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNv
ZGVMZW5ndGgpIFwKKyAgICBtYWNybyhidWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZSwg
ZnVsZmlsbFByb21pc2UsIHNfYnVpbHRpblByb21pc2VGdWxmaWxsUHJvbWlzZUNvZGVMZW5ndGgp
IFwKKworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOLlBST01JU0VfQlVJTFRJTl9GVU5DVElP
Tl9OQU1FKG1hY3JvKSBcCisgICAgbWFjcm8oZnVsZmlsbFByb21pc2UpIFwKKyAgICBtYWNybyhy
ZWplY3RQcm9taXNlKSBcCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2Rl
TmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCisgICAgSlNDOjpGdW5jdGlvbkV4
ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCitKU0NfRk9SRUFDSF9C
VUlMVElOLlBST01JU0VfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisj
dW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIEpTQ19CVUlMVElOX0JV
SUxUSU4uUFJPTUlTRV9FWElTVFMob2JqZWN0LCBmdW5jKSBkZWZpbmVkIEpTQ19CVUlMVElOXyAj
IyBvYmplY3QgIyMgXyAjIyBmdW5jCisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
QnVpbHRpblByb21pc2VCdWlsdGluc19oCisKKyMjIyBFbmQgRmlsZTogQnVpbHRpblByb21pc2VC
dWlsdGlucy5oCisKKyMjIyBCZWdpbiBGaWxlOiBCdWlsdGluUHJvbWlzZUJ1aWx0aW5zLmNwcAor
LyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+LgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBp
cyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBi
dWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5l
cmF0ZS1qcy1idWlsdGlucy5weQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnVp
bHRpblByb21pc2VCdWlsdGlucy5oIgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgi
CisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNp
bmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RB
YmlsaXR5IHNfYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHkg
PSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1
aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNvZGVMZW5ndGggPSA0MTM7Citjb25zdCBjaGFyKiBz
X2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNvZGUgPQorICAgICIoZnVuY3Rpb24gKHByb21p
c2UsIHJlYXNvbilcbiIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xu
IiBcCisgICAgIlxuIiBcCisgICAgIiAgICB2YXIgcmVhY3Rpb25zID0gcHJvbWlzZS5AcHJvbWlz
ZVJlamVjdFJlYWN0aW9ucztcbiIgXAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlc3VsdCA9
IHJlYXNvbjtcbiIgXAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlvbnMg
PSB1bmRlZmluZWQ7XG4iIFwKKyAgICAiICAgIHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlv
bnMgPSB1bmRlZmluZWQ7XG4iIFwKKyAgICAiICAgIHByb21pc2UuQHByb21pc2VTdGF0ZSA9IEBw
cm9taXNlUmVqZWN0ZWQ7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIEBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24ucHJvbWlzZVJlamVjdGVkKHByb21pc2UsIHJlYXNvbiwgcmVhY3Rpb25zKTtc
biIgXAorICAgICJcbiIgXAorICAgICIgICAgQHRyaWdnZXJQcm9taXNlUmVhY3Rpb25zKHJlYWN0
aW9ucywgcmVhc29uKTtcbiIgXAorICAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3Ry
dWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm9taXNlRnVsZmlsbFByb21pc2VDb2RlQ29uc3RydWN0QWJp
bGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50
IHNfYnVpbHRpblByb21pc2VGdWxmaWxsUHJvbWlzZUNvZGVMZW5ndGggPSA0MTI7Citjb25zdCBj
aGFyKiBzX2J1aWx0aW5Qcm9taXNlRnVsZmlsbFByb21pc2VDb2RlID0KKyAgICAiKGZ1bmN0aW9u
IChwcm9taXNlLCB2YWx1ZSlcbiIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmlj
dFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICB2YXIgcmVhY3Rpb25zID0gcHJvbWlzZS5A
cHJvbWlzZUZ1bGZpbGxSZWFjdGlvbnM7XG4iIFwKKyAgICAiICAgIHByb21pc2UuQHByb21pc2VS
ZXN1bHQgPSB2YWx1ZTtcbiIgXAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxSZWFj
dGlvbnMgPSB1bmRlZmluZWQ7XG4iIFwKKyAgICAiICAgIHByb21pc2UuQHByb21pc2VSZWplY3RS
ZWFjdGlvbnMgPSB1bmRlZmluZWQ7XG4iIFwKKyAgICAiICAgIHByb21pc2UuQHByb21pc2VTdGF0
ZSA9IEBwcm9taXNlRnVsZmlsbGVkO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICBASW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLnByb21pc2VGdWxmaWxsZWQocHJvbWlzZSwgdmFsdWUsIHJlYWN0
aW9ucyk7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIEB0cmlnZ2VyUHJvbWlzZVJlYWN0aW9u
cyhyZWFjdGlvbnMsIHZhbHVlKTtcbiIgXAorICAgICJ9KVxuIiBcCis7CisKKworI2RlZmluZSBE
RUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRD
b3VudCkgXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlND
OjpWTSYgdm0pIFwKK3tcCisgICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2Rl
TmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29k
ZU5hbWUjI1NvdXJjZSgpKTsgfQorSlNDX0ZPUkVBQ0hfQlVJTFRJTi5QUk9NSVNFX0JVSUxUSU5f
Q09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VO
RVJBVE9SCisKKworfSAvLyBuYW1lc3BhY2UgSlNDCisjIyMgRW5kIEZpbGU6IEJ1aWx0aW5Qcm9t
aXNlQnVpbHRpbnMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlw
ZS1Db21iaW5lZC5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0
cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21i
aW5lZC5qcy1yZXN1bHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRmNjdjNWFjMDFkZGEzZGJmOWIxZDllNzc5ODM5
ZmQ3ODYzYzZiNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90
eXBlLUNvbWJpbmVkLmpzLXJlc3VsdApAQCAtMCwwICsxLDE5MiBAQAorIyMjIEJlZ2luIEZpbGU6
IEpTQ0J1aWx0aW5zLmgKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDE1IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1Qg
RURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNj
cmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgSlNDQnVp
bHRpbnNfaAorI2RlZmluZSBKU0NCdWlsdGluc19oCisKK25hbWVzcGFjZSBKU0MgeworY2xhc3Mg
RnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgVk07CisKK2VudW0gY2xhc3MgQ29uc3RydWN0QWJp
bGl0eSA6IHVuc2lnbmVkOworfQorCituYW1lc3BhY2UgSlNDIHsKKworLyogQnVpbHRpbi5wcm90
b3R5cGUgKi8KK2V4dGVybiBjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGU7
CitleHRlcm4gY29uc3QgaW50IHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZUxlbmd0aDsKK2V4
dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvdG90eXBlRXZlcnlD
b2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm90b3R5
cGVGb3JFYWNoQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19idWlsdGluUHJvdG90eXBlRm9yRWFj
aENvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRp
blByb3RvdHlwZUZvckVhY2hDb2RlQ29uc3RydWN0QWJpbGl0eTsKKworI2RlZmluZSBKU0NfRk9S
RUFDSF9CVUlMVElOUFJPVE9UWVBFX0JVSUxUSU5fREFUQShtYWNybykgXAorICAgIG1hY3JvKGV2
ZXJ5LCBidWlsdGluUHJvdG90eXBlRXZlcnksIDEpIFwKKyAgICBtYWNybyhmb3JFYWNoLCBidWls
dGluUHJvdG90eXBlRm9yRWFjaCwgMSkgXAorCisjZGVmaW5lIEpTQ19CVUlMVElOX0JVSUxUSU5Q
Uk9UT1RZUEVfRVZFUlkgMQorI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOUFJPVE9UWVBFX0ZP
UkVBQ0ggMQorCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShtYWNybykgXAorICAg
IG1hY3JvKGJ1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGUsIGV2ZXJ5LCBzX2J1aWx0aW5Qcm90b3R5
cGVFdmVyeUNvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhidWlsdGluUHJvdG90eXBlRm9yRWFjaENv
ZGUsIGZvckVhY2gsIHNfYnVpbHRpblByb3RvdHlwZUZvckVhY2hDb2RlTGVuZ3RoKSBcCisKKyNk
ZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcCisgICAgbWFj
cm8oZXZlcnkpIFwKKyAgICBtYWNybyhmb3JFYWNoKSBcCisKKyNkZWZpbmUgREVDTEFSRV9CVUlM
VElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCisg
ICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYp
OworCitKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikK
KyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5f
RVhJU1RTKG9iamVjdCwgZnVuYykgZGVmaW5lZCBKU0NfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8g
IyMgZnVuYworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTQ0J1aWx0aW5zX2gK
KworIyMjIEVuZCBGaWxlOiBKU0NCdWlsdGlucy5oCisKKyMjIyBCZWdpbiBGaWxlOiBKU0NCdWls
dGlucy5jcHAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBU
SElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBm
aWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVz
LmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIK
KyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5IHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZUNvbnN0cnVjdEFiaWxpdHkgPSBK
U0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0
aW5Qcm90b3R5cGVFdmVyeUNvZGVMZW5ndGggPSA3NjI7Citjb25zdCBjaGFyKiBzX2J1aWx0aW5Q
cm90b3R5cGVFdmVyeUNvZGUgPQorICAgICIoZnVuY3Rpb24gKGNhbGxiYWNrIClcbiIgXAorICAg
ICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAg
IiAgICBpZiAodGhpcyA9PT0gbnVsbClcbiIgXAorICAgICIgICAgICAgIHRocm93IG5ldyBAVHlw
ZUVycm9yKFwiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBi
ZSBudWxsXCIpO1xuIiBcCisgICAgIiAgICBcbiIgXAorICAgICIgICAgaWYgKHRoaXMgPT09IHVu
ZGVmaW5lZClcbiIgXAorICAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXku
cHJvdG90eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWRcIik7
XG4iIFwKKyAgICAiICAgIFxuIiBcCisgICAgIiAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMp
O1xuIiBcCisgICAgIiAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7XG4i
IFwKKyAgICAiXG4iIFwKKyAgICAiICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rp
b25cIilcbiIgXAorICAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkucHJv
dG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvblwiKTtcbiIgXAorICAgICIg
ICAgXG4iIFwKKyAgICAiICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBh
cmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4iIFwKKyAgICAiICAgIFxuIiBcCisgICAgIiAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4iIFwKKyAgICAiICAgICAgICBpZiAo
IShpIGluIGFycmF5KSlcbiIgXAorICAgICIgICAgICAgICAgICBjb250aW51ZTtcbiIgXAorICAg
ICIgICAgICAgIGlmICghY2FsbGJhY2suQGNhbGwodGhpc0FyZywgYXJyYXlbaV0sIGksIGFycmF5
KSlcbiIgXAorICAgICIgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4iIFwKKyAgICAiICAgIH1c
biIgXAorICAgICIgICAgXG4iIFwKKyAgICAiICAgIHJldHVybiB0cnVlO1xuIiBcCisgICAgIn0p
XG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb3RvdHlw
ZUZvckVhY2hDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fu
bm90Q29uc3RydWN0OworY29uc3QgaW50IHNfYnVpbHRpblByb3RvdHlwZUZvckVhY2hDb2RlTGVu
Z3RoID0gNjk0OworY29uc3QgY2hhciogc19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGUgPQor
ICAgICIoZnVuY3Rpb24gKGNhbGxiYWNrIClcbiIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgIFwi
dXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICBpZiAodGhpcyA9PT0gbnVs
bClcbiIgXAorICAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkucHJvdG90
eXBlLmZvckVhY2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGxcIik7XG4iIFwKKyAg
ICAiICAgIFxuIiBcCisgICAgIiAgICBpZiAodGhpcyA9PT0gdW5kZWZpbmVkKVxuIiBcCisgICAg
IiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCBy
ZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkXCIpO1xuIiBcCisgICAgIiAgICBc
biIgXAorICAgICIgICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTtcbiIgXAorICAgICIgICAg
dmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpO1xuIiBcCisgICAgIlxuIiBcCisg
ICAgIiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSBcImZ1bmN0aW9uXCIpXG4iIFwKKyAgICAi
ICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LnByb3RvdHlwZS5mb3JFYWNoIGNh
bGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvblwiKTtcbiIgXAorICAgICIgICAgXG4iIFwKKyAgICAi
ICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1
bmRlZmluZWQ7XG4iIFwKKyAgICAiICAgIFxuIiBcCisgICAgIiAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGxlbmd0aDsgaSsrKSB7XG4iIFwKKyAgICAiICAgICAgICBpZiAoaSBpbiBhcnJheSlcbiIg
XAorICAgICIgICAgICAgICAgICBjYWxsYmFjay5AY2FsbCh0aGlzQXJnLCBhcnJheVtpXSwgaSwg
YXJyYXkpO1xuIiBcCisgICAgIiAgICB9XG4iIFwKKyAgICAifSlcbiIgXAorOworCisKKyNkZWZp
bmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3Vt
ZW50Q291bnQpIFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9y
KEpTQzo6Vk0mIHZtKSBcCit7XAorICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+
Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCkt
PmNvZGVOYW1lIyNTb3VyY2UoKSk7IH0KK0pTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVf
QlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCisKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisjIyMgRW5kIEZpbGU6IEpTQ0J1aWx0aW5zLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0
ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtU2VwYXJhdGUuanMtcmVzdWx0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2
YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtU2VwYXJhdGUuanMtcmVzdWx0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjI5MzgzZjRmN2FhZjkwY2M4MTRkNDExOGRkMmNmY2M0ZjdkODZlNjkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBl
Y3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1TZXBhcmF0ZS5qcy1yZXN1bHQK
QEAgLTAsMCArMSwxOTEgQEAKKyMjIyBCZWdpbiBGaWxlOiBCdWlsdGluUHJvdG90eXBlQnVpbHRp
bnMuaAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPi4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMg
RklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVz
IGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lmbmRlZiBCdWlsdGluUHJvdG90eXBl
QnVpbHRpbnNfaAorI2RlZmluZSBCdWlsdGluUHJvdG90eXBlQnVpbHRpbnNfaAorCisKKworbmFt
ZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Cit9CisKK25hbWVzcGFjZSBK
U0MgeworCisvKiBCdWlsdGluLnByb3RvdHlwZSAqLworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfYnVp
bHRpblByb3RvdHlwZUV2ZXJ5Q29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19idWlsdGluUHJvdG90
eXBlRXZlcnlDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBz
X2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0
IGNoYXIqIHNfYnVpbHRpblByb3RvdHlwZUZvckVhY2hDb2RlOworZXh0ZXJuIGNvbnN0IGludCBz
X2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNv
bnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGVDb25zdHJ1Y3RBYmls
aXR5OworCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fUFJPVE9UWVBFX0JVSUxUSU5fREFU
QShtYWNybykgXAorICAgIG1hY3JvKGV2ZXJ5LCBidWlsdGluUHJvdG90eXBlRXZlcnksIDEpIFwK
KyAgICBtYWNybyhmb3JFYWNoLCBidWlsdGluUHJvdG90eXBlRm9yRWFjaCwgMSkgXAorCisjZGVm
aW5lIEpTQ19CVUlMVElOX0JVSUxUSU5fUFJPVE9UWVBFX0VWRVJZIDEKKyNkZWZpbmUgSlNDX0JV
SUxUSU5fQlVJTFRJTl9QUk9UT1RZUEVfRk9SRUFDSCAxCisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hf
QlVJTFRJTi5QUk9UT1RZUEVfQlVJTFRJTl9DT0RFKG1hY3JvKSBcCisgICAgbWFjcm8oYnVpbHRp
blByb3RvdHlwZUV2ZXJ5Q29kZSwgZXZlcnksIHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZUxl
bmd0aCkgXAorICAgIG1hY3JvKGJ1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZSwgZm9yRWFjaCwg
c19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGVMZW5ndGgpIFwKKworI2RlZmluZSBKU0NfRk9S
RUFDSF9CVUlMVElOLlBST1RPVFlQRV9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFwKKyAg
ICBtYWNybyhldmVyeSkgXAorICAgIG1hY3JvKGZvckVhY2gpIFwKKworI2RlZmluZSBERUNMQVJF
X0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQp
IFwKKyAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6
OlZNJik7CisKK0pTQ19GT1JFQUNIX0JVSUxUSU4uUFJPVE9UWVBFX0JVSUxUSU5fQ09ERShERUNM
QVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IK
KworI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOLlBST1RPVFlQRV9FWElTVFMob2JqZWN0LCBm
dW5jKSBkZWZpbmVkIEpTQ19CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQnVpbHRpblByb3RvdHlwZUJ1aWx0aW5zX2gKKwor
IyMjIEVuZCBGaWxlOiBCdWlsdGluUHJvdG90eXBlQnVpbHRpbnMuaAorCisjIyMgQmVnaW4gRmls
ZTogQnVpbHRpblByb3RvdHlwZUJ1aWx0aW5zLmNwcAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAx
NCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqIAorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAor
ICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5l
cmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlw
dDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkK
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ1aWx0aW5Qcm90b3R5cGVCdWlsdGlu
cy5oIgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiRXhlY3V0
YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJWTS5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblBy
b3RvdHlwZUV2ZXJ5Q29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6
OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGVM
ZW5ndGggPSA3NjI7Citjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGUgPQor
ICAgICIoZnVuY3Rpb24gKGNhbGxiYWNrIClcbiIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgIFwi
dXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICBpZiAodGhpcyA9PT0gbnVs
bClcbiIgXAorICAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkucHJvdG90
eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsXCIpO1xuIiBcCisgICAg
IiAgICBcbiIgXAorICAgICIgICAgaWYgKHRoaXMgPT09IHVuZGVmaW5lZClcbiIgXAorICAgICIg
ICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IHJlcXVp
cmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWRcIik7XG4iIFwKKyAgICAiICAgIFxuIiBc
CisgICAgIiAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMpO1xuIiBcCisgICAgIiAgICB2YXIg
bGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAi
ICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rpb25cIilcbiIgXAorICAgICIgICAg
ICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNr
IG11c3QgYmUgYSBmdW5jdGlvblwiKTtcbiIgXAorICAgICIgICAgXG4iIFwKKyAgICAiICAgIHZh
ciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmlu
ZWQ7XG4iIFwKKyAgICAiICAgIFxuIiBcCisgICAgIiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxl
bmd0aDsgaSsrKSB7XG4iIFwKKyAgICAiICAgICAgICBpZiAoIShpIGluIGFycmF5KSlcbiIgXAor
ICAgICIgICAgICAgICAgICBjb250aW51ZTtcbiIgXAorICAgICIgICAgICAgIGlmICghY2FsbGJh
Y2suQGNhbGwodGhpc0FyZywgYXJyYXlbaV0sIGksIGFycmF5KSlcbiIgXAorICAgICIgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7XG4iIFwKKyAgICAiICAgIH1cbiIgXAorICAgICIgICAgXG4iIFwK
KyAgICAiICAgIHJldHVybiB0cnVlO1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlND
OjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb3RvdHlwZUZvckVhY2hDb2RlQ29uc3RydWN0
QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3Qg
aW50IHNfYnVpbHRpblByb3RvdHlwZUZvckVhY2hDb2RlTGVuZ3RoID0gNjk0OworY29uc3QgY2hh
ciogc19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGUgPQorICAgICIoZnVuY3Rpb24gKGNhbGxi
YWNrIClcbiIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisg
ICAgIlxuIiBcCisgICAgIiAgICBpZiAodGhpcyA9PT0gbnVsbClcbiIgXAorICAgICIgICAgICAg
IHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkucHJvdG90eXBlLmZvckVhY2ggcmVxdWlyZXMg
dGhhdCB8dGhpc3wgbm90IGJlIG51bGxcIik7XG4iIFwKKyAgICAiICAgIFxuIiBcCisgICAgIiAg
ICBpZiAodGhpcyA9PT0gdW5kZWZpbmVkKVxuIiBcCisgICAgIiAgICAgICAgdGhyb3cgbmV3IEBU
eXBlRXJyb3IoXCJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCByZXF1aXJlcyB0aGF0IHx0aGlzfCBu
b3QgYmUgdW5kZWZpbmVkXCIpO1xuIiBcCisgICAgIiAgICBcbiIgXAorICAgICIgICAgdmFyIGFy
cmF5ID0gQE9iamVjdCh0aGlzKTtcbiIgXAorICAgICIgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0
aChhcnJheS5sZW5ndGgpO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICBpZiAodHlwZW9mIGNh
bGxiYWNrICE9PSBcImZ1bmN0aW9uXCIpXG4iIFwKKyAgICAiICAgICAgICB0aHJvdyBuZXcgQFR5
cGVFcnJvcihcIkFycmF5LnByb3RvdHlwZS5mb3JFYWNoIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5j
dGlvblwiKTtcbiIgXAorICAgICIgICAgXG4iIFwKKyAgICAiICAgIHZhciB0aGlzQXJnID0gYXJn
dW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4iIFwKKyAgICAi
ICAgIFxuIiBcCisgICAgIiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4i
IFwKKyAgICAiICAgICAgICBpZiAoaSBpbiBhcnJheSlcbiIgXAorICAgICIgICAgICAgICAgICBj
YWxsYmFjay5AY2FsbCh0aGlzQXJnLCBhcnJheVtpXSwgaSwgYXJyYXkpO1xuIiBcCisgICAgIiAg
ICB9XG4iIFwKKyAgICAifSlcbiIgXAorOworCisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VO
RVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKK0pTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCit7XAor
ICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUo
KS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7
IH0KK0pTQ19GT1JFQUNIX0JVSUxUSU4uUFJPVE9UWVBFX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJ
TFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCisKKworfSAv
LyBuYW1lc3BhY2UgSlNDCisjIyMgRW5kIEZpbGU6IEJ1aWx0aW5Qcm90b3R5cGVCdWlsdGlucy5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5q
cy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9l
eHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmluZWQuanMtcmVz
dWx0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmUzMzcxMzM4NWUxNjIxNzAwMDI4ZWU3ZDgxYTIzMDBhNzgyMmFlNmYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmlu
ZWQuanMtcmVzdWx0CkBAIC0wLDAgKzEsMjI0IEBACisjIyMgQmVnaW4gRmlsZTogSlNDQnVpbHRp
bnMuaAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlz
IGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1
aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVy
YXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgSlNDQnVpbHRpbnNfaAorI2RlZmluZSBKU0NC
dWlsdGluc19oCisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwor
Y2xhc3MgVk07CisKK2VudW0gY2xhc3MgQ29uc3RydWN0QWJpbGl0eSA6IHVuc2lnbmVkOworfQor
CituYW1lc3BhY2UgSlNDIHsKKworLyogQnVpbHRpbkNvbnN0cnVjdG9yICovCitleHRlcm4gY29u
c3QgY2hhciogc19idWlsdGluQ29uc3RydWN0b3JPZkNvZGU7CitleHRlcm4gY29uc3QgaW50IHNf
YnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3Ry
dWN0QWJpbGl0eSBzX2J1aWx0aW5Db25zdHJ1Y3Rvck9mQ29kZUNvbnN0cnVjdEFiaWxpdHk7Citl
eHRlcm4gY29uc3QgY2hhciogc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZTsKK2V4dGVybiBj
b25zdCBpbnQgc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZUxlbmd0aDsKK2V4dGVybiBjb25z
dCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZUNvbnN0
cnVjdEFiaWxpdHk7CisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTkNPTlNUUlVDVE9SX0JV
SUxUSU5fREFUQShtYWNybykgXAorICAgIG1hY3JvKG9mLCBidWlsdGluQ29uc3RydWN0b3JPZiwg
MCkgXAorICAgIG1hY3JvKGZyb20sIGJ1aWx0aW5Db25zdHJ1Y3RvckZyb20sIDEpIFwKKworI2Rl
ZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOQ09OU1RSVUNUT1JfT0YgMQorI2RlZmluZSBKU0NfQlVJ
TFRJTl9CVUlMVElOQ09OU1RSVUNUT1JfRlJPTSAxCisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJ
TFRJTl9DT0RFKG1hY3JvKSBcCisgICAgbWFjcm8oYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2RlLCBv
Ziwgc19idWlsdGluQ29uc3RydWN0b3JPZkNvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhidWlsdGlu
Q29uc3RydWN0b3JGcm9tQ29kZSwgZnJvbSwgc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZUxl
bmd0aCkgXAorCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNy
bykgXAorICAgIG1hY3JvKGZyb20pIFwKKyAgICBtYWNybyhvZikgXAorCisjZGVmaW5lIERFQ0xB
UkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3Vu
dCkgXAorICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpT
Qzo6Vk0mKTsKKworSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5F
UkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIEpTQ19C
VUlMVElOX0VYSVNUUyhvYmplY3QsIGZ1bmMpIGRlZmluZWQgSlNDX0JVSUxUSU5fICMjIG9iamVj
dCAjIyBfICMjIGZ1bmMKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0NCdWls
dGluc19oCisKKyMjIyBFbmQgRmlsZTogSlNDQnVpbHRpbnMuaAorCisjIyMgQmVnaW4gRmlsZTog
SlNDQnVpbHRpbnMuY3BwCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMg
RklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVz
IGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIK
KyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFi
aWxpdHkgc19idWlsdGluQ29uc3RydWN0b3JPZkNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpD
b25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19idWlsdGluQ29u
c3RydWN0b3JPZkNvZGVMZW5ndGggPSAyOTQ7Citjb25zdCBjaGFyKiBzX2J1aWx0aW5Db25zdHJ1
Y3Rvck9mQ29kZSA9CisgICAgIihmdW5jdGlvbiAoKVxuIiBcCisgICAgIntcbiIgXAorICAgICIg
ICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHZhciBsZW5ndGgg
PSBhcmd1bWVudHMubGVuZ3RoO1xuIiBcCisgICAgIiAgICAvL1xuIiBcCisgICAgIiAgICB2YXIg
YXJyYXkgPSB0eXBlb2YgdGhpcyA9PT0gJ2Z1bmN0aW9uJyA/IG5ldyB0aGlzKGxlbmd0aCkgOiBu
ZXcgQEFycmF5KGxlbmd0aCk7XG4iIFwKKyAgICAiICAgIGZvciAodmFyIGsgPSAwOyBrIDwgbGVu
Z3RoOyArK2spXG4iIFwKKyAgICAiICAgICAgICBAcHV0QnlWYWxEaXJlY3QoYXJyYXksIGssIGFy
Z3VtZW50c1trXSk7XG4iIFwKKyAgICAiICAgIGFycmF5Lmxlbmd0aCA9IGxlbmd0aDtcbiIgXAor
ICAgICIgICAgcmV0dXJuIGFycmF5O1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlND
OjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpbkNvbnN0cnVjdG9yRnJvbUNvZGVDb25zdHJ1Y3RB
YmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBp
bnQgc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZUxlbmd0aCA9IDIwNDY7Citjb25zdCBjaGFy
KiBzX2J1aWx0aW5Db25zdHJ1Y3RvckZyb21Db2RlID0KKyAgICAiKGZ1bmN0aW9uIChpdGVtcyAp
XG4iIFwKKyAgICAie1xuIiBcCisgICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJc
biIgXAorICAgICIgICAgdmFyIHRoaXNPYmogPSB0aGlzO1xuIiBcCisgICAgIlxuIiBcCisgICAg
IiAgICB2YXIgbWFwRm4gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVu
ZGVmaW5lZDtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdmFyIHRoaXNBcmc7XG4iIFwKKyAg
ICAiXG4iIFwKKyAgICAiICAgIGlmIChtYXBGbiAhPT0gdW5kZWZpbmVkKSB7XG4iIFwKKyAgICAi
ICAgICAgICBpZiAodHlwZW9mIG1hcEZuICE9PSBcImZ1bmN0aW9uXCIpXG4iIFwKKyAgICAiICAg
ICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5mcm9tIHJlcXVpcmVzIHRoYXQg
dGhlIHNlY29uZCBhcmd1bWVudCwgd2hlbiBwcm92aWRlZCwgYmUgYSBmdW5jdGlvblwiKTtcbiIg
XAorICAgICJcbiIgXAorICAgICIgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMilcbiIg
XAorICAgICIgICAgICAgICAgICB0aGlzQXJnID0gYXJndW1lbnRzWzJdO1xuIiBcCisgICAgIiAg
ICB9XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIGlmIChpdGVtcyA9PSBudWxsKVxuIiBcCisg
ICAgIiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5mcm9tIHJlcXVpcmVzIGFu
IGFycmF5LWxpa2Ugb2JqZWN0IC0gbm90IG51bGwgb3IgdW5kZWZpbmVkXCIpO1xuIiBcCisgICAg
IlxuIiBcCisgICAgIiAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVtc1tAc3ltYm9sSXRlcmF0
b3JdO1xuIiBcCisgICAgIiAgICBpZiAoaXRlcmF0b3JNZXRob2QgIT0gbnVsbCkge1xuIiBcCisg
ICAgIiAgICAgICAgaWYgKHR5cGVvZiBpdGVyYXRvck1ldGhvZCAhPT0gXCJmdW5jdGlvblwiKVxu
IiBcCisgICAgIiAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkuZnJvbSBy
ZXF1aXJlcyB0aGF0IHRoZSBwcm9wZXJ0eSBvZiB0aGUgZmlyc3QgYXJndW1lbnQsIGl0ZW1zW1N5
bWJvbC5pdGVyYXRvcl0sIHdoZW4gZXhpc3RzLCBiZSBhIGZ1bmN0aW9uXCIpO1xuIiBcCisgICAg
IlxuIiBcCisgICAgIiAgICAgICAgLy9cbiIgXAorICAgICIgICAgICAgIHZhciByZXN1bHQgPSAo
dHlwZW9mIHRoaXNPYmogPT09IFwiZnVuY3Rpb25cIikgPyBAT2JqZWN0KG5ldyB0aGlzT2JqKCkp
IDogW107XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgICAgICB2YXIgayA9IDA7XG4iIFwKKyAg
ICAiICAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvck1ldGhvZC5AY2FsbChpdGVtcyk7XG4i
IFwKKyAgICAiXG4iIFwKKyAgICAiICAgICAgICAvL1xuIiBcCisgICAgIiAgICAgICAgLy9cbiIg
XAorICAgICIgICAgICAgIC8vXG4iIFwKKyAgICAiICAgICAgICB2YXIgd3JhcHBlciA9IHtcbiIg
XAorICAgICIgICAgICAgICAgICBbQHN5bWJvbEl0ZXJhdG9yXSgpIHtcbiIgXAorICAgICIgICAg
ICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yO1xuIiBcCisgICAgIiAgICAgICAgICAgIH1cbiIg
XAorICAgICIgICAgICAgIH07XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgICAgICBmb3IgKHZh
ciB2YWx1ZSBvZiB3cmFwcGVyKSB7XG4iIFwKKyAgICAiICAgICAgICAgICAgaWYgKG1hcEZuKVxu
IiBcCisgICAgIiAgICAgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB0aGlz
QXJnID09PSB1bmRlZmluZWQgPyBtYXBGbih2YWx1ZSwgaykgOiBtYXBGbi5AY2FsbCh0aGlzQXJn
LCB2YWx1ZSwgaykpO1xuIiBcCisgICAgIiAgICAgICAgICAgIGVsc2VcbiIgXAorICAgICIgICAg
ICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywgdmFsdWUpO1xuIiBcCisgICAg
IiAgICAgICAgICAgIGsgKz0gMTtcbiIgXAorICAgICIgICAgICAgIH1cbiIgXAorICAgICJcbiIg
XAorICAgICIgICAgICAgIHJlc3VsdC5sZW5ndGggPSBrO1xuIiBcCisgICAgIiAgICAgICAgcmV0
dXJuIHJlc3VsdDtcbiIgXAorICAgICIgICAgfVxuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICB2
YXIgYXJyYXlMaWtlID0gQE9iamVjdChpdGVtcyk7XG4iIFwKKyAgICAiICAgIHZhciBhcnJheUxp
a2VMZW5ndGggPSBAdG9MZW5ndGgoYXJyYXlMaWtlLmxlbmd0aCk7XG4iIFwKKyAgICAiXG4iIFwK
KyAgICAiICAgIC8vXG4iIFwKKyAgICAiICAgIHZhciByZXN1bHQgPSAodHlwZW9mIHRoaXNPYmog
PT09IFwiZnVuY3Rpb25cIikgPyBAT2JqZWN0KG5ldyB0aGlzT2JqKGFycmF5TGlrZUxlbmd0aCkp
IDogbmV3IEBBcnJheShhcnJheUxpa2VMZW5ndGgpO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAg
ICB2YXIgayA9IDA7XG4iIFwKKyAgICAiICAgIHdoaWxlIChrIDwgYXJyYXlMaWtlTGVuZ3RoKSB7
XG4iIFwKKyAgICAiICAgICAgICB2YXIgdmFsdWUgPSBhcnJheUxpa2Vba107XG4iIFwKKyAgICAi
ICAgICAgICBpZiAobWFwRm4pXG4iIFwKKyAgICAiICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0
KHJlc3VsdCwgaywgdGhpc0FyZyA9PT0gdW5kZWZpbmVkID8gbWFwRm4odmFsdWUsIGspIDogbWFw
Rm4uQGNhbGwodGhpc0FyZywgdmFsdWUsIGspKTtcbiIgXAorICAgICIgICAgICAgIGVsc2VcbiIg
XAorICAgICIgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB2YWx1ZSk7XG4i
IFwKKyAgICAiICAgICAgICBrICs9IDE7XG4iIFwKKyAgICAiICAgIH1cbiIgXAorICAgICJcbiIg
XAorICAgICIgICAgcmVzdWx0Lmxlbmd0aCA9IGFycmF5TGlrZUxlbmd0aDtcbiIgXAorICAgICIg
ICAgcmV0dXJuIHJlc3VsdDtcbiIgXAorICAgICJ9KVxuIiBcCis7CisKKworI2RlZmluZSBERUZJ
TkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3Vu
dCkgXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpW
TSYgdm0pIFwKK3tcCisgICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFt
ZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5h
bWUjI1NvdXJjZSgpKTsgfQorSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElO
X0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKworCit9IC8vIG5h
bWVzcGFjZSBKU0MKKyMjIyBFbmQgRmlsZTogSlNDQnVpbHRpbnMuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZh
U2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItU2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlw
dENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFyYXRlLmpzLXJlc3VsdApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
MjY2ZDA1ZDQwMGQ1ZDc2NGJmMmRkNjdjMmI4NjViY2E1NzlkM2IwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQv
SmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAt
MCwwICsxLDIyMyBAQAorIyMjIEJlZ2luIEZpbGU6IEJ1aWx0aW5Db25zdHJ1Y3RvckJ1aWx0aW5z
LmgKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBh
dXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWls
dGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0
ZS1qcy1idWlsdGlucy5weQorCisjaWZuZGVmIEJ1aWx0aW5Db25zdHJ1Y3RvckJ1aWx0aW5zX2gK
KyNkZWZpbmUgQnVpbHRpbkNvbnN0cnVjdG9yQnVpbHRpbnNfaAorCisKKworbmFtZXNwYWNlIEpT
QyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Cit9CisKK25hbWVzcGFjZSBKU0MgeworCisv
KiBCdWlsdGluQ29uc3RydWN0b3IgKi8KK2V4dGVybiBjb25zdCBjaGFyKiBzX2J1aWx0aW5Db25z
dHJ1Y3Rvck9mQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19idWlsdGluQ29uc3RydWN0b3JPZkNv
ZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpbkNv
bnN0cnVjdG9yT2ZDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX2J1
aWx0aW5Db25zdHJ1Y3RvckZyb21Db2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2J1aWx0aW5Db25z
dHJ1Y3RvckZyb21Db2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0
eSBzX2J1aWx0aW5Db25zdHJ1Y3RvckZyb21Db2RlQ29uc3RydWN0QWJpbGl0eTsKKworI2RlZmlu
ZSBKU0NfRk9SRUFDSF9CVUlMVElOQ09OU1RSVUNUT1JfQlVJTFRJTl9EQVRBKG1hY3JvKSBcCisg
ICAgbWFjcm8ob2YsIGJ1aWx0aW5Db25zdHJ1Y3Rvck9mLCAwKSBcCisgICAgbWFjcm8oZnJvbSwg
YnVpbHRpbkNvbnN0cnVjdG9yRnJvbSwgMSkgXAorCisjZGVmaW5lIEpTQ19CVUlMVElOX0JVSUxU
SU5DT05TVFJVQ1RPUl9PRiAxCisjZGVmaW5lIEpTQ19CVUlMVElOX0JVSUxUSU5DT05TVFJVQ1RP
Ul9GUk9NIDEKKworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOQ09OU1RSVUNUT1JfQlVJTFRJ
Tl9DT0RFKG1hY3JvKSBcCisgICAgbWFjcm8oYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2RlLCBvZiwg
c19idWlsdGluQ29uc3RydWN0b3JPZkNvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhidWlsdGluQ29u
c3RydWN0b3JGcm9tQ29kZSwgZnJvbSwgc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZUxlbmd0
aCkgXAorCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5DT05TVFJVQ1RPUl9CVUlMVElOX0ZV
TkNUSU9OX05BTUUobWFjcm8pIFwKKyAgICBtYWNybyhmcm9tKSBcCisgICAgbWFjcm8ob2YpIFwK
KworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5h
bWUsIGFyZ3VtZW50Q291bnQpIFwKKyAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5h
bWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisKK0pTQ19GT1JFQUNIX0JVSUxUSU5DT05TVFJVQ1RP
Ul9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUNMQVJF
X0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTkNPTlNUUlVD
VE9SX0VYSVNUUyhvYmplY3QsIGZ1bmMpIGRlZmluZWQgSlNDX0JVSUxUSU5fICMjIG9iamVjdCAj
IyBfICMjIGZ1bmMKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBCdWlsdGluQ29u
c3RydWN0b3JCdWlsdGluc19oCisKKyMjIyBFbmQgRmlsZTogQnVpbHRpbkNvbnN0cnVjdG9yQnVp
bHRpbnMuaAorCisjIyMgQmVnaW4gRmlsZTogQnVpbHRpbkNvbnN0cnVjdG9yQnVpbHRpbnMuY3Bw
CisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0
b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRp
bnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUt
anMtYnVpbHRpbnMucHkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ1aWx0aW5D
b25zdHJ1Y3RvckJ1aWx0aW5zLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIK
KyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFi
aWxpdHkgc19idWlsdGluQ29uc3RydWN0b3JPZkNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpD
b25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19idWlsdGluQ29u
c3RydWN0b3JPZkNvZGVMZW5ndGggPSAyOTQ7Citjb25zdCBjaGFyKiBzX2J1aWx0aW5Db25zdHJ1
Y3Rvck9mQ29kZSA9CisgICAgIihmdW5jdGlvbiAoKVxuIiBcCisgICAgIntcbiIgXAorICAgICIg
ICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHZhciBsZW5ndGgg
PSBhcmd1bWVudHMubGVuZ3RoO1xuIiBcCisgICAgIiAgICAvL1xuIiBcCisgICAgIiAgICB2YXIg
YXJyYXkgPSB0eXBlb2YgdGhpcyA9PT0gJ2Z1bmN0aW9uJyA/IG5ldyB0aGlzKGxlbmd0aCkgOiBu
ZXcgQEFycmF5KGxlbmd0aCk7XG4iIFwKKyAgICAiICAgIGZvciAodmFyIGsgPSAwOyBrIDwgbGVu
Z3RoOyArK2spXG4iIFwKKyAgICAiICAgICAgICBAcHV0QnlWYWxEaXJlY3QoYXJyYXksIGssIGFy
Z3VtZW50c1trXSk7XG4iIFwKKyAgICAiICAgIGFycmF5Lmxlbmd0aCA9IGxlbmd0aDtcbiIgXAor
ICAgICIgICAgcmV0dXJuIGFycmF5O1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlND
OjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpbkNvbnN0cnVjdG9yRnJvbUNvZGVDb25zdHJ1Y3RB
YmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBp
bnQgc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZUxlbmd0aCA9IDIwNDY7Citjb25zdCBjaGFy
KiBzX2J1aWx0aW5Db25zdHJ1Y3RvckZyb21Db2RlID0KKyAgICAiKGZ1bmN0aW9uIChpdGVtcyAp
XG4iIFwKKyAgICAie1xuIiBcCisgICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJc
biIgXAorICAgICIgICAgdmFyIHRoaXNPYmogPSB0aGlzO1xuIiBcCisgICAgIlxuIiBcCisgICAg
IiAgICB2YXIgbWFwRm4gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVu
ZGVmaW5lZDtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdmFyIHRoaXNBcmc7XG4iIFwKKyAg
ICAiXG4iIFwKKyAgICAiICAgIGlmIChtYXBGbiAhPT0gdW5kZWZpbmVkKSB7XG4iIFwKKyAgICAi
ICAgICAgICBpZiAodHlwZW9mIG1hcEZuICE9PSBcImZ1bmN0aW9uXCIpXG4iIFwKKyAgICAiICAg
ICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5mcm9tIHJlcXVpcmVzIHRoYXQg
dGhlIHNlY29uZCBhcmd1bWVudCwgd2hlbiBwcm92aWRlZCwgYmUgYSBmdW5jdGlvblwiKTtcbiIg
XAorICAgICJcbiIgXAorICAgICIgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMilcbiIg
XAorICAgICIgICAgICAgICAgICB0aGlzQXJnID0gYXJndW1lbnRzWzJdO1xuIiBcCisgICAgIiAg
ICB9XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIGlmIChpdGVtcyA9PSBudWxsKVxuIiBcCisg
ICAgIiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5mcm9tIHJlcXVpcmVzIGFu
IGFycmF5LWxpa2Ugb2JqZWN0IC0gbm90IG51bGwgb3IgdW5kZWZpbmVkXCIpO1xuIiBcCisgICAg
IlxuIiBcCisgICAgIiAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVtc1tAc3ltYm9sSXRlcmF0
b3JdO1xuIiBcCisgICAgIiAgICBpZiAoaXRlcmF0b3JNZXRob2QgIT0gbnVsbCkge1xuIiBcCisg
ICAgIiAgICAgICAgaWYgKHR5cGVvZiBpdGVyYXRvck1ldGhvZCAhPT0gXCJmdW5jdGlvblwiKVxu
IiBcCisgICAgIiAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkuZnJvbSBy
ZXF1aXJlcyB0aGF0IHRoZSBwcm9wZXJ0eSBvZiB0aGUgZmlyc3QgYXJndW1lbnQsIGl0ZW1zW1N5
bWJvbC5pdGVyYXRvcl0sIHdoZW4gZXhpc3RzLCBiZSBhIGZ1bmN0aW9uXCIpO1xuIiBcCisgICAg
IlxuIiBcCisgICAgIiAgICAgICAgLy9cbiIgXAorICAgICIgICAgICAgIHZhciByZXN1bHQgPSAo
dHlwZW9mIHRoaXNPYmogPT09IFwiZnVuY3Rpb25cIikgPyBAT2JqZWN0KG5ldyB0aGlzT2JqKCkp
IDogW107XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgICAgICB2YXIgayA9IDA7XG4iIFwKKyAg
ICAiICAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvck1ldGhvZC5AY2FsbChpdGVtcyk7XG4i
IFwKKyAgICAiXG4iIFwKKyAgICAiICAgICAgICAvL1xuIiBcCisgICAgIiAgICAgICAgLy9cbiIg
XAorICAgICIgICAgICAgIC8vXG4iIFwKKyAgICAiICAgICAgICB2YXIgd3JhcHBlciA9IHtcbiIg
XAorICAgICIgICAgICAgICAgICBbQHN5bWJvbEl0ZXJhdG9yXSgpIHtcbiIgXAorICAgICIgICAg
ICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yO1xuIiBcCisgICAgIiAgICAgICAgICAgIH1cbiIg
XAorICAgICIgICAgICAgIH07XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgICAgICBmb3IgKHZh
ciB2YWx1ZSBvZiB3cmFwcGVyKSB7XG4iIFwKKyAgICAiICAgICAgICAgICAgaWYgKG1hcEZuKVxu
IiBcCisgICAgIiAgICAgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB0aGlz
QXJnID09PSB1bmRlZmluZWQgPyBtYXBGbih2YWx1ZSwgaykgOiBtYXBGbi5AY2FsbCh0aGlzQXJn
LCB2YWx1ZSwgaykpO1xuIiBcCisgICAgIiAgICAgICAgICAgIGVsc2VcbiIgXAorICAgICIgICAg
ICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywgdmFsdWUpO1xuIiBcCisgICAg
IiAgICAgICAgICAgIGsgKz0gMTtcbiIgXAorICAgICIgICAgICAgIH1cbiIgXAorICAgICJcbiIg
XAorICAgICIgICAgICAgIHJlc3VsdC5sZW5ndGggPSBrO1xuIiBcCisgICAgIiAgICAgICAgcmV0
dXJuIHJlc3VsdDtcbiIgXAorICAgICIgICAgfVxuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICB2
YXIgYXJyYXlMaWtlID0gQE9iamVjdChpdGVtcyk7XG4iIFwKKyAgICAiICAgIHZhciBhcnJheUxp
a2VMZW5ndGggPSBAdG9MZW5ndGgoYXJyYXlMaWtlLmxlbmd0aCk7XG4iIFwKKyAgICAiXG4iIFwK
KyAgICAiICAgIC8vXG4iIFwKKyAgICAiICAgIHZhciByZXN1bHQgPSAodHlwZW9mIHRoaXNPYmog
PT09IFwiZnVuY3Rpb25cIikgPyBAT2JqZWN0KG5ldyB0aGlzT2JqKGFycmF5TGlrZUxlbmd0aCkp
IDogbmV3IEBBcnJheShhcnJheUxpa2VMZW5ndGgpO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAg
ICB2YXIgayA9IDA7XG4iIFwKKyAgICAiICAgIHdoaWxlIChrIDwgYXJyYXlMaWtlTGVuZ3RoKSB7
XG4iIFwKKyAgICAiICAgICAgICB2YXIgdmFsdWUgPSBhcnJheUxpa2Vba107XG4iIFwKKyAgICAi
ICAgICAgICBpZiAobWFwRm4pXG4iIFwKKyAgICAiICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0
KHJlc3VsdCwgaywgdGhpc0FyZyA9PT0gdW5kZWZpbmVkID8gbWFwRm4odmFsdWUsIGspIDogbWFw
Rm4uQGNhbGwodGhpc0FyZywgdmFsdWUsIGspKTtcbiIgXAorICAgICIgICAgICAgIGVsc2VcbiIg
XAorICAgICIgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB2YWx1ZSk7XG4i
IFwKKyAgICAiICAgICAgICBrICs9IDE7XG4iIFwKKyAgICAiICAgIH1cbiIgXAorICAgICJcbiIg
XAorICAgICIgICAgcmVzdWx0Lmxlbmd0aCA9IGFycmF5TGlrZUxlbmd0aDtcbiIgXAorICAgICIg
ICAgcmV0dXJuIHJlc3VsdDtcbiIgXAorICAgICJ9KVxuIiBcCis7CisKKworI2RlZmluZSBERUZJ
TkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3Vu
dCkgXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpW
TSYgdm0pIFwKK3tcCisgICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFt
ZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5h
bWUjI1NvdXJjZSgpKTsgfQorSlNDX0ZPUkVBQ0hfQlVJTFRJTkNPTlNUUlVDVE9SX0JVSUxUSU5f
Q09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VO
RVJBVE9SCisKKworfSAvLyBuYW1lc3BhY2UgSlNDCisjIyMgRW5kIEZpbGU6IEJ1aWx0aW5Db25z
dHJ1Y3RvckJ1aWx0aW5zLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtT3BlcmF0aW9ucy5Q
cm9taXNlLUNvbWJpbmVkLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLU9wZXJhdGlvbnMuUHJvbWlz
ZS1Db21iaW5lZC5qcy1yZXN1bHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzE0NTExMTFjYTdkNjc1NWZlMjc1YTM5
NDRlNzcxNjQxYjNiOWRmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLU9wZXJhdGlv
bnMuUHJvbWlzZS1Db21iaW5lZC5qcy1yZXN1bHQKQEAgLTAsMCArMSw0MTUgQEAKKyMjIyBCZWdp
biBGaWxlOiBKU0NCdWlsdGlucy5oCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBO
T1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2
YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgSlND
QnVpbHRpbnNfaAorI2RlZmluZSBKU0NCdWlsdGluc19oCisKK25hbWVzcGFjZSBKU0MgeworY2xh
c3MgRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgVk07CisKK2VudW0gY2xhc3MgQ29uc3RydWN0
QWJpbGl0eSA6IHVuc2lnbmVkOworfQorCituYW1lc3BhY2UgSlNDIHsKKworLyogT3BlcmF0aW9u
cy5Qcm9taXNlICovCitleHRlcm4gY29uc3QgY2hhciogc19vcGVyYXRpb25zUHJvbWlzZUlzUHJv
bWlzZUNvZGU7CitleHRlcm4gY29uc3QgaW50IHNfb3BlcmF0aW9uc1Byb21pc2VJc1Byb21pc2VD
b2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJhdGlv
bnNQcm9taXNlSXNQcm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hh
ciogc19vcGVyYXRpb25zUHJvbWlzZU5ld1Byb21pc2VSZWFjdGlvbkNvZGU7CitleHRlcm4gY29u
c3QgaW50IHNfb3BlcmF0aW9uc1Byb21pc2VOZXdQcm9taXNlUmVhY3Rpb25Db2RlTGVuZ3RoOwor
ZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9taXNlTmV3
UHJvbWlzZVJlYWN0aW9uQ29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciog
c19vcGVyYXRpb25zUHJvbWlzZU5ld1Byb21pc2VDYXBhYmlsaXR5Q29kZTsKK2V4dGVybiBjb25z
dCBpbnQgc19vcGVyYXRpb25zUHJvbWlzZU5ld1Byb21pc2VDYXBhYmlsaXR5Q29kZUxlbmd0aDsK
K2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19vcGVyYXRpb25zUHJvbWlzZU5l
d1Byb21pc2VDYXBhYmlsaXR5Q29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hh
ciogc19vcGVyYXRpb25zUHJvbWlzZVRyaWdnZXJQcm9taXNlUmVhY3Rpb25zQ29kZTsKK2V4dGVy
biBjb25zdCBpbnQgc19vcGVyYXRpb25zUHJvbWlzZVRyaWdnZXJQcm9taXNlUmVhY3Rpb25zQ29k
ZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19vcGVyYXRpb25z
UHJvbWlzZVRyaWdnZXJQcm9taXNlUmVhY3Rpb25zQ29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRl
cm4gY29uc3QgY2hhciogc19vcGVyYXRpb25zUHJvbWlzZVJlamVjdFByb21pc2VDb2RlOworZXh0
ZXJuIGNvbnN0IGludCBzX29wZXJhdGlvbnNQcm9taXNlUmVqZWN0UHJvbWlzZUNvZGVMZW5ndGg7
CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VS
ZWplY3RQcm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19v
cGVyYXRpb25zUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19v
cGVyYXRpb25zUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBK
U0M6OkNvbnN0cnVjdEFiaWxpdHkgc19vcGVyYXRpb25zUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29k
ZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19vcGVyYXRpb25zUHJvbWlz
ZUNyZWF0ZVJlc29sdmluZ0Z1bmN0aW9uc0NvZGU7CitleHRlcm4gY29uc3QgaW50IHNfb3BlcmF0
aW9uc1Byb21pc2VDcmVhdGVSZXNvbHZpbmdGdW5jdGlvbnNDb2RlTGVuZ3RoOworZXh0ZXJuIGNv
bnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9taXNlQ3JlYXRlUmVzb2x2
aW5nRnVuY3Rpb25zQ29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19v
cGVyYXRpb25zUHJvbWlzZVByb21pc2VSZWFjdGlvbkpvYkNvZGU7CitleHRlcm4gY29uc3QgaW50
IHNfb3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVhY3Rpb25Kb2JDb2RlTGVuZ3RoOworZXh0ZXJu
IGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJl
YWN0aW9uSm9iQ29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19vcGVy
YXRpb25zUHJvbWlzZVByb21pc2VSZXNvbHZlVGhlbmFibGVKb2JDb2RlOworZXh0ZXJuIGNvbnN0
IGludCBzX29wZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYkNvZGVMZW5n
dGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21p
c2VQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4g
Y29uc3QgY2hhciogc19vcGVyYXRpb25zUHJvbWlzZUluaXRpYWxpemVQcm9taXNlQ29kZTsKK2V4
dGVybiBjb25zdCBpbnQgc19vcGVyYXRpb25zUHJvbWlzZUluaXRpYWxpemVQcm9taXNlQ29kZUxl
bmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19vcGVyYXRpb25zUHJv
bWlzZUluaXRpYWxpemVQcm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHk7CisKKyNkZWZpbmUgSlND
X0ZPUkVBQ0hfT1BFUkFUSU9OU1BST01JU0VfQlVJTFRJTl9EQVRBKG1hY3JvKSBcCisgICAgbWFj
cm8oaXNQcm9taXNlLCBvcGVyYXRpb25zUHJvbWlzZUlzUHJvbWlzZSwgMSkgXAorICAgIG1hY3Jv
KG5ld1Byb21pc2VSZWFjdGlvbiwgb3BlcmF0aW9uc1Byb21pc2VOZXdQcm9taXNlUmVhY3Rpb24s
IDIpIFwKKyAgICBtYWNybyhuZXdQcm9taXNlQ2FwYWJpbGl0eSwgb3BlcmF0aW9uc1Byb21pc2VO
ZXdQcm9taXNlQ2FwYWJpbGl0eSwgMSkgXAorICAgIG1hY3JvKHRyaWdnZXJQcm9taXNlUmVhY3Rp
b25zLCBvcGVyYXRpb25zUHJvbWlzZVRyaWdnZXJQcm9taXNlUmVhY3Rpb25zLCAyKSBcCisgICAg
bWFjcm8ocmVqZWN0UHJvbWlzZSwgb3BlcmF0aW9uc1Byb21pc2VSZWplY3RQcm9taXNlLCAyKSBc
CisgICAgbWFjcm8oZnVsZmlsbFByb21pc2UsIG9wZXJhdGlvbnNQcm9taXNlRnVsZmlsbFByb21p
c2UsIDIpIFwKKyAgICBtYWNybyhjcmVhdGVSZXNvbHZpbmdGdW5jdGlvbnMsIG9wZXJhdGlvbnNQ
cm9taXNlQ3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zLCAxKSBcCisgICAgbWFjcm8ocHJvbWlzZVJl
YWN0aW9uSm9iLCBvcGVyYXRpb25zUHJvbWlzZVByb21pc2VSZWFjdGlvbkpvYiwgMikgXAorICAg
IG1hY3JvKHByb21pc2VSZXNvbHZlVGhlbmFibGVKb2IsIG9wZXJhdGlvbnNQcm9taXNlUHJvbWlz
ZVJlc29sdmVUaGVuYWJsZUpvYiwgMykgXAorICAgIG1hY3JvKGluaXRpYWxpemVQcm9taXNlLCBv
cGVyYXRpb25zUHJvbWlzZUluaXRpYWxpemVQcm9taXNlLCAxKSBcCisKKyNkZWZpbmUgSlNDX0JV
SUxUSU5fT1BFUkFUSU9OU1BST01JU0VfSVNQUk9NSVNFIDEKKyNkZWZpbmUgSlNDX0JVSUxUSU5f
T1BFUkFUSU9OU1BST01JU0VfTkVXUFJPTUlTRVJFQUNUSU9OIDEKKyNkZWZpbmUgSlNDX0JVSUxU
SU5fT1BFUkFUSU9OU1BST01JU0VfTkVXUFJPTUlTRUNBUEFCSUxJVFkgMQorI2RlZmluZSBKU0Nf
QlVJTFRJTl9PUEVSQVRJT05TUFJPTUlTRV9UUklHR0VSUFJPTUlTRVJFQUNUSU9OUyAxCisjZGVm
aW5lIEpTQ19CVUlMVElOX09QRVJBVElPTlNQUk9NSVNFX1JFSkVDVFBST01JU0UgMQorI2RlZmlu
ZSBKU0NfQlVJTFRJTl9PUEVSQVRJT05TUFJPTUlTRV9GVUxGSUxMUFJPTUlTRSAxCisjZGVmaW5l
IEpTQ19CVUlMVElOX09QRVJBVElPTlNQUk9NSVNFX0NSRUFURVJFU09MVklOR0ZVTkNUSU9OUyAx
CisjZGVmaW5lIEpTQ19CVUlMVElOX09QRVJBVElPTlNQUk9NSVNFX1BST01JU0VSRUFDVElPTkpP
QiAxCisjZGVmaW5lIEpTQ19CVUlMVElOX09QRVJBVElPTlNQUk9NSVNFX1BST01JU0VSRVNPTFZF
VEhFTkFCTEVKT0IgMQorI2RlZmluZSBKU0NfQlVJTFRJTl9PUEVSQVRJT05TUFJPTUlTRV9JTklU
SUFMSVpFUFJPTUlTRSAxCisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKG1hY3Jv
KSBcCisgICAgbWFjcm8ob3BlcmF0aW9uc1Byb21pc2VJc1Byb21pc2VDb2RlLCBpc1Byb21pc2Us
IHNfb3BlcmF0aW9uc1Byb21pc2VJc1Byb21pc2VDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8ob3Bl
cmF0aW9uc1Byb21pc2VOZXdQcm9taXNlUmVhY3Rpb25Db2RlLCBuZXdQcm9taXNlUmVhY3Rpb24s
IHNfb3BlcmF0aW9uc1Byb21pc2VOZXdQcm9taXNlUmVhY3Rpb25Db2RlTGVuZ3RoKSBcCisgICAg
bWFjcm8ob3BlcmF0aW9uc1Byb21pc2VOZXdQcm9taXNlQ2FwYWJpbGl0eUNvZGUsIG5ld1Byb21p
c2VDYXBhYmlsaXR5LCBzX29wZXJhdGlvbnNQcm9taXNlTmV3UHJvbWlzZUNhcGFiaWxpdHlDb2Rl
TGVuZ3RoKSBcCisgICAgbWFjcm8ob3BlcmF0aW9uc1Byb21pc2VUcmlnZ2VyUHJvbWlzZVJlYWN0
aW9uc0NvZGUsIHRyaWdnZXJQcm9taXNlUmVhY3Rpb25zLCBzX29wZXJhdGlvbnNQcm9taXNlVHJp
Z2dlclByb21pc2VSZWFjdGlvbnNDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8ob3BlcmF0aW9uc1By
b21pc2VSZWplY3RQcm9taXNlQ29kZSwgcmVqZWN0UHJvbWlzZSwgc19vcGVyYXRpb25zUHJvbWlz
ZVJlamVjdFByb21pc2VDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8ob3BlcmF0aW9uc1Byb21pc2VG
dWxmaWxsUHJvbWlzZUNvZGUsIGZ1bGZpbGxQcm9taXNlLCBzX29wZXJhdGlvbnNQcm9taXNlRnVs
ZmlsbFByb21pc2VDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8ob3BlcmF0aW9uc1Byb21pc2VDcmVh
dGVSZXNvbHZpbmdGdW5jdGlvbnNDb2RlLCBjcmVhdGVSZXNvbHZpbmdGdW5jdGlvbnMsIHNfb3Bl
cmF0aW9uc1Byb21pc2VDcmVhdGVSZXNvbHZpbmdGdW5jdGlvbnNDb2RlTGVuZ3RoKSBcCisgICAg
bWFjcm8ob3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVhY3Rpb25Kb2JDb2RlLCBwcm9taXNlUmVh
Y3Rpb25Kb2IsIHNfb3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVhY3Rpb25Kb2JDb2RlTGVuZ3Ro
KSBcCisgICAgbWFjcm8ob3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9i
Q29kZSwgcHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYiwgc19vcGVyYXRpb25zUHJvbWlzZVByb21p
c2VSZXNvbHZlVGhlbmFibGVKb2JDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8ob3BlcmF0aW9uc1By
b21pc2VJbml0aWFsaXplUHJvbWlzZUNvZGUsIGluaXRpYWxpemVQcm9taXNlLCBzX29wZXJhdGlv
bnNQcm9taXNlSW5pdGlhbGl6ZVByb21pc2VDb2RlTGVuZ3RoKSBcCisKKyNkZWZpbmUgSlNDX0ZP
UkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcCisgICAgbWFjcm8oY3JlYXRlUmVz
b2x2aW5nRnVuY3Rpb25zKSBcCisgICAgbWFjcm8oZnVsZmlsbFByb21pc2UpIFwKKyAgICBtYWNy
byhpbml0aWFsaXplUHJvbWlzZSkgXAorICAgIG1hY3JvKGlzUHJvbWlzZSkgXAorICAgIG1hY3Jv
KG5ld1Byb21pc2VDYXBhYmlsaXR5KSBcCisgICAgbWFjcm8obmV3UHJvbWlzZVJlYWN0aW9uKSBc
CisgICAgbWFjcm8ocHJvbWlzZVJlYWN0aW9uSm9iKSBcCisgICAgbWFjcm8ocHJvbWlzZVJlc29s
dmVUaGVuYWJsZUpvYikgXAorICAgIG1hY3JvKHJlamVjdFByb21pc2UpIFwKKyAgICBtYWNybyh0
cmlnZ2VyUHJvbWlzZVJlYWN0aW9ucykgXAorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5F
UkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorICAgIEpTQzo6
RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKworSlND
X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYg
REVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIEpTQ19CVUlMVElOX0VYSVNUUyhv
YmplY3QsIGZ1bmMpIGRlZmluZWQgSlNDX0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0NCdWlsdGluc19oCisKKyMjIyBF
bmQgRmlsZTogSlNDQnVpbHRpbnMuaAorCisjIyMgQmVnaW4gRmlsZTogSlNDQnVpbHRpbnMuY3Bw
CisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4uCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0
IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8v
IGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dl
bmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJK
U0NCdWlsdGlucy5oIgorCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVk
ZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJW
TS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNf
b3BlcmF0aW9uc1Byb21pc2VJc1Byb21pc2VDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29u
c3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfb3BlcmF0aW9uc1By
b21pc2VJc1Byb21pc2VDb2RlTGVuZ3RoID0gMTU4OworY29uc3QgY2hhciogc19vcGVyYXRpb25z
UHJvbWlzZUlzUHJvbWlzZUNvZGUgPQorICAgIihmdW5jdGlvbiAocHJvbWlzZSlcbiIgXAorICAg
IntcbiIgXAorICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBcCisgICAiICAg
IHJldHVybiBAaXNPYmplY3QocHJvbWlzZSkgJiYgISFwcm9taXNlLkBwcm9taXNlU3RhdGU7XG4i
IFwKKyAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJh
dGlvbnNQcm9taXNlTmV3UHJvbWlzZVJlYWN0aW9uQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6
OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX29wZXJhdGlv
bnNQcm9taXNlTmV3UHJvbWlzZVJlYWN0aW9uQ29kZUxlbmd0aCA9IDIyMDsKK2NvbnN0IGNoYXIq
IHNfb3BlcmF0aW9uc1Byb21pc2VOZXdQcm9taXNlUmVhY3Rpb25Db2RlID0KKyAgICIoZnVuY3Rp
b24gKGNhcGFiaWxpdHksIGhhbmRsZXIpXG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAgXCJ1c2Ug
c3RyaWN0XCI7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICByZXR1cm4ge1xuIiBcCisgICAiICAg
ICAgICBAY2FwYWJpbGl0aWVzOiBjYXBhYmlsaXR5LFxuIiBcCisgICAiICAgICAgICBAaGFuZGxl
cjogaGFuZGxlclxuIiBcCisgICAiICAgIH07XG4iIFwKKyAgICJ9KVxuIiBcCis7CisKK2NvbnN0
IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9taXNlTmV3UHJvbWlzZUNhcGFi
aWxpdHlDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90
Q29uc3RydWN0OworY29uc3QgaW50IHNfb3BlcmF0aW9uc1Byb21pc2VOZXdQcm9taXNlQ2FwYWJp
bGl0eUNvZGVMZW5ndGggPSAxNDI3OworY29uc3QgY2hhciogc19vcGVyYXRpb25zUHJvbWlzZU5l
d1Byb21pc2VDYXBhYmlsaXR5Q29kZSA9CisgICAiKGZ1bmN0aW9uIChjb25zdHJ1Y3RvcilcbiIg
XAorICAgIntcbiIgXAorICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBcCisg
ICAiICAgIC8vXG4iIFwKKyAgICIgICAgaWYgKHR5cGVvZiBjb25zdHJ1Y3RvciAhPT0gXCJmdW5j
dGlvblwiKVxuIiBcCisgICAiICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcInByb21pc2Ug
Y2FwYWJpbGl0eSByZXF1aXJlcyBhIGNvbnN0cnVjdG9yIGZ1bmN0aW9uXCIpO1xuIiBcCisgICAi
XG4iIFwKKyAgICIgICAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0ge1xuIiBcCisgICAiICAgICAg
ICBAcHJvbWlzZTogdW5kZWZpbmVkLFxuIiBcCisgICAiICAgICAgICBAcmVzb2x2ZTogdW5kZWZp
bmVkLFxuIiBcCisgICAiICAgICAgICBAcmVqZWN0OiB1bmRlZmluZWRcbiIgXAorICAgIiAgICB9
O1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgZnVuY3Rpb24gZXhlY3V0b3IocmVzb2x2ZSwgcmVq
ZWN0KVxuIiBcCisgICAiICAgIHtcbiIgXAorICAgIiAgICAgICAgaWYgKHByb21pc2VDYXBhYmls
aXR5LkByZXNvbHZlICE9PSB1bmRlZmluZWQpXG4iIFwKKyAgICIgICAgICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcihcInJlc29sdmUgZnVuY3Rpb24gaXMgYWxyZWFkeSBzZXRcIik7XG4iIFwK
KyAgICIgICAgICAgIGlmIChwcm9taXNlQ2FwYWJpbGl0eS5AcmVqZWN0ICE9PSB1bmRlZmluZWQp
XG4iIFwKKyAgICIgICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcInJlamVjdCBmdW5j
dGlvbiBpcyBhbHJlYWR5IHNldFwiKTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgICAgICBwcm9t
aXNlQ2FwYWJpbGl0eS5AcmVzb2x2ZSA9IHJlc29sdmU7XG4iIFwKKyAgICIgICAgICAgIHByb21p
c2VDYXBhYmlsaXR5LkByZWplY3QgPSByZWplY3Q7XG4iIFwKKyAgICIgICAgfVxuIiBcCisgICAi
XG4iIFwKKyAgICIgICAgdmFyIHByb21pc2UgPSBuZXcgY29uc3RydWN0b3IoZXhlY3V0b3IpO1xu
IiBcCisgICAiXG4iIFwKKyAgICIgICAgaWYgKHR5cGVvZiBwcm9taXNlQ2FwYWJpbGl0eS5AcmVz
b2x2ZSAhPT0gXCJmdW5jdGlvblwiKVxuIiBcCisgICAiICAgICAgICB0aHJvdyBuZXcgQFR5cGVF
cnJvcihcImV4ZWN1dG9yIGRpZCBub3QgdGFrZSBhIHJlc29sdmUgZnVuY3Rpb25cIik7XG4iIFwK
KyAgICJcbiIgXAorICAgIiAgICBpZiAodHlwZW9mIHByb21pc2VDYXBhYmlsaXR5LkByZWplY3Qg
IT09IFwiZnVuY3Rpb25cIilcbiIgXAorICAgIiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3Io
XCJleGVjdXRvciBkaWQgbm90IHRha2UgYSByZWplY3QgZnVuY3Rpb25cIik7XG4iIFwKKyAgICJc
biIgXAorICAgIiAgICBwcm9taXNlQ2FwYWJpbGl0eS5AcHJvbWlzZSA9IHByb21pc2U7XG4iIFwK
KyAgICJcbiIgXAorICAgIiAgICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHk7XG4iIFwKKyAgICJ9
KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9t
aXNlVHJpZ2dlclByb21pc2VSZWFjdGlvbnNDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29u
c3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfb3BlcmF0aW9uc1By
b21pc2VUcmlnZ2VyUHJvbWlzZVJlYWN0aW9uc0NvZGVMZW5ndGggPSAyNjk7Citjb25zdCBjaGFy
KiBzX29wZXJhdGlvbnNQcm9taXNlVHJpZ2dlclByb21pc2VSZWFjdGlvbnNDb2RlID0KKyAgICIo
ZnVuY3Rpb24gKHJlYWN0aW9ucywgYXJndW1lbnQpXG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAg
XCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICBmb3IgKHZhciBpbmRleCA9
IDAsIGxlbmd0aCA9IHJlYWN0aW9ucy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyArK2luZGV4KVxu
IiBcCisgICAiICAgICAgICBAZW5xdWV1ZUpvYihAcHJvbWlzZVJlYWN0aW9uSm9iLCBbcmVhY3Rp
b25zW2luZGV4XSwgYXJndW1lbnRdKTtcbiIgXAorICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlND
OjpDb25zdHJ1Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VSZWplY3RQcm9taXNlQ29kZUNv
bnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsK
K2NvbnN0IGludCBzX29wZXJhdGlvbnNQcm9taXNlUmVqZWN0UHJvbWlzZUNvZGVMZW5ndGggPSA1
NDE7Citjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQcm9taXNlUmVqZWN0UHJvbWlzZUNvZGUgPQor
ICAgIihmdW5jdGlvbiAocHJvbWlzZSwgcmVhc29uKVxuIiBcCisgICAie1xuIiBcCisgICAiICAg
IFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdmFyIHJlYWN0aW9ucyA9
IHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnM7XG4iIFwKKyAgICIgICAgcHJvbWlzZS5A
cHJvbWlzZVJlc3VsdCA9IHJlYXNvbjtcbiIgXAorICAgIiAgICBwcm9taXNlLkBwcm9taXNlRnVs
ZmlsbFJlYWN0aW9ucyA9IHVuZGVmaW5lZDtcbiIgXAorICAgIiAgICBwcm9taXNlLkBwcm9taXNl
UmVqZWN0UmVhY3Rpb25zID0gdW5kZWZpbmVkO1xuIiBcCisgICAiICAgIHByb21pc2UuQHByb21p
c2VTdGF0ZSA9IEBwcm9taXNlUmVqZWN0ZWQ7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICBASW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLnByb21pc2VSZWplY3RlZChwcm9taXNlLCByZWFzb24sIHJl
YWN0aW9ucyk7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICBAdHJpZ2dlclByb21pc2VSZWFjdGlv
bnMocmVhY3Rpb25zLCByZWFzb24pO1xuIiBcCisgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6
OkNvbnN0cnVjdEFiaWxpdHkgc19vcGVyYXRpb25zUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZUNv
bnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsK
K2NvbnN0IGludCBzX29wZXJhdGlvbnNQcm9taXNlRnVsZmlsbFByb21pc2VDb2RlTGVuZ3RoID0g
NTQwOworY29uc3QgY2hhciogc19vcGVyYXRpb25zUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZSA9
CisgICAiKGZ1bmN0aW9uIChwcm9taXNlLCB2YWx1ZSlcbiIgXAorICAgIntcbiIgXAorICAgIiAg
ICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHZhciByZWFjdGlvbnMg
PSBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucztcbiIgXAorICAgIiAgICBwcm9taXNl
LkBwcm9taXNlUmVzdWx0ID0gdmFsdWU7XG4iIFwKKyAgICIgICAgcHJvbWlzZS5AcHJvbWlzZUZ1
bGZpbGxSZWFjdGlvbnMgPSB1bmRlZmluZWQ7XG4iIFwKKyAgICIgICAgcHJvbWlzZS5AcHJvbWlz
ZVJlamVjdFJlYWN0aW9ucyA9IHVuZGVmaW5lZDtcbiIgXAorICAgIiAgICBwcm9taXNlLkBwcm9t
aXNlU3RhdGUgPSBAcHJvbWlzZUZ1bGZpbGxlZDtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIEBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24ucHJvbWlzZUZ1bGZpbGxlZChwcm9taXNlLCB2YWx1ZSwg
cmVhY3Rpb25zKTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIEB0cmlnZ2VyUHJvbWlzZVJlYWN0
aW9ucyhyZWFjdGlvbnMsIHZhbHVlKTtcbiIgXAorICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlND
OjpDb25zdHJ1Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VDcmVhdGVSZXNvbHZpbmdGdW5j
dGlvbnNDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90
Q29uc3RydWN0OworY29uc3QgaW50IHNfb3BlcmF0aW9uc1Byb21pc2VDcmVhdGVSZXNvbHZpbmdG
dW5jdGlvbnNDb2RlTGVuZ3RoID0gMTQ2ODsKK2NvbnN0IGNoYXIqIHNfb3BlcmF0aW9uc1Byb21p
c2VDcmVhdGVSZXNvbHZpbmdGdW5jdGlvbnNDb2RlID0KKyAgICIoZnVuY3Rpb24gKHByb21pc2Up
XG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICJcbiIg
XAorICAgIiAgICB2YXIgYWxyZWFkeVJlc29sdmVkID0gZmFsc2U7XG4iIFwKKyAgICJcbiIgXAor
ICAgIiAgICB2YXIgcmVzb2x2ZSA9IGZ1bmN0aW9uIChyZXNvbHV0aW9uKSB7XG4iIFwKKyAgICIg
ICAgICAgIGlmIChhbHJlYWR5UmVzb2x2ZWQpXG4iIFwKKyAgICIgICAgICAgICAgICByZXR1cm4g
dW5kZWZpbmVkO1xuIiBcCisgICAiICAgICAgICBhbHJlYWR5UmVzb2x2ZWQgPSB0cnVlO1xuIiBc
CisgICAiXG4iIFwKKyAgICIgICAgICAgIGlmIChyZXNvbHV0aW9uID09PSBwcm9taXNlKVxuIiBc
CisgICAiICAgICAgICAgICAgcmV0dXJuIEByZWplY3RQcm9taXNlKHByb21pc2UsIG5ldyBAVHlw
ZUVycm9yKFwiUmVzb2x2ZSBhIHByb21pc2Ugd2l0aCBpdHNlbGZcIikpO1xuIiBcCisgICAiXG4i
IFwKKyAgICIgICAgICAgIGlmICghQGlzT2JqZWN0KHJlc29sdXRpb24pKVxuIiBcCisgICAiICAg
ICAgICAgICAgcmV0dXJuIEBmdWxmaWxsUHJvbWlzZShwcm9taXNlLCByZXNvbHV0aW9uKTtcbiIg
XAorICAgIlxuIiBcCisgICAiICAgICAgICB2YXIgdGhlbjtcbiIgXAorICAgIiAgICAgICAgdHJ5
IHtcbiIgXAorICAgIiAgICAgICAgICAgIHRoZW4gPSByZXNvbHV0aW9uLnRoZW47XG4iIFwKKyAg
ICIgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4iIFwKKyAgICIgICAgICAgICAgICByZXR1cm4g
QHJlamVjdFByb21pc2UocHJvbWlzZSwgZXJyb3IpO1xuIiBcCisgICAiICAgICAgICB9XG4iIFwK
KyAgICJcbiIgXAorICAgIiAgICAgICAgaWYgKHR5cGVvZiB0aGVuICE9PSAnZnVuY3Rpb24nKVxu
IiBcCisgICAiICAgICAgICAgICAgcmV0dXJuIEBmdWxmaWxsUHJvbWlzZShwcm9taXNlLCByZXNv
bHV0aW9uKTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgICAgICBAZW5xdWV1ZUpvYihAcHJvbWlz
ZVJlc29sdmVUaGVuYWJsZUpvYiwgW3Byb21pc2UsIHJlc29sdXRpb24sIHRoZW5dKTtcbiIgXAor
ICAgIlxuIiBcCisgICAiICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuIiBcCisgICAiICAgIH07
XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICB2YXIgcmVqZWN0ID0gZnVuY3Rpb24gKHJlYXNvbikg
e1xuIiBcCisgICAiICAgICAgICBpZiAoYWxyZWFkeVJlc29sdmVkKVxuIiBcCisgICAiICAgICAg
ICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiIgXAorICAgIiAgICAgICAgYWxyZWFkeVJlc29sdmVk
ID0gdHJ1ZTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgICAgICByZXR1cm4gQHJlamVjdFByb21p
c2UocHJvbWlzZSwgcmVhc29uKTtcbiIgXAorICAgIiAgICB9O1xuIiBcCisgICAiXG4iIFwKKyAg
ICIgICAgcmV0dXJuIHtcbiIgXAorICAgIiAgICAgICAgQHJlc29sdmU6IHJlc29sdmUsXG4iIFwK
KyAgICIgICAgICAgIEByZWplY3Q6IHJlamVjdFxuIiBcCisgICAiICAgIH07XG4iIFwKKyAgICJ9
KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9t
aXNlUHJvbWlzZVJlYWN0aW9uSm9iQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVj
dEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX29wZXJhdGlvbnNQcm9taXNl
UHJvbWlzZVJlYWN0aW9uSm9iQ29kZUxlbmd0aCA9IDQ5MzsKK2NvbnN0IGNoYXIqIHNfb3BlcmF0
aW9uc1Byb21pc2VQcm9taXNlUmVhY3Rpb25Kb2JDb2RlID0KKyAgICIoZnVuY3Rpb24gKHJlYWN0
aW9uLCBhcmd1bWVudClcbiIgXAorICAgIntcbiIgXAorICAgIiAgICBcInVzZSBzdHJpY3RcIjtc
biIgXAorICAgIlxuIiBcCisgICAiICAgIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IHJlYWN0aW9u
LkBjYXBhYmlsaXRpZXM7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICB2YXIgcmVzdWx0O1xuIiBc
CisgICAiICAgIHRyeSB7XG4iIFwKKyAgICIgICAgICAgIHJlc3VsdCA9IHJlYWN0aW9uLkBoYW5k
bGVyLkBjYWxsKHVuZGVmaW5lZCwgYXJndW1lbnQpO1xuIiBcCisgICAiICAgIH0gY2F0Y2ggKGVy
cm9yKSB7XG4iIFwKKyAgICIgICAgICAgIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5AcmVqZWN0
LkBjYWxsKHVuZGVmaW5lZCwgZXJyb3IpO1xuIiBcCisgICAiICAgIH1cbiIgXAorICAgIlxuIiBc
CisgICAiICAgIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5AcmVzb2x2ZS5AY2FsbCh1bmRlZmlu
ZWQsIHJlc3VsdCk7XG4iIFwKKyAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0
QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYkNvZGVD
b25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7
Citjb25zdCBpbnQgc19vcGVyYXRpb25zUHJvbWlzZVByb21pc2VSZXNvbHZlVGhlbmFibGVKb2JD
b2RlTGVuZ3RoID0gNDUzOworY29uc3QgY2hhciogc19vcGVyYXRpb25zUHJvbWlzZVByb21pc2VS
ZXNvbHZlVGhlbmFibGVKb2JDb2RlID0KKyAgICIoZnVuY3Rpb24gKHByb21pc2VUb1Jlc29sdmUs
IHRoZW5hYmxlLCB0aGVuKVxuIiBcCisgICAie1xuIiBcCisgICAiICAgIFwidXNlIHN0cmljdFwi
O1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdmFyIHJlc29sdmluZ0Z1bmN0aW9ucyA9IEBjcmVh
dGVSZXNvbHZpbmdGdW5jdGlvbnMocHJvbWlzZVRvUmVzb2x2ZSk7XG4iIFwKKyAgICJcbiIgXAor
ICAgIiAgICB0cnkge1xuIiBcCisgICAiICAgICAgICByZXR1cm4gdGhlbi5AY2FsbCh0aGVuYWJs
ZSwgcmVzb2x2aW5nRnVuY3Rpb25zLkByZXNvbHZlLCByZXNvbHZpbmdGdW5jdGlvbnMuQHJlamVj
dCk7XG4iIFwKKyAgICIgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiIgXAorICAgIiAgICAgICAgcmV0
dXJuIHJlc29sdmluZ0Z1bmN0aW9ucy5AcmVqZWN0LkBjYWxsKHVuZGVmaW5lZCwgZXJyb3IpO1xu
IiBcCisgICAiICAgIH1cbiIgXAorICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VJbml0aWFsaXplUHJvbWlzZUNvZGVDb25zdHJ1
Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25z
dCBpbnQgc19vcGVyYXRpb25zUHJvbWlzZUluaXRpYWxpemVQcm9taXNlQ29kZUxlbmd0aCA9IDcz
MTsKK2NvbnN0IGNoYXIqIHNfb3BlcmF0aW9uc1Byb21pc2VJbml0aWFsaXplUHJvbWlzZUNvZGUg
PQorICAgIihmdW5jdGlvbiAoZXhlY3V0b3IpXG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAgXCJ1
c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICBpZiAodHlwZW9mIGV4ZWN1dG9y
ICE9PSAnZnVuY3Rpb24nKVxuIiBcCisgICAiICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihc
IlByb21pc2UgY29uc3RydWN0b3IgdGFrZXMgYSBmdW5jdGlvbiBhcmd1bWVudFwiKTtcbiIgXAor
ICAgIlxuIiBcCisgICAiICAgIHRoaXMuQHByb21pc2VTdGF0ZSA9IEBwcm9taXNlUGVuZGluZztc
biIgXAorICAgIiAgICB0aGlzLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucyA9IFtdO1xuIiBcCisg
ICAiICAgIHRoaXMuQHByb21pc2VSZWplY3RSZWFjdGlvbnMgPSBbXTtcbiIgXAorICAgIlxuIiBc
CisgICAiICAgIHZhciByZXNvbHZpbmdGdW5jdGlvbnMgPSBAY3JlYXRlUmVzb2x2aW5nRnVuY3Rp
b25zKHRoaXMpO1xuIiBcCisgICAiICAgIHRyeSB7XG4iIFwKKyAgICIgICAgICAgIGV4ZWN1dG9y
KHJlc29sdmluZ0Z1bmN0aW9ucy5AcmVzb2x2ZSwgcmVzb2x2aW5nRnVuY3Rpb25zLkByZWplY3Qp
O1xuIiBcCisgICAiICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4iIFwKKyAgICIgICAgICAgIHJldHVy
biByZXNvbHZpbmdGdW5jdGlvbnMuQHJlamVjdC5AY2FsbCh1bmRlZmluZWQsIGVycm9yKTtcbiIg
XAorICAgIiAgICB9XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICByZXR1cm4gdGhpcztcbiIgXAor
ICAgIn0pXG4iIFwKKzsKKworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2Rl
TmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCitKU0M6OkZ1bmN0aW9uRXhlY3V0
YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAore1wKKyAgICByZXR1cm4g
dm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0s
IHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyB9CitKU0NfRk9S
RUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFRklO
RV9CVUlMVElOX0dFTkVSQVRPUgorCisKK30gLy8gbmFtZXNwYWNlIEpTQworIyMjIEVuZCBGaWxl
OiBKU0NCdWlsdGlucy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJh
dGUuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRp
bnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTVhMjFkNDY1Njg2NmZlOGY3MzdmMTgzMDdiMTI2MjRhNzQ0ODJhYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5z
L2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0w
LDAgKzEsMzE4IEBACisjIyMgQmVnaW4gRmlsZTogR3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5oCisv
KgorICogQ29weXJpZ2h0IChjKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21h
dGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMg
YnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMt
YnVpbHRpbnMucHkKKworI2lmbmRlZiBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zX2gKKyNkZWZpbmUg
R3VhcmRlZEJ1aWx0aW5CdWlsdGluc19oCisKKyNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRp
bHMuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Cit9CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworLyogR3VhcmRlZEJ1aWx0aW4gKi8KK2V4dGVybiBjb25z
dCBjaGFyKiBzX2d1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGU7CitleHRl
cm4gY29uc3QgaW50IHNfZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUxl
bmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkQnVpbHRp
bklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25z
dCBjaGFyKiBzX2d1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlOworZXh0ZXJu
IGNvbnN0IGludCBzX2d1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlTGVuZ3Ro
OworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRCdWlsdGluQ2Fu
Y2VsUmVhZGFibGVTdHJlYW1Db2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFy
KiBzX2d1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGU7CitleHRlcm4gY29uc3Qg
aW50IHNfZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUxlbmd0aDsKK2V4dGVy
biBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkQnVpbHRpblByb21pc2VJbnZv
a2VPck5vb3BDb2RlQ29uc3RydWN0QWJpbGl0eTsKKworI2RlZmluZSBXRUJDT1JFX0ZPUkVBQ0hf
R1VBUkRFREJVSUxUSU5fQlVJTFRJTl9EQVRBKG1hY3JvKSBcCisgICAgbWFjcm8oaXNSZWFkYWJs
ZVN0cmVhbUxvY2tlZCwgZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkLCAxKSBc
CisgICAgbWFjcm8oY2FuY2VsUmVhZGFibGVTdHJlYW0sIGd1YXJkZWRCdWlsdGluQ2FuY2VsUmVh
ZGFibGVTdHJlYW0sIDIpIFwKKyAgICBtYWNybyhwcm9taXNlSW52b2tlT3JOb29wLCBndWFyZGVk
QnVpbHRpblByb21pc2VJbnZva2VPck5vb3AsIDMpIFwKKworI2RlZmluZSBXRUJDT1JFX0JVSUxU
SU5fR1VBUkRFREJVSUxUSU5fSVNSRUFEQUJMRVNUUkVBTUxPQ0tFRCAxCisjZGVmaW5lIFdFQkNP
UkVfQlVJTFRJTl9HVUFSREVEQlVJTFRJTl9DQU5DRUxSRUFEQUJMRVNUUkVBTSAxCisjZGVmaW5l
IFdFQkNPUkVfQlVJTFRJTl9HVUFSREVEQlVJTFRJTl9QUk9NSVNFSU5WT0tFT1JOT09QIDEKKwor
I2RlZmluZSBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKG1hY3Jv
KSBcCisgICAgbWFjcm8oZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZSwg
aXNSZWFkYWJsZVN0cmVhbUxvY2tlZCwgc19ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1M
b2NrZWRDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8oZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJs
ZVN0cmVhbUNvZGUsIGNhbmNlbFJlYWRhYmxlU3RyZWFtLCBzX2d1YXJkZWRCdWlsdGluQ2FuY2Vs
UmVhZGFibGVTdHJlYW1Db2RlTGVuZ3RoKSBcCisgICAgbWFjcm8oZ3VhcmRlZEJ1aWx0aW5Qcm9t
aXNlSW52b2tlT3JOb29wQ29kZSwgcHJvbWlzZUludm9rZU9yTm9vcCwgc19ndWFyZGVkQnVpbHRp
blByb21pc2VJbnZva2VPck5vb3BDb2RlTGVuZ3RoKSBcCisKKyNkZWZpbmUgV0VCQ09SRV9GT1JF
QUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXAorICAgIG1h
Y3JvKGNhbmNlbFJlYWRhYmxlU3RyZWFtKSBcCisgICAgbWFjcm8oaXNSZWFkYWJsZVN0cmVhbUxv
Y2tlZCkgXAorICAgIG1hY3JvKHByb21pc2VJbnZva2VPck5vb3ApIFwKKworI2RlZmluZSBERUNM
QVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291
bnQpIFwKKyAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihK
U0M6OlZNJik7CisKK1dFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUo
REVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJB
VE9SCisKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX0dVQVJERURCVUlMVElOX0VYSVNUUyhvYmpl
Y3QsIGZ1bmMpIGRlZmluZWQgV0VCQ09SRV9CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5j
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEd1YXJkZWRCdWlsdGluQnVp
bHRpbnNfaAorCisjIyMgRW5kIEZpbGU6IEd1YXJkZWRCdWlsdGluQnVpbHRpbnMuaAorCisjIyMg
QmVnaW4gRmlsZTogR3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5jcHAKKy8qCisgKiBDb3B5cmlnaHQg
KGMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8K
KworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRl
ZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5oIgor
CisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXhl
Y3V0YWJsZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4KKyNpbmNs
dWRlIDxydW50aW1lL0pTQ2VsbElubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL1N0cnVjdHVy
ZUlubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL1ZNLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRh
YmxlU3RyZWFtTG9ja2VkQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxp
dHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2d1YXJkZWRCdWlsdGluSXNSZWFkYWJs
ZVN0cmVhbUxvY2tlZENvZGVMZW5ndGggPSA3MTsKK2NvbnN0IGNoYXIqIHNfZ3VhcmRlZEJ1aWx0
aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZSA9CisgICAgIihmdW5jdGlvbiAoc3RyZWFtKVxu
IiBcCisgICAgIntcbiIgXAorICAgICIgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIg
XAorICAgICIgICAgcmV0dXJuICEhc3RyZWFtLkByZWFkZXI7XG4iIFwKKyAgICAifSlcbiIgXAor
OworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkQnVpbHRpbkNhbmNlbFJl
YWRhYmxlU3RyZWFtQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6
OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2d1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFi
bGVTdHJlYW1Db2RlTGVuZ3RoID0gNDAyOworY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpbkNh
bmNlbFJlYWRhYmxlU3RyZWFtQ29kZSA9CisgICAgIihmdW5jdGlvbiAoc3RyZWFtLCByZWFzb24p
XG4iIFwKKyAgICAie1xuIiBcCisgICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJc
biIgXAorICAgICIgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUNsb3Nl
ZClcbiIgXAorICAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiIgXAorICAg
ICIgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpXG4iIFwK
KyAgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoc3RyZWFtLkBzdG9yZWRFcnJvcik7
XG4iIFwKKyAgICAiICAgIHN0cmVhbS5AcXVldWUgPSBbXTtcbiIgXAorICAgICIgICAgQGZpbmlz
aENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pO1xuIiBcCisgICAgIiAgICByZXR1cm4gQHBy
b21pc2VJbnZva2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCBcImNhbmNlbFwiLCBb
cmVhc29uXSkudGhlbihmdW5jdGlvbigpIHsgfSk7XG4iIFwKKyAgICAifSlcbiIgXAorOworCitj
b25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VP
ck5vb3BDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90
Q29uc3RydWN0OworY29uc3QgaW50IHNfZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29w
Q29kZUxlbmd0aCA9IDMzODsKK2NvbnN0IGNoYXIqIHNfZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52
b2tlT3JOb29wQ29kZSA9CisgICAgIihmdW5jdGlvbiAob2JqZWN0LCBrZXksIGFyZ3MpXG4iIFwK
KyAgICAie1xuIiBcCisgICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAor
ICAgICIgICAgdHJ5IHtcbiIgXAorICAgICIgICAgICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5
XTtcbiIgXAorICAgICIgICAgICAgIGlmICh0eXBlb2YgbWV0aG9kID09PSBcInVuZGVmaW5lZFwi
KVxuIiBcCisgICAgIiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiIgXAor
ICAgICIgICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9iamVjdCwgYXJncyk7XG4i
IFwKKyAgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XG4iIFwKKyAg
ICAiICAgIH1cbiIgXAorICAgICIgICAgY2F0Y2goZXJyb3IpIHtcbiIgXAorICAgICIgICAgICAg
IHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4iIFwKKyAgICAiICAgIH1cbiIgXAorICAg
ICJ9KVxuIiBcCis7CisKKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5h
bWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKK3tcCisgICAgSlNWTUNsaWVu
dERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVu
dERhdGEpOyBcCisgICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5ndWFy
ZGVkQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xp
ZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmd1YXJkZWRCdWlsdGluQnVpbHRpbnMoKS5jb2Rl
TmFtZSMjU291cmNlKCkpOyBcCit9CitXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJ
TFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJ
Tl9HRU5FUkFUT1IKKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjIyMgRW5kIEZpbGU6IEd1
YXJkZWRCdWlsdGluQnVpbHRpbnMuY3BwCisKKyMjIyBCZWdpbiBGaWxlOiBHdWFyZGVkQnVpbHRp
bkJ1aWx0aW5zV3JhcHBlci5oCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IENhbm9uIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRI
SVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZp
bGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lmbmRlZiBHdWFyZGVkQnVpbHRp
bkJ1aWx0aW5zV3JhcHBlcl9oCisjZGVmaW5lIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVy
X2gKKworI2luY2x1ZGUgIkd1YXJkZWRCdWlsdGluQnVpbHRpbnMuaCIKKyNpbmNsdWRlIDxidWls
dGlucy9CdWlsdGluVXRpbHMuaD4KKyNpbmNsdWRlIDxieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSWRlbnRpZmllci5oPgorI2luY2x1ZGUg
PHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEd1
YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyIDogcHJpdmF0ZSBKU0M6OldlYWtIYW5kbGVPd25l
ciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIo
SlNDOjpWTSogdm0pCisgICAgICAgIDogbV92bSgqdm0pCisgICAgICAgIFdFQkNPUkVfRk9SRUFD
SF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElaRV9CVUlMVElO
X05BTUVTKQorI2RlZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwg
ZnVuY3Rpb25OYW1lLCBsZW5ndGgpICwgbV8jI25hbWUjI1NvdXJjZShKU0M6Om1ha2VTb3VyY2Uo
U3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc18jI25hbWUsIGxlbmd0aCkpKQorICAgICAg
ICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKElOSVRJQUxJWkVf
QlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNF
X01FTUJFUlMKKyAgICB7CisgICAgfQorCisjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFC
TEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCisgICAgY29uc3QgSlNDOjpTb3Vy
Y2VDb2RlJiBuYW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9
CisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShFWFBPU0Vf
QlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUwor
CisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFN
RShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUikKKworICAgIHZvaWQgZXhwb3J0
TmFtZXMoKTsKKworcHJpdmF0ZToKKyAgICBKU0M6OlZNJiBtX3ZtOworCisgICAgV0VCQ09SRV9G
T1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxU
SU5fTkFNRVMpCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUs
IGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpTb3VyY2VDb2RlIG1fIyNuYW1lIyNT
b3VyY2U7XAorICAgIEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiBt
XyMjbmFtZSMjRXhlY3V0YWJsZTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5f
QlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNM
QVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKKworfTsKKworI2RlZmluZSBERUZJTkVfQlVJTFRJ
Tl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAoraW5saW5lIEpTQzo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVy
OjpuYW1lIyNFeGVjdXRhYmxlKCkgXAore1wKKyAgICBpZiAoIW1fIyNuYW1lIyNFeGVjdXRhYmxl
KVwKKyAgICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUgPSBKU0M6OldlYWs8SlNDOjpVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZT4oSlNDOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShtX3ZtLCBt
XyMjbmFtZSMjU291cmNlLCBmdW5jdGlvbk5hbWUjI1B1YmxpY05hbWUoKSwgc18jI25hbWUjI0Nv
bnN0cnVjdEFiaWxpdHkpLCB0aGlzLCAmbV8jI25hbWUjI0V4ZWN1dGFibGUpO1wKKyAgICByZXR1
cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7XAorfQorV0VCQ09SRV9GT1JFQUNIX0dVQVJE
RURCVUlMVElOX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRl
ZiBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUworCitpbmxpbmUgdm9pZCBHdWFyZGVkQnVpbHRp
bkJ1aWx0aW5zV3JhcHBlcjo6ZXhwb3J0TmFtZXMoKQoreworI2RlZmluZSBFWFBPUlRfRlVOQ1RJ
T05fTkFNRShuYW1lKSBtX3ZtLnByb3BlcnR5TmFtZXMtPmFwcGVuZEV4dGVybmFsTmFtZShuYW1l
IyNQdWJsaWNOYW1lKCksIG5hbWUjI1ByaXZhdGVOYW1lKCkpOworICAgIFdFQkNPUkVfRk9SRUFD
SF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoRVhQT1JUX0ZVTkNUSU9OX05B
TUUpCisjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OX05BTUUKK30KKworY2xhc3MgR3VhcmRlZEJ1aWx0
aW5CdWlsdGluRnVuY3Rpb25zIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBHdWFyZGVkQnVpbHRp
bkJ1aWx0aW5GdW5jdGlvbnMoSlNDOjpWTSYgdm0pIDogbV92bSh2bSkgeyB9CisKKyAgICB2b2lk
IGluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYpOworICAgIHZvaWQgdmlzaXQoSlNDOjpTbG90Vmlz
aXRvciYpOworCitwdWJsaWM6CisgICAgSlNDOjpWTSYgbV92bTsKKworI2RlZmluZSBERUNMQVJF
X0JVSUxUSU5fU09VUkNFX01FTUJFUlMoZnVuY3Rpb25OYW1lKSBcCisgICAgSlNDOjpXcml0ZUJh
cnJpZXI8SlNDOjpKU0Z1bmN0aW9uPiBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbjsKKyAgICBX
RUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xB
UkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNF
X01FTUJFUlMKK307CisKK2lubGluZSB2b2lkIEd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9u
czo6aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisjZGVmaW5lIEVY
UE9SVF9GVU5DVElPTihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXAorICAgIG1fIyNm
dW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVu
Y3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihtX3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1f
dm0pLCAmZ2xvYmFsT2JqZWN0KSk7CisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElO
X0JVSUxUSU5fQ09ERShFWFBPUlRfRlVOQ1RJT04pCisjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OCit9
CisKK2lubGluZSB2b2lkIEd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9uczo6dmlzaXQoSlND
OjpTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyNkZWZpbmUgVklTSVRfRlVOQ1RJT04obmFtZSkg
dmlzaXRvci5hcHBlbmQoJm1fIyNuYW1lIyNGdW5jdGlvbik7CisgICAgV0VCQ09SRV9GT1JFQUNI
X0dVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShWSVNJVF9GVU5DVElPTikKKyN1
bmRlZiBWSVNJVF9GVU5DVElPTgorfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyX2gKKworIyMjIEVuZCBGaWxlOiBH
dWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRJ
bnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxC
dWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDhhMWNmYzQ0ODRhZWYzZjc2
MGU4Nzk0NjZlZmJhYjk2NmU1MGY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkSW50
ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMCwwICsxLDMxOCBAQAorIyMjIEJl
Z2luIEZpbGU6IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucy5oCisvKgorICogQ29weXJp
Z2h0IChjKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAor
ICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5l
cmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlw
dDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkK
KworI2lmbmRlZiBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNfaAorI2RlZmluZSBHdWFy
ZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNfaAorCisjaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRp
blV0aWxzLmg+CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwor
fQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8qIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4gKi8K
K2V4dGVybiBjb25zdCBjaGFyKiBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1JlYWRhYmxlU3Ry
ZWFtTG9ja2VkQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGlu
SXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25z
dHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2Nr
ZWRDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX2d1YXJkZWRJbnRl
cm5hbEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGU7CitleHRlcm4gY29uc3QgaW50IHNf
Z3VhcmRlZEludGVybmFsQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUxlbmd0aDsKK2V4
dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGlu
Q2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBj
aGFyKiBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZTsKK2V4
dGVybiBjb25zdCBpbnQgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluUHJvbWlzZUludm9rZU9yTm9v
cENvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRl
ZEludGVybmFsQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlQ29uc3RydWN0QWJpbGl0eTsK
KworI2RlZmluZSBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElO
X0RBVEEobWFjcm8pIFwKKyAgICBtYWNybyhpc1JlYWRhYmxlU3RyZWFtTG9ja2VkLCBndWFyZGVk
SW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZCwgMSkgXAorICAgIG1hY3JvKGNh
bmNlbFJlYWRhYmxlU3RyZWFtLCBndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVT
dHJlYW0sIDIpIFwKKyAgICBtYWNybyhwcm9taXNlSW52b2tlT3JOb29wLCBndWFyZGVkSW50ZXJu
YWxCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcCwgMykgXAorCisjZGVmaW5lIFdFQkNPUkVfQlVJ
TFRJTl9HVUFSREVESU5URVJOQUxCVUlMVElOX0lTUkVBREFCTEVTVFJFQU1MT0NLRUQgMQorI2Rl
ZmluZSBXRUJDT1JFX0JVSUxUSU5fR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9DQU5DRUxSRUFEQUJM
RVNUUkVBTSAxCisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9HVUFSREVESU5URVJOQUxCVUlMVElO
X1BST01JU0VJTlZPS0VPUk5PT1AgMQorCisjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVE
SU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShtYWNybykgXAorICAgIG1hY3JvKGd1YXJkZWRJ
bnRlcm5hbEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZSwgaXNSZWFkYWJsZVN0cmVh
bUxvY2tlZCwgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENv
ZGVMZW5ndGgpIFwKKyAgICBtYWNybyhndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFi
bGVTdHJlYW1Db2RlLCBjYW5jZWxSZWFkYWJsZVN0cmVhbSwgc19ndWFyZGVkSW50ZXJuYWxCdWls
dGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlTGVuZ3RoKSBcCisgICAgbWFjcm8oZ3VhcmRlZElu
dGVybmFsQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlLCBwcm9taXNlSW52b2tlT3JOb29w
LCBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUxlbmd0aCkg
XAorCisjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxU
SU5fRlVOQ1RJT05fTkFNRShtYWNybykgXAorICAgIG1hY3JvKGNhbmNlbFJlYWRhYmxlU3RyZWFt
KSBcCisgICAgbWFjcm8oaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCkgXAorICAgIG1hY3JvKHByb21p
c2VJbnZva2VPck5vb3ApIFwKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNv
ZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKKyAgICBKU0M6OkZ1bmN0aW9u
RXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisKK1dFQkNPUkVfRk9S
RUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5f
R0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKKworI2RlZmluZSBX
RUJDT1JFX0JVSUxUSU5fR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9FWElTVFMob2JqZWN0LCBmdW5j
KSBkZWZpbmVkIFdFQkNPUkVfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVuYworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVp
bHRpbnNfaAorCisjIyMgRW5kIEZpbGU6IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucy5o
CisKKyMjIyBCZWdpbiBGaWxlOiBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnMuY3BwCisv
KgorICogQ29weXJpZ2h0IChjKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21h
dGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMg
YnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMt
YnVpbHRpbnMucHkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkd1YXJkZWRJbnRl
cm5hbEJ1aWx0aW5CdWlsdGlucy5oIgorCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5o
IgorI2luY2x1ZGUgPHJ1bnRpbWUvRXhlY3V0YWJsZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlND
SlNWYWx1ZUlubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ2VsbElubGluZXMuaD4KKyNp
bmNsdWRlIDxydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL1ZN
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlQ29uc3Ry
dWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29u
c3QgaW50IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2Rl
TGVuZ3RoID0gNzE7Citjb25zdCBjaGFyKiBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1JlYWRh
YmxlU3RyZWFtTG9ja2VkQ29kZSA9CisgICAgIihmdW5jdGlvbiAoc3RyZWFtKVxuIiBcCisgICAg
IntcbiIgXAorICAgICIgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAorICAgICIg
ICAgcmV0dXJuICEhc3RyZWFtLkByZWFkZXI7XG4iIFwKKyAgICAifSlcbiIgXAorOworCitjb25z
dCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVh
ZGFibGVTdHJlYW1Db2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6
Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbkNhbmNl
bFJlYWRhYmxlU3RyZWFtQ29kZUxlbmd0aCA9IDQwMjsKK2NvbnN0IGNoYXIqIHNfZ3VhcmRlZElu
dGVybmFsQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZSA9CisgICAgIihmdW5jdGlvbiAo
c3RyZWFtLCByZWFzb24pXG4iIFwKKyAgICAie1xuIiBcCisgICAgIiAgICBcInVzZSBzdHJpY3Rc
IjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFk
YWJsZVN0cmVhbUNsb3NlZClcbiIgXAorICAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29s
dmUoKTtcbiIgXAorICAgICIgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVh
bUVycm9yZWQpXG4iIFwKKyAgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoc3RyZWFt
LkBzdG9yZWRFcnJvcik7XG4iIFwKKyAgICAiICAgIHN0cmVhbS5AcXVldWUgPSBbXTtcbiIgXAor
ICAgICIgICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pO1xuIiBcCisgICAg
IiAgICByZXR1cm4gQHByb21pc2VJbnZva2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291cmNl
LCBcImNhbmNlbFwiLCBbcmVhc29uXSkudGhlbihmdW5jdGlvbigpIHsgfSk7XG4iIFwKKyAgICAi
fSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkSW50ZXJu
YWxCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpD
b25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19ndWFyZGVkSW50
ZXJuYWxCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVMZW5ndGggPSAzMzg7Citjb25zdCBj
aGFyKiBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZSA9Cisg
ICAgIihmdW5jdGlvbiAob2JqZWN0LCBrZXksIGFyZ3MpXG4iIFwKKyAgICAie1xuIiBcCisgICAg
IiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdHJ5IHtcbiIg
XAorICAgICIgICAgICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTtcbiIgXAorICAgICIgICAg
ICAgIGlmICh0eXBlb2YgbWV0aG9kID09PSBcInVuZGVmaW5lZFwiKVxuIiBcCisgICAgIiAgICAg
ICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiIgXAorICAgICIgICAgICAgIHZhciBy
ZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9iamVjdCwgYXJncyk7XG4iIFwKKyAgICAiICAgICAgICBy
ZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XG4iIFwKKyAgICAiICAgIH1cbiIgXAorICAg
ICIgICAgY2F0Y2goZXJyb3IpIHtcbiIgXAorICAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJl
amVjdChlcnJvcik7XG4iIFwKKyAgICAiICAgIH1cbiIgXAorICAgICJ9KVxuIiBcCis7CisKKwor
I2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwg
YXJndW1lbnRDb3VudCkgXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5l
cmF0b3IoSlNDOjpWTSYgdm0pIFwKK3tcCisgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEg
PSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcCisgICAgcmV0
dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5ndWFyZGVkSW50ZXJuYWxCdWlsdGlu
QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5i
dWlsdGluRnVuY3Rpb25zKCkuZ3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5h
bWUjI1NvdXJjZSgpKTsgXAorfQorV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxU
SU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVf
QlVJTFRJTl9HRU5FUkFUT1IKKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjIyMgRW5kIEZp
bGU6IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucy5jcHAKKworIyMjIEJlZ2luIEZpbGU6
IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIuaAorLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAq
LworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJh
dGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisK
KyNpZm5kZWYgR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9oCisjZGVmaW5l
IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAorCisjaW5jbHVkZSAiR3Vh
cmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zLmgiCisjaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRp
blV0aWxzLmg+CisjaW5jbHVkZSA8Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
aD4KKyNpbmNsdWRlIDxydW50aW1lL0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pT
RnVuY3Rpb24uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHdWFyZGVkSW50ZXJu
YWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyIDogcHJpdmF0ZSBKU0M6OldlYWtIYW5kbGVPd25lciB7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3Jh
cHBlcihKU0M6OlZNKiB2bSkKKyAgICAgICAgOiBtX3ZtKCp2bSkKKyAgICAgICAgV0VCQ09SRV9G
T1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJ
QUxJWkVfQlVJTFRJTl9OQU1FUykKKyNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9N
RU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UoSlND
OjptYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5n
dGgpKSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJ
TFRJTl9DT0RFKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBJTklU
SUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKKyAgICB7CisgICAgfQorCisjZGVmaW5lIEVY
UE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisg
ICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBc
CisgICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVy
biBtXyMjbmFtZSMjU291cmNlOyB9CisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5B
TEJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVm
IEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCisKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRF
RElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lE
RU5USUZJRVJfQUNDRVNTT1IpCisKKyAgICB2b2lkIGV4cG9ydE5hbWVzKCk7CisKK3ByaXZhdGU6
CisgICAgSlNDOjpWTSYgbV92bTsKKworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJO
QUxCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fTkFNRVMpCisK
KyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFt
ZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7XAorICAg
IEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhl
Y3V0YWJsZTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlM
VElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVf
QlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworCit9OworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0VY
RUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitpbmxpbmUgSlNDOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3Jh
cHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tcCisgICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0
YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gSlNDOjpXZWFrPEpTQzo6VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUobV92
bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCksIHNfIyNuYW1l
IyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRhYmxlKTtcCisgICAg
cmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKK30KK1dFQkNPUkVfRk9SRUFDSF9H
VUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9FWEVDVVRB
QkxFUykKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUworCitpbmxpbmUgdm9pZCBH
dWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyOjpleHBvcnROYW1lcygpCit7Cisj
ZGVmaW5lIEVYUE9SVF9GVU5DVElPTl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+YXBw
ZW5kRXh0ZXJuYWxOYW1lKG5hbWUjI1B1YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUoKSk7
CisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9GVU5D
VElPTl9OQU1FKEVYUE9SVF9GVU5DVElPTl9OQU1FKQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTl9O
QU1FCit9CisKK2NsYXNzIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zIHsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbkZ1bmN0
aW9ucyhKU0M6OlZNJiB2bSkgOiBtX3ZtKHZtKSB7IH0KKworICAgIHZvaWQgaW5pdChKU0M6OkpT
R2xvYmFsT2JqZWN0Jik7CisgICAgdm9pZCB2aXNpdChKU0M6OlNsb3RWaXNpdG9yJik7CisKK3B1
YmxpYzoKKyAgICBKU0M6OlZNJiBtX3ZtOworCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VS
Q0VfTUVNQkVSUyhmdW5jdGlvbk5hbWUpIFwKKyAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpT
RnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uOworICAgIFdFQkNPUkVfRk9SRUFD
SF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JV
SUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1C
RVJTCit9OworCitpbmxpbmUgdm9pZCBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbkZ1bmN0
aW9uczo6aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisjZGVmaW5l
IEVYUE9SVF9GVU5DVElPTihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXAorICAgIG1f
IyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
RnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihtX3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9y
KG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7CisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRF
Uk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9SVF9GVU5DVElPTikKKyN1bmRlZiBFWFBPUlRf
RlVOQ1RJT04KK30KKworaW5saW5lIHZvaWQgR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5G
dW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisjZGVmaW5lIFZJ
U0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFtZSMjRnVuY3Rpb24pOwor
ICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fRlVOQ1RJ
T05fTkFNRShWSVNJVF9GVU5DVElPTikKKyN1bmRlZiBWSVNJVF9GVU5DVElPTgorfQorCisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5C
dWlsdGluc1dyYXBwZXJfaAorCisjIyMgRW5kIEZpbGU6IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5C
dWlsdGluc1dyYXBwZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFy
YXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL2V4cGVjdGVkL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNThlZTJkYWJiYWM5YzFhNmI2NTlhYjEzMmIwYTZjNDcxZTYzZTQ1OAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL2V4cGVjdGVkL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQK
QEAgLTAsMCArMSwzMTggQEAKKyMjIyBCZWdpbiBGaWxlOiBVbmd1YXJkZWRCdWlsdGluQnVpbHRp
bnMuaAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlz
IGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1
aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVy
YXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zX2gK
KyNkZWZpbmUgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zX2gKKworI2luY2x1ZGUgPGJ1aWx0aW5z
L0J1aWx0aW5VdGlscy5oPgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0
YWJsZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvKiBVbmd1YXJkZWRCdWlsdGluICov
CitleHRlcm4gY29uc3QgY2hhciogc191bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxv
Y2tlZENvZGU7CitleHRlcm4gY29uc3QgaW50IHNfdW5ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVT
dHJlYW1Mb2NrZWRDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0
eSBzX3VuZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUNvbnN0cnVjdEFi
aWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc191bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFi
bGVTdHJlYW1Db2RlOworZXh0ZXJuIGNvbnN0IGludCBzX3VuZ3VhcmRlZEJ1aWx0aW5DYW5jZWxS
ZWFkYWJsZVN0cmVhbUNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmls
aXR5IHNfdW5ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUNvbnN0cnVjdEFi
aWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc191bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9r
ZU9yTm9vcENvZGU7CitleHRlcm4gY29uc3QgaW50IHNfdW5ndWFyZGVkQnVpbHRpblByb21pc2VJ
bnZva2VPck5vb3BDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0
eSBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUNvbnN0cnVjdEFiaWxp
dHk7CisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9E
QVRBKG1hY3JvKSBcCisgICAgbWFjcm8oaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCwgdW5ndWFyZGVk
QnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIDEpIFwKKyAgICBtYWNybyhjYW5jZWxSZWFk
YWJsZVN0cmVhbSwgdW5ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtLCAyKSBcCisg
ICAgbWFjcm8ocHJvbWlzZUludm9rZU9yTm9vcCwgdW5ndWFyZGVkQnVpbHRpblByb21pc2VJbnZv
a2VPck5vb3AsIDMpIFwKKworI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fVU5HVUFSREVEQlVJTFRJ
Tl9JU1JFQURBQkxFU1RSRUFNTE9DS0VEIDEKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX1VOR1VB
UkRFREJVSUxUSU5fQ0FOQ0VMUkVBREFCTEVTVFJFQU0gMQorI2RlZmluZSBXRUJDT1JFX0JVSUxU
SU5fVU5HVUFSREVEQlVJTFRJTl9QUk9NSVNFSU5WT0tFT1JOT09QIDEKKworI2RlZmluZSBXRUJD
T1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUobWFjcm8pIFwKKyAgICBt
YWNybyh1bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGUsIGlzUmVhZGFi
bGVTdHJlYW1Mb2NrZWQsIHNfdW5ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRD
b2RlTGVuZ3RoKSBcCisgICAgbWFjcm8odW5ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3Ry
ZWFtQ29kZSwgY2FuY2VsUmVhZGFibGVTdHJlYW0sIHNfdW5ndWFyZGVkQnVpbHRpbkNhbmNlbFJl
YWRhYmxlU3RyZWFtQ29kZUxlbmd0aCkgXAorICAgIG1hY3JvKHVuZ3VhcmRlZEJ1aWx0aW5Qcm9t
aXNlSW52b2tlT3JOb29wQ29kZSwgcHJvbWlzZUludm9rZU9yTm9vcCwgc191bmd1YXJkZWRCdWls
dGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVMZW5ndGgpIFwKKworI2RlZmluZSBXRUJDT1JFX0ZP
UkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFwKKyAg
ICBtYWNybyhjYW5jZWxSZWFkYWJsZVN0cmVhbSkgXAorICAgIG1hY3JvKGlzUmVhZGFibGVTdHJl
YW1Mb2NrZWQpIFwKKyAgICBtYWNybyhwcm9taXNlSW52b2tlT3JOb29wKSBcCisKKyNkZWZpbmUg
REVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVu
dENvdW50KSBcCisgICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0
b3IoSlNDOjpWTSYpOworCitXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElO
X0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5f
R0VORVJBVE9SCisKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX1VOR1VBUkRFREJVSUxUSU5fRVhJ
U1RTKG9iamVjdCwgZnVuYykgZGVmaW5lZCBXRUJDT1JFX0JVSUxUSU5fICMjIG9iamVjdCAjIyBf
ICMjIGZ1bmMKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVW5ndWFyZGVk
QnVpbHRpbkJ1aWx0aW5zX2gKKworIyMjIEVuZCBGaWxlOiBVbmd1YXJkZWRCdWlsdGluQnVpbHRp
bnMuaAorCisjIyMgQmVnaW4gRmlsZTogVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmNwcAorLyoK
KyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRp
Y2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5
IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1
aWx0aW5zLnB5CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVbmd1YXJkZWRCdWls
dGluQnVpbHRpbnMuaCIKKworI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNs
dWRlIDxydW50aW1lL0V4ZWN1dGFibGUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWVJ
bmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NlbGxJbmxpbmVzLmg+CisjaW5jbHVkZSA8
cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9WTS5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3VuZ3Vh
cmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBK
U0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX3VuZ3Vh
cmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUxlbmd0aCA9IDcxOworY29uc3Qg
Y2hhciogc191bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGUgPQorICAg
ICIoZnVuY3Rpb24gKHN0cmVhbSlcbiIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgXCJ1c2Ugc3Ry
aWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHJldHVybiAhIXN0cmVhbS5AcmVhZGVy
O1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNf
dW5ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUNvbnN0cnVjdEFiaWxpdHkg
PSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX3Vu
Z3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGVMZW5ndGggPSA0MDI7Citjb25z
dCBjaGFyKiBzX3VuZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGUgPQorICAg
ICIoZnVuY3Rpb24gKHN0cmVhbSwgcmVhc29uKVxuIiBcCisgICAgIntcbiIgXAorICAgICIgICAg
XCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIGlmIChzdHJlYW0uQHN0
YXRlID09PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQpXG4iIFwKKyAgICAiICAgICAgICByZXR1cm4g
UHJvbWlzZS5yZXNvbHZlKCk7XG4iIFwKKyAgICAiICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBA
cmVhZGFibGVTdHJlYW1FcnJvcmVkKVxuIiBcCisgICAgIiAgICAgICAgcmV0dXJuIFByb21pc2Uu
cmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpO1xuIiBcCisgICAgIiAgICBzdHJlYW0uQHF1ZXVl
ID0gW107XG4iIFwKKyAgICAiICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFt
KTtcbiIgXAorICAgICIgICAgcmV0dXJuIEBwcm9taXNlSW52b2tlT3JOb29wKHN0cmVhbS5AdW5k
ZXJseWluZ1NvdXJjZSwgXCJjYW5jZWxcIiwgW3JlYXNvbl0pLnRoZW4oZnVuY3Rpb24oKSB7IH0p
O1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNf
dW5ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlQ29uc3RydWN0QWJpbGl0eSA9
IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfdW5n
dWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlTGVuZ3RoID0gMzM4OworY29uc3Qg
Y2hhciogc191bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGUgPQorICAgICIo
ZnVuY3Rpb24gKG9iamVjdCwga2V5LCBhcmdzKVxuIiBcCisgICAgIntcbiIgXAorICAgICIgICAg
XCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHRyeSB7XG4iIFwKKyAg
ICAiICAgICAgICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07XG4iIFwKKyAgICAiICAgICAgICBp
ZiAodHlwZW9mIG1ldGhvZCA9PT0gXCJ1bmRlZmluZWRcIilcbiIgXAorICAgICIgICAgICAgICAg
ICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4iIFwKKyAgICAiICAgICAgICB2YXIgcmVzdWx0
ID0gbWV0aG9kLkBhcHBseShvYmplY3QsIGFyZ3MpO1xuIiBcCisgICAgIiAgICAgICAgcmV0dXJu
IFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xuIiBcCisgICAgIiAgICB9XG4iIFwKKyAgICAiICAg
IGNhdGNoKGVycm9yKSB7XG4iIFwKKyAgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qo
ZXJyb3IpO1xuIiBcCisgICAgIiAgICB9XG4iIFwKKyAgICAifSlcbiIgXAorOworCisKKyNkZWZp
bmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3Vt
ZW50Q291bnQpIFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9y
KEpTQzo6Vk0mIHZtKSBcCit7XAorICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3Rh
dGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXAorICAgIHJldHVybiBj
bGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkudW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zKCku
Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0
aW9ucygpLnVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSk7IFwK
K30KK1dFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShERUZJTkVf
QlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCisKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorIyMjIEVuZCBGaWxlOiBVbmd1YXJkZWRCdWlsdGluQnVp
bHRpbnMuY3BwCisKKyMjIyBCZWdpbiBGaWxlOiBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFw
cGVyLmgKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBp
cyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBi
dWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5l
cmF0ZS1qcy1idWlsdGlucy5weQorCisjaWZuZGVmIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dy
YXBwZXJfaAorI2RlZmluZSBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyX2gKKworI2lu
Y2x1ZGUgIlVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5oIgorI2luY2x1ZGUgPGJ1aWx0aW5zL0J1
aWx0aW5VdGlscy5oPgorI2luY2x1ZGUgPGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmg+CisjaW5jbHVkZSA8cnVudGltZS9JZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8cnVudGlt
ZS9KU0Z1bmN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVW5ndWFyZGVk
QnVpbHRpbkJ1aWx0aW5zV3JhcHBlciA6IHByaXZhdGUgSlNDOjpXZWFrSGFuZGxlT3duZXIgewor
cHVibGljOgorICAgIGV4cGxpY2l0IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIoSlND
OjpWTSogdm0pCisgICAgICAgIDogbV92bSgqdm0pCisgICAgICAgIFdFQkNPUkVfRk9SRUFDSF9V
TkdVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX0JVSUxUSU5f
TkFNRVMpCisjZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBm
dW5jdGlvbk5hbWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKEpTQzo6bWFrZVNvdXJjZShT
dHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFtZSwgbGVuZ3RoKSkpCisgICAgICAg
IFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShJTklUSUFMSVpF
X0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgSU5JVElBTElaRV9CVUlMVElOX1NPVVJD
RV9NRU1CRVJTCisgICAgeworICAgIH0KKworI2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRB
QkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorICAgIEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXAorICAgIGNvbnN0IEpTQzo6U291
cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsg
fQorICAgIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShFWFBP
U0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxF
UworCisgICAgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElP
Tl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKQorCisgICAgdm9pZCBl
eHBvcnROYW1lcygpOworCitwcml2YXRlOgorICAgIEpTQzo6Vk0mIG1fdm07CisKKyAgICBXRUJD
T1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFS
RV9CVUlMVElOX05BTUVTKQorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVS
UyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorICAgIEpTQzo6U291cmNlQ29kZSBtXyMj
bmFtZSMjU291cmNlO1wKKyAgICBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZT4gbV8jI25hbWUjI0V4ZWN1dGFibGU7CisgICAgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRF
REJVSUxUSU5fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1
bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKKworfTsKKworI2RlZmluZSBERUZJ
TkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAoraW5s
aW5lIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIFVuZ3VhcmRlZEJ1aWx0aW5CdWls
dGluc1dyYXBwZXI6Om5hbWUjI0V4ZWN1dGFibGUoKSBcCit7XAorICAgIGlmICghbV8jI25hbWUj
I0V4ZWN1dGFibGUpXAorICAgICAgICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9IEpTQzo6V2VhazxK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPihKU0M6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRh
YmxlKG1fdm0sIG1fIyNuYW1lIyNTb3VyY2UsIGZ1bmN0aW9uTmFtZSMjUHVibGljTmFtZSgpLCBz
XyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0eSksIHRoaXMsICZtXyMjbmFtZSMjRXhlY3V0YWJsZSk7
XAorICAgIHJldHVybiBtXyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtcCit9CitXRUJDT1JFX0ZP
UkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fRVhFQ1VU
QUJMRVMpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMKKworaW5saW5lIHZvaWQg
VW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcjo6ZXhwb3J0TmFtZXMoKQoreworI2RlZmlu
ZSBFWFBPUlRfRlVOQ1RJT05fTkFNRShuYW1lKSBtX3ZtLnByb3BlcnR5TmFtZXMtPmFwcGVuZEV4
dGVybmFsTmFtZShuYW1lIyNQdWJsaWNOYW1lKCksIG5hbWUjI1ByaXZhdGVOYW1lKCkpOworICAg
IFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShF
WFBPUlRfRlVOQ1RJT05fTkFNRSkKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT05fTkFNRQorfQorCitj
bGFzcyBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9ucyB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnMoSlNDOjpWTSYgdm0pIDogbV92
bSh2bSkgeyB9CisKKyAgICB2b2lkIGluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYpOworICAgIHZv
aWQgdmlzaXQoSlNDOjpTbG90VmlzaXRvciYpOworCitwdWJsaWM6CisgICAgSlNDOjpWTSYgbV92
bTsKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMoZnVuY3Rpb25OYW1l
KSBcCisgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU0Z1bmN0aW9uPiBtXyMjZnVuY3Rpb25O
YW1lIyNGdW5jdGlvbjsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlM
VElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVm
IERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworfTsKKworaW5saW5lIHZvaWQgVW5ndWFy
ZGVkQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnM6OmluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQoreworI2RlZmluZSBFWFBPUlRfRlVOQ1RJT04oY29kZU5hbWUsIGZ1bmN0aW9u
TmFtZSwgbGVuZ3RoKVwKKyAgICBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbi5zZXQobV92bSwg
Jmdsb2JhbE9iamVjdCwgSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24obV92
bSwgY29kZU5hbWUjI0dlbmVyYXRvcihtX3ZtKSwgJmdsb2JhbE9iamVjdCkpOworICAgIFdFQkNP
UkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShFWFBPUlRfRlVOQ1RJT04p
CisjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OCit9CisKK2lubGluZSB2b2lkIFVuZ3VhcmRlZEJ1aWx0
aW5CdWlsdGluRnVuY3Rpb25zOjp2aXNpdChKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
I2RlZmluZSBWSVNJVF9GVU5DVElPTihuYW1lKSB2aXNpdG9yLmFwcGVuZCgmbV8jI25hbWUjI0Z1
bmN0aW9uKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZV
TkNUSU9OX05BTUUoVklTSVRfRlVOQ1RJT04pCisjdW5kZWYgVklTSVRfRlVOQ1RJT04KK30KKwor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVbmd1YXJkZWRCdWlsdGluQnVp
bHRpbnNXcmFwcGVyX2gKKworIyMjIEVuZCBGaWxlOiBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNX
cmFwcGVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3Rz
L2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcy1yZXN1
bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3Rl
ZC9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2
OGZjNmZjNmZiZjg1ZWRkN2I4ZDNjODhlYzZkMjI2NjdlMWU3N2QKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9X
ZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0wLDAgKzEsMzE4IEBA
CisjIyMgQmVnaW4gRmlsZTogeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zLmgKKy8qCisgKiBDb3B5cmln
aHQgKGMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisg
Ki8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVy
YXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQor
CisjaWZuZGVmIHhtbENhc2luZ1Rlc3RCdWlsdGluc19oCisjZGVmaW5lIHhtbENhc2luZ1Rlc3RC
dWlsdGluc19oCisKKyNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4KKworbmFtZXNw
YWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Cit9CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworLyogeG1sQ2FzaW5nVGVzdCAqLworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfeG1sQ2Fz
aW5nVGVzdFhNTENhc2luZ1Rlc3RDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX3htbENhc2luZ1Rl
c3RYTUxDYXNpbmdUZXN0Q29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFi
aWxpdHkgc194bWxDYXNpbmdUZXN0WE1MQ2FzaW5nVGVzdENvZGVDb25zdHJ1Y3RBYmlsaXR5Owor
ZXh0ZXJuIGNvbnN0IGNoYXIqIHNfeG1sQ2FzaW5nVGVzdENzc0Nhc2luZ1Rlc3RDb2RlOworZXh0
ZXJuIGNvbnN0IGludCBzX3htbENhc2luZ1Rlc3RDc3NDYXNpbmdUZXN0Q29kZUxlbmd0aDsKK2V4
dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc194bWxDYXNpbmdUZXN0Q3NzQ2FzaW5n
VGVzdENvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfeG1sQ2FzaW5n
VGVzdFVybENhc2luZ1Rlc3RDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX3htbENhc2luZ1Rlc3RV
cmxDYXNpbmdUZXN0Q29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxp
dHkgc194bWxDYXNpbmdUZXN0VXJsQ2FzaW5nVGVzdENvZGVDb25zdHJ1Y3RBYmlsaXR5OworCisj
ZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fREFUQShtYWNybykg
XAorICAgIG1hY3JvKHhtbENhc2luZ1Rlc3QsIHhtbENhc2luZ1Rlc3RYTUxDYXNpbmdUZXN0LCAx
KSBcCisgICAgbWFjcm8oY3NzQ2FzaW5nVGVzdCwgeG1sQ2FzaW5nVGVzdENzc0Nhc2luZ1Rlc3Qs
IDIpIFwKKyAgICBtYWNybyh1cmxDYXNpbmdUZXN0LCB4bWxDYXNpbmdUZXN0VXJsQ2FzaW5nVGVz
dCwgMykgXAorCisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9YTUxDQVNJTkdURVNUX1hNTENBU0lO
R1RFU1QgMQorI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fWE1MQ0FTSU5HVEVTVF9DU1NDQVNJTkdU
RVNUIDEKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX1hNTENBU0lOR1RFU1RfVVJMQ0FTSU5HVEVT
VCAxCisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RF
KG1hY3JvKSBcCisgICAgbWFjcm8oeG1sQ2FzaW5nVGVzdFhNTENhc2luZ1Rlc3RDb2RlLCB4bWxD
YXNpbmdUZXN0LCBzX3htbENhc2luZ1Rlc3RYTUxDYXNpbmdUZXN0Q29kZUxlbmd0aCkgXAorICAg
IG1hY3JvKHhtbENhc2luZ1Rlc3RDc3NDYXNpbmdUZXN0Q29kZSwgY3NzQ2FzaW5nVGVzdCwgc194
bWxDYXNpbmdUZXN0Q3NzQ2FzaW5nVGVzdENvZGVMZW5ndGgpIFwKKyAgICBtYWNybyh4bWxDYXNp
bmdUZXN0VXJsQ2FzaW5nVGVzdENvZGUsIHVybENhc2luZ1Rlc3QsIHNfeG1sQ2FzaW5nVGVzdFVy
bENhc2luZ1Rlc3RDb2RlTGVuZ3RoKSBcCisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX1hNTENB
U0lOR1RFU1RfQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcCisgICAgbWFjcm8oY3NzQ2Fz
aW5nVGVzdCkgXAorICAgIG1hY3JvKHVybENhc2luZ1Rlc3QpIFwKKyAgICBtYWNybyh4bWxDYXNp
bmdUZXN0KSBcCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwg
ZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCisgICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCitXRUJDT1JFX0ZPUkVBQ0hfWE1M
Q0FTSU5HVEVTVF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRl
ZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX1hN
TENBU0lOR1RFU1RfRVhJU1RTKG9iamVjdCwgZnVuYykgZGVmaW5lZCBXRUJDT1JFX0JVSUxUSU5f
ICMjIG9iamVjdCAjIyBfICMjIGZ1bmMKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8geG1sQ2FzaW5nVGVzdEJ1aWx0aW5zX2gKKworIyMjIEVuZCBGaWxlOiB4bWxDYXNpbmdU
ZXN0QnVpbHRpbnMuaAorCisjIyMgQmVnaW4gRmlsZTogeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zLmNw
cAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1
dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0
aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRl
LWpzLWJ1aWx0aW5zLnB5CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJ4bWxDYXNp
bmdUZXN0QnVpbHRpbnMuaCIKKworI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNp
bmNsdWRlIDxydW50aW1lL0V4ZWN1dGFibGUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NlbGxJbmxpbmVzLmg+CisjaW5jbHVk
ZSA8cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9WTS5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3ht
bENhc2luZ1Rlc3RYTUxDYXNpbmdUZXN0Q29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0
cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX3htbENhc2luZ1Rlc3RY
TUxDYXNpbmdUZXN0Q29kZUxlbmd0aCA9IDcxOworY29uc3QgY2hhciogc194bWxDYXNpbmdUZXN0
WE1MQ2FzaW5nVGVzdENvZGUgPQorICAgICIoZnVuY3Rpb24gKHN0cmVhbSlcbiIgXAorICAgICJ7
XG4iIFwKKyAgICAiICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAg
IHJldHVybiAhIXN0cmVhbS5AcmVhZGVyO1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworY29uc3Qg
SlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfeG1sQ2FzaW5nVGVzdENzc0Nhc2luZ1Rlc3RDb2RlQ29u
c3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0Owor
Y29uc3QgaW50IHNfeG1sQ2FzaW5nVGVzdENzc0Nhc2luZ1Rlc3RDb2RlTGVuZ3RoID0gNDAyOwor
Y29uc3QgY2hhciogc194bWxDYXNpbmdUZXN0Q3NzQ2FzaW5nVGVzdENvZGUgPQorICAgICIoZnVu
Y3Rpb24gKHN0cmVhbSwgcmVhc29uKVxuIiBcCisgICAgIntcbiIgXAorICAgICIgICAgXCJ1c2Ug
c3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIGlmIChzdHJlYW0uQHN0YXRlID09
PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQpXG4iIFwKKyAgICAiICAgICAgICByZXR1cm4gUHJvbWlz
ZS5yZXNvbHZlKCk7XG4iIFwKKyAgICAiICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFi
bGVTdHJlYW1FcnJvcmVkKVxuIiBcCisgICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0
KHN0cmVhbS5Ac3RvcmVkRXJyb3IpO1xuIiBcCisgICAgIiAgICBzdHJlYW0uQHF1ZXVlID0gW107
XG4iIFwKKyAgICAiICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTtcbiIg
XAorICAgICIgICAgcmV0dXJuIEBwcm9taXNlSW52b2tlT3JOb29wKHN0cmVhbS5AdW5kZXJseWlu
Z1NvdXJjZSwgXCJjYW5jZWxcIiwgW3JlYXNvbl0pLnRoZW4oZnVuY3Rpb24oKSB7IH0pO1xuIiBc
CisgICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfeG1sQ2Fz
aW5nVGVzdFVybENhc2luZ1Rlc3RDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0
QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfeG1sQ2FzaW5nVGVzdFVybENh
c2luZ1Rlc3RDb2RlTGVuZ3RoID0gMzM4OworY29uc3QgY2hhciogc194bWxDYXNpbmdUZXN0VXJs
Q2FzaW5nVGVzdENvZGUgPQorICAgICIoZnVuY3Rpb24gKG9iamVjdCwga2V5LCBhcmdzKVxuIiBc
CisgICAgIntcbiIgXAorICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwK
KyAgICAiICAgIHRyeSB7XG4iIFwKKyAgICAiICAgICAgICB2YXIgbWV0aG9kID0gb2JqZWN0W2tl
eV07XG4iIFwKKyAgICAiICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gXCJ1bmRlZmluZWRc
IilcbiIgXAorICAgICIgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4iIFwK
KyAgICAiICAgICAgICB2YXIgcmVzdWx0ID0gbWV0aG9kLkBhcHBseShvYmplY3QsIGFyZ3MpO1xu
IiBcCisgICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xuIiBcCisg
ICAgIiAgICB9XG4iIFwKKyAgICAiICAgIGNhdGNoKGVycm9yKSB7XG4iIFwKKyAgICAiICAgICAg
ICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuIiBcCisgICAgIiAgICB9XG4iIFwKKyAg
ICAifSlcbiIgXAorOworCisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVO
YW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCit7XAorICAgIEpTVk1DbGll
bnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGll
bnREYXRhKTsgXAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkueG1s
Q2FzaW5nVGVzdEJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xp
ZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLnhtbENhc2luZ1Rlc3RCdWlsdGlucygpLmNvZGVO
YW1lIyNTb3VyY2UoKSk7IFwKK30KK1dFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxU
SU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5f
R0VORVJBVE9SCisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorIyMjIEVuZCBGaWxlOiB4bWxD
YXNpbmdUZXN0QnVpbHRpbnMuY3BwCisKKyMjIyBCZWdpbiBGaWxlOiB4bWxDYXNpbmdUZXN0QnVp
bHRpbnNXcmFwcGVyLmgKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ2Fub24gSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBG
SUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMg
Zm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaWZuZGVmIHhtbENhc2luZ1Rlc3RCdWls
dGluc1dyYXBwZXJfaAorI2RlZmluZSB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyX2gKKwor
I2luY2x1ZGUgInhtbENhc2luZ1Rlc3RCdWlsdGlucy5oIgorI2luY2x1ZGUgPGJ1aWx0aW5zL0J1
aWx0aW5VdGlscy5oPgorI2luY2x1ZGUgPGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmg+CisjaW5jbHVkZSA8cnVudGltZS9JZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8cnVudGlt
ZS9KU0Z1bmN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgeG1sQ2FzaW5n
VGVzdEJ1aWx0aW5zV3JhcHBlciA6IHByaXZhdGUgSlNDOjpXZWFrSGFuZGxlT3duZXIgeworcHVi
bGljOgorICAgIGV4cGxpY2l0IHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXIoSlNDOjpWTSog
dm0pCisgICAgICAgIDogbV92bSgqdm0pCisgICAgICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJ
TkdURVNUX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX0JVSUxUSU5fTkFNRVMpCisj
ZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5h
bWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKEpTQzo6bWFrZVNvdXJjZShTdHJpbmdJbXBs
OjpjcmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFtZSwgbGVuZ3RoKSkpCisgICAgICAgIFdFQkNPUkVf
Rk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fQ09ERShJTklUSUFMSVpFX0JVSUxUSU5fU09V
UkNFX01FTUJFUlMpCisjdW5kZWYgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCisg
ICAgeworICAgIH0KKworI2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBm
dW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorICAgIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXAorICAgIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgbmFt
ZSMjU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQorICAgIFdFQkNP
UkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fQ09ERShFWFBPU0VfQlVJTFRJTl9FWEVD
VVRBQkxFUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUworCisgICAgV0VCQ09S
RV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJ
TFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKQorCisgICAgdm9pZCBleHBvcnROYW1lcygpOworCitw
cml2YXRlOgorICAgIEpTQzo6Vk0mIG1fdm07CisKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FT
SU5HVEVTVF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX05BTUVTKQorCisj
ZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUs
IGxlbmd0aCkgXAorICAgIEpTQzo6U291cmNlQ29kZSBtXyMjbmFtZSMjU291cmNlO1wKKyAgICBK
U0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4gbV8jI25hbWUjI0V4ZWN1
dGFibGU7CisgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKERF
Q0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09V
UkNFX01FTUJFUlMKKworfTsKKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhu
YW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAoraW5saW5lIEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4ZWN1dGFi
bGUoKSBcCit7XAorICAgIGlmICghbV8jI25hbWUjI0V4ZWN1dGFibGUpXAorICAgICAgICBtXyMj
bmFtZSMjRXhlY3V0YWJsZSA9IEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlPihKU0M6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fdm0sIG1fIyNuYW1lIyNTb3VyY2Us
IGZ1bmN0aW9uTmFtZSMjUHVibGljTmFtZSgpLCBzXyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0eSks
IHRoaXMsICZtXyMjbmFtZSMjRXhlY3V0YWJsZSk7XAorICAgIHJldHVybiBtXyMjbmFtZSMjRXhl
Y3V0YWJsZS5nZXQoKTtcCit9CitXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElO
X0NPREUoREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5f
RVhFQ1VUQUJMRVMKKworaW5saW5lIHZvaWQgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcjo6
ZXhwb3J0TmFtZXMoKQoreworI2RlZmluZSBFWFBPUlRfRlVOQ1RJT05fTkFNRShuYW1lKSBtX3Zt
LnByb3BlcnR5TmFtZXMtPmFwcGVuZEV4dGVybmFsTmFtZShuYW1lIyNQdWJsaWNOYW1lKCksIG5h
bWUjI1ByaXZhdGVOYW1lKCkpOworICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JV
SUxUSU5fRlVOQ1RJT05fTkFNRShFWFBPUlRfRlVOQ1RJT05fTkFNRSkKKyN1bmRlZiBFWFBPUlRf
RlVOQ1RJT05fTkFNRQorfQorCitjbGFzcyB4bWxDYXNpbmdUZXN0QnVpbHRpbkZ1bmN0aW9ucyB7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5GdW5jdGlvbnMoSlND
OjpWTSYgdm0pIDogbV92bSh2bSkgeyB9CisKKyAgICB2b2lkIGluaXQoSlNDOjpKU0dsb2JhbE9i
amVjdCYpOworICAgIHZvaWQgdmlzaXQoSlNDOjpTbG90VmlzaXRvciYpOworCitwdWJsaWM6Cisg
ICAgSlNDOjpWTSYgbV92bTsKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJF
UlMoZnVuY3Rpb25OYW1lKSBcCisgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU0Z1bmN0aW9u
PiBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbjsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FT
SU5HVEVTVF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1C
RVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworfTsKKworaW5saW5l
IHZvaWQgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5GdW5jdGlvbnM6OmluaXQoSlNDOjpKU0dsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQoreworI2RlZmluZSBFWFBPUlRfRlVOQ1RJT04oY29kZU5hbWUs
IGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKVwKKyAgICBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbi5z
ZXQobV92bSwgJmdsb2JhbE9iamVjdCwgSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVu
Y3Rpb24obV92bSwgY29kZU5hbWUjI0dlbmVyYXRvcihtX3ZtKSwgJmdsb2JhbE9iamVjdCkpOwor
ICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fQ09ERShFWFBPUlRfRlVO
Q1RJT04pCisjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OCit9CisKK2lubGluZSB2b2lkIHhtbENhc2lu
Z1Rlc3RCdWlsdGluRnVuY3Rpb25zOjp2aXNpdChKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworI2RlZmluZSBWSVNJVF9GVU5DVElPTihuYW1lKSB2aXNpdG9yLmFwcGVuZCgmbV8jI25hbWUj
I0Z1bmN0aW9uKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0ZV
TkNUSU9OX05BTUUoVklTSVRfRlVOQ1RJT04pCisjdW5kZWYgVklTSVRfRlVOQ1RJT04KK30KKwor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyB4bWxDYXNpbmdUZXN0QnVpbHRp
bnNXcmFwcGVyX2gKKworIyMjIEVuZCBGaWxlOiB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVy
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9VcGRhdGVDb250ZW50cy5weSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9VcGRhdGVDb250ZW50cy5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNTJmOTUzMmNiNmZiMGFiYWY1MjBkYWUwNDg1OGFjOTJhNGZjNjI0MS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvVXBkYXRlQ29udGVudHMucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCww
IEBACi0jIS91c3IvYmluL3B5dGhvbgotCi0jIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFy
ZSBtZXQ6Ci0jCi0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIHB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0jICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCi0jICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0jIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCi0jIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0jIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotIyBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgc3lz
Ci1pbXBvcnQgb3MKLQotYXNzZXJ0KGxlbihzeXMuYXJndikgPT0gMykKLQotY29tcCA9IHN5cy5h
cmd2WzFdCi1maWxlbmFtZSA9IHN5cy5hcmd2WzJdCi0KLXQgPSBGYWxzZQotCi1pZiBvcy5wYXRo
LmlzZmlsZShmaWxlbmFtZSk6Ci0gICAgZiA9IG9wZW4oZmlsZW5hbWUsICdyJykKLSAgICBjb21w
YXJhdG9yID0gZi5yZWFkKCkKLSAgICBmLmNsb3NlKCkKLSAgICB0ID0gVHJ1ZQotCi1pZiAobm90
IHQgb3IgY29tcCAhPSBjb21wYXJhdG9yKToKLSAgICBmID0gb3BlbihmaWxlbmFtZSwgJ3cnKQot
ICAgIGYud3JpdGUoY29tcCkKLSAgICBmLmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggNzNlYmU0Nzk5
MzVmY2E3NDA5ZmQ5MzJmODg5YjY1ODRiZTU4YjYxNC4uODE2YjRhNWQzMGI1MjBiNWQxZGZlYWVh
YjJmOTM5NGM2OGJkYzBhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwoVk0mLCBj
b25zdCBTb3VyY2VDb2QKIEJ1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKFZN
JiB2bSkKICAgICA6IG1fdm0odm0pCiAjZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0Vf
TUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKG1h
a2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc18jI25hbWUsIGxlbmd0aCkp
KQotICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1C
RVJTKQorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShJTklUSUFMSVpFX0JVSUxUSU5fU09V
UkNFX01FTUJFUlMpCiAjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU1RSSU5HUwogewogfQpAQCAtMTMy
LDcgKzEzMiw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJs
ZXM6Om5hbWUjI0V4ZWN1dGFibGUoKSBcCiAgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0g
V2VhazxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4oY3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUo
bV8jI25hbWUjI1NvdXJjZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5mdW5j
dGlvbk5hbWUjI1B1YmxpY05hbWUoKSwgc18jI25hbWUjI0NvbnN0cnVjdEFiaWxpdHkpLCB0aGlz
LCAmbV8jI25hbWUjI0V4ZWN1dGFibGUpO1wKICAgICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFi
bGUuZ2V0KCk7XAogfQotSlNDX0ZPUkVBQ0hfQlVJTFRJTihERUZJTkVfQlVJTFRJTl9FWEVDVVRB
QkxFUykKK0pTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxF
UykKICN1bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VSQ0VTCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaAppbmRleCA2YTk4MzIx
N2EwYTg4NDU3ZWYwOThmYmNiOTUxMjNkNTlhNTI1MTc1Li5lYzhkNTc3MDRiODdjNTg0YTkzNmRk
ZTQxN2Q2MjlmODU3YjM2NTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFwKIGNvbnN0IFNv
dXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KICAg
ICAKLSAgICBKU0NfRk9SRUFDSF9CVUlMVElOKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQor
ICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykK
ICN1bmRlZiBFWFBPU0VfQlVJTFRJTl9TT1VSQ0VTCiAKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogY3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKENvbnN0cnVjdG9yS2luZCwgY29uc3Qg
SWRlbnRpZmllciYgbmFtZSk7CkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAjZGVmaW5lIERF
Q0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aClc
CiAgICAgU291cmNlQ29kZSBtXyMjbmFtZSMjU291cmNlOyBcCiAgICAgV2VhazxVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZT4gbV8jI25hbWUjI0V4ZWN1dGFibGU7Ci0gICAgSlNDX0ZPUkVBQ0hf
QlVJTFRJTihERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisgICAgSlNDX0ZPUkVBQ0hf
QlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKICN1bmRlZiBERUNM
QVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVh
dGVfaGFzaF90YWJsZQppbmRleCA2ZmE3OGNlYTI4NzM4YzBmMTc0NTE0N2YwNDk3M2FjYjZjYTgz
NmQ4Li5hMjI1Y2JlNjdkODBkYWEyZmQzZTk4ZjE5MDUyZWMwOTgxOGQyM2Y4IDEwMDc1NQotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCkBAIC0zMTksNyArMzE5LDcgQEAgc3ViIG91
dHB1dCgpIHsKICAgICAgICAgaWYgKCR2YWx1ZXNbJGldeyJ0eXBlIn0gZXEgIkZ1bmN0aW9uIikg
IHsKICAgICAgICAgICAgIG15ICR0YWJsZUhlYWQgPSAkbmFtZTsKICAgICAgICAgICAgICR0YWJs
ZUhlYWQgPX4gcy9UYWJsZSQvLzsKLSAgICAgICAgICAgIHByaW50ICIgI2lmIEpTQ19CVUlMVElO
X0VYSVNUUygiIC4gdWMoJHRhYmxlSGVhZCAuICRrZXkpIC4iKVxuIjsKKyAgICAgICAgICAgIHBy
aW50ICIgI2lmIEpTQ19CVUlMVElOX0VYSVNUUygiIC4gdWMoJHRhYmxlSGVhZCkgLiAiLCAiIC4g
dWMoJGtleSkgLiIpXG4iOwogICAgICAgICAgICAgcHJpbnQgIiAgIHsgXCIka2V5XCIsICgoJGF0
dHJzWyRpXSkgJiB+RnVuY3Rpb24pIHwgQnVpbHRpbiwgJGludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8QnVpbHRpbkdlbmVyYXRvcj4oIiAuICR0YWJsZUhlYWQgLiB1Y2ZpcnN0KCRr
ZXkpIC4gIkNvZGVHZW5lcmF0b3IpLCAoaW50cHRyX3QpJHNlY29uZFZhbHVlIH0gfSxcbiI7CiAg
ICAgICAgICAgICBwcmludCAiICNlbHNlXG4iCiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggMDdlYzNjODFlNDc2NmFiODU3ZGRhMjhiOTNmZmI3MTgzMzk2ZmFjOC4uMDIwODBhOTEw
YWEwNWVmOWNkYmZlMjNiMGRiZjU3YzcyYzY5MzUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTgyMSwxNCArODIxLDEwIEBAIHNldChXZWJDb3JlX0lETF9GSUxFUwogICAgICR7V2ViQ29yZV9T
VkdfSURMX0ZJTEVTfQogKQogCi1pZiAoV0lOMzIpCi0gICAgaWYgKElOVEVSTkFMX0JVSUxEKQot
ICAgICAgICBzZXQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIgIiR7Q01BS0VfQklOQVJZX0RJ
Un0vLi4vaW5jbHVkZS9wcml2YXRlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMiKQotICAgIGVsc2Ug
KCkKLSAgICAgICAgc2V0KEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSICIke0RFUklWRURfU09V
UkNFU19ESVJ9L0ZvcndhcmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMiKQotICAg
IGVuZGlmICgpCitpZiAoV0lOMzIgQU5EIElOVEVSTkFMX0JVSUxEKQorICAgIHNldChKYXZhU2Ny
aXB0Q29yZV9TQ1JJUFRTX0RJUiAiJHtDTUFLRV9CSU5BUllfRElSfS8uLi9pbmNsdWRlL3ByaXZh
dGUvSmF2YVNjcmlwdENvcmUvU2NyaXB0cyIpCiBlbHNlICgpCi0gICAgc2V0KEphdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vU2NyaXB0cyIpCisgICAgc2V0
KEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSICIke0RFUklWRURfU09VUkNFU19ESVJ9L0Zvcndh
cmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMiKQogZW5kaWYgKCkKIAogc2V0KFdl
YkNvcmVfU09VUkNFUwpAQCAtMzM2MSwxOCArMzM1Nyw2IEBAIHNldChXT1JLRVJHTE9CQUxTQ09Q
RV9DT05TVFJVQ1RPUlNfRklMRSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vV29ya2Vy
R2xvCiBzZXQoREVESUNBVEVEV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtE
RVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29u
c3RydWN0b3JzLmlkbCkKIHNldChJRExfQVRUUklCVVRFU19GSUxFICR7V0VCQ09SRV9ESVJ9L2Jp
bmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQpCiAKLXNldChXRUJDT1JFX0pTX0JVSUxU
SU5TCi0gICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMu
anMKLSAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3N0cmVhbXMvQnl0ZUxlbmd0aFF1ZXVpbmdT
dHJhdGVneS5qcwotICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3RyZWFtcy9Db3VudFF1ZXVp
bmdTdHJhdGVneS5qcwotICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbS5qcwotICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXIuanMKLSAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW1JbnRlcm5hbHMuanMKLSAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3N0cmVh
bXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuanMKLSAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3N0
cmVhbXMvU3RyZWFtSW50ZXJuYWxzLmpzCi0gICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zdHJl
YW1zL1dyaXRhYmxlU3RyZWFtLmpzCi0pCi0KIFdFQktJVF9JTkNMVURFX0NPTkZJR19GSUxFU19J
Rl9FWElTVFMoKQogCiAjIEdlbmVyYXRlIEluc3BlY3Rvck92ZXJsYXlQYWdlLmgKQEAgLTM1OTcs
MjIgKzM1ODEsNTEgQEAgR0VORVJBVEVfQklORElOR1MoV2ViQ29yZVRlc3RTdXBwb3J0X1NPVVJD
RVMKICAgICAke0FERElUSU9OQUxfQklORElOR1NfREVQRU5ERU5DSUVTfSkKIAogIyBXZWJDb3Jl
IEpTIEJ1aWx0aW5zCi1mb3JlYWNoIChfYnVpbHRpbmpzICR7V0VCQ09SRV9KU19CVUlMVElOU30p
Ci0gICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChfbmFtZSAke19idWlsdGluanN9IE5BTUVfV0Up
CisKK3NldChXZWJDb3JlX0JVSUxUSU5TX1NPVVJDRVMKKyAgICAke1dFQkNPUkVfRElSfS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5qcworICAgICR7V0VCQ09SRV9ESVJ9L01vZHVs
ZXMvc3RyZWFtcy9CeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmpzCisgICAgJHtXRUJDT1JFX0RJ
Un0vTW9kdWxlcy9zdHJlYW1zL0NvdW50UXVldWluZ1N0cmF0ZWd5LmpzCisgICAgJHtXRUJDT1JF
X0RJUn0vTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmpzCisgICAgJHtXRUJDT1JFX0RJ
Un0vTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5qcworICAgICR7V0VC
Q09SRV9ESVJ9L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcworICAg
ICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5qcwor
ICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3RyZWFtcy9TdHJlYW1JbnRlcm5hbHMuanMKKyAg
ICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uanMKKykKKwor
c2V0KEJVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTCisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJ
UFRTX0RJUn0vYnVpbHRpbnMucHkKKyAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9i
dWlsdGluc19nZW5lcmF0b3IucHkKKyAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9i
dWlsdGluc19tb2RlbC5weQorICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0
aW5zX3RlbXBsYXRlcy5weQorICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0
aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weQorICAgICR7SmF2YVNjcmlwdENvcmVfU0NS
SVBUU19ESVJ9L2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5Cisg
ICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJh
dGVfaGVhZGVyLnB5CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnNf
Z2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkKKyAgICAke0phdmFTY3JpcHRDb3Jl
X1NDUklQVFNfRElSfS9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFwcGVyLnB5CisgICAg
JHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKyAg
ICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9sYXp5d3JpdGVyLnB5CispCisKK2ZvcmVh
Y2ggKF9idWlsdGluU291cmNlICR7V2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTfSkKKyAgICBnZXRf
ZmlsZW5hbWVfY29tcG9uZW50KF9vYmplY3ROYW1lICR7X2J1aWx0aW5Tb3VyY2V9IE5BTUVfV0Up
CiAgICAgYWRkX2N1c3RvbV9jb21tYW5kKAotICAgICAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9LyR7X25hbWV9QnVpbHRpbnNXcmFwcGVyLmggJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9LyR7X25hbWV9QnVpbHRpbnMuaCAke0RFUklWRURfU09VUkNFU19XRUJD
T1JFX0RJUn0vJHtfbmFtZX1CdWlsdGlucy5jcHAKLSAgICAgICAgTUFJTl9ERVBFTkRFTkNZICR7
V0VCQ09SRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zCi0gICAgICAgIERFUEVORFMgJHtKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMKLSAgICAgICAgREVQ
RU5EUyAke19idWlsdGluanN9Ci0gICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0g
JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zIC0taW5wdXQg
JHtfYnVpbHRpbmpzfSAtLW91dHB1dF9kaXIgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9
IC0tZ2VuZXJhdGVfanNfYnVpbHRpbnNfcGF0aCAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
fQorICAgICAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9LyR7X29iamVj
dE5hbWV9QnVpbHRpbnMuY3BwCisgICAgICAgICAgICAgICAke0RFUklWRURfU09VUkNFU19XRUJD
T1JFX0RJUn0vJHtfb2JqZWN0TmFtZX1CdWlsdGlucy5oCisgICAgICAgICAgICAgICAke0RFUklW
RURfU09VUkNFU19XRUJDT1JFX0RJUn0vJHtfb2JqZWN0TmFtZX1CdWlsdGluc1dyYXBwZXIuaCAK
KyAgICAgICAgTUFJTl9ERVBFTkRFTkNZICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2dl
bmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisgICAgICAgIERFUEVORFMgJHtfYnVpbHRpblNvdXJjZX0g
JHtCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUU30KKyAgICAgICAgQ09NTUFORCAke1BZVEhPTl9F
WEVDVVRBQkxFfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9nZW5lcmF0ZS1qcy1idWls
dGlucy5weSAtLWZyYW1ld29yayBXZWJDb3JlIC0tb3V0cHV0LWRpcmVjdG9yeSAke0RFUklWRURf
U09VUkNFU19XRUJDT1JFX0RJUn0gJHtfYnVpbHRpblNvdXJjZX0KICAgICAgICAgVkVSQkFUSU0p
CiAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCi0gICAgICAgICR7REVSSVZFRF9TT1VS
Q0VTX1dFQkNPUkVfRElSfS8ke19uYW1lfUJ1aWx0aW5zLmgKLSAgICAgICAgJHtERVJJVkVEX1NP
VVJDRVNfV0VCQ09SRV9ESVJ9LyR7X25hbWV9QnVpbHRpbnNXcmFwcGVyLmgKKyAgICAgICAgJHtE
RVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9LyR7X29iamVjdE5hbWV9QnVpbHRpbnMuaAorICAg
ICAgICAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vJHtfb2JqZWN0TmFtZX1CdWlsdGlu
c1dyYXBwZXIuaAogICAgICkKLSAgICBBRERfU09VUkNFX1dFQkNPUkVfREVSSVZFRF9ERVBFTkRF
TkNJRVMoJHtXRUJDT1JFX0RJUn0vYmluZGluZ3MvanMvV2ViQ29yZUpTQnVpbHRpbnMuY3BwICR7
X25hbWV9QnVpbHRpbnMuY3BwKQorICAgIEFERF9TT1VSQ0VfV0VCQ09SRV9ERVJJVkVEX0RFUEVO
REVOQ0lFUygke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNCdWlsdGlucy5jcHAg
JHtfb2JqZWN0TmFtZX1CdWlsdGlucy5jcHApCiBlbmRmb3JlYWNoICgpCiAKKwogQUREX1NPVVJD
RV9XRUJDT1JFX0RFUklWRURfREVQRU5ERU5DSUVTKCR7V0VCQ09SRV9ESVJ9L2h0bWwvSFRNTFRy
ZWVCdWlsZGVyLmNwcCBNYXRoTUxOYW1lcy5jcHApCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKaW5kZXggYzM3MTY3ZTk5NzVjNjE2YzRlMzEzZjAxMTJmMTNmNGNlN2M1MjZiNy4uN2Nj
NTc1MzQ3NzI3MjYwZGVmNmI1YWIwYmQzZjAyYTJkNDNmNmUxYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCkBAIC03OTcsNyArNzk3LDYgQEAgYWxsIDogXAogICAgICQoV09SS0VSR0xP
QkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUpIFwKICAgICAkKEpTX0RPTV9IRUFERVJTKSBcCiAg
ICAgJChXRUJfRE9NX0hFQURFUlMpIFwKLSAgICAkKFdFQkNPUkVfSlNfQlVJTFRJTlMpIFwKICAg
ICBcCiAgICAgQ1NTR3JhbW1hci5jcHAgXAogICAgIENTU1Byb3BlcnR5TmFtZXMuY3BwIFwKQEAg
LTEyNTYsNyArMTI1NSw3IEBAIFdlYlJlcGxheUlucHV0cy5oIDogJChJTlBVVF9HRU5FUkFUT1Jf
U1BFQ0lGSUNBVElPTlMpICQoSU5QVVRfR0VORVJBVE9SX1NDUklQVFMpCiAKICMgV2ViQ29yZSBK
UyBCdWlsdGlucwogCi1XRUJDT1JFX0pTX0JVSUxUSU5TID0gXAorV2ViQ29yZV9CVUlMVElOU19T
T1VSQ0VTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmlj
ZXMuanMgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL0J5dGVMZW5ndGhRdWV1aW5n
U3RyYXRlZ3kuanMgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL0NvdW50UXVldWlu
Z1N0cmF0ZWd5LmpzIFwKQEAgLTEyNjgsMTAgKzEyNjcsMzEgQEAgV0VCQ09SRV9KU19CVUlMVElO
UyA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5qcyBc
CiAjCiAKLWFsbCA6ICQoV0VCQ09SRV9KU19CVUlMVElOUzolLmpzPSVCdWlsdGlucy5jcHApCitC
VUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUyA9IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQ
VFNfRElSKS9idWlsdGlucy5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikv
YnVpbHRpbnNfZ2VuZXJhdG9yLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
KS9idWlsdGluc19tb2RlbC5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikv
YnVpbHRpbnNfdGVtcGxhdGVzLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
KS9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkgXAorICAgICQoSmF2YVNjcmlw
dENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0
aW9uLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGluc19nZW5l
cmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVIpL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5IFwKKyAgICAk
KEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93
cmFwcGVyLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZS1q
cy1idWlsdGlucy5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvbGF6eXdy
aXRlci5weSBcCisjCisKKyMgQWRkaW5nL3JlbW92aW5nIHNjcmlwdHMgc2hvdWxkIHRyaWdnZXIg
cmVnZW5lcmF0aW9uLCBidXQgY2hhbmdpbmcgd2hpY2ggYnVpbHRpbnMgYXJlCisjIGdlbmVyYXRl
ZCBzaG91bGQgbm90IGFmZmVjdCBvdGhlciBidWlsdGlucyB3aGVuIG5vdCBwYXNzaW5nICctLWNv
bWJpbmVkJyB0byB0aGUgZ2VuZXJhdG9yLgorCisuUEhPTlk6IGZvcmNlCitXZWJDb3JlX0JVSUxU
SU5TX0RFUEVOREVOQ0lFU19MSVNUIDogJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvVXBk
YXRlQ29udGVudHMucHkgZm9yY2UKKwkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRT
X0RJUikvVXBkYXRlQ29udGVudHMucHkgJyQoQlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMpJyAk
QAorCislQnVpbHRpbnMuaDogJS5qcyAkKEJVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTKSBXZWJD
b3JlX0JVSUxUSU5TX0RFUEVOREVOQ0lFU19MSVNUCisJJChQWVRIT04pICQoSmF2YVNjcmlwdENv
cmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5IC0tb3V0cHV0LWRpcmVjdG9y
eSAuIC0tZnJhbWV3b3JrIFdlYkNvcmUgJDwKIAotJUJ1aWx0aW5zLmNwcDogJS5qcwotCSQoUFlU
SE9OKSAkKFdlYkNvcmUpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zIC0taW5wdXQgJDwgLS1nZW5lcmF0
ZV9qc19idWlsdGluc19wYXRoICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpCithbGwgOiAk
KG5vdGRpciAkKFdlYkNvcmVfQlVJTFRJTlNfU09VUkNFUzolLmpzPSVCdWlsdGlucy5oKSkKIAog
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM3YWI1YzAxMGJkMmZmMTMyMTc3NjYz
MjA1MzNkOTMzN2NjNmMxYTcuLjA3ZmIzNjUzMWZkNTg5YmNmMzYyZDVhNTExYmQ2NzljNDY2YzFm
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTExNDksNyArMTE0OSw3IEBACiAJCTJENTAwMkY4MUI1NkQ3ODEwMDIwQUFGNyAv
KiBET01QYXRoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJENTAwMkY3MUI1NkQ3ODEwMDIwQUFGNyAvKiBET01QYXRoLmNwcCAqLzsgfTsKIAkJMkQ1
MDAyRkIxQjU2RDc5OTAwMjBBQUY3IC8qIFBhdGhVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ1MDAyRjkxQjU2RDc5OTAwMjBBQUY3
IC8qIFBhdGhVdGlsaXRpZXMuY3BwICovOyB9OwogCQkyRDUwMDJGQzFCNTZENzk5MDAyMEFBRjcg
LyogUGF0aFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkQ1MDAyRkExQjU2RDc5OTAwMjBBQUY3IC8qIFBhdGhVdGlsaXRpZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkyRDUwMzY2ODFC
Q0REREM0MDBFMjBCQjMgLyogR2VzdHVyZUV2ZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDUwMzY2NzFCQ0REREM0MDBFMjBCQjMgLyogR2Vz
dHVyZUV2ZW50cy5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJ
MkQ1MDM2NjgxQkNERERDNDAwRTIwQkIzIC8qIEdlc3R1cmVFdmVudHMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ1MDM2NjcxQkNERERDNDAwRTIw
QkIzIC8qIEdlc3R1cmVFdmVudHMuY3BwICovOyB9OwogCQkyRDU2NDZCMDFCOEY4NDkzMDAzQzQ5
OTQgLyogRGljdGlvbmFyeVBvcHVwSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkQ1NjQ2QUYxQjhGODQ5MzAwM0M0OTk0IC8qIERpY3Rpb25hcnlQ
b3B1cEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkyRDU4RDg1NTFBMTVGNjVGMDBBNUY3MjYgLyogRGF0YURldGVjdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ1OEQ4NTMxQTE1RjY1RjAw
QTVGNzI2IC8qIERhdGFEZXRlY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkyRDU4RDg1NjFBMTVGNjVGMDBBNUY3MjYgLyogRGF0YURldGVj
dGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
NThEODU0MUExNUY2NUYwMEE1RjcyNiAvKiBEYXRhRGV0ZWN0aW9uLm1tICovOyB9OwpAQCAtMTUx
OSw4ICsxNTE5LDggQEAKIAkJNDE2RTZGRUExQkJEMTY4NDAwMEE2MDM0IC8qIFN0cmVhbUludGVy
bmFsc0J1aWx0aW5zV3JhcHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOUIwM0Q4MDcxQkIzMTEwRDAwQjc2NENBIC8qIFN0cmVhbUludGVybmFsc0J1
aWx0aW5zV3JhcHBlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA0MyAvKiBSZWFkYWJsZVN0cmVhbUludGVy
bmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDkgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNC
dWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA0MyAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFC
QjMxMTBEMDBCNzY0RDggLyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQxNkU2RkVBMUJCRDE2ODQwMDBB
NjA0NCAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zV3JhcHBlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDcxQkIzMTEwRDAw
Qjc2NERBIC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTkxQkJE
MTJFNTAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjRFOCAv
KiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDE2RTZGRUExQkJEMTY4NDAwMEE2MDQ0IC8qIFJlYWRhYmxl
U3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNzFCQjMxMTBEMDBCNzY0REEgLyogUmVhZGFi
bGVTdHJlYW1JbnRlcm5hbHNCdWlsdGluc1dyYXBwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTcyNTNBQTEzNTRCQkJDMDAzNjBGMkEgLyog
TWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE3MjUzQTgxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVs
ZW1lbnRzLmNwcCAqLzsgfTsKIAkJNDE3MjUzQUIxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29u
dHJvbEVsZW1lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTcyNTNBOTEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAq
LzsgfTsKIAkJNDE3REE2RDkxMzczNEU2RTAwN0M1N0ZCIC8qIEludGVybmFscy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTdEQTRDRjEzNzM0MzI2
MDA3QzU3RkIgLyogSW50ZXJuYWxzLmNwcCAqLzsgfTsKQEAgLTI2NTksMTEgKzI2NTksMTEgQEAK
IAkJN0M0OEE2RDExOTFDOUQ2NTAwMDI2Njc0IC8qIFdlYktpdE5hbWVzcGFjZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M0OEE2Q0YxOTFDOUQ2NTAw
MDI2Njc0IC8qIFdlYktpdE5hbWVzcGFjZS5oICovOyB9OwogCQk3QzQ5MDJBMjE4QjgyNUY4MDA3
RDkyOTggLyogRE9NV2hlZWxFdmVudEludGVybmFsLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTk4OURDQTBBQ0M4QkJEMDBB
MEJDNTEgLyogRE9NV2hlZWxFdmVudEludGVybmFsLmggKi87IH07CiAJCTdDNEM5NkRDMUFENDQ4
MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MCAvKiBKU1Jl
YWRhYmxlU3RyZWFtLmNwcCAqLzsgfTsKKwkJN0M0Qzk2REMxQUQ0NDgzNTAwMzY1QTYwIC8qIEpT
V3JpdGFibGVTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0M0Qzk2RDgxQUQ0NDgzNTAwMzY1QTYwIC8qIEpTV3JpdGFibGVTdHJlYW0uY3Bw
ICovOyB9OwogCQk3QzRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M0Qzk2RDkx
QUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW0uaCAqLzsgfTsKKwkJN0M0Qzk2REQx
QUQ0NDgzNTAwMzY1QTYwIC8qIEpTV3JpdGFibGVTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNEM5NkQ5MUFENDQ4MzUwMDM2NUE2MCAvKiBK
U1dyaXRhYmxlU3RyZWFtLmggKi87IH07CiAJCTdDNEM5NkRFMUFENDQ4MzUwMDM2NUE1MCAvKiBK
U1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDNEM5NkRBMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyLmNwcCAqLzsgfTsKIAkJN0M0Qzk2REYxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVh
ZGFibGVTdHJlYW1SZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDNEM5NkRCMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtUmVh
ZGVyLmggKi87IH07Ci0JCTdDNEM5NkRDMUFENDQ4MzUwMDM2NUE2MCAvKiBKU1dyaXRhYmxlU3Ry
ZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
NEM5NkQ4MUFENDQ4MzUwMDM2NUE2MCAvKiBKU1dyaXRhYmxlU3RyZWFtLmNwcCAqLzsgfTsKLQkJ
N0M0Qzk2REQxQUQ0NDgzNTAwMzY1QTYwIC8qIEpTV3JpdGFibGVTdHJlYW0uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNEM5NkQ5MUFENDQ4MzUwMDM2
NUE2MCAvKiBKU1dyaXRhYmxlU3RyZWFtLmggKi87IH07CiAJCTdDNEM5NkUzMUFENDRBQkYwMDM2
NUE1MCAvKiBMYXVuY2hTZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0M0Qzk2RTIxQUQ0NEFCRjAwMzY1QTUwIC8qIExhdW5jaFNlcnZp
Y2VzU1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJN0M0RURENzQxQTdCNjA3ODAwMTk4QzREIC8qIEZvbnRDb2NvYS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNEVERDczMUE3QjYwNzgwMDE5OEM0
RCAvKiBGb250Q29jb2EubW0gKi87IH07CiAJCTdDNTIyRDRCMTVCNDc3RTgwMDlCN0M5NSAvKiBJ
bnNwZWN0b3JPdmVybGF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDNTIyRDQ5MTVCNDc3RTgwMDlCN0M5NSAvKiBJbnNwZWN0b3JPdmVybGF5LmNw
cCAqLzsgfTsKQEAgLTU1MDgsOCArNTUwOCw4IEBACiAJCUJDNzc5RTE3MUJCMjI3Q0EwMENBQThC
RiAvKiBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3NzlFMTUxQkIyMjZBMjAwQ0FBOEJGIC8qIFN0eWxlQ3Vz
dG9tUHJvcGVydHlEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQkM3RDhGRUYxQkQwM0I2NDAwRkZFNTQwIC8qIENTU1Vuc2V0VmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3RDhGRUQx
QkQwM0I2NDAwRkZFNTQwIC8qIENTU1Vuc2V0VmFsdWUuY3BwICovOyB9OwogCQlCQzdEOEZGMDFC
RDAzQjY0MDBGRkU1NDAgLyogQ1NTVW5zZXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3RDhGRUUxQkQwM0I2NDAwRkZFNTQwIC8qIENTU1Vu
c2V0VmFsdWUuaCAqLzsgfTsKLQkJQkM3RDhGRjMxQkQxQTQ3OTAwRkZFNTQwIC8qIENTU1JldmVy
dFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDN0Q4RkYxMUJEMUE0NzkwMEZGRTU0MCAvKiBDU1NSZXZlcnRWYWx1ZS5jcHAgKi87IHNldHRp
bmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKLQkJQkM3RDhGRjQxQkQxQTQ3OTAwRkZFNTQw
IC8qIENTU1JldmVydFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzdEOEZGMjFCRDFBNDc5MDBGRkU1NDAgLyogQ1NTUmV2ZXJ0VmFsdWUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OworCQlCQzdEOEZGMzFCRDFBNDc5
MDBGRkU1NDAgLyogQ1NTUmV2ZXJ0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3RDhGRjExQkQxQTQ3OTAwRkZFNTQwIC8qIENTU1JldmVy
dFZhbHVlLmNwcCAqLzsgfTsKKwkJQkM3RDhGRjQxQkQxQTQ3OTAwRkZFNTQwIC8qIENTU1JldmVy
dFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzdEOEZGMjFCRDFBNDc5MDBGRkU1NDAgLyogQ1NTUmV2ZXJ0VmFsdWUuaCAqLzsgfTsKIAkJQkM3
RjQ0QTgwQjlFMzI0RTAwQTlEMDgxIC8qIEltYWdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0Y0NEE3MEI5RTMyNEUwMEE5RDA4MSAv
KiBJbWFnZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQkM3RkE2MjAwRDFGMENCRDAwREIyMkE5IC8qIExpdmVOb2RlTGlzdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdGQTYxRTBE
MUYwQ0JEMDBEQjIyQTkgLyogTGl2ZU5vZGVMaXN0LmNwcCAqLzsgfTsKIAkJQkM3RkE2MjEwRDFG
MENCRDAwREIyMkE5IC8qIExpdmVOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3RkE2MUYwRDFGMENCRDAwREIyMkE5IC8qIExpdmVOb2Rl
TGlzdC5oICovOyB9OwpAQCAtMTAxMTgsMTEgKzEwMTE4LDExIEBACiAJCTdDNDhBNkNGMTkxQzlE
NjUwMDAyNjY3NCAvKiBXZWJLaXROYW1lc3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViS2l0TmFtZXNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdDNDhBNkQyMTkxQzlEOEUwMDAyNjY3NCAvKiBXZWJLaXROYW1lc3BhY2UuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdl
YktpdE5hbWVzcGFjZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNEM5NkQ4
MUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVhZGFibGVTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3QzRDOTZEODFBRDQ0ODM1MDAzNjVBNjAgLyogSlNXcml0YWJsZVN0
cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dyaXRhYmxl
U3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M0Qzk2RDkxQUQ0NDgz
NTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QzRDOTZEOTFBRDQ0ODM1MDAzNjVBNjAgLyogSlNXcml0YWJsZVN0cmVhbS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dyaXRhYmxlU3RyZWFtLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDNEM5NkRBMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxl
U3RyZWFtUmVhZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
UmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzRDOTZEQjFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDNEM5NkQ4MUFENDQ4MzUwMDM2NUE2MCAvKiBK
U1dyaXRhYmxlU3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTV3JpdGFibGVTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzRD
OTZEOTFBRDQ0ODM1MDAzNjVBNjAgLyogSlNXcml0YWJsZVN0cmVhbS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1dyaXRhYmxlU3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdDNEM5NkUyMUFENDRBQkYwMDM2NUE1MCAvKiBMYXVuY2hTZXJ2aWNlc1NQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXVuY2hTZXJ2aWNlc1NQSS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzRFREQ3MzFBN0I2MDc4MDAxOThDNEQg
LyogRm9udENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
Rm9udENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzUyMkQ0OTE1QjQ3
N0U4MDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JPdmVybGF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTExMzU5LDE2ICsxMTM1OSwxNSBAQAogCQk5OENFNDMyNTEyOUUwMEJEMDA1
ODIxREMgLyogTGlua0xvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBMaW5rTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOThDRTQz
MjkxMjlFMDBFNTAwNTgyMURDIC8qIExpbmtMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTGlua0xvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
OEVCMUY5NDEzMTNGRTA1MDBEMEUxRUEgLyogTm90SW1wbGVtZW50ZWQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTm90SW1wbGVtZW50ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJOTkwOEIwRUMxQkNBQ0YxRjAwRUQwRjY1IC8qIGdlbmVyYXRlLWpzLWJ1aWx0
aW5zICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gImdlbmVyYXRlLWpzLWJ1
aWx0aW5zIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRUQxQkNBQ0Y5MTAw
RUQwRjY1IC8qIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kuanMgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmphdmFzY3JpcHQ7IHBhdGggPSBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmpzOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBFRTFCQ0FDRjkxMDBFRDBGNjUgLyogQ291
bnRRdWV1aW5nU3RyYXRlZ3kuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBh
dGggPSBDb3VudFF1ZXVpbmdTdHJhdGVneS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTkwOEIwRjExQkNBQ0Y5MTAwRUQwRjU1IC8qIFN0cmVhbUludGVybmFscy5qcyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFN0cmVhbUludGVybmFscy5qczsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRkQxQkNBRDA3RDAwRUQwRjU1IC8qIFN0
cmVhbUludGVybmFsc0J1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTkwOEIwRUYxQkNBQ0Y5MTAwRUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFtLmpzICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gUmVhZGFibGVTdHJlYW0uanM7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MDhCMEVGMUJDQUNGOTEwMEVEMEY3NSAv
KiBXcml0YWJsZVN0cmVhbS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0
aCA9IFdyaXRhYmxlU3RyZWFtLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4
QjBGMDFCQ0FDRjkxMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmpzICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1Db250cm9s
bGVyLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGMTFCQ0FDRjkxMDBF
RDBGNjUgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmphdmFzY3JpcHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUludGVybmFscy5qczsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRjIxQkNBQ0Y5MTAwRUQwRjY1IC8qIFJlYWRhYmxl
U3RyZWFtUmVhZGVyLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0g
UmVhZGFibGVTdHJlYW1SZWFkZXIuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk5
MDhCMEVGMUJDQUNGOTEwMEVEMEY3NSAvKiBXcml0YWJsZVN0cmVhbS5qcyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFtLmpzOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGMzFCQ0FDRkZFMDBFRDBGNjUgLyogQnl0ZUxlbmd0
aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEY0MUJDQUNGRkUwMEVEMEY2NSAvKiBCeXRlTGVu
Z3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnNXcmFwcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWlsdGluc1dyYXBwZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRjUxQkNBRDA3RDAwRUQwRjY1IC8q
IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMzc2LDYgKzExMzc1LDcgQEAKIAkJOTkwOEIwRjcx
QkNBRDA3RDAwRUQwRjY1IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGODFCQ0FEMDdEMDBFRDBGNjUg
LyogQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGluc1dyYXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGluc1dyYXBwZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRjkxQkNBRDA3RDAwRUQwRjY1IC8q
IFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVhZGFibGVTdHJlYW1CdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTk5MDhCMEY5MUJDQUQwN0QwMEVEMEY3NSAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0
aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdyaXRhYmxlU3Ry
ZWFtQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGQTFC
Q0FEMDdEMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQnVpbHRpbnMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhZGFibGVTdHJlYW1Db250cm9s
bGVyQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGQjFC
Q0FEMDdEMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQnVpbHRpbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQnVp
bHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRkMxQkNBRDA3RDAw
RUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlckJ1aWx0aW5zV3JhcHBlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJCdWls
dGluc1dyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMzgzLDcgKzEx
MzgzLDYgQEAKIAkJOTkwOEIwRkUxQkNBRDA3RDAwRUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFtUmVh
ZGVyQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVh
ZGFibGVTdHJlYW1SZWFkZXJCdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk5MDhCMEZGMUJDQUQwN0QwMEVEMEY2NSAvKiBSZWFkYWJsZVN0cmVhbVJlYWRlckJ1aWx0
aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtUmVh
ZGVyQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIxMDAxQkNB
RDA3RDAwRUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyQnVpbHRpbnNXcmFwcGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtUmVhZGVyQnVpbHRp
bnNXcmFwcGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk5MDhCMEY5MUJDQUQw
N0QwMEVEMEY3NSAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5OTIwMzk4MDE4Qjk1QkM2MDBCMzlBRjkgLyogVXNlcklu
cHV0QnJpZGdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJJ
bnB1dEJyaWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MjAzOTgxMThC
OTVCQzYwMEIzOUFGOSAvKiBVc2VySW5wdXRCcmlkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVXNlcklucHV0QnJpZGdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk5QzdDQ0IyMThDNjYzRTQwMDMyRTQxMyAvKiBNZW1vaXplZERPTVJlc3VsdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vaXplZERPTVJlc3VsdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE0MjQsOSArMTE0MjMsOSBAQAogCQk5QjAzRDgwNzFC
QjMxMTBEMDBCNzY0Q0EgLyogU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUludGVybmFsc0J1aWx0aW5zV3JhcHBl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjAzRDgwNjFCQjMxMTBEMDBCNzY0
RDggLyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlCMDNEODA2MUJCMzExMEQwMEI3NjREOSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFs
c0J1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3Ry
ZWFtSW50ZXJuYWxzQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIw
M0Q4MDYxQkIzMTEwRDAwQjc2NEU4IC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjAzRDgwNzFCQjMxMTBEMDBCNzY0RDggLyogUmVh
ZGFibGVTdHJlYW1CdWlsdGluc1dyYXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVhZGFibGVTdHJlYW1CdWlsdGluc1dyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOUIwM0Q4MDcxQkIzMTEwRDAwQjc2NERBIC8qIFJlYWRhYmxlU3RyZWFtSW50
ZXJuYWxzQnVpbHRpbnNXcmFwcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTlCMDNEODA2MUJCMzExMEQwMEI3NjRFOCAvKiBXcml0YWJsZVN0cmVh
bUJ1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRhYmxlU3Ry
ZWFtQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwM0Q4MDcxQkIz
MTEwRDAwQjc2NEU4IC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnNXcmFwcGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFtQnVpbHRpbnNXcmFwcGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMTlCNjdFMUI5NjRFNTIwMDM0ODc0NSAv
KiBTaGFkb3dSb290LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFkb3dSb290LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIxQUIwNzkxNjQ4QzY5RDAwNTFGM0YyIC8q
IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTM1MSw3ICsxNTM1
MCw2IEBACiAJCTA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBXZWJLaXQgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTk5MDhCMEVDMUJDQUNGMUYwMEVE
MEY2NSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLywKIAkJCQk2NUM5N0FGMjA4RUE5MDg4MDBB
Q0QyNzMgLyogY29uZmlnLmggKi8sCiAJCQkJRURFQzk4MDIwQUVEN0UxNzAwNTkxMzdGIC8qIFdl
YkNvcmVQcmVmaXguaCAqLywKIAkJCQk5MzA3MDYxMzA5RTBDQTgyMDBCMTdGRTQgLyogRGVyaXZl
ZFNvdXJjZXMubWFrZSAqLywKQEAgLTE2NDAxLDcgKzE2Mzk5LDYgQEAKIAkJCQk5OTA4QjBGMTFC
Q0FDRjkxMDBFRDBGNTUgLyogU3RyZWFtSW50ZXJuYWxzLmpzICovLAogCQkJCTQxQTAyM0VEMUEz
OURCNzkwMEY3MjJERiAvKiBXcml0YWJsZVN0cmVhbS5pZGwgKi8sCiAJCQkJOTkwOEIwRUYxQkNB
Q0Y5MTAwRUQwRjc1IC8qIFdyaXRhYmxlU3RyZWFtLmpzICovLAotCiAJCQkpOwogCQkJcGF0aCA9
IHN0cmVhbXM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTcyNTcsOSArMTcyNTQs
OSBAQAogCQkJCTFBMTQxNEI0MTNBMEYwNTAwMDE5OTk2QyAvKiBXZWJLaXRGb250RmFtaWx5TmFt
ZXMuaCAqLywKIAkJCQk5OUNDMEI2ODE4QkVBMUZGMDA2Q0VCQ0MgLyogV2ViUmVwbGF5SW5wdXRz
LmNwcCAqLywKIAkJCQk5OUNDMEI2OTE4QkVBMUZGMDA2Q0VCQ0MgLyogV2ViUmVwbGF5SW5wdXRz
LmggKi8sCisJCQkJOTkwOEIwRjkxQkNBRDA3RDAwRUQwRjc1IC8qIFdyaXRhYmxlU3RyZWFtQnVp
bHRpbnMuY3BwICovLAogCQkJCTlCMDNEODA2MUJCMzExMEQwMEI3NjRFOCAvKiBXcml0YWJsZVN0
cmVhbUJ1aWx0aW5zLmggKi8sCiAJCQkJOUIwM0Q4MDcxQkIzMTEwRDAwQjc2NEU4IC8qIFdyaXRh
YmxlU3RyZWFtQnVpbHRpbnNXcmFwcGVyLmggKi8sCi0JCQkJOTkwOEIwRjkxQkNBRDA3RDAwRUQw
Rjc1IC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuY3BwICovLAogCQkJCTY1NjU4MUVBMDlEMTUw
OEQwMDBFNjFENyAvKiBYTGlua05hbWVzLmNwcCAqLywKIAkJCQk2NTY1ODFFQjA5RDE1MDhEMDAw
RTYxRDcgLyogWExpbmtOYW1lcy5oICovLAogCQkJCUE4MzNDODBBMEEyQ0YyNTYwMEQ1NzY2NCAv
KiBYTUxOYW1lcy5jcHAgKi8sCkBAIC0yOTEyMyw2ICsyOTEyMCw3IEBACiAJCQkJOTc0NkFGMjYx
NEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkI2MjUyRTE4REUxQjE1MDBBMDdDMDUgLyogR2VvbWV0cnlVdGlsaXRpZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDZDODNFRkQxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlm
aWVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJENTAzNjY4MUJDREREQzQwMEUyMEJCMyAvKiBH
ZXN0dXJlRXZlbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQUZGQzgzMEQwMEE1QzEwMDMw
MDc0RCAvKiBHbHlwaFBhZ2VNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1M0M2MDgwREE1
NkM1NzAwMjFFQjVEIC8qIEdyYWRpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNTNDNjBC
MERBNTZDRjEwMDIxRUI1RCAvKiBHcmFkaWVudENHLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk3
NTEsNyArMjk3NDksNiBAQAogCQkJCTA3MDU4NTMzMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlh
VHJhY2tDb25zdHJhaW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzA1ODUzNTE3RkRFNkQ5
MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlFMTA3NDAwRDBFNzdCREMwMDAzM0FGMjQgLyogSlNNZXNzYWdlQ2hhbm5lbC5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQkwRkVGMjBDRTFCRDRBMjQxMDAxMjhFNUQgLyogTGVuZ3RoU2l6ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUE1Rjk5QjBFN0VBQTI1MDBBRjg1RUEgLyogSlNNZXNz
YWdlQ2hhbm5lbEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3NTc5M0VDODBEMENFNzJE
MDA3RkMwQUMgLyogSlNNZXNzYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEwQjdF
NzIxMDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMzAxNjMsNiArMzAxNjAsNyBAQAogCQkJCTUxQjI0MTdCMEQ5MzFGM0YwMEU4M0Y1
QyAvKiBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFNjVCRUEw
RUFDREYxNjAwN0U0NTMzIC8qIExlbmd0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNTVGNDk3
QTE1MUI4ODgwMDBCQjY3REIgLyogTGVuZ3RoRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTBGRUYyMENFMUJENEEyNDEwMDEyOEU1RCAvKiBMZW5ndGhTaXplLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUZGQjY5OENDMTgzM0VFMEQwMDE1OEEzMSAvKiBMaW5lQnJlYWtlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4OUI1RUFBMTExRTgwMDNEMDBGMjM2N0UgLyogTGluZUVuZGluZy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRkI2OThDRjE4MzQwMkJCMDAxNThBMzEgLyogTGluZUlu
Zm8uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDQ5NCw3ICszMDQ5Miw2IEBACiAJCQkJRDMwMjc1
NDkxMkE1RkU4NDAwNEJEODI4IC8qIFJlbmRlckRldGFpbHNNYXJrZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOUIzMkNEQUExM0RGN0ZBOTAwRjM0RDEzIC8qIFJlbmRlcmVkUG9zaXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTQzQTAyM0QxN0VCMzcxMzAwNENERDI1IC8qIFJlbmRlckVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEZFRjIwRDAxQkQ0QTY0RjAwMTI4RTVEIC8q
IFJlbmRlclN0eWxlQ29uc3RhbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNUI3QTU0MTBG
NjVEN0EwMDM3NjMwMiAvKiBSZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBOEVBNzNDMzBBMTkwMEUzMDBBOEVGNUYgLyogUmVuZGVyRmllbGRzZXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMDY2Qzc3MzAwQUI2MDNGRDAwMjM4Q0M0IC8qIFJlbmRlckZpbGVVcGxv
YWRDb250cm9sLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzA1NjYsNiArMzA1NjMsNyBAQAogCQkJ
CUFCMjQ3QTZDMEFGRDYzODMwMDNGQTVGRCAvKiBSZW5kZXJTbGlkZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzE5NTVBODYxNjBEMTk5MDAwODU4MDI1IC8qIFJlbmRlclNuYXBzaG90dGVkUGx1
Z0luLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDOEM4RkFEMEREQ0QzMUIwMEI1OTJGNCAvKiBS
ZW5kZXJTdHlsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkVGMjBEMDFCRDRBNjRGMDAxMjhF
NUQgLyogUmVuZGVyU3R5bGVDb25zdGFudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0RTU3
MTcxMzEzMjc2MjAwQ0Y4NUFGIC8qIFJlbmRlclNWR0FsbEluT25lLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4REY0QUVDMDk4MEM0MkMwMDUyOTgxQiAvKiBSZW5kZXJUYWJsZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk2RUQ4NzhDNDE0NzQ5M0Y0MDA0QzM1OTcgLyogUmVuZGVyVGFibGVDYXB0
aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzA4ODEsNyArMzA4NzksNiBAQAogCQkJCTI0RDkx
MkI3MTNDQTlBNjkwMEQyMTkxNSAvKiBTVkdBbHRHbHlwaEl0ZW1FbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyMjI3OTc2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmdsZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMjIyNzk3OTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZUNv
bG9yRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkyRDUwMzY2ODFCQ0REREM0MDBFMjBC
QjMgLyogR2VzdHVyZUV2ZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzYyQzdCOTEzQUM2
RjFBMDAzNDRCRUIgLyogU1ZHQW5pbWF0ZWRBbmdsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
MzFBMzA4ODEzQjhGOTc4MDA3NzkxRTQgLyogU1ZHQW5pbWF0ZWRCb29sZWFuLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQzQTYyNUY5MTNCMzMwNDAwMEFDOTRCOCAvKiBTVkdBbmltYXRlZENvbG9y
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5jcHAKaW5kZXggZmEyYTMwOTg5OTA0MWM1MjUyOGZjNzk0OTdjODFlZTgzZGNi
NmE4ZS4uZDNhMWE3MWE3YzQ4ZjMwNTNjZjU3OTQ2ZWU2OGJlMjQyYWU2ZDQwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC05NSwxMyAr
OTUsMTMgQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNE
T01XaW5kb3dTaGVsbCogc2hlbGwpCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhcCiAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWls
dGluRnVuY3Rpb25zKCkucmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucygpLm5hbWUjI1By
aXZhdGVOYW1lKCksIFwKICAgICAgICAgICAgIG1fcHJpdmF0ZUZ1bmN0aW9ucy5yZWFkYWJsZVN0
cmVhbUludGVybmFscygpLm1fIyNuYW1lIyNGdW5jdGlvbi5nZXQoKSAsIERvbnREZWxldGUgfCBS
ZWFkT25seSksCi0gICAgICAgIFdFQkNPUkVSRUFEQUJMRVNUUkVBTUlOVEVSTkFMU19GT1JFQUNI
X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0dMT0JBTF9TVEFUSUMpCisgICAgICAgIFdF
QkNPUkVfRk9SRUFDSF9SRUFEQUJMRVNUUkVBTUlOVEVSTkFMU19CVUlMVElOX0ZVTkNUSU9OX05B
TUUoREVDTEFSRV9HTE9CQUxfU1RBVElDKQogI3VuZGVmIERFQ0xBUkVfR0xPQkFMX1NUQVRJQwog
I2RlZmluZSBERUNMQVJFX0dMT0JBTF9TVEFUSUMobmFtZSlcCiAgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyhcCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNs
aWVudERhdGEpLT5idWlsdGluRnVuY3Rpb25zKCkuc3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMoKS5u
YW1lIyNQcml2YXRlTmFtZSgpLCBcCiAgICAgICAgICAgICBtX3ByaXZhdGVGdW5jdGlvbnMuc3Ry
ZWFtSW50ZXJuYWxzKCkubV8jI25hbWUjI0Z1bmN0aW9uLmdldCgpICwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KSwKLSAgICAgICAgV0VCQ09SRVNUUkVBTUlOVEVSTkFMU19GT1JFQUNIX0JVSUxUSU5f
RlVOQ1RJT05fTkFNRShERUNMQVJFX0dMT0JBTF9TVEFUSUMpCisgICAgICAgIFdFQkNPUkVfRk9S
RUFDSF9TVFJFQU1JTlRFUk5BTFNfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfR0xPQkFM
X1NUQVRJQykKICN1bmRlZiBERUNMQVJFX0dMT0JBTF9TVEFUSUMKICNlbmRpZgogICAgIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucyBiL1NvdXJjZS9X
ZWJDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA2MWRkNjQyZTdjYTJmODlhNzhlMWQxYTUwM2Q4Yjk3ODJiNDA0NDgwLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2dlbmVyYXRl
LWpzLWJ1aWx0aW5zCisrKyAvZGV2L251bGwKQEAgLTEsMTgxICswLDAgQEAKLSMhL3Vzci9iaW4v
cHl0aG9uCi0jIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSMgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0j
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0jIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSMgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLWltcG9ydCBhcmdwYXJzZQotaW1wb3J0IGZpbGVjbXAK
LWltcG9ydCBvcwotaW1wb3J0IHN1YnByb2Nlc3MKLQotZnJvbSBzdHJpbmcgaW1wb3J0IFRlbXBs
YXRlCi0KLQotcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQotcGFyc2VyLmFkZF9h
cmd1bWVudCgnLS1vdXRwdXRfZGlyJywgZGVmYXVsdD0nJywgaGVscD0nb3V0cHV0IGRpcmVjdG9y
eScpCi1wYXJzZXIuYWRkX2FyZ3VtZW50KCctLWlucHV0JywgaGVscD0ncGF0aCB0byBpbnB1dCBK
UyBmaWxlJykKLXBhcnNlci5hZGRfYXJndW1lbnQoJy0tZ2VuZXJhdGVfanNfYnVpbHRpbnNfcGF0
aCcsIGhlbHA9J3BhdGggdG8gZGlyZWN0b3J5IGNvbnRhaW5pbmcgSmF2YVNjcmlwdENvcmVcJ3Mg
Z2VuZXJhdGUtanMtYnVpbHRpbnMnKQotCi1hcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotZmls
ZW5hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoYXJncy5pbnB1dCkpWzBd
Ci0KLSMgZ2VuZXJhdGUgSlMgYnVpbHRpbnMKLW5hbWVzcGFjZSA9ICJXZWJDb3JlIgotcHJlZml4
ID0gIldFQkNPUkUiICsgZmlsZW5hbWUudXBwZXIoKQotb3V0cHV0ID0gb3MucGF0aC5qb2luKGFy
Z3Mub3V0cHV0X2RpciwgZmlsZW5hbWUgKyAiQnVpbHRpbnMiKQotanNjX2dlbmVyYXRlX2J1aWx0
aW5fc2NyaXB0ID0gb3MucGF0aC5qb2luKGFyZ3MuZ2VuZXJhdGVfanNfYnVpbHRpbnNfcGF0aCwg
ImdlbmVyYXRlLWpzLWJ1aWx0aW5zIikKLQotc3VicHJvY2Vzcy5jYWxsKFsicHl0aG9uIiwganNj
X2dlbmVyYXRlX2J1aWx0aW5fc2NyaXB0LCAiLS1vdXRwdXQiLCBvdXRwdXQsICItLW5hbWVzcGFj
ZSIsIG5hbWVzcGFjZSwgIi0tcHJlZml4IiwgcHJlZml4LCBhcmdzLmlucHV0XSwgc3RkZXJyPXN1
YnByb2Nlc3MuU1RET1VUKQotCi0jIGdlbmVyYXRlIEpTIGJ1aWx0aW5zIHdyYXBwZXIKLW91dHB1
dF9iYXNlID0gb3V0cHV0ICsgIldyYXBwZXIiCi0KLWJ1aWx0aW5zV3JhcHBlckhlYWRlciA9IG9w
ZW4ob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgInciKQotCi1idWlsdGluc1dyYXBwZXJIZWFkZXIu
d3JpdGUoVGVtcGxhdGUoCi0iIiIKLS8qIEdlbmVyYXRlZCBieSBnZW5lcmF0ZS1qcy1idWlsdGlu
cyBkbyBub3QgaGFuZCBlZGl0LiAqLwotCi0vKgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgot
ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0g
Ki8KLQotI2lmbmRlZiAke0ZpbGVuYW1lfUJ1aWx0aW5zV3JhcHBlcl9oCi0jZGVmaW5lICR7Rmls
ZW5hbWV9QnVpbHRpbnNXcmFwcGVyX2gKLQotI2luY2x1ZGUgIiR7RmlsZW5hbWV9QnVpbHRpbnMu
aCIKLSNpbmNsdWRlIDxieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgotI2lu
Y2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSWRlbnRp
Zmllci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzICR7RmlsZW5hbWV9QnVpbHRpbnNXcmFwcGVyIDogcHJpdmF0ZSBKU0M6
OldlYWtIYW5kbGVPd25lciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgJHtGaWxlbmFtZX1CdWls
dGluc1dyYXBwZXIoSlNDOjpWTSogdm0pCi0gICAgICAgIDogbV92bSgqdm0pCi0gICAgICAgICR7
UHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX0JVSUxUSU5f
TkFNRVMpCi0jZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBm
dW5jdGlvbk5hbWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKEpTQzo6bWFrZVNvdXJjZShT
dHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFtZSwgbGVuZ3RoKSkpCi0gICAgICAg
ICR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU4oSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1C
RVJTKQotI3VuZGVmIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUwotICAgIHsKLSAg
ICB9Ci0KLSNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25O
YW1lLCBsZW5ndGgpIFxcCi0gICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFt
ZSMjRXhlY3V0YWJsZSgpOyBcXAotICAgIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgbmFtZSMjU291
cmNlKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQotICAgICR7UHJlZml4fV9G
T1JFQUNIX0JVSUxUSU4oRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCi0jdW5kZWYgRVhQT1NF
X0JVSUxUSU5fRVhFQ1VUQUJMRVMKLQotICAgICR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fRlVO
Q1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUikKLQotICAgIHZv
aWQgZXhwb3J0TmFtZXMoKTsKLQotcHJpdmF0ZToKLSAgICBKU0M6OlZNJiBtX3ZtOwotCi0gICAg
JHtQcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9O
QU1FUykKLQotI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVu
Y3Rpb25OYW1lLCBsZW5ndGgpIFxcCi0gICAgSlNDOjpTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3Vy
Y2U7XFwKLSAgICBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4gbV8j
I25hbWUjI0V4ZWN1dGFibGU7Ci0gICAgJHtQcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTihERUNMQVJF
X0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCi0jdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9N
RU1CRVJTCi0KLX07Ci0KLSNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwg
ZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFxcCi1pbmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogJHtGaWxlbmFtZX1CdWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4ZWN1dGFibGUoKSBc
XAote1xcCi0gICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSlcXAotICAgICAgICBtXyMjbmFt
ZSMjRXhlY3V0YWJsZSA9IEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
PihKU0M6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fdm0sIG1fIyNuYW1lIyNTb3VyY2UsIGZ1
bmN0aW9uTmFtZSMjUHVibGljTmFtZSgpLCBzXyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0eSksIHRo
aXMsICZtXyMjbmFtZSMjRXhlY3V0YWJsZSk7XFwKLSAgICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1
dGFibGUuZ2V0KCk7XFwKLX0KLSR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU4oREVGSU5FX0JVSUxU
SU5fRVhFQ1VUQUJMRVMpCi0jdW5kZWYgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMKLQotaW5s
aW5lIHZvaWQgJHtGaWxlbmFtZX1CdWlsdGluc1dyYXBwZXI6OmV4cG9ydE5hbWVzKCkKLXsKLSNk
ZWZpbmUgRVhQT1JUX0ZVTkNUSU9OX05BTUUobmFtZSkgbV92bS5wcm9wZXJ0eU5hbWVzLT5hcHBl
bmRFeHRlcm5hbE5hbWUobmFtZSMjUHVibGljTmFtZSgpLCBuYW1lIyNQcml2YXRlTmFtZSgpKTsK
LSAgICAke1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoRVhQT1JUX0ZVTkNU
SU9OX05BTUUpCi0jdW5kZWYgRVhQT1JUX0ZVTkNUSU9OX05BTUUKLX0KLQotY2xhc3MgJHtGaWxl
bmFtZX1CdWlsdGluRnVuY3Rpb25zIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCAke0ZpbGVuYW1l
fUJ1aWx0aW5GdW5jdGlvbnMoSlNDOjpWTSYgdm0pIDogbV92bSh2bSkgeyB9Ci0KLSAgICB2b2lk
IGluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYpOwotICAgIHZvaWQgdmlzaXQoSlNDOjpTbG90Vmlz
aXRvciYpOwotCi1wdWJsaWM6Ci0gICAgSlNDOjpWTSYgbV92bTsKLQotI2RlZmluZSBERUNMQVJF
X0JVSUxUSU5fU09VUkNFX01FTUJFUlMoZnVuY3Rpb25OYW1lKSBcXAotICAgIEpTQzo6V3JpdGVC
YXJyaWVyPEpTQzo6SlNGdW5jdGlvbj4gbV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb247Ci0gICAg
JHtQcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9T
T1VSQ0VfTUVNQkVSUykKLSN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKLX07
Ci0KLWlubGluZSB2b2lkICR7RmlsZW5hbWV9QnVpbHRpbkZ1bmN0aW9uczo6aW5pdChKU0M6OkpT
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0jZGVmaW5lIEVYUE9SVF9GVU5DVElPTihj
b2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXFwKLSAgICBtXyMjZnVuY3Rpb25OYW1lIyNG
dW5jdGlvbi5zZXQobV92bSwgJmdsb2JhbE9iamVjdCwgSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVC
dWlsdGluRnVuY3Rpb24obV92bSwgY29kZU5hbWUjI0dlbmVyYXRvcihtX3ZtKSwgJmdsb2JhbE9i
amVjdCkpOwotICAgICR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU4oRVhQT1JUX0ZVTkNUSU9OKQot
I3VuZGVmIEVYUE9SVF9GVU5DVElPTgotfQotCi1pbmxpbmUgdm9pZCAke0ZpbGVuYW1lfUJ1aWx0
aW5GdW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0jZGVmaW5l
IFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFtZSMjRnVuY3Rpb24p
OwotICAgICR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShWSVNJVF9GVU5D
VElPTikKLSN1bmRlZiBWSVNJVF9GVU5DVElPTgotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyAke0ZpbGVuYW1lfUJ1aWx0aW5zV3JhcHBlcl9oCi0iIiIpLnN1YnN0aXR1
dGUoZGljdChGaWxlbmFtZT1maWxlbmFtZSwgUHJlZml4PXByZWZpeCkpKQotCi1idWlsdGluc1dy
YXBwZXJIZWFkZXIuY2xvc2UoKQotCi1pZiAobm90IG9zLnBhdGguZXhpc3RzKG91dHB1dF9iYXNl
ICsgIi5oIikpIG9yIChub3QgZmlsZWNtcC5jbXAob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwgb3V0
cHV0X2Jhc2UgKyAiLmgiLCBzaGFsbG93PUZhbHNlKSk6Ci0gICAgaWYgKG9zLnBhdGguZXhpc3Rz
KG91dHB1dF9iYXNlICsgIi5oIikpOgotICAgICAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAi
LmgiKQotICAgIG9zLnJlbmFtZShvdXRwdXRfYmFzZSArICIuaC50bXAiLCBvdXRwdXRfYmFzZSAr
ICIuaCIpCi1lbHNlOgotICAgIG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIuaC50bXAiKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE2MDEyZmI3
ZmMyZDUwMjJmNDU3N2YzM2Q3ZjQ0MDU4ZmVkNjMxMzIuLmU0MzgzMGFmODNmMzRkYzkxNDNmNDQ5
MDg5NTBhZTc4M2NiMzNlZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxNS0xMC0yMCAgQnJpYW4gQnVyZyAgPGJi
dXJnQGFwcGxlLmNvbT4KKworICAgICAgICBSZXN0cnVjdHVyZSBnZW5lcmF0ZS1qcy1iaW5kaW5n
cyBzY3JpcHQgdG8gYmUgbW9kdWxhciBhbmQgdGVzdGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTkyOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHN0dWIgc2hlbGwgc2NyaXB0IGFuZCBi
YXNpYyB3ZWJraXRweSBzdXBwb3J0IGZvciBydW5uaW5nIGJ1aWx0aW5zCisgICAgICAgIGdlbmVy
YXRvciB0ZXN0cy4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWJ1aWx0aW5zLWdlbmVyYXRvci10
ZXN0czogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvZGVnZW4vX19pbml0X18ucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
Y29kZWdlbi9tYWluLnB5OiBBZGRlZC4KKworICAgICAgICAgICAgVGhlIG9ubHkgaW50ZXJlc3Rp
bmcgZGlmZmVyZW5jZSBoZXJlIGZyb20gdGhlIGluc3BlY3RvciBwcm90b2NvbAorICAgICAgICAg
ICAgZ2VuZXJhdG9yIGVxdWl2YWxlbnQgaXMgdGhhdCB0aGlzIGltcGxlbWVudGF0aW9uIGRlY29k
ZXMgdGhlIHRhcmdldAorICAgICAgICAgICAgZnJhbWV3b3JrIGFuZCBvdXRwdXQgbW9kZSAoY29t
YmluZWQgb3Igc2VwYXJhdGUpIGZyb20gdGhlIHRlc3QncyBmaWxlIG5hbWUuCisKKyAgICAgICAg
KEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHMpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3JUZXN0
cy5fX2luaXRfXyk6CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvclRlc3RzLmdlbmVyYXRlX2Zy
b21fanNfYnVpbHRpbnMpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3JUZXN0cy53cml0ZV9l
cnJvcl9maWxlKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHMuZGV0ZWN0X2NoYW5n
ZXMpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3JUZXN0cy5ydW5fdGVzdHMpOgorICAgICAg
ICAoQnVpbHRpbnNHZW5lcmF0b3JUZXN0cy5tYWluKToKKwogMjAxNS0xMC0yMCAgQWxleGV5IFBy
b3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWMgRGVidWcgRVdTIG5ldmVy
IGZpbmlzaGVzIHdoZW4gdGhlcmUgYXJlIGZhaWx1cmVzCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3J1bi1idWlsdGlucy1nZW5lcmF0b3ItdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1idWls
dGlucy1nZW5lcmF0b3ItdGVzdHMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM5OGM3OGNhMTBlYzU5NzYyNjYxMmM4
NTU1M2FiZDFhNGU2ZmJkNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWJ1
aWx0aW5zLWdlbmVyYXRvci10ZXN0cwpAQCAtMCwwICsxLDQyIEBACisjIS91c3IvYmluL2VudiBw
eXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBzeXMK
K2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZXhlY3V0aXZlCisKK2RlZiBtYWlu
KGFyZ3YpOgorICAgICIiIlJ1bnMgdGhlIEpTIGJ1aWx0aW5zIGNvZGUgZ2VuZXJhdG9yIG9uIHRl
c3QgaW5wdXQgZmlsZXMgYW5kIGNvbXBhcmVzCisgICAgdGhlIHJlc3VsdHMgd2l0aCByZWZlcmVu
Y2UgZmlsZXMuCisKKyAgICBPcHRpb25zOgorICAgICAgIC0tcmVzZXQtcmVzdWx0czogT3Zlcndy
aXRlcyB0aGUgcmVmZXJlbmNlIGZpbGVzIHdpdGggdGhlIGdlbmVyYXRlZCByZXN1bHRzLgorCisg
ICAgIiIiCisgICAgcmVzZXRfcmVzdWx0cyA9ICItLXJlc2V0LXJlc3VsdHMiIGluIGFyZ3YKKwor
ICAgIGZyb20gd2Via2l0cHkuY29kZWdlbi5tYWluIGltcG9ydCBCdWlsdGluc0dlbmVyYXRvclRl
c3RzCisgICAgcmV0dXJuIEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHMocmVzZXRfcmVzdWx0cywgZXhl
Y3V0aXZlLkV4ZWN1dGl2ZSgpKS5tYWluKCkKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
KyAgICBzeXMuZXhpdChtYWluKHN5cy5hcmd2KSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29kZWdlbi9fX2luaXRfXy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29k
ZWdlbi9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjY1YmVlNWJiNzdlOTZlYmM3Y2Q5YzQ3NjQw
NjkwZmJkYThhYzE5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b2RlZ2VuL19faW5pdF9fLnB5CkBAIC0wLDAgKzEgQEAKKyMgUmVxdWlyZWQgZm9yIFB5dGhvbiB0
byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZSBmaWxlcwpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb2RlZ2VuL21haW4ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvZGVnZW4vbWFpbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDM5NmRiOWEzOGJlMGYwN2JlMTg2M2I4
OGFlZDQxZWRmOTdkOTY5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb2RlZ2VuL21haW4ucHkKQEAgLTAsMCArMSwxNDQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAi
QVMKKyMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVECisjIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQorIyBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgSE9MREVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IG9zCitpbXBvcnQgb3Mu
cGF0aAoraW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworaW1wb3J0IHRlbXBmaWxlCitmcm9tIHdl
YmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uZGV0ZWN0aW9uIGltcG9ydCBkZXRlY3Rfc2NtX3N5
c3RlbQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0
RXJyb3IKKworCitjbGFzcyBCdWlsdGluc0dlbmVyYXRvclRlc3RzOgorCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHJlc2V0X3Jlc3VsdHMsIGV4ZWN1dGl2ZSk6CisgICAgICAgIHNlbGYucmVzZXRf
cmVzdWx0cyA9IHJlc2V0X3Jlc3VsdHMKKyAgICAgICAgc2VsZi5leGVjdXRpdmUgPSBleGVjdXRp
dmUKKworICAgIGRlZiBnZW5lcmF0ZV9mcm9tX2pzX2J1aWx0aW5zKHNlbGYsIGJ1aWx0aW5zX2Zp
bGUsIG91dHB1dF9kaXJlY3RvcnksIGZyYW1ld29ya19uYW1lPSIiLCBjb21iaW5lZF9vdXRwdXRz
PUZhbHNlKToKKyAgICAgICAgY21kID0gWydweXRob24nLAorICAgICAgICAgICAgICAgJ0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHknLAorICAgICAgICAgICAg
ICAgJy0tb3V0cHV0LWRpcmVjdG9yeScsIG91dHB1dF9kaXJlY3RvcnksCisgICAgICAgICAgICAg
ICAnLS1mb3JjZScsCisgICAgICAgICAgICAgICAnLS1mcmFtZXdvcmsnLCBmcmFtZXdvcmtfbmFt
ZSwKKyAgICAgICAgICAgICAgICctLXRlc3QnXQorCisgICAgICAgIGlmIGNvbWJpbmVkX291dHB1
dHM6CisgICAgICAgICAgICBjbWQuYXBwZW5kKCctLWNvbWJpbmVkJykKKworICAgICAgICBjbWQu
YXBwZW5kKGJ1aWx0aW5zX2ZpbGUpCisKKyAgICAgICAgZXhpdF9jb2RlID0gMAorICAgICAgICB0
cnk6CisgICAgICAgICAgICBzdGRlcnJfb3V0cHV0ID0gc2VsZi5leGVjdXRpdmUucnVuX2NvbW1h
bmQoY21kKQorICAgICAgICAgICAgaWYgc3RkZXJyX291dHB1dDoKKyAgICAgICAgICAgICAgICBz
ZWxmLndyaXRlX2Vycm9yX2ZpbGUoYnVpbHRpbnNfZmlsZSwgb3V0cHV0X2RpcmVjdG9yeSwgc3Rk
ZXJyX291dHB1dCkKKyAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgorICAgICAgICAgICAg
cHJpbnQgZS5vdXRwdXQKKyAgICAgICAgICAgIGV4aXRfY29kZSA9IGUuZXhpdF9jb2RlCisgICAg
ICAgIHJldHVybiBleGl0X2NvZGUKKworICAgIGRlZiB3cml0ZV9lcnJvcl9maWxlKHNlbGYsIGlu
cHV0X2ZpbGVwYXRoLCBvdXRwdXRfZGlyZWN0b3J5LCBlcnJvcl9vdXRwdXQpOgorICAgICAgICBv
dXRwdXRfZmlsZXBhdGggPSBvcy5wYXRoLmpvaW4ob3V0cHV0X2RpcmVjdG9yeSwgb3MucGF0aC5i
YXNlbmFtZShpbnB1dF9maWxlcGF0aCkgKyAnLWVycm9yJykKKworICAgICAgICB3aXRoIG9wZW4o
b3V0cHV0X2ZpbGVwYXRoLCAidyIpIGFzIG91dHB1dF9maWxlOgorICAgICAgICAgICAgb3V0cHV0
X2ZpbGUud3JpdGUoZXJyb3Jfb3V0cHV0KQorCisgICAgZGVmIGRldGVjdF9jaGFuZ2VzKHNlbGYs
IHdvcmtfZGlyZWN0b3J5LCByZWZlcmVuY2VfZGlyZWN0b3J5KToKKyAgICAgICAgY2hhbmdlc19m
b3VuZCA9IEZhbHNlCisgICAgICAgIGZvciBvdXRwdXRfZmlsZSBpbiBvcy5saXN0ZGlyKHdvcmtf
ZGlyZWN0b3J5KToKKyAgICAgICAgICAgIGNtZCA9IFsnZGlmZicsCisgICAgICAgICAgICAgICAg
ICAgJy11JywKKyAgICAgICAgICAgICAgICAgICAnLU4nLAorICAgICAgICAgICAgICAgICAgIG9z
LnBhdGguam9pbihyZWZlcmVuY2VfZGlyZWN0b3J5LCBvdXRwdXRfZmlsZSksCisgICAgICAgICAg
ICAgICAgICAgb3MucGF0aC5qb2luKHdvcmtfZGlyZWN0b3J5LCBvdXRwdXRfZmlsZSldCisKKyAg
ICAgICAgICAgIGV4aXRfY29kZSA9IDAKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAg
ICBvdXRwdXQgPSBzZWxmLmV4ZWN1dGl2ZS5ydW5fY29tbWFuZChjbWQpCisgICAgICAgICAgICBl
eGNlcHQgU2NyaXB0RXJyb3IsIGU6CisgICAgICAgICAgICAgICAgb3V0cHV0ID0gZS5vdXRwdXQK
KyAgICAgICAgICAgICAgICBleGl0X2NvZGUgPSBlLmV4aXRfY29kZQorCisgICAgICAgICAgICBp
ZiBleGl0X2NvZGUgb3Igb3V0cHV0OgorICAgICAgICAgICAgICAgIHByaW50ICdGQUlMOiAlcycg
JSBvdXRwdXRfZmlsZQorICAgICAgICAgICAgICAgIHByaW50IG91dHB1dAorICAgICAgICAgICAg
ICAgIGNoYW5nZXNfZm91bmQgPSBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgIHByaW50ICdQQVNTOiAlcycgJSBvdXRwdXRfZmlsZQorICAgICAgICByZXR1cm4gY2hhbmdl
c19mb3VuZAorCisgICAgZGVmIHJ1bl90ZXN0cyhzZWxmLCBpbnB1dF9kaXJlY3RvcnksIHJlZmVy
ZW5jZV9kaXJlY3RvcnkpOgorICAgICAgICB3b3JrX2RpcmVjdG9yeSA9IHJlZmVyZW5jZV9kaXJl
Y3RvcnkKKworICAgICAgICBwYXNzZWQgPSBUcnVlCisgICAgICAgIGZvciBpbnB1dF9maWxlIGlu
IG9zLmxpc3RkaXIoaW5wdXRfZGlyZWN0b3J5KToKKyAgICAgICAgICAgICh0ZXN0X25hbWUsIGV4
dGVuc2lvbikgPSBvcy5wYXRoLnNwbGl0ZXh0KGlucHV0X2ZpbGUpCisgICAgICAgICAgICBpZiBl
eHRlbnNpb24gIT0gJy5qcyc6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAg
ICMgR2VuZXJhdGUgb3V0cHV0IGludG8gdGhlIHdvcmsgZGlyZWN0b3J5IChlaXRoZXIgdGhlIGdp
dmVuIG9uZSBvciBhCisgICAgICAgICAgICAjIHRlbXAgb25lIGlmIG5vdCByZXNldF9yZXN1bHRz
IGlzIHBlcmZvcm1lZCkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLnJlc2V0X3Jlc3VsdHM6Cisg
ICAgICAgICAgICAgICAgd29ya19kaXJlY3RvcnkgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKworICAg
ICAgICAgICAgKGZyYW1ld29ya19uYW1lLCB0ZXN0X2Nhc2UsIG91dHB1dF9tb2RlKSA9IHRlc3Rf
bmFtZS5zcGxpdCgnLScpCisgICAgICAgICAgICBpZiBub3QgZnJhbWV3b3JrX25hbWUgb3Igbm90
IG91dHB1dF9tb2RlIG9yIG5vdCB0ZXN0X2Nhc2U6CisgICAgICAgICAgICAgICAgcHJpbnQgIklu
dmFsaWQgdGVzdCBjYXNlIG5hbWU6IHNob3VsZCBiZSBGcmFtZXdvcmstVGVzdENhc2VOYW1lLU91
dHB1dE1vZGUuanMiCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgY29t
YmluZWRfb3V0cHV0cyA9IG91dHB1dF9tb2RlID09ICJDb21iaW5lZCIKKyAgICAgICAgICAgIGlm
IHNlbGYuZ2VuZXJhdGVfZnJvbV9qc19idWlsdGlucyhvcy5wYXRoLmpvaW4oaW5wdXRfZGlyZWN0
b3J5LCBpbnB1dF9maWxlKSwgd29ya19kaXJlY3RvcnksIGZyYW1ld29ya19uYW1lPWZyYW1ld29y
a19uYW1lLCBjb21iaW5lZF9vdXRwdXRzPWNvbWJpbmVkX291dHB1dHMpOgorICAgICAgICAgICAg
ICAgIHBhc3NlZCA9IEZhbHNlCisKKyAgICAgICAgICAgIGlmIHNlbGYucmVzZXRfcmVzdWx0czoK
KyAgICAgICAgICAgICAgICBwcmludCAiUmVzZXQgcmVzdWx0cyBmb3IgdGVzdDogJXMiICUgKGlu
cHV0X2ZpbGUpCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgIyBEZXRl
Y3QgY2hhbmdlcworICAgICAgICAgICAgaWYgc2VsZi5kZXRlY3RfY2hhbmdlcyh3b3JrX2RpcmVj
dG9yeSwgcmVmZXJlbmNlX2RpcmVjdG9yeSk6CisgICAgICAgICAgICAgICAgcGFzc2VkID0gRmFs
c2UKKyAgICAgICAgICAgIHNodXRpbC5ybXRyZWUod29ya19kaXJlY3RvcnkpCisKKyAgICAgICAg
cmV0dXJuIHBhc3NlZAorCisgICAgZGVmIG1haW4oc2VsZik6CisgICAgICAgIGN1cnJlbnRfc2Nt
ID0gZGV0ZWN0X3NjbV9zeXN0ZW0ob3MuY3VyZGlyKQorICAgICAgICBvcy5jaGRpcihvcy5wYXRo
LmpvaW4oY3VycmVudF9zY20uY2hlY2tvdXRfcm9vdCwgJ1NvdXJjZScpKQorCisgICAgICAgIGFs
bF90ZXN0c19wYXNzZWQgPSBUcnVlCisKKyAgICAgICAgaW5wdXRfZGlyZWN0b3J5ID0gb3MucGF0
aC5qb2luKCdKYXZhU2NyaXB0Q29yZScsICdTY3JpcHRzJywgJ3Rlc3RzJywgJ2J1aWx0aW5zJykK
KyAgICAgICAgcmVmZXJlbmNlX2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbignSmF2YVNjcmlwdENv
cmUnLCAnU2NyaXB0cycsICd0ZXN0cycsICdidWlsdGlucycsICdleHBlY3RlZCcpCisgICAgICAg
IGlmIG5vdCBzZWxmLnJ1bl90ZXN0cyhpbnB1dF9kaXJlY3RvcnksIHJlZmVyZW5jZV9kaXJlY3Rv
cnkpOgorICAgICAgICAgICAgYWxsX3Rlc3RzX3Bhc3NlZCA9IEZhbHNlCisKKyAgICAgICAgcHJp
bnQgJycKKyAgICAgICAgaWYgYWxsX3Rlc3RzX3Bhc3NlZDoKKyAgICAgICAgICAgIHByaW50ICdB
bGwgdGVzdHMgUEFTUyEnCisgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgcHJpbnQgJ1NvbWUgdGVzdHMgRkFJTCEgKFRvIHVwZGF0ZSB0aGUgcmVmZXJlbmNl
IGZpbGVzLCBleGVjdXRlICJydW4tYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzIC0tcmVzZXQtcmVz
dWx0cyIpJworICAgICAgICAgICAgcmV0dXJuIC0xCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263720</attachid>
            <date>2015-10-21 13:04:27 -0700</date>
            <delta_ts>2015-10-21 16:13:53 -0700</delta_ts>
            <desc>Proposed Fix (different CMake strategy)</desc>
            <filename>bug-149929-20151021130342.patch</filename>
            <type>text/plain</type>
            <size>345324</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
YjkzNDc3ODhkYjYwNzIwZjU1MjM0ZjJkYmJhOGNhOGViNjJmZTNmLi4yNWJkZGUzY2JhNzkyZjcy
MzQxNmJjZTc0YmFjYWJhNTRlZjE5ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTkgQEAKKzIwMTUtMTAtMjAgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmVzdHJ1Y3R1cmUgZ2VuZXJhdGUtanMtYmluZGluZ3Mgc2NyaXB0IHRvIGJlIG1v
ZHVsYXIgYW5kIHRlc3RhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDk5MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGlzIGEgbmV3IGNvZGUgZ2VuZXJhdG9yLCBiYXNlZCBvbiB0aGUgcmVw
bGF5IGlucHV0cyBjb2RlIGdlbmVyYXRvciBhbmQKKyAgICAgICAgdGhlIGluc3BlY3RvciBwcm90
b2NvbCBjb2RlIGdlbmVyYXRvciwgd2hpY2ggcHJvZHVjZXMgdmFyaW91cyBmaWxlcyBmb3IgSlMK
KyAgICAgICAgYnVpbHRpbnMuCisKKyAgICAgICAgUmVsYXRpdmUgdG8gdGhlIGdlbmVyYXRvciBp
dCByZXBsYWNlcywgdGhpcyBvbmUgY29uc29saWRhdGVzIHR3byBzY3JpcHRzIGluCisgICAgICAg
IEphdmFTY3JpcHRDb3JlIGFuZCBXZWJDb3JlIGludG8gYSBzaW5nbGUgc2NyaXB0IHdpdGggbXVs
dGlwbGUgZmlsZXMuIFBhcnNlZAorICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnVpbHRp
bnMgZmlsZSBpcyBzdG9yZWQgaW4gYmFja2VuZC1pbmRlcGVuZGVudCBtb2RlbAorICAgICAgICBv
YmplY3RzLiBFYWNoIG91dHB1dCBmaWxlIGhhcyBpdHMgb3duIGNvZGUgZ2VuZXJhdG9yIHRoYXQg
dXNlcyB0aGUgbW9kZWwgdG8KKyAgICAgICAgcHJvZHVjZSByZXN1bHRpbmcgY29kZS4gR2VuZXJh
dG9ycyBhcmUgYWRkaXRpb25hbGx5IHBhcmFtZXRlcml6ZWQgYnkgdGhlIHRhcmdldAorICAgICAg
ICBmcmFtZXdvcmsgKHRvIGNob29zZSBjb3JyZWN0IG1hY3JvcyBhbmQgaW5jbHVkZXMpIGFuZCBv
dXRwdXQgbW9kZSAob25lCisgICAgICAgIGhlYWRlci9pbXBsZW1lbnRhdGlvbiBmaWxlIHBlciBi
dWlsdGluIG9yIHBlciBmcmFtZXdvcmspLgorCisgICAgICAgIEl0IGluY2x1ZGVzIGEgZmV3IHNp
bXBsZSB0ZXN0cyBvZiB0aGUgZ2VuZXJhdG9yJ3MgZnVuY3Rpb25hbGl0eS4gVGhlc2UgcmVzdWx0
LQorICAgICAgICBiYXNlZCB0ZXN0cyB3aWxsIGJlY29tZSBpbmNyZWFzaW5nbHkgbW9yZSBpbXBv
cnRhbnQgYXMgd2Ugc3RhcnQgdG8gYWRkIHN1cHBvcnQKKyAgICAgICAgZm9yIGJ1aWx0aW5zIGFu
bm90YXRpb24gc3VjaCBhcyBAb3B0aW9uYWwsIEBpbnRlcm5hbCwgZXRjLiB0byB0aGUgY29kZSBn
ZW5lcmF0b3IuCisKKyAgICAgICAgU29tZSBvZiB0aGVzZSBjb21wbGV4aXRpZXMsIHN1Y2ggYXMg
aGF2aW5nIHR3byBvdXRwdXQgbW9kZXMsIHdpbGwgYmUgcmVtb3ZlZCBpbgorICAgICAgICBzdWJz
ZXF1ZW50IHBhdGNoZXMuIFRoaXMgcGF0Y2ggaXMgaW50ZW5kZWQgdG8gZXhhY3RseSByZXBsYWNl
IHRoZSBleGlzdGluZworICAgICAgICBmdW5jdGlvbmFsaXR5IHdpdGggYSB1bmlmaWVkIHNjcmlw
dCB0aGF0IG1ha2VzIGFkZGl0aW9uYWwgY2xlYW51cHMgc3RyYWlnaHRmb3J3YXJkLgorCisgICAg
ICAgIEFkZGl0aW9uYWwgY2xlYW51cCBhbmQgY29uc29saWRhdGlvbiBiZXR3ZWVuIGluc3BlY3Rv
ciBjb2RlIGdlbmVyYXRvciBzY3JpcHRzCisgICAgICAgIGFuZCB0aGlzIHNjcmlwdCB3aWxsIGJl
IHB1cnN1ZWQgaW4gZm9sbG93dXAgcGF0Y2hlcy4KKworICAgICAgICBOZXcgdGVzdHM6CisKKyAg
ICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21p
c2UtQ29tYmluZWQuanMKKyAgICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0
Q29yZS1CdWlsdGluLlByb21pc2UtU2VwYXJhdGUuanMKKyAgICAgICAgU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5qcworICAg
ICAgICBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90
eXBlLVNlcGFyYXRlLmpzCisgICAgICAgIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlw
dENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpzCisgICAgICAgIFNjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFyYXRlLmpz
CisgICAgICAgIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1T
ZXBhcmF0ZS5qcworICAgICAgICBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRl
ZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcworICAgICAgICBTY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcworICAgICAgICBTY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcworCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKworICAgICAgICAgICAgQ29weSB0aGUgc2NyaXB0cyB0
aGF0IGFyZSB1c2VkIGJ5IG90aGVyIHRhcmdldHMgdG8gYSBzdGFnaW5nIGRpcmVjdG9yeSBpbnNp
ZGUKKyAgICAgICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy4KKyAgICAgICAgICAgIERlZmluZSBKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTX0RJUiB0byBwb2ludCBoZXJlIHNvIHRoYXQgdGhlIGFkZF9jdXN0b21fY29tbWFu
ZAorICAgICAgICAgICAgYW5kIHNoYXJlZCBmaWxlIGxpc3RzIGFyZSBpZGVudGljYWwgYmV0d2Vl
biBKYXZhU2NyaXB0Q29yZSBhbmQgV2ViQ29yZS4gVGhlIHN0YWdlZAorICAgICAgICAgICAgc2Ny
aXB0cyBhcmUgYSBkZXBlbmRlbmN5IG9mIHRoZSBtYWluIEphdmFTY3JpcHRDb3JlIHRhcmdldCBz
byB0aGF0IHRoZXkgYXJlCisgICAgICAgICAgICBhbHdheXMgc3RhZ2VkLCBldmVuIGlmIEphdmFT
Y3JpcHRDb3JlIGl0c2VsZiBkb2VzIG5vdCB1c2UgYSBwYXJ0aWN1bGFyIHNjcmlwdC4KKworICAg
ICAgICAgICAgVGhlIG91dHB1dCBmaWxlcyBhZGRpdGlvbmFsbHkgZGVwZW5kIG9uIGFsbCBidWls
dGluIGdlbmVyYXRvciBzY3JpcHQgZmlsZXMKKyAgICAgICAgICAgIGFuZCBpbnB1dCBmaWxlcyB0
aGF0IGFyZSBjb21iaW5lZCBpbnRvIHRoZSBzaW5nbGUgaGVhZGVyL2ltcGxlbWVudGF0aW9uIGZp
bGUuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorCisgICAgICAgICAgICBEZWZp
bmUgSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIgZXhwbGljaXRseSBzbyB0aGUgcnVsZSBmb3Ig
Y29kZSBnZW5lcmF0aW9uIGFuZAorICAgICAgICAgICAgc2hhcmVkIGZpbGUgbGlzdHMgYXJlIGlk
ZW50aWNhbCBiZXR3ZWVuIEphdmFTY3JpcHRDb3JlIGFuZCBXZWJDb3JlLgorCisgICAgICAgICAg
ICBUaGUgb3V0cHV0IGZpbGVzIGFkZGl0aW9uYWxseSBkZXBlbmQgb24gYWxsIGJ1aWx0aW4gZ2Vu
ZXJhdG9yIHNjcmlwdCBmaWxlcworICAgICAgICAgICAgYW5kIGlucHV0IGZpbGVzIHRoYXQgYXJl
IGNvbWJpbmVkIGludG8gdGhlIHNpbmdsZSBoZWFkZXIvaW1wbGVtZW50YXRpb24gZmlsZS4KKwor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAg
ICAgICAgICAgIE1hcmsgdGhlIG5ldyBidWlsdGlucyBnZW5lcmF0b3IgZmlsZXMgYXMgcHJpdmF0
ZSBoZWFkZXJzIHNvIHdlIGNhbiB1c2UgdGhlbSBmcm9tCisgICAgICAgICAgICBXZWJDb3JlLgor
CisgICAgICAgICogU2NyaXB0cy9VcGRhdGVDb250ZW50cy5weTogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9VcGRhdGVDb250ZW50cy5weS4KKyAgICAgICAgKiBTY3JpcHRzL2J1
aWx0aW5zL19faW5pdF9fLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1
aWx0aW5zLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dl
bmVyYXRvci5weTogQWRkZWQuIFRoaXMgZmlsZSBjb250YWlucyB0aGUgYmFzZSBnZW5lcmF0b3Iu
CisgICAgICAgIChXS19sY2ZpcnN0KToKKyAgICAgICAgKFdLX3VjZmlyc3QpOgorICAgICAgICAo
QnVpbHRpbnNHZW5lcmF0b3IpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3IuX19pbml0X18p
OgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3IubW9kZWwpOgorICAgICAgICAoQnVpbHRpbnNH
ZW5lcmF0b3IuZ2VuZXJhdGVfbGljZW5zZSk6CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvci5n
ZW5lcmF0ZV9pbmNsdWRlc19mcm9tX2VudHJpZXMpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0
b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yLm91dHB1dF9m
aWxlbmFtZSk6CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvckZ1bmN0
aW9uKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rpb24u
dG9DYW1lbCk6CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvci5nZW5lcmF0ZV9lbWJlZGRlZF9j
b2RlX3N0cmluZ19zZWN0aW9uX2Zvcl9mdW5jdGlvbik6CisgICAgICAgICogU2NyaXB0cy9idWls
dGlucy9idWlsdGluc19tb2RlbC5weTogQWRkZWQuIFRoaXMgZmlsZSBjb250YWlucyBidWlsdGlu
cyBtb2RlbCBvYmplY3RzLgorICAgICAgICAoUGFyc2VFeGNlcHRpb24pOgorICAgICAgICAoRnJh
bWV3b3JrKToKKyAgICAgICAgKEZyYW1ld29yay5fX2luaXRfXyk6CisgICAgICAgIChGcmFtZXdv
cmsuc2V0dGluZyk6CisgICAgICAgIChGcmFtZXdvcmsuZnJvbVN0cmluZyk6CisgICAgICAgIChG
cmFtZXdvcmtzKToKKyAgICAgICAgKEJ1aWx0aW5PYmplY3QpOgorICAgICAgICAoQnVpbHRpbk9i
amVjdC5fX2luaXRfXyk6CisgICAgICAgIChCdWlsdGluRnVuY3Rpb24pOgorICAgICAgICAoQnVp
bHRpbkZ1bmN0aW9uLl9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0aW5GdW5jdGlvbi5mcm9tU3Ry
aW5nKToKKyAgICAgICAgKEJ1aWx0aW5GdW5jdGlvbi5fX3N0cl9fKToKKyAgICAgICAgKEJ1aWx0
aW5zQ29sbGVjdGlvbik6CisgICAgICAgIChCdWlsdGluc0NvbGxlY3Rpb24uX19pbml0X18pOgor
ICAgICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLnBhcnNlX2J1aWx0aW5zX2ZpbGUpOgorICAgICAg
ICAoQnVpbHRpbnNDb2xsZWN0aW9uLmNvcHlyaWdodHMpOgorICAgICAgICAoQnVpbHRpbnNDb2xs
ZWN0aW9uLmFsbF9mdW5jdGlvbnMpOgorICAgICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLl9wYXJz
ZV9jb3B5cmlnaHRfbGluZXMpOgorICAgICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLl9wYXJzZV9m
dW5jdGlvbnMpOgorICAgICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVz
LnB5OiBBZGRlZC4KKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVzKToKKyAgICAg
ICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5w
eTogQWRkZWQuCisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSGVhZGVyR2VuZXJhdG9yKToKKyAg
ICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJHZW5lcmF0b3IuX19pbml0X18pOgorICAgICAg
ICAoQnVpbHRpbnNDb21iaW5lZEhlYWRlckdlbmVyYXRvci5vdXRwdXRfZmlsZW5hbWUpOgorICAg
ICAgICAoQnVpbHRpbnNDb21iaW5lZEhlYWRlckdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgor
ICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEhlYWRlckdlbmVyYXRvci5nZW5lcmF0ZV9mb3J3YXJk
X2RlY2xhcmF0aW9ucyk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAo
Vk0pOgorICAgICAgICAoQ29uc3RydWN0QWJpbGl0eSk6CisgICAgICAgIChnZW5lcmF0ZV9zZWN0
aW9uX2Zvcl9vYmplY3QpOgorICAgICAgICAoZ2VuZXJhdGVfZXh0ZXJuc19mb3Jfb2JqZWN0KToK
KyAgICAgICAgKGdlbmVyYXRlX21hY3Jvc19mb3Jfb2JqZWN0KToKKyAgICAgICAgKGdlbmVyYXRl
X2RlZmluZXNfZm9yX29iamVjdCk6CisgICAgICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2Rl
X3RhYmxlX21hY3JvKToKKyAgICAgICAgKGdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfbmFtZV9t
YWNybyk6CisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21i
aW5lZF9pbXBsZW1lbnRhdGlvbi5weTogQWRkZWQuCisgICAgICAgIChCdWlsdGluc0NvbWJpbmVk
SW1wbGVtZW50YXRpb25HZW5lcmF0b3IpOgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEltcGxl
bWVudGF0aW9uR2VuZXJhdG9yLl9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRJ
bXBsZW1lbnRhdGlvbkdlbmVyYXRvci5vdXRwdXRfZmlsZW5hbWUpOgorICAgICAgICAoQnVpbHRp
bnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAg
ICAgIChCdWlsdGluc0NvbWJpbmVkSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVfaGVh
ZGVyX2luY2x1ZGVzKToKKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVy
YXRlX3NlcGFyYXRlX2hlYWRlci5weTogQWRkZWQuCisgICAgICAgIChCdWlsdGluc1NlcGFyYXRl
SGVhZGVyR2VuZXJhdG9yKToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0
b3IuX19pbml0X18pOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvci5v
dXRwdXRfZmlsZW5hbWUpOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRv
ci5tYWNyb19wcmVmaXgpOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRv
ci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVy
YXRvci5nZW5lcmF0ZV9mb3J3YXJkX2RlY2xhcmF0aW9ucyk6CisgICAgICAgIChGdW5jdGlvbkV4
ZWN1dGFibGUpOgorICAgICAgICAoZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKToKKyAgICAgICAg
KGdlbmVyYXRlX3NlY3Rpb25fZm9yX29iamVjdCk6CisgICAgICAgIChnZW5lcmF0ZV9leHRlcm5z
X2Zvcl9vYmplY3QpOgorICAgICAgICAoZ2VuZXJhdGVfbWFjcm9zX2Zvcl9vYmplY3QpOgorICAg
ICAgICAoZ2VuZXJhdGVfZGVmaW5lc19mb3Jfb2JqZWN0KToKKyAgICAgICAgKGdlbmVyYXRlX3Nl
Y3Rpb25fZm9yX2NvZGVfdGFibGVfbWFjcm8pOgorICAgICAgICAoZ2VuZXJhdGVfc2VjdGlvbl9m
b3JfY29kZV9uYW1lX21hY3JvKToKKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5z
X2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5OiBBZGRlZC4KKyAgICAgICAgKEJ1
aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChCdWlsdGlu
c1NlcGFyYXRlSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX19pbml0X18pOgorICAgICAgICAoQnVp
bHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSk6Cisg
ICAgICAgIChCdWlsdGluc1NlcGFyYXRlSW1wbGVtZW50YXRpb25HZW5lcmF0b3IubWFjcm9fcHJl
Zml4KToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5n
ZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9u
R2VuZXJhdG9yLmdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcyk6CisgICAgICAgICogU2NyaXB0cy9i
dWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFwcGVyLnB5OiBBZGRlZC4KKyAg
ICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9yKToKKyAgICAgICAgKEJ1aWx0
aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9yLl9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0aW5z
U2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSk6CisgICAgICAgIChCdWls
dGluc1NlcGFyYXRlV3JhcHBlckdlbmVyYXRvci5tYWNyb19wcmVmaXgpOgorICAgICAgICAoQnVp
bHRpbnNTZXBhcmF0ZVdyYXBwZXJHZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAgICAg
KEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9yLmdlbmVyYXRlX2hlYWRlcl9pbmNsdWRl
cyk6CisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weTogQWRkZWQuCisK
KyAgICAgICAgICAgIFBhcnNlIGNvbW1hbmQgbGluZSBvcHRpb25zLCBkZWNpZGUgd2hpY2ggZ2Vu
ZXJhdG9ycyBhbmQgb3V0cHV0IG1vZGVzIHRvIHVzZS4KKworICAgICAgICAoZ2VuZXJhdGVfYmlu
ZGluZ3NfZm9yX2J1aWx0aW5zX2ZpbGVzKToKKyAgICAgICAgKiBTY3JpcHRzL2xhenl3cml0ZXIu
cHk6IENvcGllZCBmcm9tIHRoZSBpbnNwZWN0b3IgcHJvdG9jb2wgZ2VuZXJhdG9yLgorICAgICAg
ICAoTGF6eUZpbGVXcml0ZXIpOgorICAgICAgICAoTGF6eUZpbGVXcml0ZXIuX19pbml0X18pOgor
ICAgICAgICAoTGF6eUZpbGVXcml0ZXIud3JpdGUpOgorICAgICAgICAoTGF6eUZpbGVXcml0ZXIu
Y2xvc2UpOgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUt
QnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS5qczog
QWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1C
dWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5qczogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1TZXBhcmF0ZS5q
czogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29y
ZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmluZWQuanM6IEFkZGVkLgorICAgICAgICAqIFNjcmlw
dHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFy
YXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUt
R3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanM6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtVW5ndWFyZGVk
QnVpbHRpbi1TZXBhcmF0ZS5qczogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWls
dGlucy9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanM6IEFkZGVkLgorICAgICAgICAq
IFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Q
cm9taXNlLUNvbWJpbmVkLmpzLXJlc3VsdDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0
cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtU2VwYXJh
dGUuanMtcmVzdWx0OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4
cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzLXJlc3Vs
dDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZh
U2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1TZXBhcmF0ZS5qcy1yZXN1bHQ6IEFkZGVkLgor
ICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUt
QnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpzLXJlc3VsdDogQWRkZWQuCisgICAgICAgICog
U2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29u
c3RydWN0b3ItU2VwYXJhdGUuanMtcmVzdWx0OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMt
cmVzdWx0OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVk
L1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQ6IEFkZGVk
LgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Vbmd1
YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdDogQWRkZWQuCisgICAgICAgICogU2NyaXB0
cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUu
anMtcmVzdWx0OiBBZGRlZC4KKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMu
Y3BwOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxl
cyk6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgICog
Y3JlYXRlX2hhc2hfdGFibGU6CisKKyAgICAgICAgICAgIFVwZGF0ZSB0aGUgZ2VuZXJhdGVkIGJ1
aWx0aW4gbWFjcm8gbmFtZXMuCisKKyAgICAgICAgKiBnZW5lcmF0ZS1qcy1idWlsdGluczogUmVt
b3ZlZC4KKwogMjAxNS0xMC0yMCAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4K
IAogICAgICAgICBSRUdSRVNTSU9OIChyMTkxMTc1KTogT1NSIEV4aXQgZnJvbSBhbiBpbmxpbmVk
IHRhaWwgY2FsbGVlIHRyYXNoZXMgY2FsbGVlIHNhdmUgcmVnaXN0ZXJzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzdhOTJhMmRlYzNjYzYzZGFlYjExMTM5MDVkMWYwMWFiZmJkZjg5Ni4uMTE1NTQzNjRmODViZGU4
ZjYyZWE4NDY5MDZjODRkZWNmZmExZTRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisy
MDE1LTEwLTIwICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFJlc3Ry
dWN0dXJlIGdlbmVyYXRlLWpzLWJpbmRpbmdzIHNjcmlwdCB0byBiZSBtb2R1bGFyIGFuZCB0ZXN0
YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5
OTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKworICAgICAgICAgICAgRGVmaW5lIEphdmFTY3JpcHRDb3JlX1NDUklQ
VFNfRElSIGV4cGxpY2l0bHkgc28gdGhlIGFkZF9jdXN0b21fY29tbWFuZCBhbmQKKyAgICAgICAg
ICAgIHNoYXJlZCBmaWxlIGxpc3RzIGFyZSBpZGVudGljYWwgYmV0d2VlbiBKYXZhU2NyaXB0Q29y
ZSBhbmQgV2ViQ29yZS4KKworICAgICAgICAgICAgVGhlIG91dHB1dCBmaWxlcyBhZGRpdGlvbmFs
bHkgZGVwZW5kIG9uIGFsbCBidWlsdGluIGdlbmVyYXRvciBzY3JpcHQgZmlsZXMuCisKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorCisgICAgICAgICAgICBVc2UgSmF2YVNjcmlwdENv
cmVfU0NSSVBUU19ESVIgc28gdGhhdCB0aGUgcnVsZSBmb3IgY29kZSBnZW5lcmF0aW9uIGFuZAor
ICAgICAgICAgICAgc2hhcmVkIGZpbGUgbGlzdHMgYXJlIGlkZW50aWNhbCBiZXR3ZWVuIEphdmFT
Y3JpcHRDb3JlIGFuZCBXZWJDb3JlLgorCisgICAgICAgICAgICBUaGUgb3V0cHV0IGZpbGVzIGFk
ZGl0aW9uYWxseSBkZXBlbmQgb24gYWxsIGJ1aWx0aW4gZ2VuZXJhdG9yIHNjcmlwdCBmaWxlcy4K
KworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAg
ICAgICAgRGVmaW5lIEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSIGJlZm9yZSBjYWxsaW5nIERl
cml2ZWRTb3VyY2VzLm1ha2UuCisgICAgICAgICAgICBUaGlzIHdpbGwgZXZlbnR1YWxseSBiZSBt
ZXJnZWQgd2l0aCB0aGUgb3RoZXIgc2ltaWxhciBzY3JpcHQgcGF0aHMuCisKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01X
aW5kb3dCYXNlOjpmaW5pc2hDcmVhdGlvbik6CisKKyAgICAgICAgICAgIFVwZGF0ZSB0aGUgZ2Vu
ZXJhdGVkIGJ1aWx0aW4gbWFjcm8gbmFtZXMuCisKKyAgICAgICAgKiBnZW5lcmF0ZS1qcy1idWls
dGluczogUmVtb3ZlZC4KKwogMjAxNS0xMC0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIEFub3RoZXIgR1RLIGJ1aWxkIGZpeCBhZnRlciBy
MTkxMzUxLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDM3ZjQ2MzM1OTZh
ODcxNjk2NzMxZjczZjdiODFjMzcyMmRjMGY5ZWUuLmFiMzlmODNmZGU2MjQ2YTAxNGM2M2RhNzg2
NDBiNTIwMWQ0N2EwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTcw
MCwxMyArNzAwLDQwIEBAIHNldChKYXZhU2NyaXB0Q29yZV9MVVRfRklMRVMKICAgICBydW50aW1l
L1N5bWJvbFByb3RvdHlwZS5jcHAKICkKIAotc2V0KEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
ICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vU2NyaXB0cyIpCi0KIHNldChKYXZhU2NyaXB0Q29yZV9M
SUJSQVJJRVMKICAgICBXVEYke0RFQlVHX1NVRkZJWH0KICAgICAke0lDVV9JMThOX0xJQlJBUklF
U30KICkKIAorc2V0KEphdmFTY3JpcHRDb3JlX1NDUklQVFNfU09VUkNFU19ESVIgIiR7SkFWQVND
UklQVENPUkVfRElSfS9TY3JpcHRzIikKKworIyBHbG9iYmluZyByZWxpZXMgb24gdGhlIGZhY3Qg
dGhhdCBnZW5lcmF0b3Itc3BlY2lmaWMgZmlsZSBuYW1lcyBhcmUgcHJlZml4ZWQgd2l0aCB0aGVp
ciBkaXJlY3RvcnkuCisjIFRvcC1sZXZlbCBzY3JpcHRzIHNob3VsZCBoYXZlIGEgZmlsZSBleHRl
bnNpb24sIHNpbmNlIHRoZXkgYXJlIGludm9rZWQgZHVyaW5nIHRoZSBidWlsZC4KKworc2V0KEph
dmFTY3JpcHRDb3JlX1NDUklQVFNfU09VUkNFU19QQVRIUworICAgICR7SmF2YVNjcmlwdENvcmVf
U0NSSVBUU19TT1VSQ0VTX0RJUn0vKi5wbAorICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19T
T1VSQ0VTX0RJUn0vKi5weQorICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19TT1VSQ0VTX0RJ
Un0vYnVpbHRpbnMvYnVpbHRpbnMqLnB5CispCisKKyMgRm9yY2UgSmF2YVNjcmlwdENvcmUgdG8g
cnVuIHNjcmlwdHMgZnJvbSB0aGUgc2FtZSBzdGFnaW5nIHBhdGggYXMgV2ViQ29yZS4KK3NldChK
YXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUiAiJHtERVJJVkVEX1NPVVJDRVNfRElSfS9Gb3J3YXJk
aW5nSGVhZGVycy9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzIikKKworIyBUaGUgZGlyZWN0b3J5IGZs
YXR0ZW5pbmcgcGVyZm9ybWVkIGJlbG93IG1pcnJvcnMgd2hhdCB0aGUgTWFjIHBvcnQgZG9lcyB3
aXRoIHByaXZhdGUgaGVhZGVycy4KKworZmlsZShHTE9CIEphdmFTY3JpcHRDb3JlX1NDUklQVFNf
U09VUkNFUyAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfU09VUkNFU19QQVRIU30pCisKK2ZvcmVh
Y2ggKF9maWxlICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19TT1VSQ0VTfSkKKyAgZ2V0X2ZpbGVu
YW1lX2NvbXBvbmVudChfc2NyaXB0ICIke19maWxlfSIgTkFNRSkKKyAgYWRkX2N1c3RvbV9jb21t
YW5kKAorICAgIE9VVFBVVCAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS8ke19zY3JpcHR9
CisgICAgTUFJTl9ERVBFTkRFTkNZICR7X2ZpbGV9CisgICAgV09SS0lOR19ESVJFQ1RPUlkgJHtE
RVJJVkVEX1NPVVJDRVNfRElSfQorICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBjb3B5
X2lmX2RpZmZlcmVudCAke19maWxlfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS8ke19z
Y3JpcHR9CisgICAgVkVSQkFUSU0pCisgIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NDUklQ
VFMgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vJHtfc2NyaXB0fSkKK2VuZGZvcmVhY2gg
KCkKKwogaWYgKFVTRV9VRElTODYpCiAgICAgc2V0KFVESVNfR0VOX0RFUAogICAgICAgICBkaXNh
c3NlbWJsZXIvdWRpczg2L3VkX29wY29kZS5weQpAQCAtOTQxLDcgKzk2OCw3IEBAIHNldChIQVNI
X0xVVF9HRU5FUkFUT1IgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2NyZWF0ZV9oYXNoX3Rh
YmxlKQogbWFjcm8oR0VORVJBVEVfSEFTSF9MVVQgX2lucHV0IF9vdXRwdXQpCiAgICAgYWRkX2N1
c3RvbV9jb21tYW5kKAogICAgICAgICBPVVRQVVQgJHtfb3V0cHV0fQotICAgICAgICBERVBFTkRT
ICR7SEFTSF9MVVRfR0VORVJBVE9SfSAke19pbnB1dH0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRT
X0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMKKyAgICAgICAgREVQRU5EUyAke0hBU0hfTFVUX0dF
TkVSQVRPUn0gJHtfaW5wdXR9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2dlbmVyYXRl
LWpzLWJ1aWx0aW5zLnB5CiAgICAgICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SEFT
SF9MVVRfR0VORVJBVE9SfSAke19pbnB1dH0gLWkgPiAke19vdXRwdXR9CiAgICAgICAgIFZFUkJB
VElNKQogICAgIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMgJHtfb3V0cHV0fSkK
QEAgLTEwODAsNiArMTEwNywyMSBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgVkVSQkFUSU0p
CiAKICMgSlNDQnVpbHRpbnMKKworc2V0KEJVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTCisgICAg
JHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnMucHkKKyAgICAke0phdmFTY3Jp
cHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGluc19nZW5lcmF0b3IucHkKKyAgICAke0phdmFTY3Jp
cHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGluc19tb2RlbC5weQorICAgICR7SmF2YVNjcmlwdENv
cmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5zX3RlbXBsYXRlcy5weQorICAgICR7SmF2YVNjcmlwdENv
cmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weQorICAg
ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVk
X2ltcGxlbWVudGF0aW9uLnB5CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVp
bHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5CisgICAgJHtKYXZhU2NyaXB0Q29yZV9T
Q1JJUFRTX0RJUn0vYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkK
KyAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGluc19nZW5lcmF0ZV9zZXBh
cmF0ZV93cmFwcGVyLnB5CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vZ2VuZXJh
dGUtanMtYnVpbHRpbnMucHkKKyAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9sYXp5
d3JpdGVyLnB5CispCisKIHNldChKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAg
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0FycmF5Q29uc3RydWN0b3IuanMKICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXlJdGVyYXRvci5wcm90b3R5cGUuanMK
QEAgLTExMDIsMTAgKzExNDQsMTEgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJD
RVMKICkKIAogYWRkX2N1c3RvbV9jb21tYW5kKAotICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuY3BwICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuaAotICAgTUFJTl9ERVBFTkRFTkNZICR7SmF2
YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zCi0gICBERVBFTkRT
ICR7SmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFU30KLSAgIENPTU1BTkQgJHtQWVRIT05f
RVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vZ2VuZXJhdGUtanMtYnVp
bHRpbnMgLS1pbnB1dC1kaXJlY3RvcnkgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2J1aWx0
aW5zIC0tb3V0cHV0ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVp
bHRpbnMuY3BwCisgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElS
fS9KU0NCdWlsdGlucy5jcHAKKyAgICAgICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9L0pTQ0J1aWx0aW5zLmgKKyAgIE1BSU5fREVQRU5ERU5DWSAke0phdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorICAgREVQRU5EUyAke0ph
dmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVN9ICR7QlVJTFRJTlNfR0VORVJBVE9SX1NDUklQ
VFN9CisgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NS
SVBUU19ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5IC0tZnJhbWV3b3JrIEphdmFTY3JpcHRD
b3JlIC0tb3V0cHV0LWRpcmVjdG9yeSAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9E
SVJ9IC0tY29tYmluZWQgJHtKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTfQogICAgVkVS
QkFUSU0pCiAKIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKQEAgLTEyMDksNCAr
MTI1Miw3IEBAIGlmIChFTkFCTEVfRlRMX0pJVCkKICAgICBhZGRfZGVwZW5kZW5jaWVzKEphdmFT
Y3JpcHRDb3JlIGxsdm1Gb3JKU0MpCiBlbmRpZiAoKQogCisjIEZvcmNlIHN0YWdpbmcgb2Ygc2hh
cmVkIHNjcmlwdHMsIGV2ZW4gaWYgdGhleSBhcmVuJ3QgZGlyZWN0bHkgdXNlZCB0byBidWlsZCBK
YXZhU2NyaXB0Q29yZS4KIAorYWRkX2N1c3RvbV90YXJnZXQoc3RhZ2VTaGFyZWRTY3JpcHRzIERF
UEVORFMgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTfSkKK2FkZF9kZXBlbmRlbmNpZXMoSmF2YVNj
cmlwdENvcmUgc3RhZ2VTaGFyZWRTY3JpcHRzKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggOTA5MTEyZDQw
ZjRkZmUyZGZkZWE0ZDRiYzc5MDhiMjliNDM5NjhmMS4uNDE0NGE3ZmEzZjdmMDcxYzNkNjBlMzQw
ZjJkZTNkYjBmYzczOGJkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKQEAgLTcxLDEwICs3MSw5IEBAIGFsbCA6IFwKICAgICB1ZGlzODZfaXRhYi5oIFwKICAg
ICBCeXRlY29kZXMuaCBcCiAgICAgSW5pdEJ5dGVjb2Rlcy5hc20gXAotICAgIEpTQ0J1aWx0aW5z
IFwKKyAgICBKU0NCdWlsdGlucy5oIFwKICMKIAotIyBidWlsdGluIGZ1bmN0aW9ucwogUFlUSE9O
ID0gcHl0aG9uCiBQRVJMID0gcGVybAogCkBAIC04NywxNSArODYsMjQgQEAgZWxzZQogZW5kaWYK
ICMgLS0tLS0tLS0KIAotLlBIT05ZOiBKU0NCdWlsdGlucwotSlNDQnVpbHRpbnM6ICQoSmF2YVNj
cmlwdENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zIEpTQ0J1aWx0aW5zLmgg
SlNDQnVpbHRpbnMuY3BwCi1KU0NCdWlsdGlucy5oOiAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNf
RElSKS9nZW5lcmF0ZS1qcy1idWlsdGlucyAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucyBKU0NC
dWlsdGluc1NvdXJjZXMKLQkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikv
Z2VuZXJhdGUtanMtYnVpbHRpbnMgLS1pbnB1dC1kaXJlY3RvcnkgJChKYXZhU2NyaXB0Q29yZSkv
YnVpbHRpbnMgLS1vdXRwdXQgJEAKLQotSlNDQnVpbHRpbnMuY3BwOiBKU0NCdWlsdGlucy5oCisj
IEphdmFTY3JpcHQgYnVpbHRpbnMuCisKK0JVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTID0gXAor
ICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zL19faW5pdF9fLnB5IFwK
KyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGlucy9idWlsdGlucy5weSBc
CisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnMvYnVpbHRpbnNfZ2Vu
ZXJhdG9yLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGlucy9i
dWlsdGluc19tb2RlbC5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVp
bHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQ
VFNfRElSKS9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkgXAor
ICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVy
YXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1ND
UklQVFNfRElSKS9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkg
XAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zL2J1aWx0aW5zX2dl
bmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3Jl
X1NDUklQVFNfRElSKS9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFwcGVy
LnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZS1qcy1idWls
dGlucy5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvbGF6eXdyaXRlci5w
eSBcCisjCiAKLS5QSE9OWTogSlNDQnVpbHRpbnNTb3VyY2VzCi1KU0NCdWlsdGluc1NvdXJjZXM6
IFwKK0phdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMgPSBcCiAgICAgJChKYXZhU2NyaXB0
Q29yZSkvYnVpbHRpbnMvQXJyYXlDb25zdHJ1Y3Rvci5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29y
ZSkvYnVpbHRpbnMvQXJyYXlJdGVyYXRvci5wcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlw
dENvcmUpL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcyBcCkBAIC0xMTIsOCArMTIwLDIwIEBA
IEpTQ0J1aWx0aW5zU291cmNlczogXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1Jl
ZmxlY3RPYmplY3QuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1N0cmluZ0Nv
bnN0cnVjdG9yLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TdHJpbmdJdGVy
YXRvci5wcm90b3R5cGUuanMgXAorICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1R5cGVk
QXJyYXlDb25zdHJ1Y3Rvci5qcyBcCisgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvVHlw
ZWRBcnJheS5wcm90b3R5cGUuanMgXAogIwogCisjIFRoZSBjb21iaW5lZCBvdXRwdXQgZmlsZSBk
ZXBlbmRzIG9uIHRoZSBjb250ZW50cyBvZiBidWlsdGlucyBhbmQgZ2VuZXJhdG9yIHNjcmlwdHMs
IHNvCisjIGFkZGluZywgbW9kaWZ5aW5nLCBvciByZW1vdmluZyBidWlsdGlucyBvciBzY3JpcHRz
IHdpbGwgdHJpZ2dlciByZWdlbmVyYXRpb24gb2YgZmlsZXMuCisKKy5QSE9OWTogZm9yY2UKK0ph
dmFTY3JpcHRDb3JlX0JVSUxUSU5TX0RFUEVOREVOQ0lFU19MSVNUIDogJChKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTX0RJUikvVXBkYXRlQ29udGVudHMucHkgZm9yY2UKKwkkKFBZVEhPTikgJChKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvVXBkYXRlQ29udGVudHMucHkgJyQoSmF2YVNjcmlwdENv
cmVfQlVJTFRJTlNfU09VUkNFUykgJChCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUyknICRACisK
K0pTQ0J1aWx0aW5zLmg6ICQoQlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMpICQoSmF2YVNjcmlw
dENvcmVfQlVJTFRJTlNfU09VUkNFUykgSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfREVQRU5ERU5D
SUVTX0xJU1QKKwkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJh
dGUtanMtYnVpbHRpbnMucHkgLS1jb21iaW5lZCAtLW91dHB1dC1kaXJlY3RvcnkgLiAtLWZyYW1l
d29yayBKYXZhU2NyaXB0Q29yZSAkKEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMpCisK
ICMgbG9va3VwIHRhYmxlcyBmb3IgY2xhc3NlcwogCiAlLmx1dC5oOiBjcmVhdGVfaGFzaF90YWJs
ZSAlLmNwcApAQCAtMjAxLDggKzIyMSw4IEBAIGFsbCA6IFwKICMgYWRkaW5nLCBtb2RpZnlpbmcs
IG9yIHJlbW92aW5nIGRvbWFpbnMgd2lsbCB0cmlnZ2VyIHJlZ2VuZXJhdGlvbiBvZiBpbnNwZWN0
b3IgZmlsZXMuCiAKIC5QSE9OWTogZm9yY2UKLUVuYWJsZWRJbnNwZWN0b3JEb21haW5zIDogJChK
YXZhU2NyaXB0Q29yZSkvVXBkYXRlQ29udGVudHMucHkgZm9yY2UKLQkkKFBZVEhPTikgJChKYXZh
U2NyaXB0Q29yZSkvVXBkYXRlQ29udGVudHMucHkgJyQoSU5TUEVDVE9SX0RPTUFJTlMpJyAkQAor
RW5hYmxlZEluc3BlY3RvckRvbWFpbnMgOiAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9V
cGRhdGVDb250ZW50cy5weSBmb3JjZQorCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQ
VFNfRElSKS9VcGRhdGVDb250ZW50cy5weSAnJChJTlNQRUNUT1JfRE9NQUlOUyknICRACiAKIENv
bWJpbmVkRG9tYWlucy5qc29uIDogJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJh
dGUtY29tYmluZWQtaW5zcGVjdG9yLWpzb24ucHkgJChJTlNQRUNUT1JfRE9NQUlOUykgRW5hYmxl
ZEluc3BlY3RvckRvbWFpbnMKIAkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJ
UikvZ2VuZXJhdGUtY29tYmluZWQtaW5zcGVjdG9yLWpzb24ucHkgJChJTlNQRUNUT1JfRE9NQUlO
UykgPiAuL0NvbWJpbmVkRG9tYWlucy5qc29uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDEzMzhlNDgyNjhmYjE4N2Q1ZmQ1YTNjZjhhNzBiOWRlZThhZWY1ZDMuLmU1ZTE3NGU0MDEz
MjZlZWZmZDNjMjBlOTJlYjc3M2Q3OWIxYzdhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMjE0LDcgKzEyMTQsNiBAQAogCQk5OTI4RkYzQjE4QUM0QUVDMDBCOENGMTIgLyog
SlNSZXBsYXlJbnB1dHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTkyOEZGMzkxOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmNwcCAq
LzsgfTsKIAkJOTkyOEZGM0MxOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTI4RkYzQTE4QUM0
QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OTU5RTkyQjFCRDE3RkE0MDAxQUE0MTMgLyogY3Nz
bWluLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1
OUU5MjcxQkQxN0ZBMDAwMUFBNDEzIC8qIGNzc21pbi5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk5OTU5RTkyQzFCRDE3RkE0MDAxQUE0MTMgLyog
Z2VuZXJhdGUtanMtYnVpbHRpbnMgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5OTU5RTkyODFCRDE3RkEwMDAxQUE0MTMgLyogZ2VuZXJhdGUtanMtYnVpbHRp
bnMgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTk1
OUU5MkQxQkQxN0ZBNDAwMUFBNDEzIC8qIGpzbWluLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1OUU5MjkxQkQxN0ZBMDAwMUFBNDEzIC8qIGpzbWlu
LnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5
NTlFOTJFMUJEMTdGQTQwMDFBQTQxMyAvKiB4eGQucGwgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU5RTkyQTFCRDE3RkEwMDAxQUE0MTMgLyogeHhkLnBs
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5NTlF
OTMxMUJEMTgyNzIwMDFBQTQxMyAvKiBnZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5w
eSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTlFOTJG
MUJEMTgxRjYwMDFBQTQxMyAvKiBnZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTIyMiw2
ICsxMjIxLDE4IEBACiAJCTk5NjIzMUU5MThEMTgwNDIwMEMwM0ZEQSAvKiBJbnNwZWN0b3JCYWNr
ZW5kQ29tbWFuZHMuanMgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTMyNDM5NjE4NTZBNDc1MDAyRUQ2OTIgLyogSW5zcGVjdG9yQmFja2VuZENvbW1hbmRz
LmpzICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5
Q0MwQjYyMThCRTk5NDYwMDZDRUJDQyAvKiBDb2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzVGVtcGxh
dGVzLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlF
NDVBMUUxOEExQjFFNzAwMjZEODhGIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHNUZW1wbGF0
ZXMucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
OTlDQzBCNjMxOEJFOTk1MDAwNkNFQkNDIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUU0NUExRDE4
QTFCMUU3MDAyNkQ4OEYgLyogQ29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weSAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OURBMDBBMzFCRDU5OTMx
MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdG9yLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlEQTAwOUExQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0
aW5zX2dlbmVyYXRvci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk5OURBMDBBNDFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfbW9kZWwucHkg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OURBMDA5QjFC
RDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfbW9kZWwucHkgKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlEQTAwQTUxQkQ1OTkzMTAwRjQ1NzVDIC8q
IGJ1aWx0aW5zX3RlbXBsYXRlcy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk5REEwMDlDMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc190ZW1wbGF0
ZXMucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
OTlEQTAwQTYxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zLnB5IGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlEQTAwOUQxQkQ1OTkyNzAwRjQ1NzVDIC8q
IGJ1aWx0aW5zLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTk5REEwMEE3MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9jb21i
aW5lZF9oZWFkZXIucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5OURBMDA5RTFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmlu
ZWRfaGVhZGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTk5REEwMEE4MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9jb21i
aW5lZF9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk5REEwMDlGMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0
ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk5OURBMDBBOTFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRp
bnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTlEQTAwQTAxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5z
X2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk5OURBMDBBQTFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRp
bnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OURBMDBBMTFCRDU5OTI3MDBGNDU3NUMgLyog
YnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlEQTAwQUIxQkQ1OTkzMTAw
RjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX3dyYXBwZXIucHkgaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OURBMDBBMjFCRDU5OTI3MDBG
NDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfd3JhcHBlci5weSAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OURBMDBBRjFCRDU5OTRF
MDBGNDU3NUMgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OURBMDBBQzFCRDU5OTNFMDBGNDU3NUMgLyogZ2Vu
ZXJhdGUtanMtYnVpbHRpbnMucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJOTlEQTAwQjAxQkQ1OTk0RTAwRjQ1NzVDIC8qIGxhenl3cml0ZXIucHkg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OURBMDBBRDFC
RDU5OTNFMDBGNDU3NUMgLyogbGF6eXdyaXRlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OURBMDBCMTFCRDU5OTRFMDBGNDU3NUMgLyogVXBk
YXRlQ29udGVudHMucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5OURBMDBBRTFCRDU5OTNFMDBGNDU3NUMgLyogVXBkYXRlQ29udGVudHMucHkgKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTlFNDVBMjQxOEEx
QjI1OTAwMjZEODhGIC8qIEVtcHR5SW5wdXRDdXJzb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5RTQ1QTFGMThBMUIyNTkwMDI2RDg4RiAvKiBFbXB0
eUlucHV0Q3Vyc29yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTlFNDVBMjUxOEExQjI1OTAwMjZEODhGIC8qIEVuY29kZWRWYWx1ZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUU0NUEyMDE4QTFC
MjU5MDAyNkQ4OEYgLyogRW5jb2RlZFZhbHVlLmNwcCAqLzsgfTsKIAkJOTlFNDVBMjYxOEExQjI1
OTAwMjZEODhGIC8qIEVuY29kZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTlFNDVBMjExOEExQjI1OTAwMjZEODhGIC8qIEVuY29kZWRWYWx1
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0x
Nzk0LDcgKzE4MDUsNyBAQAogCQlGRTdDNDE5NjFCOTdGQzRCMDBGNEQ1OTggLyogUGluZ1BvbmdT
dGFja092ZXJmbG93VGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRURBNTBENDFCOTdGNDQyMDA5QTNCNEYgLyogUGluZ1BvbmdTdGFja092ZXJm
bG93VGVzdC5jcHAgKi87IH07CiAJCUZFQTA4NjIwMTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVha3Bv
aW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUEw
ODYxRTE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFQTA4NjIxMTgyQjdBMDQwMEY2RDg1MSAv
KiBEZWJ1Z2dlclByaW1pdGl2ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFQTA4NjFGMTgyQjdBMDQwMEY2RDg1MSAvKiBEZWJ1Z2dlclByaW1pdGl2
ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlG
RUIxMzc1NzFCQjExRUY5MDBDRDUxMDAgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUIxMzc1NjFCQjExRUVF
MDBDRDUxMDAgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VU
X1RBR1MgPSAoKTsgfTsgfTsKKwkJRkVCMTM3NTcxQkIxMUVGOTAwQ0Q1MTAwIC8qIE1hY3JvQXNz
ZW1ibGVyQVJNNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkVCMTM3NTYxQkIxMUVFRTAwQ0Q1MTAwIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuY3Bw
ICovOyB9OwogCQlGRUI1MUY2QzFBOTdCNjg4MDAxRjkyMUMgLyogUmVncmVzczE0MTgwOS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjUxRjZCMUE5
N0I2ODgwMDFGOTIxQyAvKiBSZWdyZXNzMTQxODA5Lm1tICovOyB9OwogCQlGRUI1OEMxNDE4N0I4
QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjU4QzEyMTg3QjhCMTYwMDk4RUYwQiAvKiBF
cnJvckhhbmRsaW5nU2NvcGUuY3BwICovOyB9OwogCQlGRUI1OEMxNTE4N0I4QjE2MDA5OEVGMEIg
LyogRXJyb3JIYW5kbGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRUI1OEMxMzE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Nj
b3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTMxMTgsMTEgKzMxMjksMjMgQEAKIAkJOTkyOEZGM0ExOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVw
bGF5SW5wdXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVwbGF5SW5w
dXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MjhGRjNEMThBQzRCMUMwMEI4
Q0YxMiAvKiBKU0lucHV0cy5qc29uICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5qc29uOyBwYXRoID0gSlNJbnB1
dHMuanNvbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk1OUU5MjcxQkQxN0ZBMDAw
MUFBNDEzIC8qIGNzc21pbi5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9
IGNzc21pbi5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTk1OUU5MjgxQkQxN0ZB
MDAwMUFBNDEzIC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQu
cHl0aG9uOyBwYXRoID0gImdlbmVyYXRlLWpzLWJ1aWx0aW5zIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTk1OUU5MjkxQkQxN0ZBMDAwMUFBNDEzIC8qIGpzbWluLnB5ICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0ganNtaW4ucHk7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk5NTlFOTJBMUJEMTdGQTAwMDFBQTQxMyAvKiB4eGQucGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5wZXJsOyBwYXRoID0geHhkLnBsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5OTU5RTkyRjFCRDE4MUY2MDAxQUE0MTMgLyogZ2VuZXJhdGUtY29tYmluZWQtaW5z
cGVjdG9yLWpzb24ucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSAiZ2Vu
ZXJhdGUtY29tYmluZWQtaW5zcGVjdG9yLWpzb24ucHkiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5OTU5RTkzMDFCRDE4MUY2MDAxQUE0MTMgLyogaW5saW5lLWFuZC1taW5pZnktc3R5
bGVzaGVldHMtYW5kLXNjcmlwdHMucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBh
dGggPSAiaW5saW5lLWFuZC1taW5pZnktc3R5bGVzaGVldHMtYW5kLXNjcmlwdHMucHkiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OURBMDA5OTFCRDU5OTI3MDBGNDU3NUMgLyogX19p
bml0X18ucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBfX2luaXRfXy5w
eTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlEQTAwOUExQkQ1OTkyNzAwRjQ1NzVD
IC8qIGJ1aWx0aW5zX2dlbmVyYXRvci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsg
cGF0aCA9IGJ1aWx0aW5zX2dlbmVyYXRvci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTlEQTAwOUIxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX21vZGVsLnB5ICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gYnVpbHRpbnNfbW9kZWwucHk7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5REEwMDlDMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGlu
c190ZW1wbGF0ZXMucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBidWls
dGluc190ZW1wbGF0ZXMucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5REEwMDlE
MUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGlucy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5
dGhvbjsgcGF0aCA9IGJ1aWx0aW5zLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
OURBMDA5RTFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaGVh
ZGVyLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gYnVpbHRpbnNfZ2Vu
ZXJhdGVfY29tYmluZWRfaGVhZGVyLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
OURBMDA5RjFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1w
bGVtZW50YXRpb24ucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBidWls
dGluc19nZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTlEQTAwQTAxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVy
YXRlX3NlcGFyYXRlX2hlYWRlci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0
aCA9IGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTlEQTAwQTExQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVy
YXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0
aG9uOyBwYXRoID0gYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHk7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5REEwMEEyMUJENTk5MjcwMEY0NTc1QyAv
KiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFwcGVyLnB5ICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5z
Y3JpcHQucHl0aG9uOyBwYXRoID0gYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfd3JhcHBlci5w
eTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlEQTAwQUMxQkQ1OTkzRTAwRjQ1NzVD
IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9u
OyBwYXRoID0gImdlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTlEQTAwQUQxQkQ1OTkzRTAwRjQ1NzVDIC8qIGxhenl3cml0ZXIucHkgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBsYXp5d3JpdGVyLnB5OyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5OURBMDBBRTFCRDU5OTNFMDBGNDU3NUMgLyogVXBkYXRlQ29u
dGVudHMucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBVcGRhdGVDb250
ZW50cy5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlFNDVBMUQxOEExQjFFNzAw
MjZEODhGIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNj
cmlwdC5weXRob247IHBhdGggPSBDb2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzLnB5OyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5OUU0NUExRTE4QTFCMUU3MDAyNkQ4OEYgLyogQ29kZUdl
bmVyYXRvclJlcGxheUlucHV0c1RlbXBsYXRlcy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5
dGhvbjsgcGF0aCA9IENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHNUZW1wbGF0ZXMucHk7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5RTQ1QTFGMThBMUIyNTkwMDI2RDg4RiAvKiBFbXB0
eUlucHV0Q3Vyc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVtcHR5SW5w
dXRDdXJzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM4MTAsOSArMzgzMyw5
IEBACiAJCTAzNDc2OERGRkYzOEE1MDQxMURCOUM4QiAvKiBQcm9kdWN0cyAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEZGOTIyQ0YxNEY0NkIxMzAwNDFB
MjRFIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLywKIAkJCQk5MzJGNUJEOTA4MjJBMUM3
MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovLAogCQkJCTkzMkY1QkUxMDgy
MkExQzcwMDczNjk3NSAvKiBqc2MgKi8sCi0JCQkJMEZGOTIyQ0YxNEY0NkIxMzAwNDFBMjRFIC8q
IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLywKIAkJCQkwRkNFRkFCNjE4MDVENjE2MDA0NzJD
RTQgLyogbGlibGx2bUZvckpTQy5keWxpYiAqLywKIAkJCQkxNDEyMTEyMDBBNDg3OTNDMDA0ODAy
NTUgLyogbWluaWRvbSAqLywKIAkJCQkxNEJENTlCRjBBM0U4RjkwMDBCQUY1OUMgLyogdGVzdGFw
aSAqLywKQEAgLTU3MzIsMTYgKzU3NTUsMzYgQEAKIAkJOTk1OUU5MjUxQkQxN0YxRTAwMUFBNDEz
IC8qIFNjcmlwdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAot
CQkJCTk5NTlFOTI4MUJEMTdGQTAwMDFBQTQxMyAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLywK
KwkJCQk5OURBMDA5NzFCRDU5OEUwMDBGNDU3NUMgLyogYnVpbHRpbnMgKi8sCiAJCQkJOTk1OUU5
MjcxQkQxN0ZBMDAwMUFBNDEzIC8qIGNzc21pbi5weSAqLywKIAkJCQk5OTU5RTkyRjFCRDE4MUY2
MDAxQUE0MTMgLyogZ2VuZXJhdGUtY29tYmluZWQtaW5zcGVjdG9yLWpzb24ucHkgKi8sCisJCQkJ
OTlEQTAwQUMxQkQ1OTkzRTAwRjQ1NzVDIC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5ICovLAog
CQkJCTk5NTlFOTMwMUJEMTgxRjYwMDFBQTQxMyAvKiBpbmxpbmUtYW5kLW1pbmlmeS1zdHlsZXNo
ZWV0cy1hbmQtc2NyaXB0cy5weSAqLywKIAkJCQk5OTU5RTkyOTFCRDE3RkEwMDAxQUE0MTMgLyog
anNtaW4ucHkgKi8sCisJCQkJOTlEQTAwQUQxQkQ1OTkzRTAwRjQ1NzVDIC8qIGxhenl3cml0ZXIu
cHkgKi8sCisJCQkJOTlEQTAwQUUxQkQ1OTkzRTAwRjQ1NzVDIC8qIFVwZGF0ZUNvbnRlbnRzLnB5
ICovLAogCQkJCTk5NTlFOTJBMUJEMTdGQTAwMDFBQTQxMyAvKiB4eGQucGwgKi8sCiAJCQkpOwog
CQkJcGF0aCA9IFNjcmlwdHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk5
OURBMDA5NzFCRDU5OEUwMDBGNDU3NUMgLyogYnVpbHRpbnMgKi8gPSB7CisJCQlpc2EgPSBQQlhH
cm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTk5REEwMDk5MUJENTk5MjcwMEY0NTc1QyAvKiBf
X2luaXRfXy5weSAqLywKKwkJCQk5OURBMDA5RDFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnMu
cHkgKi8sCisJCQkJOTlEQTAwOUUxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRl
X2NvbWJpbmVkX2hlYWRlci5weSAqLywKKwkJCQk5OURBMDA5RjFCRDU5OTI3MDBGNDU3NUMgLyog
YnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkgKi8sCisJCQkJOTlE
QTAwQTAxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRl
ci5weSAqLywKKwkJCQk5OURBMDBBMTFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJh
dGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkgKi8sCisJCQkJOTlEQTAwQTIxQkQ1OTkyNzAw
RjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX3dyYXBwZXIucHkgKi8sCisJCQkJ
OTlEQTAwOUExQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRvci5weSAqLywKKwkJ
CQk5OURBMDA5QjFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfbW9kZWwucHkgKi8sCisJCQkJ
OTlEQTAwOUMxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX3RlbXBsYXRlcy5weSAqLywKKwkJ
CSk7CisJCQlwYXRoID0gYnVpbHRpbnM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OwogCQk5OUU0NUEwQzE4QTAxRTkzMDAyNkQ4OEYgLyogcmVwbGF5ICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTYwMzcsNiArNjA4MCwxNSBAQAogCQkJCUZF
QTA4NjIwMTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBN0Q4MDFBNTE4ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNzVFRTlCMjE4QUFCN0UyMDBBQUQwNDMgLyogQnVpbHRpbk5hbWVzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk5OURBMDBBNjFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnMu
cHkgaW4gSGVhZGVycyAqLywKKwkJCQk5OURBMDBBNzFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRp
bnNfZ2VuZXJhdGVfY29tYmluZWRfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJOTlEQTAw
QTgxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVu
dGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJOTlEQTAwQTkxQkQ1OTkzMTAwRjQ1NzVDIC8q
IGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weSBpbiBIZWFkZXJzICovLAorCQkJ
CTk5REEwMEFBMUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9p
bXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovLAorCQkJCTk5REEwMEFCMUJENTk5MzEwMEY0
NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFwcGVyLnB5IGluIEhlYWRlcnMg
Ki8sCisJCQkJOTlEQTAwQTMxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRvci5w
eSBpbiBIZWFkZXJzICovLAorCQkJCTk5REEwMEE0MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGlu
c19tb2RlbC5weSBpbiBIZWFkZXJzICovLAorCQkJCTk5REEwMEE1MUJENTk5MzEwMEY0NTc1QyAv
KiBidWlsdGluc190ZW1wbGF0ZXMucHkgaW4gSGVhZGVycyAqLywKIAkJCQk0MURFQTEzMjFCOUYz
MTYzMDA2RDY1REQgLyogQnVpbHRpblV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5RTcyOTQw
QjE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZC
N0YzOTcxNUVEOEU0NjAwRjE2N0IyIC8qIEJ1dHRlcmZseS5oIGluIEhlYWRlcnMgKi8sCkBAIC02
MTA0LDYgKzYxNTYsNyBAQAogCQkJCUMyRkM5QkQzMTY2NDRERkIwMDgxMEQzMyAvKiBDb3BpZWRC
bG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRUFBM0ZBMTQ5QTgzNUUwMEZDRTEx
MiAvKiBDb3BpZWRTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJDOEQwMkQxNEEzQzZFMDAw
NTc4RTY1IC8qIENvcGllZFNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3QzEx
QUQxQkMzODYyQzAwQzc0Q0RCIC8qIENvcHlCYXJyaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjVBNTJEMDE3QURENzE3MDA4RUNCMkQgLyogQ29weVRva2VuLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDMjIzOUQxODE2MjYyQkREMDA1QUM1RkQgLyogQ29weVZpc2l0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCUMyMjM5RDE5MTYyNjJCREQwMDVBQzVGRCAvKiBDb3B5VmlzaXRvcklubGluZXMuaCBp
biBIZWFkZXJzICovLApAQCAtNjE3NCw2ICs2MjI3LDcgQEAKIAkJCQkwRjM4QjAxQTE3Q0ZFNzU1
MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjNC
M0ExQjE1M0U2OEY0MDAzRUQwRkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRUQ2N0JBMUIyNjI1NkQwMDY2Q0UxNSAvKiBERkdDb25zdGFudEhvaXN0
aW5nUGhhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMDk4MUY4MUJDNUU1NjUwMDQ4MTRGOCAv
KiBERkdDb3B5QmFycmllck9wdGltaXphdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkJFMEY3MzE2QzFEQjA1MDA4MkM1RTggLyogREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTdEODlDRjYxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0NyaXRpY2FsRWRn
ZUJyZWFraW5nUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTVBMTRFRjkwQTkwMEM3
MjUzMiAvKiBERkdDU0VQaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC02NDEwLDcgKzY0NjQsNyBA
QAogCQkJCUE1NEU4RUIxMThCRkZCQkUwMDU1NkQyOCAvKiBHQ1NlZ21lbnRlZEFycmF5SW5saW5l
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk1OUU5MzExQkQxODI3MjAwMUFBNDEzIC8qIGdlbmVy
YXRlLWNvbWJpbmVkLWluc3BlY3Rvci1qc29uLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQzQ3MDND
QzAxOTI4NDQ5NjAwMTNGQkVBIC8qIGdlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5n
cy5weSBpbiBIZWFkZXJzICovLAotCQkJCTk5NTlFOTJDMUJEMTdGQTQwMDFBQTQxMyAvKiBnZW5l
cmF0ZS1qcy1idWlsdGlucyBpbiBIZWFkZXJzICovLAorCQkJCTk5REEwMEFGMUJENTk5NEUwMEY0
NTc1QyAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucy5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3
MEVDMTlGNUIzRUEwMDk4RjVFQyAvKiBnZW5lcmF0ZV9jcHBfYWx0ZXJuYXRlX2JhY2tlbmRfZGlz
cGF0Y2hlcl9oZWFkZXIucHkgaW4gSGVhZGVycyAqLywKIAkJCQlBNUVGOUIxNDFBMUQ0M0Y2MDA3
MDJFOTAgLyogZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgaW4gSGVh
ZGVycyAqLywKIAkJCQlBNUVGOUIxNTFBMUQ0M0ZBMDA3MDJFOTAgLyogZ2VuZXJhdGVfY3BwX2Jh
Y2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovLApAQCAtNjU0
Miw3ICs2NTk2LDYgQEAKIAkJCQkwRjc2NkQyQzE1QThDQzNBMDA4RjM2M0UgLyogSklUU3R1YlJv
dXRpbmVTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNUVGOTFGMTY4NzhGN0QwMDNFNUMyNSAv
KiBKSVRUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzcxMkUzMTdDRDg3OTMwMDhDQzkz
QyAvKiBKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMEYwOTgxRjgxQkM1RTU2NTAwNDgxNEY4IC8qIERGR0NvcHlCYXJyaWVyT3B0aW1pemF0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NkY1NEEzMTNCMjhBQUIwMEVGMkJDRSAv
KiBKSVRXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0MDQ4MDEzMTAyMUExRDkw
MDhFN0YwMSAvKiBKU0FQSVZhbHVlV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJDRjM5
QzIxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5oIGluIEhlYWRlcnMgKi8s
CkBAIC02NjAxLDcgKzY2NTQsNiBAQAogCQkJCTc5N0UwN0FBMUI4RkNGQjkwMDg0MDBCQSAvKiBK
U0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjEw
RTE2RjVDRDAwQjM0NDYwIC8qIEpTR2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NUZEMDA4NjE4OUIxQjdFMDA2MzMyMzEgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQuaCBp
biBIZWFkZXJzICovLAotCQkJCTUzNEM0NTdDMUJDNzI0MTEwMDc0NzZBNyAvKiBKU1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QzNBMUE2MThDMDQ5MDIw
MEM5NTkzQSAvKiBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1OTQ1NTkzMTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1N0QyM0VBMTg5MUIwNzcwMDMxQzdGQSAvKiBKU0dsb2Jh
bE9iamVjdERlYnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtNjY3MCw2ICs2NzIyLDcg
QEAKIAkJCQkwRjJCNjZGQjE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5Q29uc3RydWN0
b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGRDE3QjZCNUFCMDBBN0FFM0YgLyogSlNU
eXBlZEFycmF5UHJvdG90eXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RkYxN0I2QjVB
QjAwQTdBRTNGIC8qIEpTVHlwZWRBcnJheXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzNEM0NTdD
MUJDNzI0MTEwMDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCURFQTdFMjQ1MUJCQzY3N0YwMEQ3ODQ0MCAvKiBKU1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTA3RDI5RTBFODcxRTVFMDBEN0Q4OTYg
LyogSlNUeXBlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY3MDIxN0I2QjVBQjAwQTdB
RTNGIC8qIEpTVWludDE2QXJyYXkuaCBpbiBIZWFkZXJzICovLApAQCAtNjY5NCw2ICs2NzQ3LDcg
QEAKIAkJCQk5NjlBMDcyQTBFRDFDRTY5MDBGMUY2ODEgLyogTGFiZWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk2MDA5N0E2MEVCQUJCNTgwMDdBNzI5NyAvKiBMYWJlbFNjb3BlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkI1NDY3NzE0RjU5QjVDMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5REEwMEIwMUJENTk5NEUwMEY0NTc1QyAvKiBs
YXp5d3JpdGVyLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NTIwRTE2RjVDRDAwQjM0NDYw
IC8qIExlZ2FjeVByb2ZpbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQzMTBFMTZGNUNE
MDBCMzQ0NjAgLyogTGV4ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNTJFMEUxNkZDRTEw
MEIzNDQ2MCAvKiBMZXhlci5sdXQuaCBpbiBIZWFkZXJzICovLApAQCAtNjc5MCw3ICs2ODQ0LDYg
QEAKIAkJCQk4Njg5MTZCMDE1NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMThDNDUwMEUxNkY1Q0QwMEIzNDQ2MCAvKiBQcm9maWxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NUNENDU3NzBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRv
ci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY3QzExQUQxQkMzODYyQzAwQzc0Q0RCIC8qIENvcHlC
YXJyaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1MTBFMTZGNUNEMDBCMzQ0NjAgLyog
UHJvZmlsZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcyOUE1MTY2QUQzNTEwMDBGNUJB
MyAvKiBQcm9maWxlckJ5dGVjb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MjlCOTE2NkFE
MzYwMDAwRjVCQTMgLyogUHJvZmlsZXJCeXRlY29kZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNjk0
OSw2ICs3MDAyLDcgQEAKIAkJCQlBN0I2MDE4MjE2MzlGRDJBMDAzNzJCQTMgLyogVW5saW5rZWRD
b2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTQyRTUxMUI3OTZFQ0UwMEY0QkY0QiAv
KiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyRTg5
MkMxNkQwMjhBRDAwOUU0RkQyIC8qIFVudXNlZFBvaW50ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTk5REEwMEIxMUJENTk5NEUwMEY0NTc1QyAvKiBVcGRhdGVDb250ZW50cy5weSBpbiBIZWFkZXJz
ICovLAogCQkJCTBGOTYzQjM4MTNGQzZGRTkwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGNDI2QTQ4MTQ2MENCQjMwMDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3OUVFMEMwMDFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFi
bGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC03NDg4LDcgKzc1NDIsNiBAQAogCQkJ
CTBGNjM5NDU0MTVEMDcwNTUwMDZBNTk3QyAvKiBBcnJheVByb2ZpbGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMTQ3RjM5QzAxMDdFQzM3NjAwNDI3QTQ4IC8qIEFycmF5UHJvdG90eXBlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGMjRFNTQwMTdFQTlGNTkwMEFCQjIxNyAvKiBBc3NlbWJseUhl
bHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkVCMTM3NTcxQkIxMUVGOTAwQ0Q1MTAwIC8q
IE1hY3JvQXNzZW1ibGVyQVJNNjQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTI2NzhGOEUxQTAz
MTAwOTAwNkEzMDZEIC8qIEJhc2ljQmxvY2tMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjY0QjI3MTFBNzg0QkFGMDA2RTRFNjYgLyogQmluYXJ5U3dpdGNoLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0MjgwODYzMTA3RUMxMUEwMDEzRTdCMiAvKiBCb29sZWFuQ29uc3RydWN0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC03NTIwLDcgKzc1NzMsNiBAQAogCQkJCUE3N0YxODIxMTY0
MDg4QjIwMDY0MEE0NyAvKiBDb2RlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4Rjk0
NDYxNjY3NjRGMTAwRDYxOTcxIC8qIENvZGVPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
ODZCNTgyNjcxNEQyNzk2QzAwQTlDMzA2IC8qIENvZGVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCURFNUEwQTAwMUJBM0FDM0UwMDNENDQyNCAvKiBJbnRyaW5zaWNFbWl0dGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTg2QjU4MjY5MTREMjc5NzAwMEE5QzMwNiAvKiBDb2RlUHJvZmls
aW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEY5NDNDMTY2NzYzMTMwMEQ2MTk3MSAvKiBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEY5NDQyMTY2
NzYzMzUwMEQ2MTk3MSAvKiBDb2RlVHlwZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc1MzgsNiAr
NzU5MCw3IEBACiAJCQkJMTQyODA4MkUxMDdFQzA1NzAwMTNFN0IyIC8qIENvbnN0cnVjdERhdGEu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU3RDIzRjExODkxQjVCNDAwMzFDN0ZBIC8qIENvbnRl
bnRTZWFyY2hVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTJCNzE3QjUxQTA1OTdF
MTAwN0FGNEYzIC8qIENvbnRyb2xGbG93UHJvZmlsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MEZCQURGNTQxQkQxRjRCODAwRTA3M0MxIC8qIENvcGllZEJsb2NrLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUMyNDAzMDU1MTRCNDA0RTYwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDMjIzOUQxNzE2MjYyQkREMDA1QUM1RkQgLyogQ29weVZpc2l0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMkExMTEyNDUxOTJGQ0U3OTAwNUVFMThEIC8qIEN1c3RvbUdl
dHRlclNldHRlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc1ODQsNiArNzYzNyw3IEBACiAJCQkJ
MEYzOEIwMTkxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uTW9kZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjNCM0ExQTE1M0U2OEYyMDAzRUQwRkYgLyogREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFRDY3QjkxQjI2MjU2RDAwNjZDRTE1
IC8qIERGR0NvbnN0YW50SG9pc3RpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjA5
ODFGNzFCQzVFNTY1MDA0ODE0RjggLyogREZHQ29weUJhcnJpZXJPcHRpbWl6YXRpb25QaGFzZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkJFMEY3MjE2QzFEQjAzMDA4MkM1RTggLyogREZHQ1BT
UmV0aHJlYWRpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4OUNGNTE3QTBCOEND
MDA3NzNBRDggLyogREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkZGQzk1OTE0RUY5MEE2MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC03ODI0LDYgKzc4NzgsNyBAQAogCQkJCUExRDc5MkZFMUI0Mzg2NEIwMDQ1
MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTFENzkzMDAxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEyQkJGRjQxQjA0NEE5ODAwNjY0QjY5IC8qIEludGxP
YmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREU1QTBBMDAxQkEzQUMzRTAwM0Q0NDI0IC8q
IEludHJpbnNpY0VtaXR0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzAxMTNENEIxQThEQjA5
MzAwMzg0OEM0IC8qIEl0ZXJhdG9yT3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
MERDM0UwOTFCMkRGMkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTUwM0ZBMTkxODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJh
bWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03ODQxLDcgKzc4OTYsNiBAQAogCQkJCTBGMjRFNTRD
MTdFRTI3NDkwMEFCQjIxNyAvKiBKSVRPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTg2Q0M4NUM0MEVFN0E4OTQwMDI4ODY4MiAvKiBKSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBN0MxRThFNDExMkU3MkVGMDBBMzdGOTggLyogSklUUHJvcGVydHlBY2Nl
c3MzMl82NC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwRkJBREY1NDFCRDFGNEI4MDBFMDczQzEg
LyogQ29waWVkQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NjZEMjgxNUE4Q0MxRTAw
OEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDJC
MTVBOENDMzgwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjVFRjkxRTE2ODc4RjdBMDAzRTVDMjUgLyogSklUVGh1bmtzLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtNzkzNCw2ICs3OTg4LDcgQEAKIAkJCQkwRjJCNjZGQTE3QjZCNUFCMDBBN0FFM0Yg
LyogSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkI2
NkZDMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlQcm90b3R5cGVzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGMkI2NkZFMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTUzNEM0NTdFMUJDNzI1NDkwMDc0NzZBNyAvKiBKU1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREVBN0UyNDQxQkJD
Njc3MjAwRDc4NDQwIC8qIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODZFM0M2MUExNjdCQUJFRTAwNkQ3NjBBIC8qIEpTVmFsdWUubW0gaW4gU291cmNl
cyAqLywKIAkJCQkxNEJENUEzMjBBM0U5MUY2MDBCQUY1OUMgLyogSlNWYWx1ZVJlZi5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTc5NjUsNiArODAyMCw3IEBACiAJCQkJMTRCNzIzQjIxMkQ3REE0NjAw
M0JENUVEIC8qIE1hY2hpbmVTdGFja01hcmtlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVC
M0VDRjE2MjM3RjZDMDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUZFQjEzNzU3MUJCMTFFRjkwMENENTEwMCAvKiBNYWNyb0Fzc2Vt
YmxlckFSTTY0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MjkwMDlDMTc5NzZDNjAwMDMxNzI5
OCAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFNjhDNjM4
MUI5MERFMEIwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTdBNEFFMDgxNzk3M0IyNjAwNTYxMkIxIC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtODA0NCw3ICs4MTAwLDYgQEAKIAkJCQk2NTQwQzdB
MDFCODJFMUMzMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk2NTQwQzdBMTFCODJFMUMzMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldExpc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDMzE0MTUxODE0NkQ3MDAwMDMzMjMyIC8qIFJlZ2lzdGVy
U2V0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUzNEM0NTdFMUJDNzI1NDkwMDc0NzZBNyAvKiBK
U1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU3RDIz
RUQxODkxQjU1NDAwMzFDN0ZBIC8qIFJlZ3VsYXJFeHByZXNzaW9uLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE1QkExNUU5MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gaW4g
U291cmNlcyAqLywKIAkJCQlBNTk0NTU4RjE4MjQ1RUZEMDBDQzM4NDMgLyogUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTgxNDUsNyArODIwMCw2IEBACiAJ
CQkJNzA5RkI4NkIxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkE0RUM5MEIxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1
ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkM4MTUwQjE0MDQzQzBFMDBDRkE2MDMgLyog
V3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwRjA5ODFGNzFCQzVF
NTY1MDA0ODE0RjggLyogREZHQ29weUJhcnJpZXJPcHRpbWl6YXRpb25QaGFzZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBN0U1QUIzQTE3OTlFNEIyMDBEMjgzM0QgLyogWDg2RGlzYXNzZW1ibGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2M0M2RDlDMTUyMTExMUEwMDU4NUU0RSAvKiBZYXJy
Q2Fub25pY2FsaXplVUNTMi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4NDEyREJBMzM3
MDBBOUZFN0IgLyogWWFyckludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDA5NzFkNDQ0YmY3MzNlMTE5ZDU1ZmEy
MzA2MWNlNDI1ZDZlN2Q1M2EuLmMzZDU1ZWI4NDg3NDhjODBiMzNmZTg0YjZiODQ1ODI2NjZkODhj
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybVdpbi5jbWFrZQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTMwLDE1ICsz
MCwxMiBAQCBmaWxlKENPUFkKIAogZmlsZShNQUtFX0RJUkVDVE9SWSAke0RFUklWRURfU09VUkNF
U19ESVJ9L0ZvcndhcmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlKQogCi1maWxlKEdMT0IgX0ph
dmFTY3JpcHRDb3JlX1NjcmlwdHMgIiR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9LyoiKQot
Zm9yZWFjaCAoX3NjcmlwdCAke19KYXZhU2NyaXB0Q29yZV9TY3JpcHRzfSkKLSAgICBmaWxlKENP
UFkgJHtfc2NyaXB0fSBERVNUSU5BVElPTiAke0RFUklWRURfU09VUkNFU19ESVJ9L0ZvcndhcmRp
bmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMpCi1lbmRmb3JlYWNoKCkKLQogc2V0KEph
dmFTY3JpcHRDb3JlX1BPU1RfQlVJTERfQ09NTUFORCAiJHtDTUFLRV9CSU5BUllfRElSfS9EZXJp
dmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9wb3N0QnVpbGQuY21kIikKIGZpbGUoV1JJVEUgIiR7
SmF2YVNjcmlwdENvcmVfUE9TVF9CVUlMRF9DT01NQU5EfSIgIkB4Y29weSAveSAvZCAvZiBcIiR7
REVSSVZFRF9TT1VSQ0VTX0RJUn0vSmF2YVNjcmlwdENvcmUvKi5oXCIgXCIke0RFUklWRURfU09V
UkNFU19ESVJ9L0ZvcndhcmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlXCIgPm51bCAyPm51bFxu
IikKIGZpbGUoQVBQRU5EICIke0phdmFTY3JpcHRDb3JlX1BPU1RfQlVJTERfQ09NTUFORH0iICJA
eGNvcHkgL3kgL2QgL2YgXCIke0RFUklWRURfU09VUkNFU19ESVJ9L0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci8qLmhcIiBcIiR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMv
SmF2YVNjcmlwdENvcmVcIiA+bnVsIDI+bnVsXG4iKQotZmlsZShBUFBFTkQgIiR7SmF2YVNjcmlw
dENvcmVfUE9TVF9CVUlMRF9DT01NQU5EfSIgIkB4Y29weSAveSAvZCAvZiBcIiR7SmF2YVNjcmlw
dENvcmVfU0NSSVBUU19ESVJ9LyouKlwiIFwiJHtERVJJVkVEX1NPVVJDRVNfRElSfS9Gb3J3YXJk
aW5nSGVhZGVycy9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzXCIgPm51bCAyPm51bFxuIikKK2ZvcmVh
Y2ggKF9zY3JpcHQgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTfSkKKyAgICBmaWxlKEFQUEVORCAi
JHtKYXZhU2NyaXB0Q29yZV9QT1NUX0JVSUxEX0NPTU1BTkR9IiAiQHhjb3B5IC95IC9mIFwiJHtf
c2NyaXB0fVwiIFwiJHtERVJJVkVEX1NPVVJDRVNfRElSfS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzXCIgPm51bCAyPm51bFxuIikKK2VuZGZvcmVhY2ggKCkKIGZvcmVh
Y2ggKF9kaXJlY3RvcnkgJHtKYXZhU2NyaXB0Q29yZV9GT1JXQVJESU5HX0hFQURFUlNfRElSRUNU
T1JJRVN9KQogICAgIGZpbGUoQVBQRU5EICIke0phdmFTY3JpcHRDb3JlX1BPU1RfQlVJTERfQ09N
TUFORH0iICJAeGNvcHkgL3kgL2QgL2YgXCIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vJHtfZGlyZWN0
b3J5fS8qLmhcIiBcIiR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMvSmF2
YVNjcmlwdENvcmVcIiA+bnVsIDI+bnVsXG4iKQogZW5kZm9yZWFjaCAoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvVXBkYXRlQ29udGVudHMucHkgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy9VcGRhdGVDb250ZW50cy5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzZk
NDZmYjRjNDIzMDJiODVmZjEwYzg1MWViMzRjMWUyNzg5NGMzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvVXBkYXRlQ29udGVudHMucHkKQEAgLTAsMCAr
MSw0OCBAQAorIyEvdXNyL2Jpbi9weXRob24KKworIyBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIyAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorIyAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAorIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorIyBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHN5cwor
aW1wb3J0IG9zCisKK2Fzc2VydChsZW4oc3lzLmFyZ3YpID09IDMpCisKK2NvbXAgPSBzeXMuYXJn
dlsxXQorZmlsZW5hbWUgPSBzeXMuYXJndlsyXQorCit0ID0gRmFsc2UKKworaWYgb3MucGF0aC5p
c2ZpbGUoZmlsZW5hbWUpOgorICAgIGYgPSBvcGVuKGZpbGVuYW1lLCAncicpCisgICAgY29tcGFy
YXRvciA9IGYucmVhZCgpCisgICAgZi5jbG9zZSgpCisgICAgdCA9IFRydWUKKworaWYgKG5vdCB0
IG9yIGNvbXAgIT0gY29tcGFyYXRvcik6CisgICAgZiA9IG9wZW4oZmlsZW5hbWUsICd3JykKKyAg
ICBmLndyaXRlKGNvbXApCisgICAgZi5jbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9fX2luaXRfXy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2J1aWx0aW5zL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkZmNiYTk4MWQ4
ZjhkYTA3ODEzNThjZmU2NGZhMWM3ODA3NGExNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9fX2luaXRfXy5weQpAQCAtMCwwICsxLDMg
QEAKKyMgUmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1v
ZHVsZSBmaWxlcworCitmcm9tIGJ1aWx0aW5zIGltcG9ydCAqCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGlucy5weSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2N2Nk
YWQ4YTMwZDcwY2NjNDVhMTlkODNkMjI0YTY0ZjNiZWZmNzIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGlucy5weQpAQCAtMCww
ICsxLDEyIEBACisjIFRoaXMgZmlsZSBpcyB1c2VkIHRvIHNpbXVsYXRlIHRoZSBidWlsdGlucy8g
ZGlyZWN0b3J5IHdoZW4gZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKyMgaXMgcnVuIGZyb20gSmF2
YVNjcmlwdENvcmUgZnJhbWV3b3JrJ3MgcHJpdmF0ZSBoZWFkZXJzIGRpcmVjdG9yeSwgd2hpY2gg
aXMgZmxhdHRlbmVkLgorCitmcm9tIGJ1aWx0aW5zX21vZGVsIGltcG9ydCAqCitmcm9tIGJ1aWx0
aW5zX3RlbXBsYXRlcyBpbXBvcnQgKgorCitmcm9tIGJ1aWx0aW5zX2dlbmVyYXRvciBpbXBvcnQg
KgorZnJvbSBidWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIgaW1wb3J0ICoKK2Zyb20g
YnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50YXRpb24gaW1wb3J0ICoKK2Zyb20g
YnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVyIGltcG9ydCAqCitmcm9tIGJ1aWx0aW5z
X2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uIGltcG9ydCAqCitmcm9tIGJ1aWx0aW5z
X2dlbmVyYXRlX3NlcGFyYXRlX3dyYXBwZXIgaW1wb3J0ICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVk
X2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0
aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDg5ZmRmNTlhMmJh
ZTk2MTVlOThhOGE2ZTJjYzI5ODA0OTNlNjEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRf
aGVhZGVyLnB5CkBAIC0wLDAgKzEsMTYyIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMg
Q29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKwor
aW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCByZQoraW1wb3J0IHN0cmluZworZnJvbSBzdHJpbmcgaW1w
b3J0IFRlbXBsYXRlCisKK2Zyb20gYnVpbHRpbnNfZ2VuZXJhdG9yIGltcG9ydCBCdWlsdGluc0dl
bmVyYXRvcgorZnJvbSBidWlsdGluc190ZW1wbGF0ZXMgaW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9y
VGVtcGxhdGVzIGFzIFRlbXBsYXRlcworCitsb2cgPSBsb2dnaW5nLmdldExvZ2dlcignZ2xvYmFs
JykKKworCitjbGFzcyBCdWlsdGluc0NvbWJpbmVkSGVhZGVyR2VuZXJhdG9yKEJ1aWx0aW5zR2Vu
ZXJhdG9yKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZWwpOgorICAgICAgICBCdWlsdGlu
c0dlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBtb2RlbCkKKworICAgIGRlZiBvdXRwdXRfZmlsZW5h
bWUoc2VsZik6CisgICAgICAgIHJldHVybiAiJXNCdWlsdGlucy5oIiAlIHNlbGYubW9kZWwoKS5m
cmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNlJykKKworICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQo
c2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbmFtZXNwYWNlJzogc2VsZi5t
b2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCduYW1lc3BhY2UnKSwKKyAgICAgICAgICAgICdoZWFk
ZXJHdWFyZCc6IHNlbGYub3V0cHV0X2ZpbGVuYW1lKCkucmVwbGFjZSgnLicsICdfJyksCisgICAg
ICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ21h
Y3JvX3ByZWZpeCcpLAorICAgICAgICB9CisKKyAgICAgICAgc2VjdGlvbnMgPSBbXQorICAgICAg
ICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9saWNlbnNlKCkpCisgICAgICAgIHNlY3Rp
b25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuRG9Ob3RFZGl0V2FybmluZykuc3Vic3RpdHV0
ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5IZWFk
ZXJJbmNsdWRlR3VhcmRUb3ApLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFw
cGVuZChzZWxmLmdlbmVyYXRlX2ZvcndhcmRfZGVjbGFyYXRpb25zKCkpCisgICAgICAgIHNlY3Rp
b25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlVG9wKS5zdWJzdGl0dXRlKGFy
Z3MpKQorICAgICAgICBmb3Igb2JqZWN0IGluIHNlbGYubW9kZWwoKS5vYmplY3RzOgorICAgICAg
ICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfc2VjdGlvbl9mb3Jfb2JqZWN0KG9i
amVjdCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX3NlY3Rpb25fZm9y
X2NvZGVfdGFibGVfbWFjcm8oKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJh
dGVfc2VjdGlvbl9mb3JfY29kZV9uYW1lX21hY3JvKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVu
ZChUZW1wbGF0ZShUZW1wbGF0ZXMuQ29tYmluZWRIZWFkZXJTdGF0aWNNYWNyb3MpLnN1YnN0aXR1
dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFt
ZXNwYWNlQm90dG9tKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQo
VGVtcGxhdGUoVGVtcGxhdGVzLkhlYWRlckluY2x1ZGVHdWFyZEJvdHRvbSkuc3Vic3RpdHV0ZShh
cmdzKSkKKworICAgICAgICByZXR1cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMpCisKKyAgICBkZWYg
Z2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlvbnMoc2VsZik6CisgICAgICAgIHJldHVybiAiIiJu
YW1lc3BhY2UgSlNDIHsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIFZNOworCitl
bnVtIGNsYXNzIENvbnN0cnVjdEFiaWxpdHkgOiB1bnNpZ25lZDsKK30iIiIKKworICAgIGRlZiBn
ZW5lcmF0ZV9zZWN0aW9uX2Zvcl9vYmplY3Qoc2VsZiwgb2JqZWN0KToKKyAgICAgICAgbGluZXMg
PSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoJy8qICVzICovJyAlIG9iamVjdC5vYmplY3RfbmFt
ZSkKKyAgICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2VuZXJhdGVfZXh0ZXJuc19mb3Jfb2JqZWN0
KG9iamVjdCkpCisgICAgICAgIGxpbmVzLmFwcGVuZCgiIikKKyAgICAgICAgbGluZXMuZXh0ZW5k
KHNlbGYuZ2VuZXJhdGVfbWFjcm9zX2Zvcl9vYmplY3Qob2JqZWN0KSkKKyAgICAgICAgbGluZXMu
YXBwZW5kKCIiKQorICAgICAgICBsaW5lcy5leHRlbmQoc2VsZi5nZW5lcmF0ZV9kZWZpbmVzX2Zv
cl9vYmplY3Qob2JqZWN0KSkKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKKworICAg
IGRlZiBnZW5lcmF0ZV9leHRlcm5zX2Zvcl9vYmplY3Qoc2VsZiwgb2JqZWN0KToKKyAgICAgICAg
bGluZXMgPSBbXQorCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBvYmplY3QuZnVuY3Rpb25zOgor
ICAgICAgICAgICAgZnVuY3Rpb25fYXJncyA9IHsKKyAgICAgICAgICAgICAgICAnY29kZU5hbWUn
OiBCdWlsdGluc0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvckZ1bmN0aW9uKGZ1bmN0aW9uKSArICdD
b2RlJywKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIiImV4dGVy
biBjb25zdCBjaGFyKiBzXyUoY29kZU5hbWUpczsKK2V4dGVybiBjb25zdCBpbnQgc18lKGNvZGVO
YW1lKXNMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfJShjb2Rl
TmFtZSlzQ29uc3RydWN0QWJpbGl0eTsiIiIgJSBmdW5jdGlvbl9hcmdzKQorCisgICAgICAgIHJl
dHVybiBsaW5lcworCisgICAgZGVmIGdlbmVyYXRlX21hY3Jvc19mb3Jfb2JqZWN0KHNlbGYsIG9i
amVjdCk6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxm
Lm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZpeCcpLAorICAgICAgICAgICAg
J29iamVjdE1hY3JvJzogb2JqZWN0Lm9iamVjdF9uYW1lLnJlcGxhY2UoJy4nLCAnJykudXBwZXIo
KSwKKyAgICAgICAgfQorCisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5k
KCIjZGVmaW5lICUobWFjcm9QcmVmaXgpc19GT1JFQUNIXyUob2JqZWN0TWFjcm8pc19CVUlMVElO
X0RBVEEobWFjcm8pIFxcIiAlIGFyZ3MpCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBvYmplY3Qu
ZnVuY3Rpb25zOgorICAgICAgICAgICAgZnVuY3Rpb25fYXJncyA9IHsKKyAgICAgICAgICAgICAg
ICAnZnVuY05hbWUnOiBmdW5jdGlvbi5mdW5jdGlvbl9uYW1lLAorICAgICAgICAgICAgICAgICdt
YW5nbGVkTmFtZSc6IEJ1aWx0aW5zR2VuZXJhdG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rpb24oZnVu
Y3Rpb24pLAorICAgICAgICAgICAgICAgICdwYXJhbUNvdW50JzogbGVuKGZ1bmN0aW9uLnBhcmFt
ZXRlcnMpLAorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiAgICBt
YWNybyglKGZ1bmNOYW1lKXMsICUobWFuZ2xlZE5hbWUpcywgJShwYXJhbUNvdW50KWQpIFxcIiAl
IGZ1bmN0aW9uX2FyZ3MpCisgICAgICAgIHJldHVybiBsaW5lcworCisgICAgZGVmIGdlbmVyYXRl
X2RlZmluZXNfZm9yX29iamVjdChzZWxmLCBvYmplY3QpOgorICAgICAgICBsaW5lcyA9IFtdCisg
ICAgICAgIGZvciBmdW5jdGlvbiBpbiBvYmplY3QuZnVuY3Rpb25zOgorICAgICAgICAgICAgYXJn
cyA9IHsKKyAgICAgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1vZGVsKCkuZnJhbWV3
b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZpeCcpLAorICAgICAgICAgICAgICAgICdvYmplY3RNYWNy
byc6IG9iamVjdC5vYmplY3RfbmFtZS5yZXBsYWNlKCcuJywgJycpLnVwcGVyKCksCisgICAgICAg
ICAgICAgICAgJ2Z1bmN0aW9uTWFjcm8nOiBmdW5jdGlvbi5mdW5jdGlvbl9uYW1lLnVwcGVyKCks
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiNkZWZpbmUgJShtYWNy
b1ByZWZpeClzX0JVSUxUSU5fJShvYmplY3RNYWNybylzXyUoZnVuY3Rpb25NYWNybylzIDEiICUg
YXJncykKKworICAgICAgICByZXR1cm4gbGluZXMKKworICAgIGRlZiBnZW5lcmF0ZV9zZWN0aW9u
X2Zvcl9jb2RlX3RhYmxlX21hY3JvKHNlbGYpOgorICAgICAgICBhcmdzID0geworICAgICAgICAg
ICAgJ21hY3JvUHJlZml4Jzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdtYWNyb19w
cmVmaXgnKSwKKyAgICAgICAgfQorCisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgbGluZXMu
YXBwZW5kKCIjZGVmaW5lICUobWFjcm9QcmVmaXgpc19GT1JFQUNIX0JVSUxUSU5fQ09ERShtYWNy
bykgXFwiICUgYXJncykKKyAgICAgICAgZm9yIGZ1bmN0aW9uIGluIHNlbGYubW9kZWwoKS5hbGxf
ZnVuY3Rpb25zKCk6CisgICAgICAgICAgICBmdW5jdGlvbl9hcmdzID0geworICAgICAgICAgICAg
ICAgICdmdW5jTmFtZSc6IGZ1bmN0aW9uLmZ1bmN0aW9uX25hbWUsCisgICAgICAgICAgICAgICAg
J2NvZGVOYW1lJzogQnVpbHRpbnNHZW5lcmF0b3IubWFuZ2xlZE5hbWVGb3JGdW5jdGlvbihmdW5j
dGlvbikgKyAnQ29kZScsCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxpbmVzLmFwcGVu
ZCgiICAgIG1hY3JvKCUoY29kZU5hbWUpcywgJShmdW5jTmFtZSlzLCBzXyUoY29kZU5hbWUpc0xl
bmd0aCkgXFwiICUgZnVuY3Rpb25fYXJncykKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5l
cykKKworICAgIGRlZiBnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX25hbWVfbWFjcm8oc2VsZik6
CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1vZGVs
KCkuZnJhbWV3b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZpeCcpLAorICAgICAgICB9CisKKyAgICAg
ICAgbGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoIiNkZWZpbmUgJShtYWNyb1ByZWZp
eClzX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcXCIgJSBhcmdzKQorICAg
ICAgICB1bmlxdWVfbmFtZXMgPSBsaXN0KHNldChbZnVuY3Rpb24uZnVuY3Rpb25fbmFtZSBmb3Ig
ZnVuY3Rpb24gaW4gc2VsZi5tb2RlbCgpLmFsbF9mdW5jdGlvbnMoKV0pKQorICAgICAgICB1bmlx
dWVfbmFtZXMuc29ydCgpCisgICAgICAgIGZvciBmdW5jdGlvbl9uYW1lIGluIHVuaXF1ZV9uYW1l
czoKKyAgICAgICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ2Z1bmNO
YW1lJzogZnVuY3Rpb25fbmFtZSwKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGluZXMu
YXBwZW5kKCIgICAgbWFjcm8oJShmdW5jTmFtZSlzKSBcXCIgJSBmdW5jdGlvbl9hcmdzKQorICAg
ICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVt
ZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWls
dGluc19nZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjg3
OGQzNjEwYmMzZDEzOTdkYzExNTgzYjRkMzliODJmNDI2ZDg4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVf
Y29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkKQEAgLTAsMCArMSw5MCBAQAorIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hp
bmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisj
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgcmUKK2ltcG9ydCBzdHJpbmcK
K2Zyb20gc3RyaW5nIGltcG9ydCBUZW1wbGF0ZQorCitmcm9tIGJ1aWx0aW5zX2dlbmVyYXRvciBp
bXBvcnQgQnVpbHRpbnNHZW5lcmF0b3IKK2Zyb20gYnVpbHRpbnNfbW9kZWwgaW1wb3J0IEZyYW1l
d29yaywgRnJhbWV3b3JrcworZnJvbSBidWlsdGluc190ZW1wbGF0ZXMgaW1wb3J0IEJ1aWx0aW5z
R2VuZXJhdG9yVGVtcGxhdGVzIGFzIFRlbXBsYXRlcworCitsb2cgPSBsb2dnaW5nLmdldExvZ2dl
cignZ2xvYmFsJykKKworCitjbGFzcyBCdWlsdGluc0NvbWJpbmVkSW1wbGVtZW50YXRpb25HZW5l
cmF0b3IoQnVpbHRpbnNHZW5lcmF0b3IpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCk6
CisgICAgICAgIEJ1aWx0aW5zR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYsIG1vZGVsKQorCisgICAg
ZGVmIG91dHB1dF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuICIlc0J1aWx0aW5zLmNw
cCIgJSBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpCisKKyAgICBk
ZWYgZ2VuZXJhdGVfb3V0cHV0KHNlbGYpOgorICAgICAgICBhcmdzID0geworICAgICAgICAgICAg
J25hbWVzcGFjZSc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNlJyks
CisgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRp
bmcoJ21hY3JvX3ByZWZpeCcpLAorICAgICAgICB9CisKKyAgICAgICAgc2VjdGlvbnMgPSBbXQor
ICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9saWNlbnNlKCkpCisgICAgICAg
IHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuRG9Ob3RFZGl0V2FybmluZykuc3Vi
c3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfaGVh
ZGVyX2luY2x1ZGVzKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0
ZXMuTmFtZXNwYWNlVG9wKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBmb3IgZnVuY3Rpb24g
aW4gc2VsZi5tb2RlbCgpLmFsbF9mdW5jdGlvbnMoKToKKyAgICAgICAgICAgIHNlY3Rpb25zLmFw
cGVuZChzZWxmLmdlbmVyYXRlX2VtYmVkZGVkX2NvZGVfc3RyaW5nX3NlY3Rpb25fZm9yX2Z1bmN0
aW9uKGZ1bmN0aW9uKSkKKyAgICAgICAgaWYgc2VsZi5tb2RlbCgpLmZyYW1ld29yayBpcyBGcmFt
ZXdvcmtzLkphdmFTY3JpcHRDb3JlOgorICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBs
YXRlKFRlbXBsYXRlcy5Db21iaW5lZEpTQ0ltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9zKS5zdWJz
dGl0dXRlKGFyZ3MpKQorICAgICAgICBlbGlmIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsgaXMgRnJh
bWV3b3Jrcy5XZWJDb3JlOgorICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRl
bXBsYXRlcy5Db21iaW5lZFdlYkNvcmVJbXBsZW1lbnRhdGlvblN0YXRpY01hY3Jvcykuc3Vic3Rp
dHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5O
YW1lc3BhY2VCb3R0b20pLnN1YnN0aXR1dGUoYXJncykpCisKKyAgICAgICAgcmV0dXJuICJcblxu
Ii5qb2luKHNlY3Rpb25zKQorCisgICAgZGVmIGdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcyhzZWxm
KToKKyAgICAgICAgaGVhZGVyX2luY2x1ZGVzID0gWworICAgICAgICAgICAgKFsiSmF2YVNjcmlw
dENvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgImJ1aWx0aW5zL0J1
aWx0aW5FeGVjdXRhYmxlcy5oIiksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKFsiSmF2
YVNjcmlwdENvcmUiLCAiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENv
cmUiLCAicnVudGltZS9FeGVjdXRhYmxlLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAg
ICAoWyJKYXZhU2NyaXB0Q29yZSIsICJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZh
U2NyaXB0Q29yZSIsICJydW50aW1lL0pTQ2VsbElubGluZXMuaCIpLAorICAgICAgICAgICAgKSwK
KyAgICAgICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRD
b3JlIiwgInJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIiksCisgICAgICAgICAgICApLAorICAg
ICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUi
LCAicnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIiksCisgICAgICAgICAgICApLAorICAgICAg
ICAgICAgKFsiSmF2YVNjcmlwdENvcmUiLCAiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgi
SmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9WTS5oIiksCisgICAgICAgICAgICApLAorICAgICAg
ICBdCisKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihzZWxmLmdlbmVyYXRlX2luY2x1ZGVzX2Zy
b21fZW50cmllcyhoZWFkZXJfaW5jbHVkZXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVy
LnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2Vu
ZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViMWViN2Q2NzFjYTExYzM1OGE1
MTk3ZGFkYWRlNzk1MTkwZDAwMzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIu
cHkKQEAgLTAsMCArMSwxNzUgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmln
aHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5
cmlnaHQgKGMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitpbXBvcnQg
bG9nZ2luZworaW1wb3J0IHJlCitpbXBvcnQgc3RyaW5nCitmcm9tIHN0cmluZyBpbXBvcnQgVGVt
cGxhdGUKKworZnJvbSBidWlsdGluc19nZW5lcmF0b3IgaW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9y
Citmcm9tIGJ1aWx0aW5zX3RlbXBsYXRlcyBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3JUZW1wbGF0
ZXMgYXMgVGVtcGxhdGVzCisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwnKQorCisK
K2NsYXNzIEJ1aWx0aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0b3IoQnVpbHRpbnNHZW5lcmF0b3Ip
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCwgb2JqZWN0KToKKyAgICAgICAgQnVpbHRp
bnNHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWwpCisgICAgICAgIHNlbGYub2JqZWN0ID0g
b2JqZWN0CisKKyAgICBkZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4g
IiVzQnVpbHRpbnMuaCIgJSBCdWlsdGluc0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvck9iamVjdChz
ZWxmLm9iamVjdCkKKworICAgIGRlZiBtYWNyb19wcmVmaXgoc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZpeCcpCisKKyAgICBk
ZWYgZ2VuZXJhdGVfb3V0cHV0KHNlbGYpOgorICAgICAgICBhcmdzID0geworICAgICAgICAgICAg
J25hbWVzcGFjZSc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNlJyks
CisgICAgICAgICAgICAnaGVhZGVyR3VhcmQnOiBzZWxmLm91dHB1dF9maWxlbmFtZSgpLnJlcGxh
Y2UoJy4nLCAnXycpLAorICAgICAgICAgICAgJ21hY3JvUHJlZml4Jzogc2VsZi5tYWNyb19wcmVm
aXgoKSwKKyAgICAgICAgICAgICdvYmplY3ROYW1lJzogc2VsZi5vYmplY3Qub2JqZWN0X25hbWUu
dXBwZXIoKSwKKyAgICAgICAgfQorCisgICAgICAgIHNlY3Rpb25zID0gW10KKyAgICAgICAgc2Vj
dGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfbGljZW5zZSgpKQorICAgICAgICBzZWN0aW9ucy5h
cHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkRvTm90RWRpdFdhcm5pbmcpLnN1YnN0aXR1dGUoYXJn
cykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuSGVhZGVySW5j
bHVkZUd1YXJkVG9wKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQo
c2VsZi5nZW5lcmF0ZV9oZWFkZXJfaW5jbHVkZXMoKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5k
KHNlbGYuZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlvbnMoKSkKKyAgICAgICAgc2VjdGlvbnMu
YXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VUb3ApLnN1YnN0aXR1dGUoYXJncykp
CisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX3NlY3Rpb25fZm9yX29iamVj
dChzZWxmLm9iamVjdCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX3Nl
Y3Rpb25fZm9yX2NvZGVfdGFibGVfbWFjcm8oKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNl
bGYuZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV9uYW1lX21hY3JvKCkpCisgICAgICAgIHNlY3Rp
b25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuU2VwYXJhdGVIZWFkZXJTdGF0aWNNYWNyb3Mp
LnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1w
bGF0ZXMuTmFtZXNwYWNlQm90dG9tKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9u
cy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkhlYWRlckluY2x1ZGVHdWFyZEJvdHRvbSkuc3Vi
c3RpdHV0ZShhcmdzKSkKKworICAgICAgICByZXR1cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMpCisK
KyAgICBkZWYgZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlvbnMoc2VsZik6CisgICAgICAgIHJl
dHVybiAiIiJuYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK30iIiIK
KworICAgIGRlZiBnZW5lcmF0ZV9oZWFkZXJfaW5jbHVkZXMoc2VsZik6CisgICAgICAgIGhlYWRl
cl9pbmNsdWRlcyA9IFsKKyAgICAgICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAg
ICAoIkphdmFTY3JpcHRDb3JlIiwgImJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oIiksCisgICAgICAg
ICAgICApLAorICAgICAgICBdCisKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihzZWxmLmdlbmVy
YXRlX2luY2x1ZGVzX2Zyb21fZW50cmllcyhoZWFkZXJfaW5jbHVkZXMpKQorCisgICAgZGVmIGdl
bmVyYXRlX3NlY3Rpb25fZm9yX29iamVjdChzZWxmLCBvYmplY3QpOgorICAgICAgICBsaW5lcyA9
IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZCgnLyogJXMgKi8nICUgb2JqZWN0Lm9iamVjdF9uYW1l
KQorICAgICAgICBsaW5lcy5leHRlbmQoc2VsZi5nZW5lcmF0ZV9leHRlcm5zX2Zvcl9vYmplY3Qo
b2JqZWN0KSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCIiKQorICAgICAgICBsaW5lcy5leHRlbmQo
c2VsZi5nZW5lcmF0ZV9tYWNyb3NfZm9yX29iamVjdChvYmplY3QpKQorICAgICAgICBsaW5lcy5h
cHBlbmQoIiIpCisgICAgICAgIGxpbmVzLmV4dGVuZChzZWxmLmdlbmVyYXRlX2RlZmluZXNfZm9y
X29iamVjdChvYmplY3QpKQorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQorCisgICAg
ZGVmIGdlbmVyYXRlX2V4dGVybnNfZm9yX29iamVjdChzZWxmLCBvYmplY3QpOgorICAgICAgICBs
aW5lcyA9IFtdCisKKyAgICAgICAgZm9yIGZ1bmN0aW9uIGluIG9iamVjdC5mdW5jdGlvbnM6Cisg
ICAgICAgICAgICBmdW5jdGlvbl9hcmdzID0geworICAgICAgICAgICAgICAgICdjb2RlTmFtZSc6
IEJ1aWx0aW5zR2VuZXJhdG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rpb24oZnVuY3Rpb24pICsgJ0Nv
ZGUnLAorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiIiZXh0ZXJu
IGNvbnN0IGNoYXIqIHNfJShjb2RlTmFtZSlzOworZXh0ZXJuIGNvbnN0IGludCBzXyUoY29kZU5h
bWUpc0xlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc18lKGNvZGVO
YW1lKXNDb25zdHJ1Y3RBYmlsaXR5OyIiIiAlIGZ1bmN0aW9uX2FyZ3MpCisKKyAgICAgICAgcmV0
dXJuIGxpbmVzCisKKyAgICBkZWYgZ2VuZXJhdGVfbWFjcm9zX2Zvcl9vYmplY3Qoc2VsZiwgb2Jq
ZWN0KToKKyAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICdtYWNyb1ByZWZpeCc6IHNlbGYu
bWFjcm9fcHJlZml4KCksCisgICAgICAgICAgICAnb2JqZWN0TWFjcm8nOiBvYmplY3Qub2JqZWN0
X25hbWUucmVwbGFjZSgnLicsICdfJykudXBwZXIoKSwKKyAgICAgICAgfQorCisgICAgICAgIGxp
bmVzID0gW10KKyAgICAgICAgbGluZXMuYXBwZW5kKCIjZGVmaW5lICUobWFjcm9QcmVmaXgpc19G
T1JFQUNIXyUob2JqZWN0TWFjcm8pc19CVUlMVElOX0RBVEEobWFjcm8pIFxcIiAlIGFyZ3MpCisg
ICAgICAgIGZvciBmdW5jdGlvbiBpbiBvYmplY3QuZnVuY3Rpb25zOgorICAgICAgICAgICAgZnVu
Y3Rpb25fYXJncyA9IHsKKyAgICAgICAgICAgICAgICAnZnVuY05hbWUnOiBmdW5jdGlvbi5mdW5j
dGlvbl9uYW1lLAorICAgICAgICAgICAgICAgICdtYW5nbGVkTmFtZSc6IEJ1aWx0aW5zR2VuZXJh
dG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rpb24oZnVuY3Rpb24pLAorICAgICAgICAgICAgICAgICdw
YXJhbUNvdW50JzogbGVuKGZ1bmN0aW9uLnBhcmFtZXRlcnMpLAorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiAgICBtYWNybyglKGZ1bmNOYW1lKXMsICUobWFuZ2xl
ZE5hbWUpcywgJShwYXJhbUNvdW50KWQpIFxcIiAlIGZ1bmN0aW9uX2FyZ3MpCisgICAgICAgIHJl
dHVybiBsaW5lcworCisgICAgZGVmIGdlbmVyYXRlX2RlZmluZXNfZm9yX29iamVjdChzZWxmLCBv
YmplY3QpOgorICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBvYmpl
Y3QuZnVuY3Rpb25zOgorICAgICAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICAgICAnbWFj
cm9QcmVmaXgnOiBzZWxmLm1hY3JvX3ByZWZpeCgpLAorICAgICAgICAgICAgICAgICdvYmplY3RN
YWNybyc6IG9iamVjdC5vYmplY3RfbmFtZS5yZXBsYWNlKCcuJywgJ18nKS51cHBlcigpLAorICAg
ICAgICAgICAgICAgICdmdW5jdGlvbk1hY3JvJzogZnVuY3Rpb24uZnVuY3Rpb25fbmFtZS51cHBl
cigpLAorICAgICAgICAgICAgfQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIjZGVmaW5lICUo
bWFjcm9QcmVmaXgpc19CVUlMVElOXyUob2JqZWN0TWFjcm8pc18lKGZ1bmN0aW9uTWFjcm8pcyAx
IiAlIGFyZ3MpCisKKyAgICAgICAgcmV0dXJuIGxpbmVzCisKKyAgICBkZWYgZ2VuZXJhdGVfc2Vj
dGlvbl9mb3JfY29kZV90YWJsZV9tYWNybyhzZWxmKToKKyAgICAgICAgYXJncyA9IHsKKyAgICAg
ICAgICAgICdtYWNyb1ByZWZpeCc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbWFj
cm9fcHJlZml4JyksCisgICAgICAgICAgICAnb2JqZWN0TWFjcm8nOiBzZWxmLm9iamVjdC5vYmpl
Y3RfbmFtZS51cHBlcigpLAorICAgICAgICB9CisKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAg
ICBsaW5lcy5hcHBlbmQoIiNkZWZpbmUgJShtYWNyb1ByZWZpeClzX0ZPUkVBQ0hfJShvYmplY3RN
YWNybylzX0JVSUxUSU5fQ09ERShtYWNybykgXFwiICUgYXJncykKKyAgICAgICAgZm9yIGZ1bmN0
aW9uIGluIHNlbGYub2JqZWN0LmZ1bmN0aW9uczoKKyAgICAgICAgICAgIGZ1bmN0aW9uX2FyZ3Mg
PSB7CisgICAgICAgICAgICAgICAgJ2Z1bmNOYW1lJzogZnVuY3Rpb24uZnVuY3Rpb25fbmFtZSwK
KyAgICAgICAgICAgICAgICAnY29kZU5hbWUnOiBCdWlsdGluc0dlbmVyYXRvci5tYW5nbGVkTmFt
ZUZvckZ1bmN0aW9uKGZ1bmN0aW9uKSArICdDb2RlJywKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgbGluZXMuYXBwZW5kKCIgICAgbWFjcm8oJShjb2RlTmFtZSlzLCAlKGZ1bmNOYW1lKXMs
IHNfJShjb2RlTmFtZSlzTGVuZ3RoKSBcXCIgJSBmdW5jdGlvbl9hcmdzKQorICAgICAgICByZXR1
cm4gJ1xuJy5qb2luKGxpbmVzKQorCisgICAgZGVmIGdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVf
bmFtZV9tYWNybyhzZWxmKToKKyAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICdtYWNyb1By
ZWZpeCc6IHNlbGYubWFjcm9fcHJlZml4KCksCisgICAgICAgICAgICAnb2JqZWN0TWFjcm8nOiBz
ZWxmLm9iamVjdC5vYmplY3RfbmFtZS51cHBlcigpLAorICAgICAgICB9CisKKyAgICAgICAgbGlu
ZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoIiNkZWZpbmUgJShtYWNyb1ByZWZpeClzX0ZP
UkVBQ0hfJShvYmplY3RNYWNybylzX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXFwiICUg
YXJncykKKyAgICAgICAgdW5pcXVlX25hbWVzID0gbGlzdChzZXQoW2Z1bmN0aW9uLmZ1bmN0aW9u
X25hbWUgZm9yIGZ1bmN0aW9uIGluIHNlbGYub2JqZWN0LmZ1bmN0aW9uc10pKQorICAgICAgICB1
bmlxdWVfbmFtZXMuc29ydCgpCisgICAgICAgIGZvciBmdW5jdGlvbl9uYW1lIGluIHVuaXF1ZV9u
YW1lczoKKyAgICAgICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ2Z1
bmNOYW1lJzogZnVuY3Rpb25fbmFtZSwKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGlu
ZXMuYXBwZW5kKCIgICAgbWFjcm8oJShmdW5jTmFtZSlzKSBcXCIgJSBmdW5jdGlvbl9hcmdzKQor
ICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1w
bGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9i
dWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
YzIyOTA0YjVjZTAyNWQ3ODZlYzkzMzUxMDVlZjliZDVjZWQ2NDQ3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJh
dGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkKQEAgLTAsMCArMSw5OSBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdh
c2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgcmUKK2ltcG9ydCBzdHJp
bmcKK2Zyb20gc3RyaW5nIGltcG9ydCBUZW1wbGF0ZQorCitmcm9tIGJ1aWx0aW5zX2dlbmVyYXRv
ciBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3IsIFdLX2xjZmlyc3QKK2Zyb20gYnVpbHRpbnNfbW9k
ZWwgaW1wb3J0IEZyYW1ld29yaywgRnJhbWV3b3JrcworZnJvbSBidWlsdGluc190ZW1wbGF0ZXMg
aW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVzIGFzIFRlbXBsYXRlcworCitsb2cgPSBs
b2dnaW5nLmdldExvZ2dlcignZ2xvYmFsJykKKworCitjbGFzcyBCdWlsdGluc1NlcGFyYXRlSW1w
bGVtZW50YXRpb25HZW5lcmF0b3IoQnVpbHRpbnNHZW5lcmF0b3IpOgorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBtb2RlbCwgb2JqZWN0KToKKyAgICAgICAgQnVpbHRpbnNHZW5lcmF0b3IuX19pbml0
X18oc2VsZiwgbW9kZWwpCisgICAgICAgIHNlbGYub2JqZWN0ID0gb2JqZWN0CisKKyAgICBkZWYg
b3V0cHV0X2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gIiVzQnVpbHRpbnMuY3BwIiAl
IEJ1aWx0aW5zR2VuZXJhdG9yLm1hbmdsZWROYW1lRm9yT2JqZWN0KHNlbGYub2JqZWN0KQorCisg
ICAgZGVmIG1hY3JvX3ByZWZpeChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYubW9kZWwoKS5m
cmFtZXdvcmsuc2V0dGluZygnbWFjcm9fcHJlZml4JykKKworICAgIGRlZiBnZW5lcmF0ZV9vdXRw
dXQoc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbmFtZXNwYWNlJzogc2Vs
Zi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCduYW1lc3BhY2UnKSwKKyAgICAgICAgICAgICdt
YWNyb1ByZWZpeCc6IHNlbGYubWFjcm9fcHJlZml4KCksCisgICAgICAgICAgICAnb2JqZWN0TWFj
cm8nOiBzZWxmLm9iamVjdC5vYmplY3RfbmFtZS51cHBlcigpLAorICAgICAgICAgICAgJ29iamVj
dE5hbWVMQyc6IFdLX2xjZmlyc3Qoc2VsZi5vYmplY3Qub2JqZWN0X25hbWUpLAorICAgICAgICB9
CisKKyAgICAgICAgc2VjdGlvbnMgPSBbXQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5n
ZW5lcmF0ZV9saWNlbnNlKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1w
bGF0ZXMuRG9Ob3RFZGl0V2FybmluZykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlv
bnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKCkpCisgICAgICAgIHNlY3Rp
b25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlVG9wKS5zdWJzdGl0dXRlKGFy
Z3MpKQorICAgICAgICBmb3IgZnVuY3Rpb24gaW4gc2VsZi5vYmplY3QuZnVuY3Rpb25zOgorICAg
ICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfZW1iZWRkZWRfY29kZV9zdHJp
bmdfc2VjdGlvbl9mb3JfZnVuY3Rpb24oZnVuY3Rpb24pKQorICAgICAgICBpZiBzZWxmLm1vZGVs
KCkuZnJhbWV3b3JrIGlzIEZyYW1ld29ya3MuSmF2YVNjcmlwdENvcmU6CisgICAgICAgICAgICBz
ZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLlNlcGFyYXRlSlNDSW1wbGVtZW50YXRp
b25TdGF0aWNNYWNyb3MpLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIGVsaWYgc2VsZi5tb2Rl
bCgpLmZyYW1ld29yayBpcyBGcmFtZXdvcmtzLldlYkNvcmU6CisgICAgICAgICAgICBzZWN0aW9u
cy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLlNlcGFyYXRlV2ViQ29yZUltcGxlbWVudGF0aW9u
U3RhdGljTWFjcm9zKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQo
VGVtcGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZUJvdHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkKKwor
ICAgICAgICByZXR1cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMpCisKKyAgICBkZWYgZ2VuZXJhdGVf
aGVhZGVyX2luY2x1ZGVzKHNlbGYpOgorICAgICAgICBoZWFkZXJfaW5jbHVkZXMgPSBbCisgICAg
ICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlw
dENvcmUiLCAiYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgiKSwKKyAgICAgICAgICAgICks
CisgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZSIsICJXZWJDb3JlIl0sCisgICAgICAgICAg
ICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL0V4ZWN1dGFibGUuaCIpLAorICAgICAg
ICAgICAgKSwKKyAgICAgICAgICAgIChbIkphdmFTY3JpcHRDb3JlIiwgIldlYkNvcmUiXSwKKyAg
ICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgInJ1bnRpbWUvSlNDZWxsSW5saW5lcy5o
IiksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAg
ICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgiKSwK
KyAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAg
ICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgiKSwKKyAg
ICAgICAgICAgICksCisgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZSIsICJXZWJDb3JlIl0s
CisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL1ZNLmgiKSwKKyAg
ICAgICAgICAgICksCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAg
KCJXZWJDb3JlIiwgImJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaCIpLAorICAgICAg
ICAgICAgKSwKKyAgICAgICAgXQorCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4oc2VsZi5nZW5l
cmF0ZV9pbmNsdWRlc19mcm9tX2VudHJpZXMoaGVhZGVyX2luY2x1ZGVzKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRl
X3NlcGFyYXRlX3dyYXBwZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWls
dGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFwcGVyLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRh
YTg4Y2Y3NjIwY2RhMTM3MTg2Yjk5MTY0MzdiYzZkMGI0ODFkOWUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0
ZV9zZXBhcmF0ZV93cmFwcGVyLnB5CkBAIC0wLDAgKzEsOTQgQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisj
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHJlCitpbXBvcnQgc3RyaW5nCitmcm9t
IHN0cmluZyBpbXBvcnQgVGVtcGxhdGUKKworZnJvbSBidWlsdGluc19nZW5lcmF0b3IgaW1wb3J0
IEJ1aWx0aW5zR2VuZXJhdG9yCitmcm9tIGJ1aWx0aW5zX3RlbXBsYXRlcyBpbXBvcnQgQnVpbHRp
bnNHZW5lcmF0b3JUZW1wbGF0ZXMgYXMgVGVtcGxhdGVzCisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9n
Z2VyKCdnbG9iYWwnKQorCisKK2NsYXNzIEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9y
KEJ1aWx0aW5zR2VuZXJhdG9yKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZWwsIG9iamVj
dCk6CisgICAgICAgIEJ1aWx0aW5zR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYsIG1vZGVsKQorICAg
ICAgICBzZWxmLm9iamVjdCA9IG9iamVjdAorCisgICAgZGVmIG91dHB1dF9maWxlbmFtZShzZWxm
KToKKyAgICAgICAgcmV0dXJuICIlc0J1aWx0aW5zV3JhcHBlci5oIiAlIEJ1aWx0aW5zR2VuZXJh
dG9yLm1hbmdsZWROYW1lRm9yT2JqZWN0KHNlbGYub2JqZWN0KQorCisgICAgZGVmIG1hY3JvX3By
ZWZpeChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGlu
ZygnbWFjcm9fcHJlZml4JykKKworICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6CisgICAg
ICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbmFtZXNwYWNlJzogc2VsZi5tb2RlbCgpLmZyYW1l
d29yay5zZXR0aW5nKCduYW1lc3BhY2UnKSwKKyAgICAgICAgICAgICdoZWFkZXJHdWFyZCc6IHNl
bGYub3V0cHV0X2ZpbGVuYW1lKCkucmVwbGFjZSgnLicsICdfJyksCisgICAgICAgICAgICAnbWFj
cm9QcmVmaXgnOiBzZWxmLm1hY3JvX3ByZWZpeCgpLAorICAgICAgICAgICAgJ29iamVjdE5hbWUn
OiBzZWxmLm9iamVjdC5vYmplY3RfbmFtZSwKKyAgICAgICAgICAgICdvYmplY3RNYWNybyc6IHNl
bGYub2JqZWN0Lm9iamVjdF9uYW1lLnVwcGVyKCksCisgICAgICAgIH0KKworICAgICAgICBzZWN0
aW9ucyA9IFtdCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2xpY2Vuc2Uo
KSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5Eb05vdEVkaXRX
YXJuaW5nKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxh
dGUoVGVtcGxhdGVzLkhlYWRlckluY2x1ZGVHdWFyZFRvcCkuc3Vic3RpdHV0ZShhcmdzKSkKKyAg
ICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKCkpCisg
ICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlVG9wKS5z
dWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxh
dGVzLlNlcGFyYXRlV3JhcHBlckhlYWRlckJvaWxlcnBsYXRlKS5zdWJzdGl0dXRlKGFyZ3MpKQor
ICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZUJvdHRv
bSkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRl
bXBsYXRlcy5IZWFkZXJJbmNsdWRlR3VhcmRCb3R0b20pLnN1YnN0aXR1dGUoYXJncykpCisKKyAg
ICAgICAgcmV0dXJuICJcblxuIi5qb2luKHNlY3Rpb25zKQorCisgICAgZGVmIGdlbmVyYXRlX2hl
YWRlcl9pbmNsdWRlcyhzZWxmKToKKyAgICAgICAgaGVhZGVyX2luY2x1ZGVzID0gWworICAgICAg
ICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiV2ViQ29yZSIsICIlc0J1aWx0
aW5zLmgiICUgc2VsZi5vYmplY3Qub2JqZWN0X25hbWUpLAorICAgICAgICAgICAgKSwKKworICAg
ICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUi
LCAiYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCIpLAorICAgICAgICAgICAg
KSwKKworICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNj
cmlwdENvcmUiLCAiYnVpbHRpbnMvQnVpbHRpblV0aWxzLmgiKSwKKyAgICAgICAgICAgICksCisK
KyAgICAgICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRD
b3JlIiwgInJ1bnRpbWUvSWRlbnRpZmllci5oIiksCisgICAgICAgICAgICApLAorCisgICAgICAg
ICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJy
dW50aW1lL0pTRnVuY3Rpb24uaCIpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgXQorCisgICAg
ICAgIHJldHVybiAnXG4nLmpvaW4oc2VsZi5nZW5lcmF0ZV9pbmNsdWRlc19mcm9tX2VudHJpZXMo
aGVhZGVyX2luY2x1ZGVzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRvci5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODQ4
M2UwYzIyMzE1Zjc3ZGJhYTk3NmQ0YmFkY2Y3N2RlMmQzZjE5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdG9y
LnB5CkBAIC0wLDAgKzEsMTcxIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJp
Z2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29w
eXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBs
b2dnaW5nCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHJlCitmcm9tIHN0cmluZyBpbXBvcnQgVGVt
cGxhdGUKK2ltcG9ydCBqc29uCisKK2Zyb20gYnVpbHRpbnNfbW9kZWwgaW1wb3J0IEJ1aWx0aW5G
dW5jdGlvbiwgQnVpbHRpbk9iamVjdAorZnJvbSBidWlsdGluc190ZW1wbGF0ZXMgaW1wb3J0IEJ1
aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVzIGFzIFRlbXBsYXRlcworCitsb2cgPSBsb2dnaW5nLmdl
dExvZ2dlcignZ2xvYmFsJykKKworIyBUaGVzZSBtYXRjaCBXS19sY2ZpcnN0IGFuZCBXS191Y2Zp
cnN0IGRlZmluZWQgaW4gQ29kZUdlbmVyYXRvci5wbS4KK2RlZiBXS19sY2ZpcnN0KHN0cik6Cisg
ICAgc3RyID0gc3RyWzoxXS5sb3dlcigpICsgc3RyWzE6XQorICAgIHN0ciA9IHN0ci5yZXBsYWNl
KCdoVE1MJywgJ2h0bWwnKQorICAgIHN0ciA9IHN0ci5yZXBsYWNlKCd1UkwnLCAndXJsJykKKyAg
ICBzdHIgPSBzdHIucmVwbGFjZSgnalMnLCAnanMnKQorICAgIHN0ciA9IHN0ci5yZXBsYWNlKCd4
TUwnLCAneG1sJykKKyAgICBzdHIgPSBzdHIucmVwbGFjZSgneFNMVCcsICd4c2x0JykKKyAgICBz
dHIgPSBzdHIucmVwbGFjZSgnY1NTJywgJ2NzcycpCisgICAgcmV0dXJuIHN0cgorCitkZWYgV0tf
dWNmaXJzdChzdHIpOgorICAgIHN0ciA9IHN0cls6MV0udXBwZXIoKSArIHN0clsxOl0KKyAgICBz
dHIgPSBzdHIucmVwbGFjZSgnWG1sJywgJ1hNTCcpCisgICAgc3RyID0gc3RyLnJlcGxhY2UoJ1N2
ZycsICdTVkcnKQorICAgIHJldHVybiBzdHIKKworY2xhc3MgQnVpbHRpbnNHZW5lcmF0b3I6Cisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZGVsKToKKyAgICAgICAgc2VsZi5fbW9kZWwgPSBtb2Rl
bAorCisgICAgZGVmIG1vZGVsKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbW9kZWwKKwor
ICAgICMgVGhlc2UgbWV0aG9kcyBhcmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzLgorCisgICAg
ZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIG91dHB1
dF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgcGFzcworCisKKyAgICAjIFNoYXJlZCBjb2RlIGdl
bmVyYXRpb24gbWV0aG9kcy4KKyAgICBkZWYgZ2VuZXJhdGVfbGljZW5zZShzZWxmKToKKyAgICAg
ICAgcmF3X2xpY2Vuc2UgPSBUZW1wbGF0ZShUZW1wbGF0ZXMuTGljZW5zZVRleHQpLnN1YnN0aXR1
dGUoTm9uZSkKKyAgICAgICAgY29weXJpZ2h0cyA9IHNlbGYuX21vZGVsLmNvcHlyaWdodHMoKQor
ICAgICAgICBjb3B5cmlnaHRzLnNvcnQoKQorCisgICAgICAgIGxpY2Vuc2VfYmxvY2sgPSBbXQor
ICAgICAgICBsaWNlbnNlX2Jsb2NrLmFwcGVuZCgiLyoiKQorICAgICAgICBmb3IgY29weXJpZ2h0
IGluIGNvcHlyaWdodHM6CisgICAgICAgICAgICBsaWNlbnNlX2Jsb2NrLmFwcGVuZCgiICogQ29w
eXJpZ2h0IChjKSAlcyIgJSBjb3B5cmlnaHQpCisgICAgICAgIGlmIGxlbihjb3B5cmlnaHRzKSA+
IDA6CisgICAgICAgICAgICBsaWNlbnNlX2Jsb2NrLmFwcGVuZCgiICogIikKKworICAgICAgICBm
b3IgbGluZSBpbiByYXdfbGljZW5zZS5zcGxpdCgnXG4nKToKKyAgICAgICAgICAgIGxpY2Vuc2Vf
YmxvY2suYXBwZW5kKCIgKiAiICsgbGluZSkKKworICAgICAgICBsaWNlbnNlX2Jsb2NrLmFwcGVu
ZCgiICovIikKKworICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpY2Vuc2VfYmxvY2spCisKKyAg
ICBkZWYgZ2VuZXJhdGVfaW5jbHVkZXNfZnJvbV9lbnRyaWVzKHNlbGYsIGVudHJpZXMpOgorICAg
ICAgICBpbmNsdWRlcyA9IHNldCgpCisgICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgorICAg
ICAgICAgICAgKGFsbG93ZWRfZnJhbWV3b3JrX25hbWVzLCBkYXRhKSA9IGVudHJ5CisgICAgICAg
ICAgICAoZnJhbWV3b3JrX25hbWUsIGhlYWRlcl9wYXRoKSA9IGRhdGEKKworICAgICAgICAgICAg
aWYgc2VsZi5tb2RlbCgpLmZyYW1ld29yay5uYW1lIG5vdCBpbiBhbGxvd2VkX2ZyYW1ld29ya19u
YW1lczoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgc2VsZi5tb2Rl
bCgpLmZyYW1ld29yay5uYW1lICE9IGZyYW1ld29ya19uYW1lOgorICAgICAgICAgICAgICAgIGlu
Y2x1ZGVzLmFkZCgiI2luY2x1ZGUgPCVzPiIgJSBoZWFkZXJfcGF0aCkKKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgaW5jbHVkZXMuYWRkKCIjaW5jbHVkZSBcIiVzXCIiICUgb3Mu
cGF0aC5iYXNlbmFtZShoZWFkZXJfcGF0aCkpCisKKyAgICAgICAgc29ydGVkX2luY2x1ZGVzID0g
c29ydGVkKGxpc3QoaW5jbHVkZXMpKQorICAgICAgICAjIEFsd2F5cyBpbmNsdWRlIGNvbmZpZy5o
IGFuZCB0aGUgY291bnRlcnBhcnQgaGVhZGVyIGJlZm9yZSBvdGhlciBoZWFkZXJzLgorICAgICAg
ICBuYW1lLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KHNlbGYub3V0cHV0X2ZpbGVuYW1lKCkpCisg
ICAgICAgIGlmIGV4dCAhPSAnLmgnOgorICAgICAgICAgICAgc29ydGVkX2luY2x1ZGVzWzowXSA9
IFsKKyAgICAgICAgICAgICAgICAiI2luY2x1ZGUgXCJjb25maWcuaFwiIiwKKyAgICAgICAgICAg
ICAgICAiI2luY2x1ZGUgXCIlcy5oXCIiICUgbmFtZSwKKyAgICAgICAgICAgICAgICAiIiwKKyAg
ICAgICAgICAgIF0KKworICAgICAgICByZXR1cm4gc29ydGVkX2luY2x1ZGVzCisKKyAgICBkZWYg
Z2VuZXJhdGVfZW1iZWRkZWRfY29kZV9zdHJpbmdfc2VjdGlvbl9mb3JfZnVuY3Rpb24oc2VsZiwg
ZnVuY3Rpb24pOgorICAgICAgICB0ZXh0ID0gZnVuY3Rpb24uZnVuY3Rpb25fc291cmNlCisgICAg
ICAgICMgV3JhcCBpdCBpbiBwYXJlbnMgdG8gYXZvaWQgYWRkaW5nIHRvIGdsb2JhbCBzY29wZS4K
KyAgICAgICAgdGV4dCA9ICIoZnVuY3Rpb24gIiArIHRleHRbdGV4dC5pbmRleCgiKCIpOl0gKyAi
KSIKKyAgICAgICAgZW1iZWRkZWRTb3VyY2VMZW5ndGggPSBsZW4odGV4dCkgKyAxICAjIEZvciBl
eHRyYSBcbi4KKyAgICAgICAgIyBMYXp5IHdheSB0byBlc2NhcGUgcXVvdGVzLCBJIHRoaW5rPwor
ICAgICAgICB0ZXh0TGluZXMgPSBqc29uLmR1bXBzKHRleHQpWzE6LTFdLnNwbGl0KCJcXG4iKQor
ICAgICAgICAjIFRoaXMgbG9va3Mgc2NhcnkgYmVjYXVzZSB3ZSBuZWVkIHRoZSBKUyBzb3VyY2Ug
aXRzZWxmIHRvIGhhdmUgbmV3bGluZXMuCisgICAgICAgIGVtYmVkZGVkU291cmNlID0gJ1xuJy5q
b2luKFsnICAgICIlc1xcbiIgXFwnICUgbGluZSBmb3IgbGluZSBpbiB0ZXh0TGluZXNdKQorCisg
ICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSAiQ2Fubm90Q29uc3RydWN0IgorICAgICAgICBpZiBm
dW5jdGlvbi5pc19jb25zdHJ1Y3RvcjoKKyAgICAgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSAi
Q2FuQ29uc3RydWN0IgorCisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnY29kZU5hbWUn
OiBCdWlsdGluc0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvckZ1bmN0aW9uKGZ1bmN0aW9uKSArICdD
b2RlJywKKyAgICAgICAgICAgICdlbWJlZGRlZFNvdXJjZSc6IGVtYmVkZGVkU291cmNlLAorICAg
ICAgICAgICAgJ2VtYmVkZGVkU291cmNlTGVuZ3RoJzogZW1iZWRkZWRTb3VyY2VMZW5ndGgsCisg
ICAgICAgICAgICAnY2FuQ29uc3RydWN0JzogY29uc3RydWN0QWJpbGl0eQorICAgICAgICB9CisK
KyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoImNvbnN0IEpTQzo6Q29u
c3RydWN0QWJpbGl0eSBzXyUoY29kZU5hbWUpc0NvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0
cnVjdEFiaWxpdHk6OiUoY2FuQ29uc3RydWN0KXM7IiAlIGFyZ3MpOworICAgICAgICBsaW5lcy5h
cHBlbmQoImNvbnN0IGludCBzXyUoY29kZU5hbWUpc0xlbmd0aCA9ICUoZW1iZWRkZWRTb3VyY2VM
ZW5ndGgpZDsiICUgYXJncyk7CisgICAgICAgIGxpbmVzLmFwcGVuZCgiY29uc3QgY2hhciogc18l
KGNvZGVOYW1lKXMgPVxuJShlbWJlZGRlZFNvdXJjZSlzXG47IiAlIGFyZ3MpOworICAgICAgICBy
ZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQorCisgICAgIyBIZWxwZXIgbWV0aG9kcy4KKworICAgIEBz
dGF0aWNtZXRob2QKKyAgICBkZWYgbWFuZ2xlZE5hbWVGb3JPYmplY3Qob2JqZWN0KToKKyAgICAg
ICAgaWYgbm90IGlzaW5zdGFuY2Uob2JqZWN0LCBCdWlsdGluT2JqZWN0KToKKyAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbigiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gbWFuZ2xlZE5hbWVG
b3JPYmplY3QoKSIpCisKKyAgICAgICAgZGVmIHRvQ2FtZWwobWF0Y2gpOgorICAgICAgICAgICAg
c3RyID0gbWF0Y2guZ3JvdXAoMCkKKyAgICAgICAgICAgIHJldHVybiBzdHJbMV0udXBwZXIoKQor
ICAgICAgICByZXR1cm4gcmUuc3ViKHInXC5bYS16XScsIHRvQ2FtZWwsIG9iamVjdC5vYmplY3Rf
bmFtZSwgZmxhZ3M9cmUuSUdOT1JFQ0FTRSkKKworCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRl
ZiBtYW5nbGVkTmFtZUZvckZ1bmN0aW9uKGZ1bmN0aW9uKToKKyAgICAgICAgaWYgbm90IGlzaW5z
dGFuY2UoZnVuY3Rpb24sIEJ1aWx0aW5GdW5jdGlvbik6CisgICAgICAgICAgICByYWlzZSBFeGNl
cHRpb24oIkludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIG1hbmdsZWROYW1lRm9yRnVuY3Rpb24o
KSIpCisKKyAgICAgICAgZnVuY3Rpb25fbmFtZSA9IFdLX3VjZmlyc3QoZnVuY3Rpb24uZnVuY3Rp
b25fbmFtZSkKKworICAgICAgICBkZWYgdG9DYW1lbChtYXRjaCk6CisgICAgICAgICAgICBzdHIg
PSBtYXRjaC5ncm91cCgwKQorICAgICAgICAgICAgcmV0dXJuIHN0clsxXS51cHBlcigpCisgICAg
ICAgIGZ1bmN0aW9uX25hbWUgPSByZS5zdWIocidcLlthLXpdJywgdG9DYW1lbCwgZnVuY3Rpb25f
bmFtZSwgZmxhZ3M9cmUuSUdOT1JFQ0FTRSkKKyAgICAgICAgaWYgZnVuY3Rpb24uaXNfY29uc3Ry
dWN0b3I6CisgICAgICAgICAgICBmdW5jdGlvbl9uYW1lID0gZnVuY3Rpb25fbmFtZSArICJDb25z
dHJ1Y3RvciIKKworICAgICAgICBvYmplY3RfbmFtZSA9IEJ1aWx0aW5zR2VuZXJhdG9yLm1hbmds
ZWROYW1lRm9yT2JqZWN0KGZ1bmN0aW9uLm9iamVjdCkKKyAgICAgICAgcmV0dXJuIFdLX2xjZmly
c3Qob2JqZWN0X25hbWUgKyBmdW5jdGlvbl9uYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfbW9kZWwucHkgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19tb2RlbC5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iNWQ0YmRlNjRkNmJhNmNkMWQwNzM1M2Q0ZjJiZDVlYTE0NTBhYTNmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfbW9k
ZWwucHkKQEAgLTAsMCArMSwyMzMgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5
cmlnaHQgKGMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
IyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBy
ZQoraW1wb3J0IG9zCisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwnKQorCitfRlJB
TUVXT1JLX0NPTkZJR19NQVAgPSB7CisgICAgIkphdmFTY3JpcHRDb3JlIjogeworICAgICAgICAi
bWFjcm9fcHJlZml4IjogIkpTQyIsCisgICAgICAgICJuYW1lc3BhY2UiOiAiSlNDIiwKKyAgICB9
LAorICAgICJXZWJDb3JlIjogeworICAgICAgICAibWFjcm9fcHJlZml4IjogIldFQkNPUkUiLAor
ICAgICAgICAibmFtZXNwYWNlIjogIldlYkNvcmUiLAorICAgIH0sCit9CisKK2Z1bmN0aW9uSGVh
ZFJlZ0V4cCA9IHJlLmNvbXBpbGUociIoPzpmdW5jdGlvbnxjb25zdHJ1Y3Rvcilccytcdytccypc
KC4qP1wpIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK2Z1bmN0aW9uTmFtZVJlZ0V4cCA9IHJlLmNv
bXBpbGUociIoPzpmdW5jdGlvbnxjb25zdHJ1Y3RvcilccysoXHcrKVxzKlwoIiwgcmUuTVVMVElM
SU5FIHwgcmUuUykKK2Z1bmN0aW9uSXNDb25zdHJ1Y3RvclJlZ0V4cCA9IHJlLmNvbXBpbGUociJe
Y29uc3RydWN0b3IiLCByZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25QYXJhbWV0ZXJGaW5k
ZXIgPSByZS5jb21waWxlKHIiXig/OmZ1bmN0aW9ufGNvbnN0cnVjdG9yKVxzKyg/Olx3Kylccypc
KCgoPzpccypcdyspP1xzKig/OlxzKixccypcdyspKik/XHMqXCkiLCByZS5NVUxUSUxJTkUgfCBy
ZS5TKQorCittdWx0aWxpbmVDb21tZW50UmVnRXhwID0gcmUuY29tcGlsZShyIlwvXCouKj9cKlwv
IiwgcmUuTVVMVElMSU5FIHwgcmUuUykKK3NpbmdsZUxpbmVDb21tZW50UmVnRXhwID0gcmUuY29t
cGlsZShyIlwvXC8uKj9cbiIsIHJlLk1VTFRJTElORSB8IHJlLlMpCisKKworY2xhc3MgUGFyc2VF
eGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICBwYXNzCisKKworY2xhc3MgRnJhbWV3b3JrOgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgc2VsZi5fc2V0dGluZ3MgPSBfRlJB
TUVXT1JLX0NPTkZJR19NQVBbbmFtZV0KKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisgICAg
ZGVmIHNldHRpbmcoc2VsZiwga2V5LCBkZWZhdWx0PScnKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
X3NldHRpbmdzLmdldChrZXksIGRlZmF1bHQpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVm
IGZyb21TdHJpbmcoZnJhbWV3b3JrU3RyaW5nKToKKyAgICAgICAgaWYgZnJhbWV3b3JrU3RyaW5n
ID09ICJKYXZhU2NyaXB0Q29yZSI6CisgICAgICAgICAgICByZXR1cm4gRnJhbWV3b3Jrcy5KYXZh
U2NyaXB0Q29yZQorCisgICAgICAgIGlmIGZyYW1ld29ya1N0cmluZyA9PSAiV2ViQ29yZSI6Cisg
ICAgICAgICAgICByZXR1cm4gRnJhbWV3b3Jrcy5XZWJDb3JlCisKKyAgICAgICAgcmFpc2UgUGFy
c2VFeGNlcHRpb24oIlVua25vd24gZnJhbWV3b3JrOiAlcyIgJSBmcmFtZXdvcmtTdHJpbmcpCisK
KworY2xhc3MgRnJhbWV3b3JrczoKKyAgICBKYXZhU2NyaXB0Q29yZSA9IEZyYW1ld29yaygiSmF2
YVNjcmlwdENvcmUiKQorICAgIFdlYkNvcmUgPSBGcmFtZXdvcmsoIldlYkNvcmUiKQorCisKK2Ns
YXNzIEJ1aWx0aW5PYmplY3Q6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9iamVjdF9uYW1lLCBm
dW5jdGlvbnMpOgorICAgICAgICBzZWxmLm9iamVjdF9uYW1lID0gb2JqZWN0X25hbWUKKyAgICAg
ICAgc2VsZi5mdW5jdGlvbnMgPSBmdW5jdGlvbnMKKyAgICAgICAgc2VsZi5jb2xsZWN0aW9uID0g
Tm9uZSAgIyBTZXQgYnkgdGhlIG93bmluZyBCdWlsdGluc0NvbGxlY3Rpb24KKworICAgICAgICBm
b3IgZnVuY3Rpb24gaW4gc2VsZi5mdW5jdGlvbnM6CisgICAgICAgICAgICBmdW5jdGlvbi5vYmpl
Y3QgPSBzZWxmCisKKworY2xhc3MgQnVpbHRpbkZ1bmN0aW9uOgorICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBmdW5jdGlvbl9uYW1lLCBmdW5jdGlvbl9zb3VyY2UsIGlzX2NvbnN0cnVjdG9yLCBwYXJh
bWV0ZXJzKToKKyAgICAgICAgc2VsZi5mdW5jdGlvbl9uYW1lID0gZnVuY3Rpb25fbmFtZQorICAg
ICAgICBzZWxmLmZ1bmN0aW9uX3NvdXJjZSA9IGZ1bmN0aW9uX3NvdXJjZQorICAgICAgICBzZWxm
LmlzX2NvbnN0cnVjdG9yID0gaXNfY29uc3RydWN0b3IKKyAgICAgICAgc2VsZi5wYXJhbWV0ZXJz
ID0gcGFyYW1ldGVycworICAgICAgICBzZWxmLm9iamVjdCA9IE5vbmUgICMgU2V0IGJ5IHRoZSBv
d25pbmcgQnVpbHRpbk9iamVjdAorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBmcm9tU3Ry
aW5nKGZ1bmN0aW9uX3N0cmluZyk6CisgICAgICAgIGZ1bmN0aW9uX3NvdXJjZSA9IG11bHRpbGlu
ZUNvbW1lbnRSZWdFeHAuc3ViKCIiLCBmdW5jdGlvbl9zdHJpbmcpCisgICAgICAgIGZ1bmN0aW9u
X25hbWUgPSBmdW5jdGlvbk5hbWVSZWdFeHAuZmluZGFsbChmdW5jdGlvbl9zb3VyY2UpWzBdCisg
ICAgICAgIGlzX2NvbnN0cnVjdG9yID0gZnVuY3Rpb25Jc0NvbnN0cnVjdG9yUmVnRXhwLm1hdGNo
KGZ1bmN0aW9uX3NvdXJjZSkgIT0gTm9uZQorICAgICAgICBwYXJhbWV0ZXJzID0gW3Muc3RyaXAo
KSBmb3IgcyBpbiBmdW5jdGlvblBhcmFtZXRlckZpbmRlci5maW5kYWxsKGZ1bmN0aW9uX3NvdXJj
ZSlbMF0uc3BsaXQoJywnKV0KKyAgICAgICAgaWYgbGVuKHBhcmFtZXRlcnNbMF0pID09IDA6Cisg
ICAgICAgICAgICBwYXJhbWV0ZXJzID0gW10KKworICAgICAgICByZXR1cm4gQnVpbHRpbkZ1bmN0
aW9uKGZ1bmN0aW9uX25hbWUsIGZ1bmN0aW9uX3NvdXJjZSwgaXNfY29uc3RydWN0b3IsIHBhcmFt
ZXRlcnMpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgaW50ZXJmYWNlID0gIiVz
KCVzKSIgJSAoc2VsZi5mdW5jdGlvbl9uYW1lLCAnLCAnLmpvaW4oc2VsZi5wYXJhbWV0ZXJzKSkK
KyAgICAgICAgaWYgc2VsZi5pc19jb25zdHJ1Y3RvcjoKKyAgICAgICAgICAgIGludGVyZmFjZSA9
IGludGVyZmFjZSArICIgW0NvbnN0cnVjdG9yXSIKKworICAgICAgICByZXR1cm4gaW50ZXJmYWNl
CisKKworY2xhc3MgQnVpbHRpbnNDb2xsZWN0aW9uOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBm
cmFtZXdvcmtfbmFtZSk6CisgICAgICAgIHNlbGYuX2NvcHlyaWdodF9saW5lcyA9IHNldCgpCisg
ICAgICAgIHNlbGYub2JqZWN0cyA9IFtdCisgICAgICAgIHNlbGYuZnJhbWV3b3JrID0gRnJhbWV3
b3JrLmZyb21TdHJpbmcoZnJhbWV3b3JrX25hbWUpCisgICAgICAgIGxvZy5kZWJ1ZygiQ3JlYXRl
ZCBuZXcgQnVpbHRpbnMgY29sbGVjdGlvbi4iKQorCisgICAgZGVmIHBhcnNlX2J1aWx0aW5zX2Zp
bGUoc2VsZiwgZmlsZW5hbWUsIHRleHQpOgorICAgICAgICBsb2cuZGVidWcoIlBhcnNpbmcgYnVp
bHRpbnMgZmlsZTogJXMiICUgZmlsZW5hbWUpCisKKyAgICAgICAgcGFyc2VkX2NvcHlyaWdodHMg
PSBzZXQoc2VsZi5fcGFyc2VfY29weXJpZ2h0X2xpbmVzKHRleHQpKQorICAgICAgICBzZWxmLl9j
b3B5cmlnaHRfbGluZXMgPSBzZWxmLl9jb3B5cmlnaHRfbGluZXMudW5pb24ocGFyc2VkX2NvcHly
aWdodHMpCisKKyAgICAgICAgbG9nLmRlYnVnKCJGb3VuZCBjb3B5cmlnaHQgbGluZXM6IikKKyAg
ICAgICAgZm9yIGxpbmUgaW4gc2VsZi5fY29weXJpZ2h0X2xpbmVzOgorICAgICAgICAgICAgbG9n
LmRlYnVnKGxpbmUpCisgICAgICAgIGxvZy5kZWJ1ZygiIikKKworICAgICAgICBvYmplY3RfbmFt
ZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKSkKKyAg
ICAgICAgbG9nLmRlYnVnKCJQYXJzaW5nIG9iamVjdDogJXMiICUgb2JqZWN0X25hbWUpCisKKyAg
ICAgICAgcGFyc2VkX2Z1bmN0aW9ucyA9IHNlbGYuX3BhcnNlX2Z1bmN0aW9ucyh0ZXh0KQorICAg
ICAgICBmb3IgZnVuY3Rpb24gaW4gcGFyc2VkX2Z1bmN0aW9uczoKKyAgICAgICAgICAgIGZ1bmN0
aW9uLm9iamVjdCA9IG9iamVjdF9uYW1lCisKKyAgICAgICAgbG9nLmRlYnVnKCJQYXJzZWQgZnVu
Y3Rpb25zOiIpCisgICAgICAgIGZvciBmdW5jIGluIHBhcnNlZF9mdW5jdGlvbnM6CisgICAgICAg
ICAgICBsb2cuZGVidWcoZnVuYykKKyAgICAgICAgbG9nLmRlYnVnKCIiKQorCisgICAgICAgIG5l
d19vYmplY3QgPSBCdWlsdGluT2JqZWN0KG9iamVjdF9uYW1lLCBwYXJzZWRfZnVuY3Rpb25zKQor
ICAgICAgICBuZXdfb2JqZWN0LmNvbGxlY3Rpb24gPSBzZWxmCisgICAgICAgIHNlbGYub2JqZWN0
cy5hcHBlbmQobmV3X29iamVjdCkKKworICAgIGRlZiBjb3B5cmlnaHRzKHNlbGYpOgorICAgICAg
ICBvd25lcl90b195ZWFycyA9IGRpY3QoKQorICAgICAgICBjb3B5cmlnaHRZZWFyUmVnRXhwID0g
cmUuY29tcGlsZShyIihcZHs0fSlbLCBdezAsMn0iKQorICAgICAgICBvd25lclN0YXJ0UmVnRXhw
ID0gcmUuY29tcGlsZShyIlteXGQsIF0iKQorCisgICAgICAgICMgUmV0dXJucyBkZWR1cGxpY2F0
ZWQgY29weXJpZ2h0cyBrZXllZCBvbiB0aGUgb3duZXIuCisgICAgICAgIGZvciBsaW5lIGluIHNl
bGYuX2NvcHlyaWdodF9saW5lczoKKyAgICAgICAgICAgIHllYXJzID0gc2V0KGNvcHlyaWdodFll
YXJSZWdFeHAuZmluZGFsbChsaW5lKSkKKyAgICAgICAgICAgIG93bmVySW5kZXggPSBvd25lclN0
YXJ0UmVnRXhwLnNlYXJjaChsaW5lKS5zdGFydCgpCisgICAgICAgICAgICBvd25lciA9IGxpbmVb
b3duZXJJbmRleDpdCisgICAgICAgICAgICBsb2cuZGVidWcoIkZvdW5kIHllYXJzOiAlcyBhbmQg
b3duZXI6ICVzIiAlICh5ZWFycywgb3duZXIpKQorICAgICAgICAgICAgaWYgb3duZXIgbm90IGlu
IG93bmVyX3RvX3llYXJzOgorICAgICAgICAgICAgICAgIG93bmVyX3RvX3llYXJzW293bmVyXSA9
IHNldCgpCisKKyAgICAgICAgICAgIG93bmVyX3RvX3llYXJzW293bmVyXSA9IG93bmVyX3RvX3ll
YXJzW293bmVyXS51bmlvbih5ZWFycykKKworICAgICAgICByZXN1bHQgPSBbXQorCisgICAgICAg
IGZvciBvd25lciwgeWVhcnMgaW4gb3duZXJfdG9feWVhcnMuaXRlbXMoKToKKyAgICAgICAgICAg
IHNvcnRlZF95ZWFycyA9IGxpc3QoeWVhcnMpCisgICAgICAgICAgICBzb3J0ZWRfeWVhcnMuc29y
dCgpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIlcyAlcyIgJSAoJywgJy5qb2luKHNvcnRl
ZF95ZWFycyksIG93bmVyKSkKKworICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgYWxs
X2Z1bmN0aW9ucyhzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gW10KKyAgICAgICAgZm9yIG9iamVj
dCBpbiBzZWxmLm9iamVjdHM6CisgICAgICAgICAgICByZXN1bHQuZXh0ZW5kKG9iamVjdC5mdW5j
dGlvbnMpCisKKyAgICAgICAgcmVzdWx0LnNvcnQoKQorICAgICAgICByZXR1cm4gcmVzdWx0CisK
KyAgICAjIFByaXZhdGUgbWV0aG9kcy4KKworICAgIGRlZiBfcGFyc2VfY29weXJpZ2h0X2xpbmVz
KHNlbGYsIHRleHQpOgorICAgICAgICBsaWNlbnNlQmxvY2sgPSBtdWx0aWxpbmVDb21tZW50UmVn
RXhwLmZpbmRhbGwodGV4dClbMF0KKyAgICAgICAgbGljZW5zZUJsb2NrID0gbGljZW5zZUJsb2Nr
WzpsaWNlbnNlQmxvY2suaW5kZXgoIlJlZGlzdHJpYnV0aW9uIildCisKKyAgICAgICAgY29weXJp
Z2h0TGluZXMgPSBbXQorICAgICAgICBmb3IgbGluZSBpbiBsaWNlbnNlQmxvY2suc3BsaXQoIlxu
Iik6CisgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIvKiIsICIiKQorICAgICAgICAg
ICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKi8iLCAiIikKKyAgICAgICAgICAgIGxpbmUgPSBsaW5l
LnJlcGxhY2UoIioiLCAiIikKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIkNvcHly
aWdodCIsICIiKQorICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiY29weXJpZ2h0Iiwg
IiIpCisgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIoQykiLCAiIikKKyAgICAgICAg
ICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIihjKSIsICIiKQorICAgICAgICAgICAgbGluZSA9IGxp
bmUuc3RyaXAoKQorCisgICAgICAgICAgICBpZiBsZW4obGluZSkgPT0gMDoKKyAgICAgICAgICAg
ICAgICBjb250aW51ZQorCisgICAgICAgICAgICBjb3B5cmlnaHRMaW5lcy5hcHBlbmQobGluZSkK
KworICAgICAgICByZXR1cm4gY29weXJpZ2h0TGluZXMKKworICAgIGRlZiBfcGFyc2VfZnVuY3Rp
b25zKHNlbGYsIHRleHQpOgorICAgICAgICB0ZXh0ID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5z
dWIoIi8qKi8iLCBzaW5nbGVMaW5lQ29tbWVudFJlZ0V4cC5zdWIoIi8vXG4iLCB0ZXh0KSkKKwor
ICAgICAgICBtYXRjaGVzID0gW2Z1bmMgZm9yIGZ1bmMgaW4gZnVuY3Rpb25IZWFkUmVnRXhwLmZp
bmRpdGVyKHRleHQpXQorICAgICAgICBmdW5jdGlvbkJvdW5kcyA9IFtdCisgICAgICAgIHN0YXJ0
ID0gMAorICAgICAgICBlbmQgPSAwCisgICAgICAgIGZvciBtYXRjaCBpbiBtYXRjaGVzOgorICAg
ICAgICAgICAgc3RhcnQgPSBtYXRjaC5zdGFydCgpCisgICAgICAgICAgICBpZiBzdGFydCA8IGVu
ZDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZW5kID0gbWF0Y2guZW5k
KCkKKyAgICAgICAgICAgIHdoaWxlIHRleHRbZW5kXSAhPSAneyc6CisgICAgICAgICAgICAgICAg
ZW5kID0gZW5kICsgMQorICAgICAgICAgICAgZGVwdGggPSAxCisgICAgICAgICAgICBlbmQgPSBl
bmQgKyAxCisgICAgICAgICAgICB3aGlsZSBkZXB0aCA+IDA6CisgICAgICAgICAgICAgICAgaWYg
dGV4dFtlbmRdID09ICd7JzoKKyAgICAgICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCArIDEK
KyAgICAgICAgICAgICAgICBlbGlmIHRleHRbZW5kXSA9PSAnfSc6CisgICAgICAgICAgICAgICAg
ICAgIGRlcHRoID0gZGVwdGggLSAxCisgICAgICAgICAgICAgICAgZW5kID0gZW5kICsgMQorICAg
ICAgICAgICAgZnVuY3Rpb25Cb3VuZHMuYXBwZW5kKChzdGFydCwgZW5kKSkKKworICAgICAgICBm
dW5jdGlvblN0cmluZ3MgPSBbdGV4dFtzdGFydDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwgZW5k
KSBpbiBmdW5jdGlvbkJvdW5kc10KKyAgICAgICAgcmV0dXJuIG1hcChCdWlsdGluRnVuY3Rpb24u
ZnJvbVN0cmluZywgZnVuY3Rpb25TdHJpbmdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI1ZWRmNjU2ZWEyY2VhNGQwZDRmMWY2OTI1ZDM0YThlMTBhZjNkODMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGlu
c190ZW1wbGF0ZXMucHkKQEAgLTAsMCArMSwyMTkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgor
IworIyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBCdWlsdGlucyBn
ZW5lcmF0b3IgdGVtcGxhdGVzLCB3aGljaCBjYW4gYmUgZmlsbGVkIHdpdGggc3RyaW5nLlRlbXBs
YXRlLgorCisKK2NsYXNzIEJ1aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVzOgorCisgICAgTGljZW5z
ZVRleHQgPSAoCisgICAgIiIiUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKK2FyZSBtZXQ6CisxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisK
K1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKK0FORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCitCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCitDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCitJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKK0FSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKK1RIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyIiIikKKworICAgIERvTm90RWRpdFdhcm5pbmcgPSAoCisgICAgIiIi
Ly8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBm
cm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weSIiIikKKwor
ICAgIEhlYWRlckluY2x1ZGVHdWFyZFRvcCA9ICgKKyAgICAiIiIjaWZuZGVmICR7aGVhZGVyR3Vh
cmR9CisjZGVmaW5lICR7aGVhZGVyR3VhcmR9IiIiKQorCisgICAgSGVhZGVySW5jbHVkZUd1YXJk
Qm90dG9tID0gKAorICAgICIiIiNlbmRpZiAvLyAke2hlYWRlckd1YXJkfQorIiIiKQorCisgICAg
TmFtZXNwYWNlVG9wID0gKAorICAgICIiIm5hbWVzcGFjZSAke25hbWVzcGFjZX0geyIiIikKKwor
ICAgIE5hbWVzcGFjZUJvdHRvbSA9ICgKKyAgICAiIiJ9IC8vIG5hbWVzcGFjZSAke25hbWVzcGFj
ZX0iIiIpCisKKyAgICBDb21iaW5lZEhlYWRlclN0YXRpY01hY3JvcyA9ICgKKyAgICAiIiIjZGVm
aW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJn
dW1lbnRDb3VudCkgXFwKKyAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dl
bmVyYXRvcihKU0M6OlZNJik7CisKKyR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RF
KERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVS
QVRPUgorCisjZGVmaW5lICR7bWFjcm9QcmVmaXh9X0JVSUxUSU5fRVhJU1RTKG9iamVjdCwgZnVu
YykgZGVmaW5lZCAke21hY3JvUHJlZml4fV9CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5j
IiIiKQorCisgICAgU2VwYXJhdGVIZWFkZXJTdGF0aWNNYWNyb3MgPSAoCisgICAgIiIiI2RlZmlu
ZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3Vt
ZW50Q291bnQpIFxcCisgICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5l
cmF0b3IoSlNDOjpWTSYpOworCiske21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TmFtZX1f
QlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVDTEFSRV9C
VUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lICR7bWFjcm9QcmVmaXh9X0JVSUxUSU5fJHtvYmpl
Y3ROYW1lfV9FWElTVFMob2JqZWN0LCBmdW5jKSBkZWZpbmVkICR7bWFjcm9QcmVmaXh9X0JVSUxU
SU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMiIiIpCisKKyAgICBDb21iaW5lZEpTQ0ltcGxlbWVu
dGF0aW9uU3RhdGljTWFjcm9zID0gKAorICAgICIiIgorI2RlZmluZSBERUZJTkVfQlVJTFRJTl9H
RU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKK0pTQzo6
RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAor
e1xcCisgICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0
YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJj
ZSgpKTsgXAorfQorJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JV
SUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgorIiIiKQor
CisgICAgU2VwYXJhdGVKU0NJbXBsZW1lbnRhdGlvblN0YXRpY01hY3JvcyA9ICgKKyAgICAiIiIK
KyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUs
IGFyZ3VtZW50Q291bnQpIFxcCitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dl
bmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKK3tcXAorICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0
YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1
dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IFwKK30KKyR7bWFjcm9QcmVmaXh9X0ZPUkVB
Q0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikK
KyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKyIiIikKKworICAgIENvbWJpbmVkV2Vi
Q29yZUltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9zID0gKAorICAgICAgICAiIiIKKyNkZWZpbmUg
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50
Q291bnQpIFxcCitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihK
U0M6OlZNJiB2bSkgXFwKK3tcXAorICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3Rh
dGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXFwKKyAgICByZXR1cm4g
Y2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCku
Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0
aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpKTsgXFwK
K30KKyR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dF
TkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKyIiIikKKworICAgIFNl
cGFyYXRlV2ViQ29yZUltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9zID0gKAorICAgICAgICAiIiIK
KyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUs
IGFyZ3VtZW50Q291bnQpIFxcCitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dl
bmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKK3tcXAorICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnRE
YXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXFwKKyAg
ICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1
aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVp
bHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJj
ZSgpKTsgXFwKK30KKyR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJ
Tl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9H
RU5FUkFUT1IKKyIiIikKKworICAgIFNlcGFyYXRlV3JhcHBlckhlYWRlckJvaWxlcnBsYXRlID0g
KAorICAgICIiImNsYXNzICR7b2JqZWN0TmFtZX1CdWlsdGluc1dyYXBwZXIgOiBwcml2YXRlIEpT
Qzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCAke29iamVjdE5hbWV9
QnVpbHRpbnNXcmFwcGVyKEpTQzo6Vk0qIHZtKQorICAgICAgICA6IG1fdm0oKnZtKQorICAgICAg
ICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fRlVOQ1RJT05f
TkFNRShJTklUSUFMSVpFX0JVSUxUSU5fTkFNRVMpCisjZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJ
Tl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMj
U291cmNlKEpTQzo6bWFrZVNvdXJjZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzXyMj
bmFtZSwgbGVuZ3RoKSkpCisgICAgICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RN
YWNyb31fQlVJTFRJTl9DT0RFKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1
bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKKyAgICB7CisgICAgfQorCisj
ZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVu
Z3RoKSBcXAorICAgIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1
dGFibGUoKTsgXFwKKyAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KKyAgICAke21hY3JvUHJlZml4fV9GT1JF
QUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxF
UykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUworCisgICAgJHttYWNyb1ByZWZp
eH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9C
VUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCisKKyAgICB2b2lkIGV4cG9ydE5hbWVzKCk7CisK
K3ByaXZhdGU6CisgICAgSlNDOjpWTSYgbV92bTsKKworICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVB
Q0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9O
QU1FUykKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVu
Y3Rpb25OYW1lLCBsZW5ndGgpIFxcCisgICAgSlNDOjpTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3Vy
Y2U7XFwKKyAgICBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4gbV8j
I25hbWUjI0V4ZWN1dGFibGU7CisgICAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1h
Y3JvfV9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVm
IERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworCit9OworCisjZGVmaW5lIERFRklORV9C
VUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcXAoraW5saW5l
IEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqICR7b2JqZWN0TmFtZX1CdWlsdGluc1dy
YXBwZXI6Om5hbWUjI0V4ZWN1dGFibGUoKSBcXAore1xcCisgICAgaWYgKCFtXyMjbmFtZSMjRXhl
Y3V0YWJsZSlcXAorICAgICAgICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9IEpTQzo6V2VhazxKU0M6
OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPihKU0M6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxl
KG1fdm0sIG1fIyNuYW1lIyNTb3VyY2UsIGZ1bmN0aW9uTmFtZSMjUHVibGljTmFtZSgpLCBzXyMj
bmFtZSMjQ29uc3RydWN0QWJpbGl0eSksIHRoaXMsICZtXyMjbmFtZSMjRXhlY3V0YWJsZSk7XFwK
KyAgICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7XFwKK30KKyR7bWFjcm9QcmVm
aXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0VY
RUNVVEFCTEVTKQorI3VuZGVmIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTCisKK2lubGluZSB2
b2lkICR7b2JqZWN0TmFtZX1CdWlsdGluc1dyYXBwZXI6OmV4cG9ydE5hbWVzKCkKK3sKKyNkZWZp
bmUgRVhQT1JUX0ZVTkNUSU9OX05BTUUobmFtZSkgbV92bS5wcm9wZXJ0eU5hbWVzLT5hcHBlbmRF
eHRlcm5hbE5hbWUobmFtZSMjUHVibGljTmFtZSgpLCBuYW1lIyNQcml2YXRlTmFtZSgpKTsKKyAg
ICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fRlVOQ1RJT05f
TkFNRShFWFBPUlRfRlVOQ1RJT05fTkFNRSkKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT05fTkFNRQor
fQorCitjbGFzcyAke29iamVjdE5hbWV9QnVpbHRpbkZ1bmN0aW9ucyB7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgJHtvYmplY3ROYW1lfUJ1aWx0aW5GdW5jdGlvbnMoSlNDOjpWTSYgdm0pIDogbV92
bSh2bSkgeyB9CisKKyAgICB2b2lkIGluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYpOworICAgIHZv
aWQgdmlzaXQoSlNDOjpTbG90VmlzaXRvciYpOworCitwdWJsaWM6CisgICAgSlNDOjpWTSYgbV92
bTsKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMoZnVuY3Rpb25OYW1l
KSBcXAorICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNGdW5jdGlvbj4gbV8jI2Z1bmN0aW9u
TmFtZSMjRnVuY3Rpb247CisgICAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3Jv
fV9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQor
I3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworfTsKKworaW5saW5lIHZvaWQg
JHtvYmplY3ROYW1lfUJ1aWx0aW5GdW5jdGlvbnM6OmluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQoreworI2RlZmluZSBFWFBPUlRfRlVOQ1RJT04oY29kZU5hbWUsIGZ1bmN0
aW9uTmFtZSwgbGVuZ3RoKVxcCisgICAgbV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb24uc2V0KG1f
dm0sICZnbG9iYWxPYmplY3QsIEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9u
KG1fdm0sIGNvZGVOYW1lIyNHZW5lcmF0b3IobV92bSksICZnbG9iYWxPYmplY3QpKTsKKyAgICAk
e21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShFWFBPUlRf
RlVOQ1RJT04pCisjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OCit9CisKK2lubGluZSB2b2lkICR7b2Jq
ZWN0TmFtZX1CdWlsdGluRnVuY3Rpb25zOjp2aXNpdChKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9y
KQoreworI2RlZmluZSBWSVNJVF9GVU5DVElPTihuYW1lKSB2aXNpdG9yLmFwcGVuZCgmbV8jI25h
bWUjI0Z1bmN0aW9uKTsKKyAgICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99
X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShWSVNJVF9GVU5DVElPTikKKyN1bmRlZiBWSVNJVF9GVU5D
VElPTgorfQorIiIiKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
Z2VuZXJhdGUtanMtYnVpbHRpbnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5l
cmF0ZS1qcy1idWlsdGlucwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGZmNDE4NzNk
YTJiNjVhNzcxMTRjZjVkNDFlODdhNGMwZDMwNjM3Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5l
cmF0ZS1qcy1idWlsdGlucworKysgL2Rldi9udWxsCkBAIC0xLDM0MyArMCwwIEBACi0jIS91c3Iv
YmluL3B5dGhvbgotIyBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0jIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0jIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotIyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0jIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0jIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGFyZ3BhcnNlCi1pbXBvcnQgZmlsZWNt
cAotaW1wb3J0IGZubWF0Y2gKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc2h1dGlsCi1p
bXBvcnQgc3lzCi1pbXBvcnQgZGF0ZXRpbWUKLWltcG9ydCBqc29uCi0KLXBhcnNlciA9IGFyZ3Bh
cnNlLkFyZ3VtZW50UGFyc2VyKCkKLXBhcnNlci5hZGRfYXJndW1lbnQoJ2lucHV0X2ZpbGUnLCBu
YXJncz0nKicsIGhlbHA9J0lucHV0IEpTIGZpbGVzIHdoaWNoIGJ1aWx0aW5zIGdlbmVyYXRlZCBm
cm9tJykKLXBhcnNlci5hZGRfYXJndW1lbnQoJy0taW5wdXQtZGlyZWN0b3J5JywgaGVscD0nQWxs
IEpTIGZpbGVzIHdpbGwgYmUgdXNlZCBhcyBpbnB1dCBmcm9tIHRoaXMgZGlyZWN0b3J5LicpCi1w
YXJzZXIuYWRkX2FyZ3VtZW50KCctLW91dHB1dCcsIGhlbHA9J3BhdGggdG8gb3V0cHV0IGNwcCBv
ciBoIGZpbGUnKQotcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1wcmVmaXgnLCBkZWZhdWx0PSdKU0Mn
LCBoZWxwPSdwcmVmaXggdXNlZCBmb3IgcHVibGljIG1hY3JvcycpCi1wYXJzZXIuYWRkX2FyZ3Vt
ZW50KCctLW5hbWVzcGFjZScsIGRlZmF1bHQ9J0pTQycsIGhlbHA9J0MrKyBuYW1lc3BhY2UnKQot
YXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKLQotY29weXJpZ2h0VGV4dCA9ICIiIiAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovXG4KLSIiIgotCi1nZW5lcmF0b3JTdHJp
bmcgPSAiLyogR2VuZXJhdGVkIGJ5ICVzIGRvIG5vdCBoYW5kIGVkaXQuICovXG4iICUgb3MucGF0
aC5iYXNlbmFtZShfX2ZpbGVfXykKLQotZnVuY3Rpb25IZWFkUmVnRXhwID0gcmUuY29tcGlsZShy
Iig/OmZ1bmN0aW9ufGNvbnN0cnVjdG9yKVxzK1x3K1xzKlwoLio/XCkiLCByZS5NVUxUSUxJTkUg
fCByZS5TKQotZnVuY3Rpb25OYW1lUmVnRXhwID0gcmUuY29tcGlsZShyIig/OmZ1bmN0aW9ufGNv
bnN0cnVjdG9yKVxzKyhcdyspXHMqXCgiLCByZS5NVUxUSUxJTkUgfCByZS5TKQotZnVuY3Rpb25J
c0NvbnN0cnVjdG9yUmVnRXhwID0gcmUuY29tcGlsZShyIl5jb25zdHJ1Y3RvciIsIHJlLk1VTFRJ
TElORSB8IHJlLlMpCi1mdW5jdGlvblBhcmFtZXRlckZpbmRlciA9IHJlLmNvbXBpbGUociJeKD86
ZnVuY3Rpb258Y29uc3RydWN0b3IpXHMrKD86XHcrKVxzKlwoKCg/OlxzKlx3Kyk/XHMqKD86XHMq
LFxzKlx3KykqKT9ccypcKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCi0KLW11bHRpbGluZUNvbW1l
bnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cKi4qP1wqXC8iLCByZS5NVUxUSUxJTkUgfCByZS5T
KQotc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cLy4qP1xuIiwgcmUu
TVVMVElMSU5FIHwgcmUuUykKLQotZGVmIGdldENvcHlyaWdodChzb3VyY2UpOgotICAgIGNvcHly
aWdodEJsb2NrID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5maW5kYWxsKHNvdXJjZSlbMF0KLSAg
ICBjb3B5cmlnaHRCbG9jayA9IGNvcHlyaWdodEJsb2NrWzpjb3B5cmlnaHRCbG9jay5pbmRleCgi
UmVkaXN0cmlidXRpb24iKV0KLSAgICBjb3B5UmlnaHRMaW5lcyA9IFtdCi0KLSAgICBmb3IgbGlu
ZSBpbiBjb3B5cmlnaHRCbG9jay5zcGxpdCgiXG4iKToKLSAgICAgICAgbGluZSA9IGxpbmUucmVw
bGFjZSgiLyoiLCAiIikKLSAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKi8iLCAiIikKLSAg
ICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKiIsICIiKQotICAgICAgICBsaW5lID0gbGluZS5y
ZXBsYWNlKCJDb3B5cmlnaHQiLCAiIikKLSAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiY29w
eXJpZ2h0IiwgIiIpCi0gICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIihDKSIsICIiKQotICAg
ICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIoYykiLCAiIikKLSAgICAgICAgbGluZSA9IGxpbmUu
c3RyaXAoKQotICAgICAgICBpZiBsZW4obGluZSkgPT0gMDoKLSAgICAgICAgICAgIGNvbnRpbnVl
Ci0KLSAgICAgICAgY29weVJpZ2h0TGluZXMuYXBwZW5kKGxpbmUpCi0gICAgCi0gICAgcmV0dXJu
IGxpc3Qoc2V0KGNvcHlSaWdodExpbmVzKSkKLQotY2xhc3MgRnVuY3Rpb24ob2JqZWN0KToKLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgc291cmNlLCBpc0NvbnN0cnVjdG9yLCBwYXJhbWV0
ZXJzKToKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotICAgICAgICBzZWxmLnNvdXJjZSA9IHNv
dXJjZQotICAgICAgICBzZWxmLmlzQ29uc3RydWN0b3IgPSBpc0NvbnN0cnVjdG9yCi0gICAgICAg
IHNlbGYucGFyYW1ldGVycyA9IHBhcmFtZXRlcnMKLQotICAgIGRlZiBtYW5nbGVOYW1lKHNlbGYs
IG9iamVjdCk6Ci0gICAgICAgIHFOYW1lID0gb2JqZWN0ICsgIi4iICsgc2VsZi5uYW1lCi0gICAg
ICAgIG1hbmdsZWROYW1lID0gIiIKLSAgICAgICAgaSA9IDAKLSAgICAgICAgd2hpbGUgaSA8IGxl
bihxTmFtZSk6Ci0gICAgICAgICAgICBpZiBxTmFtZVtpXSA9PSAnLic6Ci0gICAgICAgICAgICAg
ICAgbWFuZ2xlZE5hbWUgPSBtYW5nbGVkTmFtZSArIHFOYW1lW2kgKyAxXS51cHBlcigpCi0gICAg
ICAgICAgICAgICAgaSA9IGkgKyAxCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
IG1hbmdsZWROYW1lID0gbWFuZ2xlZE5hbWUgKyBxTmFtZVtpXQotICAgICAgICAgICAgaSA9IGkg
KyAxCi0gICAgICAgIGlmIHNlbGYuaXNDb25zdHJ1Y3RvcjoKLSAgICAgICAgICAgIG1hbmdsZWRO
YW1lID0gbWFuZ2xlZE5hbWUgKyAiQ29uc3RydWN0b3IiCi0gICAgICAgIHJldHVybiBtYW5nbGVk
TmFtZQotCi1kZWYgZ2V0RnVuY3Rpb25zKHNvdXJjZSk6Ci0KLSAgICBzb3VyY2UgPSBtdWx0aWxp
bmVDb21tZW50UmVnRXhwLnN1YigiLyoqLyIsIHNpbmdsZUxpbmVDb21tZW50UmVnRXhwLnN1Yigi
Ly9cbiIsIHNvdXJjZSkpCi0KLSAgICBtYXRjaGVzID0gWyBmIGZvciBmIGluIGZ1bmN0aW9uSGVh
ZFJlZ0V4cC5maW5kaXRlcihzb3VyY2UpXQotICAgIGZ1bmN0aW9uQm91bmRzID0gW10KLSAgICBz
dGFydCA9IDAKLSAgICBlbmQgPSAwCi0gICAgZm9yIG1hdGNoIGluIG1hdGNoZXM6Ci0gICAgICAg
IHN0YXJ0ID0gbWF0Y2guc3RhcnQoKQotICAgICAgICBpZiBzdGFydCA8IGVuZDoKLSAgICAgICAg
ICAgIGNvbnRpbnVlCi0gICAgICAgIGVuZCA9IG1hdGNoLmVuZCgpCi0gICAgICAgIHdoaWxlIHNv
dXJjZVtlbmRdICE9ICd7JzoKLSAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKLSAgICAgICAgZGVw
dGggPSAxCi0gICAgICAgIGVuZCA9IGVuZCArIDEKLSAgICAgICAgd2hpbGUgZGVwdGggPiAwOgot
ICAgICAgICAgICAgaWYgc291cmNlW2VuZF0gPT0gJ3snOgotICAgICAgICAgICAgICAgIGRlcHRo
ID0gZGVwdGggKyAxCi0gICAgICAgICAgICBlbGlmIHNvdXJjZVtlbmRdID09ICd9JzoKLSAgICAg
ICAgICAgICAgICBkZXB0aCA9IGRlcHRoIC0gMQotICAgICAgICAgICAgZW5kID0gZW5kICsgMQot
ICAgICAgICBmdW5jdGlvbkJvdW5kcy5hcHBlbmQoKHN0YXJ0LCBlbmQpKQotCi0gICAgZnVuY3Rp
b25zID0gW3NvdXJjZVtzdGFydDplbmRdLnN0cmlwKCkgZm9yIChzdGFydCwgZW5kKSBpbiBmdW5j
dGlvbkJvdW5kc10KLSAgICByZXN1bHQgPSBbXQotICAgIGZvciBmdW5jdGlvbiBpbiBmdW5jdGlv
bnM6Ci0gICAgICAgIGZ1bmN0aW9uID0gbXVsdGlsaW5lQ29tbWVudFJlZ0V4cC5zdWIoIiIsIGZ1
bmN0aW9uKQotICAgICAgICBmdW5jdGlvbk5hbWUgPSBmdW5jdGlvbk5hbWVSZWdFeHAuZmluZGFs
bChmdW5jdGlvbilbMF0KLSAgICAgICAgZnVuY3Rpb25Jc0NvbnN0cnVjdG9yID0gZnVuY3Rpb25J
c0NvbnN0cnVjdG9yUmVnRXhwLm1hdGNoKGZ1bmN0aW9uKSAhPSBOb25lCi0gICAgICAgIGZ1bmN0
aW9uUGFyYW1ldGVycyA9IGZ1bmN0aW9uUGFyYW1ldGVyRmluZGVyLmZpbmRhbGwoZnVuY3Rpb24p
WzBdLnNwbGl0KCcsJykKLSAgICAgICAgaWYgbGVuKGZ1bmN0aW9uUGFyYW1ldGVyc1swXSkgPT0g
MDoKLSAgICAgICAgICAgIGZ1bmN0aW9uUGFyYW1ldGVycyA9IFtdCi0KLSAgICAgICAgcmVzdWx0
LmFwcGVuZChGdW5jdGlvbihmdW5jdGlvbk5hbWUsIGZ1bmN0aW9uLCBmdW5jdGlvbklzQ29uc3Ry
dWN0b3IsIGZ1bmN0aW9uUGFyYW1ldGVycykpCi0gICAgcmV0dXJuIHJlc3VsdAotCi1kZWYgd3Jp
dGVJbmNsdWRlRGlyZWN0aXZlcyh3cml0ZXIsIGhlYWRlck5hbWVzKToKLSAgICBmb3IgaGVhZGVy
TmFtZSBpbiBoZWFkZXJOYW1lczoKLSAgICAgICAgd3JpdGVyLndyaXRlKCIjaW5jbHVkZSAiICsg
aGVhZGVyTmFtZSArICJcbiIpCi0KLWRlZiBnZW5lcmF0ZUNvZGUoc291cmNlKToKLSAgICBpbnB1
dEZpbGUgPSBvcGVuKHNvdXJjZSwgInIiKQotICAgIGJhc2VOYW1lID0gb3MucGF0aC5iYXNlbmFt
ZShzb3VyY2UpLnJlcGxhY2UoIi5qcyIsICIiKQotICAgIAotICAgIHNvdXJjZSA9ICIiCi0gICAg
Zm9yIGxpbmUgaW4gaW5wdXRGaWxlOgotICAgICAgICBzb3VyY2UgPSBzb3VyY2UgKyBsaW5lCi0g
ICAgCi0gICAgaWYgc3lzLnBsYXRmb3JtID09ICJjeWd3aW4iOgotICAgICAgICBzb3VyY2UgPSBz
b3VyY2UucmVwbGFjZSgiXHJcbiIsICJcbiIpCi0gICAgcmV0dXJuIChiYXNlTmFtZSwgZ2V0RnVu
Y3Rpb25zKHNvdXJjZSksIGdldENvcHlyaWdodChzb3VyY2UpKQotCi1idWlsdGlucyA9IFtdCi1j
b3B5cmlnaHRzID0gW10KLShvdXRwdXRfYmFzZSwgXykgPSBvcy5wYXRoLnNwbGl0ZXh0KGFyZ3Mu
b3V0cHV0KQotCi1pZiBhcmdzLmlucHV0X2RpcmVjdG9yeToKLSAgICBmb3IgZmlsZSBpbiBvcy5s
aXN0ZGlyKGFyZ3MuaW5wdXRfZGlyZWN0b3J5KToKLSAgICAgICAgYXJncy5pbnB1dF9maWxlLmFw
cGVuZChvcy5wYXRoLmpvaW4oYXJncy5pbnB1dF9kaXJlY3RvcnksIGZpbGUpKQotCi1mb3IgZmls
ZSBpbiBhcmdzLmlucHV0X2ZpbGU6Ci0gICAgaWYgZm5tYXRjaC5mbm1hdGNoKGZpbGUsICcqLmpz
Jyk6Ci0gICAgICAgIChiYXNlTmFtZSwgZnVuY3Rpb25zLCBvYmplY3RDb3B5cmlnaHRzKSA9IGdl
bmVyYXRlQ29kZShmaWxlKQotICAgICAgICBjb3B5cmlnaHRzLmV4dGVuZChvYmplY3RDb3B5cmln
aHRzKQotICAgICAgICBidWlsdGlucy5hcHBlbmQoKGJhc2VOYW1lLCBmdW5jdGlvbnMpKQotbmFt
ZXNwYWNlID0gYXJncy5uYW1lc3BhY2UKLW1hY3JvUHJlZml4ID0gYXJncy5wcmVmaXgKLXNjb3Bl
TmFtZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShhcmdzLm91dHB1dCkpWzBd
Ci1pbmNsdWRlR3VhcmQgPSBzY29wZU5hbWUgKyAiX0giCi1oZWFkZXJOYW1lID0gc2NvcGVOYW1l
ICsgIi5oIgotCi1oZWFkZXJJbmNsdWRlcyA9IFsiXCJCdWlsdGluVXRpbHMuaFwiIl0gaWYgbmFt
ZXNwYWNlID09ICJKU0MiIGVsc2UgWyI8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+Il0KLWNvbnRl
bnRJbmNsdWRlcyA9IFsiXCJCdWlsdGluRXhlY3V0YWJsZXMuaFwiIiwgIlwiRXhlY3V0YWJsZS5o
XCIiLCAiXCJKU0NlbGxJbmxpbmVzLmhcIiIsICJcIlZNLmhcIiJdIGlmIG5hbWVzcGFjZSA9PSAi
SlNDIiBlbHNlIFsiPHJ1bnRpbWUvRXhlY3V0YWJsZS5oPiIsICI8cnVudGltZS9TdHJ1Y3R1cmVJ
bmxpbmVzLmg+IiwgIjxydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+IiwgIjxydW50aW1lL0pT
Q2VsbElubGluZXMuaD4iLCAiPHJ1bnRpbWUvVk0uaD4iLCAiXCJXZWJDb3JlSlNDbGllbnREYXRh
LmhcIiJdCi0KLWNvcHlyaWdodHMgPSBsaXN0KHNldChjb3B5cmlnaHRzKSkKLQotY29weXJpZ2h0
Qm9keSA9ICIiCi1mb3IgY29weXJpZ2h0IGluIGNvcHlyaWdodHM6Ci0gICAgY29weXJpZ2h0Qm9k
eSA9IGNvcHlyaWdodEJvZHkgKyIgKiBDb3B5cmlnaHQgKEMpICIgKyBjb3B5cmlnaHQgKyAiXG4i
Ci0KLWJ1aWx0aW5zSGVhZGVyID0gb3BlbihvdXRwdXRfYmFzZSArICIuaC50bXAiLCAidyIpCi1i
dWlsdGluc0ltcGxlbWVudGF0aW9uID0gb3BlbihvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIsICJ3
IikKLWNvcHlyaWdodFRleHQgPSAiLypcbiIgKyBjb3B5cmlnaHRCb2R5ICsgY29weXJpZ2h0VGV4
dAotYnVpbHRpbnNIZWFkZXIud3JpdGUoIiIiJXMKLSVzCi0KLSNpZm5kZWYgJXMKLSNkZWZpbmUg
JXMKLQotIiIiICUgKGdlbmVyYXRvclN0cmluZywgY29weXJpZ2h0VGV4dCwgaW5jbHVkZUd1YXJk
LCBpbmNsdWRlR3VhcmQpKQotCi13cml0ZUluY2x1ZGVEaXJlY3RpdmVzKGJ1aWx0aW5zSGVhZGVy
LCBoZWFkZXJJbmNsdWRlcykKLQotYnVpbHRpbnNIZWFkZXIud3JpdGUoIiIiCi1uYW1lc3BhY2Ug
SlNDIHsKLSAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Ci19Ci0KLW5hbWVzcGFjZSAlcyB7
Ci0KLSIiIiAlIG5hbWVzcGFjZSkKLQotY29kZVJlZmVyZW5jZXMgPSBbXQotCi1mb3IgKG9iamVj
dE5hbWUsIGZ1bmN0aW9ucykgaW4gYnVpbHRpbnM6Ci0gICAgcHJpbnQoIkdlbmVyYXRpbmcgYmlu
ZGluZ3MgZm9yIHRoZSAlcyBidWlsdGluLiIgJSBvYmplY3ROYW1lKQotICAgIGJ1aWx0aW5zSGVh
ZGVyLndyaXRlKCIvKiAlcyBmdW5jdGlvbnMgKi9cbiIgJSBvYmplY3ROYW1lKQotICAgIGZvciBm
dW5jdGlvbiBpbiBmdW5jdGlvbnM6Ci0gICAgICAgIG5hbWUgPSBmdW5jdGlvbi5uYW1lCi0gICAg
ICAgIG1hbmdsZWROYW1lID0gZnVuY3Rpb24ubWFuZ2xlTmFtZShvYmplY3ROYW1lKQotICAgICAg
ICBtYW5nbGVkTmFtZSA9IG1hbmdsZWROYW1lWzBdLmxvd2VyKCkgKyBtYW5nbGVkTmFtZVsxOl0g
KyAiQ29kZSIKLSAgICAgICAgY29kZVJlZmVyZW5jZXMuYXBwZW5kKChtYW5nbGVkTmFtZSwgZnVu
Y3Rpb24pKQotICAgICAgICBidWlsdGluc0hlYWRlci53cml0ZSgiZXh0ZXJuIGNvbnN0IGNoYXIq
IHNfJXM7XG4iICUgbWFuZ2xlZE5hbWUpCi0gICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJl
eHRlcm4gY29uc3QgaW50IHNfJXNMZW5ndGg7XG4iICUgbWFuZ2xlZE5hbWUpCi0gICAgICAgIGJ1
aWx0aW5zSGVhZGVyLndyaXRlKCJleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNf
JXNDb25zdHJ1Y3RBYmlsaXR5O1xuIiAlIG1hbmdsZWROYW1lKQotICAgIGJ1aWx0aW5zSGVhZGVy
LndyaXRlKCJcbiIpCi0gICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgJXNfRk9SRUFD
SF8lc19CVUlMVElOKG1hY3JvKSBcXFxuIiAlIChtYWNyb1ByZWZpeCwgb2JqZWN0TmFtZS5yZXBs
YWNlKCIuIiwgIl8iKS51cHBlcigpKSkKLSAgICBmb3IgZnVuY3Rpb24gaW4gZnVuY3Rpb25zOgot
ICAgICAgICBtYW5nbGVkTmFtZSA9IGZ1bmN0aW9uLm1hbmdsZU5hbWUob2JqZWN0TmFtZSkKLSAg
ICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiAgICBtYWNybyglcywgJXMsICVkKSBcXFxuIiAl
IChmdW5jdGlvbi5uYW1lLCBtYW5nbGVkTmFtZSwgbGVuKGZ1bmN0aW9uLnBhcmFtZXRlcnMpKSkK
LSAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG4iKQotICAgIGZvciBmdW5jdGlvbiBpbiBmdW5j
dGlvbnM6Ci0gICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIjZGVmaW5lICVzX0JVSUxUSU5f
JXMgMVxuIiAlIChtYWNyb1ByZWZpeCwgZnVuY3Rpb24ubWFuZ2xlTmFtZShvYmplY3ROYW1lKS51
cHBlcigpKSkKLSAgICBidWlsdGluc0hlYWRlci53cml0ZSgiXG5cbiIpCi1uYW1lcyA9IFtdCi1i
dWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSAlc19GT1JFQUNIX0JVSUxUSU4obWFjcm8pXFxc
biIgJSBtYWNyb1ByZWZpeCkKLWZvciAoY29kZVJlZmVyZW5jZSwgZnVuY3Rpb24pIGluIGNvZGVS
ZWZlcmVuY2VzOgotICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCIgICAgbWFjcm8oJXMsICVzLCBz
XyVzTGVuZ3RoKSBcXFxuIiAlIChjb2RlUmVmZXJlbmNlLCBmdW5jdGlvbi5uYW1lLCBjb2RlUmVm
ZXJlbmNlKSkKLSAgICBuYW1lcy5hcHBlbmQoZnVuY3Rpb24ubmFtZSkKLQotYnVpbHRpbnNIZWFk
ZXIud3JpdGUoIlxuXG4iKQotYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgJXNfRk9SRUFD
SF9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFxcXG4iICUgbWFjcm9QcmVmaXgpCi1mb3Ig
bmFtZSBpbiBzb3J0ZWQoc2V0KG5hbWVzKSk6Ci0gICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiAg
ICBtYWNybyglcykgXFxcbiIgJSBuYW1lKQotYnVpbHRpbnNIZWFkZXIud3JpdGUoIiIiCi0KLSNk
ZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBh
cmd1bWVudENvdW50KSBcXAotICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMj
R2VuZXJhdG9yKEpTQzo6Vk0mKTsKLQotJXNfRk9SRUFDSF9CVUlMVElOKERFQ0xBUkVfQlVJTFRJ
Tl9HRU5FUkFUT1IpCi0jdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgotCi0jZGVmaW5l
ICVzX0JVSUxUSU5fRVhJU1RTKG5hbWUpIGRlZmluZWQgJXNfQlVJTFRJTl8gIyMgbmFtZQotCi19
Ci0KLSNlbmRpZiAvLyAlcwotCi0iIiIgJSAobWFjcm9QcmVmaXgsIG1hY3JvUHJlZml4LCBtYWNy
b1ByZWZpeCwgaW5jbHVkZUd1YXJkKSkKLQotYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgi
IiIlcwotJXMKLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiJXMiCi0KLSIiIiAg
JSAoZ2VuZXJhdG9yU3RyaW5nLCBjb3B5cmlnaHRUZXh0LCBoZWFkZXJOYW1lKSkKLQotd3JpdGVJ
bmNsdWRlRGlyZWN0aXZlcyhidWlsdGluc0ltcGxlbWVudGF0aW9uLCBjb250ZW50SW5jbHVkZXMp
Ci0KLWJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIiCi1uYW1lc3BhY2UgJXMgewotCi0i
IiIgICUgKG5hbWVzcGFjZSkpCi0KLQotCi1mb3IgKGNvZGVSZWZlcmVuY2UsIGZ1bmN0aW9uKSBp
biBjb2RlUmVmZXJlbmNlczoKLSAgICBzb3VyY2UgPSBmdW5jdGlvbi5zb3VyY2UKLSAgICBzb3Vy
Y2UgPSAiKGZ1bmN0aW9uICIgKyBzb3VyY2Vbc291cmNlLmluZGV4KCIoIik6XSArICIpIgotICAg
IGxpbmVzID0ganNvbi5kdW1wcyhzb3VyY2UpWzE6LTFdLnNwbGl0KCJcXG4iKQotICAgIHNvdXJj
ZUxlbmd0aCA9IGxlbihzb3VyY2UpCi0gICAgc291cmNlID0gIiIKLSAgICBmb3IgbGluZSBpbiBs
aW5lczoKLSAgICAgICAgc291cmNlID0gc291cmNlICsgKCIgICAgXCIlc1xcblwiIFxcXG4iICUg
bGluZSkKLSAgICBidWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCJjb25zdCBjaGFyKiBzXyVz
ID1cbiVzO1xuXG4iICUgKGNvZGVSZWZlcmVuY2UsIHNvdXJjZSkpCi0gICAgYnVpbHRpbnNJbXBs
ZW1lbnRhdGlvbi53cml0ZSgiY29uc3QgaW50IHNfJXNMZW5ndGggPSAlZDtcblxuIiAlIChjb2Rl
UmVmZXJlbmNlLCBzb3VyY2VMZW5ndGggKyAxKSkgIyArIDEgZm9yIFxuCi0gICAgY29uc3RydWN0
QWJpbGl0eSA9ICJKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdCIKLSAgICBp
ZiBmdW5jdGlvbi5pc0NvbnN0cnVjdG9yOgotICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0gIkpT
Qzo6Q29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0IgotICAgIGJ1aWx0aW5zSW1wbGVtZW50
YXRpb24ud3JpdGUoImNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzXyVzQ29uc3RydWN0QWJp
bGl0eSA9ICVzO1xuXG4iICUgKGNvZGVSZWZlcmVuY2UsIGNvbnN0cnVjdEFiaWxpdHkpKSAjICsg
MSBmb3IgXG4KLQotYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiIiIKLSNkZWZpbmUgREVG
SU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291
bnQpIFxcCi1KU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6
OlZNJiB2bSkgXFwKLSIiIik7Ci0KLWlmIChuYW1lc3BhY2UgPT0gIkpTQyIpOgotICAgIGJ1aWx0
aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIie1xcCi0gICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVj
dXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhl
Y3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsgXFwKLSIiIikKLWVsc2U6Ci0gICAgYnVp
bHRpbk5hbWUgPSBzY29wZU5hbWVbMF0ubG93ZXIoKSArIHNjb3BlTmFtZVsxOl0KLSAgICBidWls
dGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIntcXAotICAgIEpTVk1DbGllbnREYXRhKiBjbGll
bnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXFwK
LSAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiVzKCkuY29kZU5hbWUj
I0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiVz
KCkuY29kZU5hbWUjI1NvdXJjZSgpKTsgXFwKLSIiIiUgKGJ1aWx0aW5OYW1lLCBidWlsdGluTmFt
ZSkpCi0KLWJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoIiIifQotJXNfRk9SRUFDSF9CVUlM
VElOKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKLSN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5F
UkFUT1IKLX0KLQotIiIiJSAobWFjcm9QcmVmaXgpKQotCi1idWlsdGluc0hlYWRlci5jbG9zZSgp
Ci1idWlsdGluc0ltcGxlbWVudGF0aW9uLmNsb3NlKCkKLQotaWYgKG5vdCBvcy5wYXRoLmV4aXN0
cyhvdXRwdXRfYmFzZSArICIuaCIpKSBvciAobm90IGZpbGVjbXAuY21wKG91dHB1dF9iYXNlICsg
Ii5oLnRtcCIsIG91dHB1dF9iYXNlICsgIi5oIiwgc2hhbGxvdz1GYWxzZSkpOgotICAgIGlmIChv
cy5wYXRoLmV4aXN0cyhvdXRwdXRfYmFzZSArICIuaCIpKToKLSAgICAgICAgb3MucmVtb3ZlKG91
dHB1dF9iYXNlICsgIi5oIikKLSAgICBvcy5yZW5hbWUob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwg
b3V0cHV0X2Jhc2UgKyAiLmgiKQotZWxzZToKLSAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAi
LmgudG1wIikKLQotaWYgKG5vdCBvcy5wYXRoLmV4aXN0cyhvdXRwdXRfYmFzZSArICIuY3BwIikp
IG9yIChub3QgZmlsZWNtcC5jbXAob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCBvdXRwdXRfYmFz
ZSArICIuY3BwIiwgc2hhbGxvdz1GYWxzZSkpOgotICAgIGlmIChvcy5wYXRoLmV4aXN0cyhvdXRw
dXRfYmFzZSArICIuY3BwIikpOgotICAgICAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2UgKyAiLmNw
cCIpCi0gICAgb3MucmVuYW1lKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIiwgb3V0cHV0X2Jhc2Ug
KyAiLmNwcCIpCi1lbHNlOgotICAgIG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1i
dWlsdGlucy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1
aWx0aW5zLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3MDcwOWI0ODA4Mzg4ZTY3OGYzZGIyMzgyZjQ2YTNkNjMz
MzkwNmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9n
ZW5lcmF0ZS1qcy1idWlsdGlucy5weQpAQCAtMCwwICsxLDE2NCBAQAorIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisjIFRoaXMgc2NyaXB0IGdlbmVyYXRlcyBDKysgYmluZGluZ3MgZm9yIEphdmFT
Y3JpcHQgYnVpbHRpbnMuCisjIEdlbmVyYXRvcnMgZm9yIGluZGl2aWR1YWwgZmlsZXMgYXJlIGxv
Y2F0ZWQgaW4gdGhlIGJ1aWx0aW5zLyBkaXJlY3RvcnkuCisKK2ltcG9ydCBmbm1hdGNoCitpbXBv
cnQgbG9nZ2luZworaW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgb3MKKworbG9nZ2luZy5iYXNpY0Nv
bmZpZyhmb3JtYXQ9JyUobGV2ZWxuYW1lKXM6ICUobWVzc2FnZSlzJywgbGV2ZWw9bG9nZ2luZy5F
UlJPUikKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwnKQorCitmcm9tIGxhenl3cml0
ZXIgaW1wb3J0IExhenlGaWxlV3JpdGVyCisKK2ltcG9ydCBidWlsdGlucworZnJvbSBidWlsdGlu
cyBpbXBvcnQgKgorCisKK2RlZiBnZW5lcmF0ZV9iaW5kaW5nc19mb3JfYnVpbHRpbnNfZmlsZXMo
YnVpbHRpbnNfZmlsZXM9W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG91dHB1dF9wYXRoPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbmNhdGVuYXRlX291dHB1dD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29tYmluZWRfb3V0cHV0PUZhbHNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZXdvcmtfbmFtZT0iIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2Vfb3V0cHV0PUZhbHNlKToKKworICAg
IGdlbmVyYXRvcnMgPSBbXQorCisgICAgbW9kZWwgPSBCdWlsdGluc0NvbGxlY3Rpb24oZnJhbWV3
b3JrX25hbWU9ZnJhbWV3b3JrX25hbWUpCisKKyAgICBmb3IgZmlsZXBhdGggaW4gYnVpbHRpbnNf
ZmlsZXM6CisgICAgICAgIHdpdGggb3BlbihmaWxlcGF0aCwgInIiKSBhcyBmaWxlOgorICAgICAg
ICAgICAgZmlsZV90ZXh0ID0gZmlsZS5yZWFkKCkKKyAgICAgICAgICAgIGZpbGVfbmFtZSA9IG9z
LnBhdGguYmFzZW5hbWUoZmlsZXBhdGgpCisKKyAgICAgICAgICAgICMgSWYgdGhpcyBpcyBhIHRl
c3QgZmlsZSwgdGhlbiByZXdyaXRlIHRoZSBmaWxlbmFtZSB0byByZW1vdmUgdGhlCisgICAgICAg
ICAgICAjIHRlc3QgcnVubmluZyBvcHRpb25zIGVuY29kZWQgaW50byB0aGUgZmlsZW5hbWUuCisg
ICAgICAgICAgICBpZiBmaWxlX25hbWUuc3RhcnRzd2l0aChmcmFtZXdvcmtfbmFtZSk6CisgICAg
ICAgICAgICAgICAgKF8sIG9iamVjdF9uYW1lLCBfKSA9IGZpbGVfbmFtZS5zcGxpdCgnLScpCisg
ICAgICAgICAgICAgICAgZmlsZV9uYW1lID0gb2JqZWN0X25hbWUgKyAnLmpzJworICAgICAgICAg
ICAgbW9kZWwucGFyc2VfYnVpbHRpbnNfZmlsZShmaWxlX25hbWUsIGZpbGVfdGV4dCkKKworICAg
IGlmIGNvbWJpbmVkX291dHB1dDoKKyAgICAgICAgbG9nLmRlYnVnKCJVc2luZyBnZW5lcmF0b3Ig
c3R5bGU6IGNvbWJpbmVkIGZpbGVzIGZvciBhbGwgYnVpbHRpbnMuIikKKyAgICAgICAgZ2VuZXJh
dG9ycy5hcHBlbmQoQnVpbHRpbnNDb21iaW5lZEhlYWRlckdlbmVyYXRvcihtb2RlbCkpCisgICAg
ICAgIGdlbmVyYXRvcnMuYXBwZW5kKEJ1aWx0aW5zQ29tYmluZWRJbXBsZW1lbnRhdGlvbkdlbmVy
YXRvcihtb2RlbCkpCisgICAgZWxzZToKKyAgICAgICAgbG9nLmRlYnVnKCJVc2luZyBnZW5lcmF0
b3Igc3R5bGU6IHNpbmdsZSBmaWxlcyBmb3IgZWFjaCBidWlsdGluLiIpCisgICAgICAgIGZvciBv
YmplY3QgaW4gbW9kZWwub2JqZWN0czoKKyAgICAgICAgICAgIGdlbmVyYXRvcnMuYXBwZW5kKEJ1
aWx0aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0b3IobW9kZWwsIG9iamVjdCkpCisgICAgICAgICAg
ICBnZW5lcmF0b3JzLmFwcGVuZChCdWlsdGluc1NlcGFyYXRlSW1wbGVtZW50YXRpb25HZW5lcmF0
b3IobW9kZWwsIG9iamVjdCkpCisKKyAgICAgICAgICAgIGlmIG1vZGVsLmZyYW1ld29yayBpcyBG
cmFtZXdvcmtzLldlYkNvcmU6CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQoQnVp
bHRpbnNTZXBhcmF0ZVdyYXBwZXJHZW5lcmF0b3IobW9kZWwsIG9iamVjdCkpCisKKyAgICBsb2cu
ZGVidWcoIiIpCisgICAgbG9nLmRlYnVnKCJHZW5lcmF0aW5nIGJpbmRpbmdzIGZvciBidWlsdGlu
cy4iKQorCisgICAgdGVzdF9yZXN1bHRfZmlsZV9jb250ZW50cyA9IFtdCisKKyAgICBmb3IgZ2Vu
ZXJhdG9yIGluIGdlbmVyYXRvcnM6CisgICAgICAgIG91dHB1dF9maWxlcGF0aCA9IG9zLnBhdGgu
am9pbihvdXRwdXRfcGF0aCwgZ2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSgpKQorICAgICAgICBs
b2cuZGVidWcoIkdlbmVyYXRpbmcgb3V0cHV0IGZpbGU6ICVzIiAlIGdlbmVyYXRvci5vdXRwdXRf
ZmlsZW5hbWUoKSkKKyAgICAgICAgb3V0cHV0ID0gZ2VuZXJhdG9yLmdlbmVyYXRlX291dHB1dCgp
CisKKyAgICAgICAgbG9nLmRlYnVnKCItLS0iKQorICAgICAgICBsb2cuZGVidWcoIlxuIiArIG91
dHB1dCkKKyAgICAgICAgbG9nLmRlYnVnKCItLS0iKQorICAgICAgICBpZiBjb25jYXRlbmF0ZV9v
dXRwdXQ6CisgICAgICAgICAgICB0ZXN0X3Jlc3VsdF9maWxlX2NvbnRlbnRzLmFwcGVuZCgnIyMj
IEJlZ2luIEZpbGU6ICVzJyAlIGdlbmVyYXRvci5vdXRwdXRfZmlsZW5hbWUoKSkKKyAgICAgICAg
ICAgIHRlc3RfcmVzdWx0X2ZpbGVfY29udGVudHMuYXBwZW5kKG91dHB1dCkKKyAgICAgICAgICAg
IHRlc3RfcmVzdWx0X2ZpbGVfY29udGVudHMuYXBwZW5kKCcjIyMgRW5kIEZpbGU6ICVzJyAlIGdl
bmVyYXRvci5vdXRwdXRfZmlsZW5hbWUoKSkKKyAgICAgICAgICAgIHRlc3RfcmVzdWx0X2ZpbGVf
Y29udGVudHMuYXBwZW5kKCcnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9nLmRlYnVn
KCJXcml0aW5nIGZpbGU6ICVzIiAlIG91dHB1dF9maWxlcGF0aCkKKyAgICAgICAgICAgIG91dHB1
dF9maWxlID0gTGF6eUZpbGVXcml0ZXIob3V0cHV0X2ZpbGVwYXRoLCBmb3JjZV9vdXRwdXQpCisg
ICAgICAgICAgICBvdXRwdXRfZmlsZS53cml0ZShvdXRwdXQpCisgICAgICAgICAgICBvdXRwdXRf
ZmlsZS5jbG9zZSgpCisKKyAgICBpZiBjb25jYXRlbmF0ZV9vdXRwdXQ6CisgICAgICAgIGZpbGVu
YW1lID0gb3MucGF0aC5qb2luKG9zLnBhdGguYmFzZW5hbWUoYnVpbHRpbnNfZmlsZXNbMF0pICsg
Jy1yZXN1bHQnKQorICAgICAgICBvdXRwdXRfZmlsZXBhdGggPSBvcy5wYXRoLmpvaW4ob3V0cHV0
X3BhdGgsIGZpbGVuYW1lKQorICAgICAgICBsb2cuZGVidWcoIldyaXRpbmcgZmlsZTogJXMiICUg
b3V0cHV0X2ZpbGVwYXRoKSAKKyAgICAgICAgb3V0cHV0X2ZpbGUgPSBMYXp5RmlsZVdyaXRlcihv
dXRwdXRfZmlsZXBhdGgsIGZvcmNlX291dHB1dCkKKyAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUo
J1xuJy5qb2luKHRlc3RfcmVzdWx0X2ZpbGVfY29udGVudHMpKQorICAgICAgICBvdXRwdXRfZmls
ZS5jbG9zZSgpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgYWxsb3dlZF9mcmFt
ZXdvcmtfbmFtZXMgPSBbJ0phdmFTY3JpcHRDb3JlJywgJ1dlYkNvcmUnXQorICAgIGNsaV9wYXJz
ZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2U9InVzYWdlOiAlcHJvZyBbb3B0aW9uc10g
QnVpbHRpbjEuanMgWywgQnVpbHRpbjIuanMsIC4uLl0iKQorICAgIGNsaV9wYXJzZXIuYWRkX29w
dGlvbigiLWkiLCAiLS1pbnB1dC1kaXJlY3RvcnkiLCBoZWxwPSJJZiBzcGVjaWZpZWQsIGdlbmVy
YXRlcyBidWlsdGlucyBmcm9tIGFsbCBKYXZhU2NyaXB0IGZpbGVzIGluIHRoZSBzcGVjaWZpZWQg
ZGlyZWN0b3J5IGluIGFkZGl0aW9uIHRvIHNwZWNpZmljIGZpbGVzIHBhc3NlZCBhcyBhcmd1bWVu
dHMuIikKKyAgICBjbGlfcGFyc2VyLmFkZF9vcHRpb24oIi1vIiwgIi0tb3V0cHV0LWRpcmVjdG9y
eSIsIGhlbHA9IkRpcmVjdG9yeSB3aGVyZSBnZW5lcmF0ZWQgZmlsZXMgc2hvdWxkIGJlIHdyaXR0
ZW4uIikKKyAgICBjbGlfcGFyc2VyLmFkZF9vcHRpb24oIi0tZnJhbWV3b3JrIiwgdHlwZT0iY2hv
aWNlIiwgY2hvaWNlcz1hbGxvd2VkX2ZyYW1ld29ya19uYW1lcywgaGVscD0iRGVzdGluYXRpb24g
ZnJhbWV3b3JrIGZvciBnZW5lcmF0ZWQgZmlsZXMuIikKKyAgICBjbGlfcGFyc2VyLmFkZF9vcHRp
b24oIi0tZm9yY2UiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJGb3JjZSBvdXRwdXQgb2Yg
Z2VuZXJhdGVkIHNjcmlwdHMsIGV2ZW4gaWYgbm90aGluZyBjaGFuZ2VkLiIpCisgICAgY2xpX3Bh
cnNlci5hZGRfb3B0aW9uKCItLWNvbWJpbmVkIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0i
UHJvZHVjZSBvbmUgLmgvLmNwcCBmaWxlIGluc3RlYWQgb2YgcHJvZHVjaW5nIG9uZSBwZXIgYnVp
bHRpbiBvYmplY3QuIikKKyAgICBjbGlfcGFyc2VyLmFkZF9vcHRpb24oIi12IiwgIi0tZGVidWci
LCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJMb2cgZXh0cmEgb3V0cHV0IGZvciBkZWJ1Z2dp
bmcgdGhlIGdlbmVyYXRvciBpdHNlbGYuIikKKyAgICBjbGlfcGFyc2VyLmFkZF9vcHRpb24oIi10
IiwgIi0tdGVzdCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IkVuYWJsZSB0ZXN0IG1vZGUu
IikKKworICAgIGFyZ19vcHRpb25zLCBhcmdfdmFsdWVzID0gY2xpX3BhcnNlci5wYXJzZV9hcmdz
KCkKKyAgICBpZiBsZW4oYXJnX3ZhbHVlcykgaXMgMCBhbmQgbm90IGFyZ19vcHRpb25zLmlucHV0
X2RpcmVjdG9yeToKKyAgICAgICAgcmFpc2UgUGFyc2VFeGNlcHRpb24oIkF0IGxlYXN0IG9uZSBp
bnB1dCBmaWxlIG9yIGRpcmVjdG9yeSBleHBlY3RlZC4iKQorCisgICAgaWYgbm90IGFyZ19vcHRp
b25zLm91dHB1dF9kaXJlY3Rvcnk6CisgICAgICAgIHJhaXNlIFBhcnNlRXhjZXB0aW9uKCJNaXNz
aW5nIG91dHB1dCBkaXJlY3RvcnkuIikKKworICAgIGlmIGFyZ19vcHRpb25zLmRlYnVnOgorICAg
ICAgICBsb2cuc2V0TGV2ZWwobG9nZ2luZy5ERUJVRykKKworICAgIGlucHV0X2ZpbGVwYXRocyA9
IGFyZ192YWx1ZXNbOl0KKyAgICBpZiBhcmdfb3B0aW9ucy5pbnB1dF9kaXJlY3Rvcnk6CisgICAg
ICAgIGZvciBmaWxlcGF0aCBpbiBvcy5saXN0ZGlyKGFyZ19vcHRpb25zLmlucHV0X2RpcmVjdG9y
eSk6CisgICAgICAgICAgICBpbnB1dF9maWxlcGF0aHMuYXBwZW5kKG9zLnBhdGguam9pbihhcmdf
b3B0aW9ucy5pbnB1dF9kaXJlY3RvcnksIGZpbGVwYXRoKSkKKworICAgIGlucHV0X2ZpbGVwYXRo
cyA9IGZpbHRlcihsYW1iZGEgbmFtZTogZm5tYXRjaC5mbm1hdGNoKG5hbWUsICcqLmpzJyksIGlu
cHV0X2ZpbGVwYXRocykKKworICAgIG9wdGlvbnMgPSB7CisgICAgICAgICdvdXRwdXRfcGF0aCc6
IGFyZ19vcHRpb25zLm91dHB1dF9kaXJlY3RvcnksCisgICAgICAgICdmcmFtZXdvcmtfbmFtZSc6
IGFyZ19vcHRpb25zLmZyYW1ld29yaywKKyAgICAgICAgJ2NvbWJpbmVkX291dHB1dCc6IGFyZ19v
cHRpb25zLmNvbWJpbmVkLAorICAgICAgICAnZm9yY2Vfb3V0cHV0JzogYXJnX29wdGlvbnMuZm9y
Y2UsCisgICAgICAgICdjb25jYXRlbmF0ZV9vdXRwdXQnOiBhcmdfb3B0aW9ucy50ZXN0LAorICAg
IH0KKworICAgIGxvZy5kZWJ1ZygiR2VuZXJhdGluZyBjb2RlIGZvciBidWlsdGlucy4iKQorICAg
IGxvZy5kZWJ1ZygiUGFyc2VkIG9wdGlvbnM6IikKKyAgICBmb3Igb3B0aW9uLCB2YWx1ZSBpbiBv
cHRpb25zLml0ZW1zKCk6CisgICAgICAgIGxvZy5kZWJ1ZygiICAgICVzOiAlcyIgJSAob3B0aW9u
LCB2YWx1ZSkpCisgICAgbG9nLmRlYnVnKCIiKQorICAgIGxvZy5kZWJ1ZygiSW5wdXQgZmlsZXM6
IikKKyAgICBmb3IgZmlsZXBhdGggaW4gaW5wdXRfZmlsZXBhdGhzOgorICAgICAgICBsb2cuZGVi
dWcoIiAgICAlcyIgJSBmaWxlcGF0aCkKKyAgICBsb2cuZGVidWcoIiIpCisKKyAgICB0cnk6Cisg
ICAgICAgIGdlbmVyYXRlX2JpbmRpbmdzX2Zvcl9idWlsdGluc19maWxlcyhidWlsdGluc19maWxl
cz1pbnB1dF9maWxlcGF0aHMsICoqb3B0aW9ucykKKyAgICBleGNlcHQgUGFyc2VFeGNlcHRpb24g
YXMgZToKKyAgICAgICAgaWYgYXJnX29wdGlvbnMudGVzdDoKKyAgICAgICAgICAgIGxvZy5lcnJv
cihlLm1lc3NhZ2UpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSAgIyBGb3JjZSB0
aGUgYnVpbGQgdG8gZmFpbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL2xhenl3cml0ZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9sYXp5d3Jp
dGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY5M2EyYzY5N2NhY2JkNzc0MWZlOTk4ZWYxOTBlYjFjZDZmMjQ1
MzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9sYXp5
d3JpdGVyLnB5CkBAIC0wLDAgKzEsNTggQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBD
b3B5cmlnaHQgKGMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5
cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgQSB3cml0ZXIgdGhhdCBvbmx5IHVw
ZGF0ZXMgZmlsZSBpZiBpdCBhY3R1YWxseSBjaGFuZ2VkLgorCisKK2NsYXNzIExhenlGaWxlV3Jp
dGVyOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlcGF0aCwgZm9yY2Vfb3V0cHV0KToKKyAg
ICAgICAgc2VsZi5fZmlsZXBhdGggPSBmaWxlcGF0aAorICAgICAgICBzZWxmLl9vdXRwdXQgPSAi
IgorICAgICAgICBzZWxmLmZvcmNlX291dHB1dCA9IGZvcmNlX291dHB1dAorCisgICAgZGVmIHdy
aXRlKHNlbGYsIHRleHQpOgorICAgICAgICBzZWxmLl9vdXRwdXQgKz0gdGV4dAorCisgICAgZGVm
IGNsb3NlKHNlbGYpOgorICAgICAgICB0ZXh0X2NoYW5nZWQgPSBUcnVlCisgICAgICAgIHNlbGYu
X291dHB1dCA9IHNlbGYuX291dHB1dC5yc3RyaXAoKSArICJcbiIKKworICAgICAgICB0cnk6Cisg
ICAgICAgICAgICBpZiBzZWxmLmZvcmNlX291dHB1dDoKKyAgICAgICAgICAgICAgICByYWlzZQor
CisgICAgICAgICAgICByZWFkX2ZpbGUgPSBvcGVuKHNlbGYuX2ZpbGVwYXRoLCAiciIpCisgICAg
ICAgICAgICBvbGRfdGV4dCA9IHJlYWRfZmlsZS5yZWFkKCkKKyAgICAgICAgICAgIHJlYWRfZmls
ZS5jbG9zZSgpCisgICAgICAgICAgICB0ZXh0X2NoYW5nZWQgPSBvbGRfdGV4dCAhPSBzZWxmLl9v
dXRwdXQKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgIyBJZ25vcmUsIGp1c3Qgb3Zlcndy
aXRlIGJ5IGRlZmF1bHQKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBpZiB0ZXh0X2NoYW5n
ZWQgb3Igc2VsZi5mb3JjZV9vdXRwdXQ6CisgICAgICAgICAgICBvdXRfZmlsZSA9IG9wZW4oc2Vs
Zi5fZmlsZXBhdGgsICJ3IikKKyAgICAgICAgICAgIG91dF9maWxlLndyaXRlKHNlbGYuX291dHB1
dCkKKyAgICAgICAgICAgIG91dF9maWxlLmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4u
UHJvbWlzZS1Db21iaW5lZC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3Rz
L2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1Db21iaW5lZC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iNDVkODFjZWI5ZWQ5MDY0MjU4NGZhMGJiNDU4ZGNmMGRiYWRjM2EyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
SmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzCkBAIC0wLDAgKzEsNTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
ZnVuY3Rpb24gcmVqZWN0UHJvbWlzZShwcm9taXNlLCByZWFzb24pCit7CisgICAgInVzZSBzdHJp
Y3QiOworCisgICAgdmFyIHJlYWN0aW9ucyA9IHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlv
bnM7CisgICAgcHJvbWlzZS5AcHJvbWlzZVJlc3VsdCA9IHJlYXNvbjsKKyAgICBwcm9taXNlLkBw
cm9taXNlRnVsZmlsbFJlYWN0aW9ucyA9IHVuZGVmaW5lZDsKKyAgICBwcm9taXNlLkBwcm9taXNl
UmVqZWN0UmVhY3Rpb25zID0gdW5kZWZpbmVkOworICAgIHByb21pc2UuQHByb21pc2VTdGF0ZSA9
IEBwcm9taXNlUmVqZWN0ZWQ7CisKKyAgICBASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLnByb21p
c2VSZWplY3RlZChwcm9taXNlLCByZWFzb24sIHJlYWN0aW9ucyk7CisKKyAgICBAdHJpZ2dlclBy
b21pc2VSZWFjdGlvbnMocmVhY3Rpb25zLCByZWFzb24pOworfQorCitmdW5jdGlvbiBmdWxmaWxs
UHJvbWlzZShwcm9taXNlLCB2YWx1ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIg
cmVhY3Rpb25zID0gcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlvbnM7CisgICAgcHJvbWlz
ZS5AcHJvbWlzZVJlc3VsdCA9IHZhbHVlOworICAgIHByb21pc2UuQHByb21pc2VGdWxmaWxsUmVh
Y3Rpb25zID0gdW5kZWZpbmVkOworICAgIHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnMg
PSB1bmRlZmluZWQ7CisgICAgcHJvbWlzZS5AcHJvbWlzZVN0YXRlID0gQHByb21pc2VGdWxmaWxs
ZWQ7CisKKyAgICBASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLnByb21pc2VGdWxmaWxsZWQocHJv
bWlzZSwgdmFsdWUsIHJlYWN0aW9ucyk7CisKKyAgICBAdHJpZ2dlclByb21pc2VSZWFjdGlvbnMo
cmVhY3Rpb25zLCB2YWx1ZSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtU2Vw
YXJhdGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9K
YXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtU2VwYXJhdGUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ1
ZDgxY2ViOWVkOTA2NDI1ODRmYTBiYjQ1OGRjZjBkYmFkYzNhMgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRD
b3JlLUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS5qcwpAQCAtMCwwICsxLDU0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4u
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIHJl
amVjdFByb21pc2UocHJvbWlzZSwgcmVhc29uKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAg
IHZhciByZWFjdGlvbnMgPSBwcm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25zOworICAgIHBy
b21pc2UuQHByb21pc2VSZXN1bHQgPSByZWFzb247CisgICAgcHJvbWlzZS5AcHJvbWlzZUZ1bGZp
bGxSZWFjdGlvbnMgPSB1bmRlZmluZWQ7CisgICAgcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0
aW9ucyA9IHVuZGVmaW5lZDsKKyAgICBwcm9taXNlLkBwcm9taXNlU3RhdGUgPSBAcHJvbWlzZVJl
amVjdGVkOworCisgICAgQEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5wcm9taXNlUmVqZWN0ZWQo
cHJvbWlzZSwgcmVhc29uLCByZWFjdGlvbnMpOworCisgICAgQHRyaWdnZXJQcm9taXNlUmVhY3Rp
b25zKHJlYWN0aW9ucywgcmVhc29uKTsKK30KKworZnVuY3Rpb24gZnVsZmlsbFByb21pc2UocHJv
bWlzZSwgdmFsdWUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIHJlYWN0aW9ucyA9
IHByb21pc2UuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zOworICAgIHByb21pc2UuQHByb21pc2VS
ZXN1bHQgPSB2YWx1ZTsKKyAgICBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucyA9IHVu
ZGVmaW5lZDsKKyAgICBwcm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25zID0gdW5kZWZpbmVk
OworICAgIHByb21pc2UuQHByb21pc2VTdGF0ZSA9IEBwcm9taXNlRnVsZmlsbGVkOworCisgICAg
QEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5wcm9taXNlRnVsZmlsbGVkKHByb21pc2UsIHZhbHVl
LCByZWFjdGlvbnMpOworCisgICAgQHRyaWdnZXJQcm9taXNlUmVhY3Rpb25zKHJlYWN0aW9ucywg
dmFsdWUpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0
Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDQ4Yjk4MzJi
NjZhNGJkZjBmZTJjNGJkODcwMTBmNjBhZDcyZGYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVp
bHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCitmdW5jdGlvbiBl
dmVyeShjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAg
ICBpZiAodGhpcyA9PT0gbnVsbCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5
LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCIpOworICAg
IAorICAgIGlmICh0aGlzID09PSB1bmRlZmluZWQpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVy
cm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVu
ZGVmaW5lZCIpOworICAgIAorICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7CisgICAgdmFy
IGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpOworCisgICAgaWYgKHR5cGVvZiBjYWxs
YmFjayAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5
LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKKyAgICAKKyAg
ICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5k
ZWZpbmVkOworICAgIAorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgaWYgKCEoaSBpbiBhcnJheSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
aWYgKCFjYWxsYmFjay5AY2FsbCh0aGlzQXJnLCBhcnJheVtpXSwgaSwgYXJyYXkpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
ZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykKK3sKKyAgICAidXNlIHN0
cmljdCI7CisKKyAgICBpZiAodGhpcyA9PT0gbnVsbCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBl
RXJyb3IoIkFycmF5LnByb3RvdHlwZS5mb3JFYWNoIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBi
ZSBudWxsIik7CisgICAgCisgICAgaWYgKHRoaXMgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgdGhy
b3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5mb3JFYWNoIHJlcXVpcmVzIHRoYXQg
fHRoaXN8IG5vdCBiZSB1bmRlZmluZWQiKTsKKyAgICAKKyAgICB2YXIgYXJyYXkgPSBAT2JqZWN0
KHRoaXMpOworICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsKKworICAg
IGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlvbiIpCisgICAgICAgIHRocm93IG5ldyBA
VHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCBjYWxsYmFjayBtdXN0IGJlIGEgZnVu
Y3Rpb24iKTsKKyAgICAKKyAgICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8g
YXJndW1lbnRzWzFdIDogdW5kZWZpbmVkOworICAgIAorICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKGkgaW4gYXJyYXkpCisgICAgICAgICAgICBjYWxs
YmFjay5AY2FsbCh0aGlzQXJnLCBhcnJheVtpXSwgaSwgYXJyYXkpOworICAgIH0KK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFT
Y3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLVNlcGFyYXRlLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90
b3R5cGUtU2VwYXJhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQ0OGI5ODMyYjY2YTRiZGYwZmUyYzRiZDg3
MDEwZjYwYWQ3MmRmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLVNl
cGFyYXRlLmpzCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworZnVuY3Rpb24gZXZlcnkoY2FsbGJhY2sgLyos
IHRoaXNBcmcgKi8pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKHRoaXMgPT09IG51
bGwpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkg
cmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwiKTsKKyAgICAKKyAgICBpZiAodGhpcyA9
PT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90
eXBlLmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWQiKTsKKyAgICAK
KyAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMpOworICAgIHZhciBsZW5ndGggPSBAdG9MZW5n
dGgoYXJyYXkubGVuZ3RoKTsKKworICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlv
biIpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkg
Y2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CisgICAgCisgICAgdmFyIHRoaXNBcmcgPSBh
cmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDsKKyAgICAKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghKGkgaW4g
YXJyYXkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghY2FsbGJhY2suQGNh
bGwodGhpc0FyZywgYXJyYXlbaV0sIGksIGFycmF5KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIGZvckVhY2go
Y2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgaWYg
KHRoaXMgPT09IG51bGwpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90
b3R5cGUuZm9yRWFjaCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCIpOworICAgIAor
ICAgIGlmICh0aGlzID09PSB1bmRlZmluZWQpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9y
KCJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5k
ZWZpbmVkIik7CisgICAgCisgICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTsKKyAgICB2YXIg
bGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7CisKKyAgICBpZiAodHlwZW9mIGNhbGxi
YWNrICE9PSAiZnVuY3Rpb24iKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXku
cHJvdG90eXBlLmZvckVhY2ggY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CisgICAgCisg
ICAgdmFyIHRoaXNBcmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVu
ZGVmaW5lZDsKKyAgICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Cisg
ICAgICAgIGlmIChpIGluIGFycmF5KQorICAgICAgICAgICAgY2FsbGJhY2suQGNhbGwodGhpc0Fy
ZywgYXJyYXlbaV0sIGksIGFycmF5KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGlu
Q29uc3RydWN0b3ItQ29tYmluZWQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmluZWQu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWU4YzFiNDQ5NmNjNTQ0ZjQwNzczOTUwNDJjZmQyNGU4YTM5NDY2MQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1
aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qcwpAQCAt
MCwwICsxLDExMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKK2Z1bmN0aW9uIG9mKC8qIGl0ZW1zLi4uICovKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKwor
ICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOworICAgIC8vIFRPRE86IE5lZWQgaXND
b25zdHJ1Y3Rvcih0aGlzKSBpbnN0ZWFkIG9mIHR5cGVvZiAiZnVuY3Rpb24iIGNoZWNrLgorICAg
IHZhciBhcnJheSA9IHR5cGVvZiB0aGlzID09PSAnZnVuY3Rpb24nID8gbmV3IHRoaXMobGVuZ3Ro
KSA6IG5ldyBAQXJyYXkobGVuZ3RoKTsKKyAgICBmb3IgKHZhciBrID0gMDsgayA8IGxlbmd0aDsg
KytrKQorICAgICAgICBAcHV0QnlWYWxEaXJlY3QoYXJyYXksIGssIGFyZ3VtZW50c1trXSk7Cisg
ICAgYXJyYXkubGVuZ3RoID0gbGVuZ3RoOworICAgIHJldHVybiBhcnJheTsKK30KKworZnVuY3Rp
b24gZnJvbShpdGVtcyAvKiwgbWFwRm4sIHRoaXNBcmcgKi8pCit7CisgICAgInVzZSBzdHJpY3Qi
OworCisgICAgdmFyIHRoaXNPYmogPSB0aGlzOworCisgICAgdmFyIG1hcEZuID0gYXJndW1lbnRz
Lmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7CisKKyAgICB2YXIgdGhpc0Fy
ZzsKKworICAgIGlmIChtYXBGbiAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgIGlmICh0eXBlb2Yg
bWFwRm4gIT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigi
QXJyYXkuZnJvbSByZXF1aXJlcyB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQsIHdoZW4gcHJvdmlk
ZWQsIGJlIGEgZnVuY3Rpb24iKTsKKworICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIp
CisgICAgICAgICAgICB0aGlzQXJnID0gYXJndW1lbnRzWzJdOworICAgIH0KKworICAgIGlmIChp
dGVtcyA9PSBudWxsKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkuZnJvbSBy
ZXF1aXJlcyBhbiBhcnJheS1saWtlIG9iamVjdCAtIG5vdCBudWxsIG9yIHVuZGVmaW5lZCIpOwor
CisgICAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gaXRlbXNbQHN5bWJvbEl0ZXJhdG9yXTsKKyAgICBp
ZiAoaXRlcmF0b3JNZXRob2QgIT0gbnVsbCkgeworICAgICAgICBpZiAodHlwZW9mIGl0ZXJhdG9y
TWV0aG9kICE9PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3Io
IkFycmF5LmZyb20gcmVxdWlyZXMgdGhhdCB0aGUgcHJvcGVydHkgb2YgdGhlIGZpcnN0IGFyZ3Vt
ZW50LCBpdGVtc1tTeW1ib2wuaXRlcmF0b3JdLCB3aGVuIGV4aXN0cywgYmUgYSBmdW5jdGlvbiIp
OworCisgICAgICAgIC8vIFRPRE86IE5lZWQgaXNDb25zdHJ1Y3Rvcih0aGlzT2JqKSBpbnN0ZWFk
IG9mIHR5cGVvZiAiZnVuY3Rpb24iIGNoZWNrLgorICAgICAgICB2YXIgcmVzdWx0ID0gKHR5cGVv
ZiB0aGlzT2JqID09PSAiZnVuY3Rpb24iKSA/IEBPYmplY3QobmV3IHRoaXNPYmooKSkgOiBbXTsK
KworICAgICAgICB2YXIgayA9IDA7CisgICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yTWV0
aG9kLkBjYWxsKGl0ZW1zKTsKKworICAgICAgICAvLyBTaW5jZSBmb3Itb2YgbG9vcCBvbmNlIG1v
cmUgbG9va3MgdXAgdGhlIEBAaXRlcmF0b3IgcHJvcGVydHkgb2YgYSBnaXZlbiBpdGVyYWJsZSwK
KyAgICAgICAgLy8gaXQgY291bGQgYmUgb2JzZXJ2YWJsZSBpZiB0aGUgdXNlciBkZWZpbmVzIGEg
Z2V0dGVyIGZvciBAQGl0ZXJhdG9yLgorICAgICAgICAvLyBUbyBhdm9pZCB0aGlzIHNpdHVhdGlv
biwgd2UgZGVmaW5lIGEgd3JhcHBlciBvYmplY3QgdGhhdCBAQGl0ZXJhdG9yIGp1c3QgcmV0dXJu
cyBhIGdpdmVuIGl0ZXJhdG9yLgorICAgICAgICB2YXIgd3JhcHBlciA9IHsKKyAgICAgICAgICAg
IFtAc3ltYm9sSXRlcmF0b3JdKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBmb3IgKHZhciB2YWx1ZSBvZiB3
cmFwcGVyKSB7CisgICAgICAgICAgICBpZiAobWFwRm4pCisgICAgICAgICAgICAgICAgQHB1dEJ5
VmFsRGlyZWN0KHJlc3VsdCwgaywgdGhpc0FyZyA9PT0gdW5kZWZpbmVkID8gbWFwRm4odmFsdWUs
IGspIDogbWFwRm4uQGNhbGwodGhpc0FyZywgdmFsdWUsIGspKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB2YWx1ZSk7CisgICAg
ICAgICAgICBrICs9IDE7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQubGVuZ3RoID0gazsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB2YXIgYXJyYXlMaWtlID0gQE9i
amVjdChpdGVtcyk7CisgICAgdmFyIGFycmF5TGlrZUxlbmd0aCA9IEB0b0xlbmd0aChhcnJheUxp
a2UubGVuZ3RoKTsKKworICAgIC8vIFRPRE86IE5lZWQgaXNDb25zdHJ1Y3Rvcih0aGlzT2JqKSBp
bnN0ZWFkIG9mIHR5cGVvZiAiZnVuY3Rpb24iIGNoZWNrLgorICAgIHZhciByZXN1bHQgPSAodHlw
ZW9mIHRoaXNPYmogPT09ICJmdW5jdGlvbiIpID8gQE9iamVjdChuZXcgdGhpc09iaihhcnJheUxp
a2VMZW5ndGgpKSA6IG5ldyBAQXJyYXkoYXJyYXlMaWtlTGVuZ3RoKTsKKworICAgIHZhciBrID0g
MDsKKyAgICB3aGlsZSAoayA8IGFycmF5TGlrZUxlbmd0aCkgeworICAgICAgICB2YXIgdmFsdWUg
PSBhcnJheUxpa2Vba107CisgICAgICAgIGlmIChtYXBGbikKKyAgICAgICAgICAgIEBwdXRCeVZh
bERpcmVjdChyZXN1bHQsIGssIHRoaXNBcmcgPT09IHVuZGVmaW5lZCA/IG1hcEZuKHZhbHVlLCBr
KSA6IG1hcEZuLkBjYWxsKHRoaXNBcmcsIHZhbHVlLCBrKSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHZhbHVlKTsKKyAgICAgICAgayArPSAx
OworICAgIH0KKworICAgIHJlc3VsdC5sZW5ndGggPSBhcnJheUxpa2VMZW5ndGg7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1TZXBhcmF0
ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFT
Y3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1TZXBhcmF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZThj
MWI0NDk2Y2M1NDRmNDA3NzM5NTA0MmNmZDI0ZThhMzk0NjYxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENv
cmUtQnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFyYXRlLmpzCkBAIC0wLDAgKzEsMTEwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rpb24gb2YoLyog
aXRlbXMuLi4gKi8pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIGxlbmd0aCA9IGFy
Z3VtZW50cy5sZW5ndGg7CisgICAgLy8gVE9ETzogTmVlZCBpc0NvbnN0cnVjdG9yKHRoaXMpIGlu
c3RlYWQgb2YgdHlwZW9mICJmdW5jdGlvbiIgY2hlY2suCisgICAgdmFyIGFycmF5ID0gdHlwZW9m
IHRoaXMgPT09ICdmdW5jdGlvbicgPyBuZXcgdGhpcyhsZW5ndGgpIDogbmV3IEBBcnJheShsZW5n
dGgpOworICAgIGZvciAodmFyIGsgPSAwOyBrIDwgbGVuZ3RoOyArK2spCisgICAgICAgIEBwdXRC
eVZhbERpcmVjdChhcnJheSwgaywgYXJndW1lbnRzW2tdKTsKKyAgICBhcnJheS5sZW5ndGggPSBs
ZW5ndGg7CisgICAgcmV0dXJuIGFycmF5OworfQorCitmdW5jdGlvbiBmcm9tKGl0ZW1zIC8qLCBt
YXBGbiwgdGhpc0FyZyAqLykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgdGhpc09i
aiA9IHRoaXM7CisKKyAgICB2YXIgbWFwRm4gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3Vt
ZW50c1sxXSA6IHVuZGVmaW5lZDsKKworICAgIHZhciB0aGlzQXJnOworCisgICAgaWYgKG1hcEZu
ICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgaWYgKHR5cGVvZiBtYXBGbiAhPT0gImZ1bmN0aW9u
IikKKyAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5mcm9tIHJlcXVpcmVz
IHRoYXQgdGhlIHNlY29uZCBhcmd1bWVudCwgd2hlbiBwcm92aWRlZCwgYmUgYSBmdW5jdGlvbiIp
OworCisgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMikKKyAgICAgICAgICAgIHRoaXNB
cmcgPSBhcmd1bWVudHNbMl07CisgICAgfQorCisgICAgaWYgKGl0ZW1zID09IG51bGwpCisgICAg
ICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5mcm9tIHJlcXVpcmVzIGFuIGFycmF5LWxp
a2Ugb2JqZWN0IC0gbm90IG51bGwgb3IgdW5kZWZpbmVkIik7CisKKyAgICB2YXIgaXRlcmF0b3JN
ZXRob2QgPSBpdGVtc1tAc3ltYm9sSXRlcmF0b3JdOworICAgIGlmIChpdGVyYXRvck1ldGhvZCAh
PSBudWxsKSB7CisgICAgICAgIGlmICh0eXBlb2YgaXRlcmF0b3JNZXRob2QgIT09ICJmdW5jdGlv
biIpCisgICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkuZnJvbSByZXF1aXJl
cyB0aGF0IHRoZSBwcm9wZXJ0eSBvZiB0aGUgZmlyc3QgYXJndW1lbnQsIGl0ZW1zW1N5bWJvbC5p
dGVyYXRvcl0sIHdoZW4gZXhpc3RzLCBiZSBhIGZ1bmN0aW9uIik7CisKKyAgICAgICAgLy8gVE9E
TzogTmVlZCBpc0NvbnN0cnVjdG9yKHRoaXNPYmopIGluc3RlYWQgb2YgdHlwZW9mICJmdW5jdGlv
biIgY2hlY2suCisgICAgICAgIHZhciByZXN1bHQgPSAodHlwZW9mIHRoaXNPYmogPT09ICJmdW5j
dGlvbiIpID8gQE9iamVjdChuZXcgdGhpc09iaigpKSA6IFtdOworCisgICAgICAgIHZhciBrID0g
MDsKKyAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JNZXRob2QuQGNhbGwoaXRlbXMpOwor
CisgICAgICAgIC8vIFNpbmNlIGZvci1vZiBsb29wIG9uY2UgbW9yZSBsb29rcyB1cCB0aGUgQEBp
dGVyYXRvciBwcm9wZXJ0eSBvZiBhIGdpdmVuIGl0ZXJhYmxlLAorICAgICAgICAvLyBpdCBjb3Vs
ZCBiZSBvYnNlcnZhYmxlIGlmIHRoZSB1c2VyIGRlZmluZXMgYSBnZXR0ZXIgZm9yIEBAaXRlcmF0
b3IuCisgICAgICAgIC8vIFRvIGF2b2lkIHRoaXMgc2l0dWF0aW9uLCB3ZSBkZWZpbmUgYSB3cmFw
cGVyIG9iamVjdCB0aGF0IEBAaXRlcmF0b3IganVzdCByZXR1cm5zIGEgZ2l2ZW4gaXRlcmF0b3Iu
CisgICAgICAgIHZhciB3cmFwcGVyID0geworICAgICAgICAgICAgW0BzeW1ib2xJdGVyYXRvcl0o
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yOworICAgICAgICAgICAgfQorICAg
ICAgICB9OworCisgICAgICAgIGZvciAodmFyIHZhbHVlIG9mIHdyYXBwZXIpIHsKKyAgICAgICAg
ICAgIGlmIChtYXBGbikKKyAgICAgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBr
LCB0aGlzQXJnID09PSB1bmRlZmluZWQgPyBtYXBGbih2YWx1ZSwgaykgOiBtYXBGbi5AY2FsbCh0
aGlzQXJnLCB2YWx1ZSwgaykpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEBw
dXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHZhbHVlKTsKKyAgICAgICAgICAgIGsgKz0gMTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJlc3VsdC5sZW5ndGggPSBrOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKworICAgIHZhciBhcnJheUxpa2UgPSBAT2JqZWN0KGl0ZW1zKTsKKyAgICB2
YXIgYXJyYXlMaWtlTGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5TGlrZS5sZW5ndGgpOworCisgICAg
Ly8gVE9ETzogTmVlZCBpc0NvbnN0cnVjdG9yKHRoaXNPYmopIGluc3RlYWQgb2YgdHlwZW9mICJm
dW5jdGlvbiIgY2hlY2suCisgICAgdmFyIHJlc3VsdCA9ICh0eXBlb2YgdGhpc09iaiA9PT0gImZ1
bmN0aW9uIikgPyBAT2JqZWN0KG5ldyB0aGlzT2JqKGFycmF5TGlrZUxlbmd0aCkpIDogbmV3IEBB
cnJheShhcnJheUxpa2VMZW5ndGgpOworCisgICAgdmFyIGsgPSAwOworICAgIHdoaWxlIChrIDwg
YXJyYXlMaWtlTGVuZ3RoKSB7CisgICAgICAgIHZhciB2YWx1ZSA9IGFycmF5TGlrZVtrXTsKKyAg
ICAgICAgaWYgKG1hcEZuKQorICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywg
dGhpc0FyZyA9PT0gdW5kZWZpbmVkID8gbWFwRm4odmFsdWUsIGspIDogbWFwRm4uQGNhbGwodGhp
c0FyZywgdmFsdWUsIGspKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQHB1dEJ5VmFsRGly
ZWN0KHJlc3VsdCwgaywgdmFsdWUpOworICAgICAgICBrICs9IDE7CisgICAgfQorCisgICAgcmVz
dWx0Lmxlbmd0aCA9IGFycmF5TGlrZUxlbmd0aDsKKyAgICByZXR1cm4gcmVzdWx0OworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2Vi
Q29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDY4ODdlN2VkY2FkNmIyYTg3ZWY1ZTc4MjlkMjkzY2VmMDFlMzcyMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMKQEAgLTAsMCArMSw2NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIEBvcHRpb25h
bD1TVFJFQU1TX0FQSQorCitmdW5jdGlvbiBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKHN0cmVhbSkK
K3sKKyAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiAhIXN0cmVhbS5AcmVhZGVyOworfQor
CisKK2Z1bmN0aW9uIGNhbmNlbFJlYWRhYmxlU3RyZWFtKHN0cmVhbSwgcmVhc29uKQoreworICAg
ICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJl
YW1DbG9zZWQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAgICBpZiAoc3Ry
ZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZCkKKyAgICAgICAgcmV0dXJuIFBy
b21pc2UucmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpOworICAgIHN0cmVhbS5AcXVldWUgPSBb
XTsKKyAgICBAZmluaXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7CisgICAgcmV0dXJu
IEBwcm9taXNlSW52b2tlT3JOb29wKHN0cmVhbS5AdW5kZXJseWluZ1NvdXJjZSwgImNhbmNlbCIs
IFtyZWFzb25dKS50aGVuKGZ1bmN0aW9uKCkgeyB9KTsKK30KKworCitmdW5jdGlvbiBwcm9taXNl
SW52b2tlT3JOb29wKG9iamVjdCwga2V5LCBhcmdzKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKwor
ICAgIHRyeSB7CisgICAgICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTsKKyAgICAgICAgaWYg
KHR5cGVvZiBtZXRob2QgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgcmV0dXJuIFByb21p
c2UucmVzb2x2ZSgpOworICAgICAgICB2YXIgcmVzdWx0ID0gbWV0aG9kLkBhcHBseShvYmplY3Qs
IGFyZ3MpOworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7CisgICAgfQor
ICAgIGNhdGNoKGVycm9yKSB7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7
CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFy
ZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmNWU3YjNiODQxZDUx
MGEyOWY1NzZmOTQzNjA5OWU4ZTI3NjI2NTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUd1YXJkZWRJbnRlcm5h
bEJ1aWx0aW4tU2VwYXJhdGUuanMKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIEBvcHRpb25hbD1TVFJFQU1TX0FQSQorLy8g
QGludGVybmFsCisKK2Z1bmN0aW9uIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQoc3RyZWFtKQorewor
ICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuICEhc3RyZWFtLkByZWFkZXI7Cit9CisKKwor
ZnVuY3Rpb24gY2FuY2VsUmVhZGFibGVTdHJlYW0oc3RyZWFtLCByZWFzb24pCit7CisgICAgInVz
ZSBzdHJpY3QiOworCisgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUNs
b3NlZCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgIGlmIChzdHJlYW0u
QHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKQorICAgICAgICByZXR1cm4gUHJvbWlz
ZS5yZWplY3Qoc3RyZWFtLkBzdG9yZWRFcnJvcik7CisgICAgc3RyZWFtLkBxdWV1ZSA9IFtdOwor
ICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTsKKyAgICByZXR1cm4gQHBy
b21pc2VJbnZva2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCAiY2FuY2VsIiwgW3Jl
YXNvbl0pLnRoZW4oZnVuY3Rpb24oKSB7IH0pOworfQorCisKK2Z1bmN0aW9uIHByb21pc2VJbnZv
a2VPck5vb3Aob2JqZWN0LCBrZXksIGFyZ3MpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAg
dHJ5IHsKKyAgICAgICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldOworICAgICAgICBpZiAodHlw
ZW9mIG1ldGhvZCA9PT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5y
ZXNvbHZlKCk7CisgICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9iamVjdCwgYXJn
cyk7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTsKKyAgICB9CisgICAg
Y2F0Y2goZXJyb3IpIHsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTsKKyAg
ICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0
aW4tU2VwYXJhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWJkYzhkM2I3ZTliZTI5ODBhZmRkNmI2MTM4YzA0
ODhmZWIyNmEwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcwpA
QCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbUxvY2tlZChzdHJlYW0pCit7CisgICAidXNl
IHN0cmljdCI7CisKKyAgICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjsKK30KKworCitmdW5jdGlv
biBjYW5jZWxSZWFkYWJsZVN0cmVhbShzdHJlYW0sIHJlYXNvbikKK3sKKyAgICAidXNlIHN0cmlj
dCI7CisKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xvc2VkKQor
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgaWYgKHN0cmVhbS5Ac3RhdGUg
PT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVj
dChzdHJlYW0uQHN0b3JlZEVycm9yKTsKKyAgICBzdHJlYW0uQHF1ZXVlID0gW107CisgICAgQGZp
bmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pOworICAgIHJldHVybiBAcHJvbWlzZUlu
dm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsICJjYW5jZWwiLCBbcmVhc29uXSku
dGhlbihmdW5jdGlvbigpIHsgfSk7Cit9CisKKworZnVuY3Rpb24gcHJvbWlzZUludm9rZU9yTm9v
cChvYmplY3QsIGtleSwgYXJncykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB0cnkgewor
ICAgICAgICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07CisgICAgICAgIGlmICh0eXBlb2YgbWV0
aG9kID09PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUo
KTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBhcmdzKTsKKyAg
ICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpOworICAgIH0KKyAgICBjYXRjaChl
cnJvcikgeworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpOworICAgIH0KK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5z
L1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kZTM5M2JjNTk4MTQyODI4N2UwZjA0MzE5ZGI2ZTQyMDJiNTVlMjY4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvV2ViQ29yZS14bWxDYXNpbmdUZXN0LVNlcGFyYXRlLmpzCkBAIC0wLDAgKzEsNjUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBAb3B0aW9u
YWw9U1RSRUFNU19BUEkKKy8vIEBpbnRlcm5hbAorCitmdW5jdGlvbiB4bWxDYXNpbmdUZXN0KHN0
cmVhbSkKK3sKKyAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHJldHVybiAhIXN0cmVhbS5AcmVhZGVy
OworfQorCisKK2Z1bmN0aW9uIGNzc0Nhc2luZ1Rlc3Qoc3RyZWFtLCByZWFzb24pCit7CisgICAg
InVzZSBzdHJpY3QiOworCisgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVh
bUNsb3NlZCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgIGlmIChzdHJl
YW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKQorICAgICAgICByZXR1cm4gUHJv
bWlzZS5yZWplY3Qoc3RyZWFtLkBzdG9yZWRFcnJvcik7CisgICAgc3RyZWFtLkBxdWV1ZSA9IFtd
OworICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTsKKyAgICByZXR1cm4g
QHByb21pc2VJbnZva2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCAiY2FuY2VsIiwg
W3JlYXNvbl0pLnRoZW4oZnVuY3Rpb24oKSB7IH0pOworfQorCisKK2Z1bmN0aW9uIHVybENhc2lu
Z1Rlc3Qob2JqZWN0LCBrZXksIGFyZ3MpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdHJ5
IHsKKyAgICAgICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldOworICAgICAgICBpZiAodHlwZW9m
IG1ldGhvZCA9PT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNv
bHZlKCk7CisgICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9iamVjdCwgYXJncyk7
CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTsKKyAgICB9CisgICAgY2F0
Y2goZXJyb3IpIHsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTsKKyAgICB9
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWls
dGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtQ29tYmluZWQuanMt
cmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhw
ZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzLXJlc3VsdApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43MzJhOGM4OWY1YWE1ZDZjOTUyM2RhMGU2NDgwMTFmNWJlOTg4ZGJmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRp
bnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzLXJl
c3VsdApAQCAtMCwwICsxLDE2OCBAQAorIyMjIEJlZ2luIEZpbGU6IEpTQ0J1aWx0aW5zLmgKKy8q
CisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPi4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMg
YXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVp
bHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJh
dGUtanMtYnVpbHRpbnMucHkKKworI2lmbmRlZiBKU0NCdWlsdGluc19oCisjZGVmaW5lIEpTQ0J1
aWx0aW5zX2gKKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Citj
bGFzcyBWTTsKKworZW51bSBjbGFzcyBDb25zdHJ1Y3RBYmlsaXR5IDogdW5zaWduZWQ7Cit9CisK
K25hbWVzcGFjZSBKU0MgeworCisvKiBCdWlsdGluLlByb21pc2UgKi8KK2V4dGVybiBjb25zdCBj
aGFyKiBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNvZGU7CitleHRlcm4gY29uc3QgaW50
IHNfYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNlQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBK
U0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvbWlzZVJlamVjdFByb21pc2VDb2RlQ29u
c3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm9taXNlRnVsZmls
bFByb21pc2VDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2J1aWx0aW5Qcm9taXNlRnVsZmlsbFBy
b21pc2VDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1
aWx0aW5Qcm9taXNlRnVsZmlsbFByb21pc2VDb2RlQ29uc3RydWN0QWJpbGl0eTsKKworI2RlZmlu
ZSBKU0NfRk9SRUFDSF9CVUlMVElOUFJPTUlTRV9CVUlMVElOX0RBVEEobWFjcm8pIFwKKyAgICBt
YWNybyhyZWplY3RQcm9taXNlLCBidWlsdGluUHJvbWlzZVJlamVjdFByb21pc2UsIDIpIFwKKyAg
ICBtYWNybyhmdWxmaWxsUHJvbWlzZSwgYnVpbHRpblByb21pc2VGdWxmaWxsUHJvbWlzZSwgMikg
XAorCisjZGVmaW5lIEpTQ19CVUlMVElOX0JVSUxUSU5QUk9NSVNFX1JFSkVDVFBST01JU0UgMQor
I2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOUFJPTUlTRV9GVUxGSUxMUFJPTUlTRSAxCisKKyNk
ZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKG1hY3JvKSBcCisgICAgbWFjcm8oYnVpbHRp
blByb21pc2VSZWplY3RQcm9taXNlQ29kZSwgcmVqZWN0UHJvbWlzZSwgc19idWlsdGluUHJvbWlz
ZVJlamVjdFByb21pc2VDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8oYnVpbHRpblByb21pc2VGdWxm
aWxsUHJvbWlzZUNvZGUsIGZ1bGZpbGxQcm9taXNlLCBzX2J1aWx0aW5Qcm9taXNlRnVsZmlsbFBy
b21pc2VDb2RlTGVuZ3RoKSBcCisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElP
Tl9OQU1FKG1hY3JvKSBcCisgICAgbWFjcm8oZnVsZmlsbFByb21pc2UpIFwKKyAgICBtYWNybyhy
ZWplY3RQcm9taXNlKSBcCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2Rl
TmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCisgICAgSlNDOjpGdW5jdGlvbkV4
ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCitKU0NfRk9SRUFDSF9C
VUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUNMQVJFX0JV
SUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fRVhJU1RTKG9iamVjdCwgZnVu
YykgZGVmaW5lZCBKU0NfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVuYworCit9IC8vIG5h
bWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTQ0J1aWx0aW5zX2gKKworIyMjIEVuZCBGaWxlOiBK
U0NCdWlsdGlucy5oCisKKyMjIyBCZWdpbiBGaWxlOiBKU0NCdWlsdGlucy5jcHAKKy8qCisgKiBD
b3B5cmlnaHQgKGMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4K
KyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21h
dGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMg
YnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMt
YnVpbHRpbnMucHkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQ0J1aWx0aW5z
LmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJFeGVjdXRh
YmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJv
bWlzZVJlamVjdFByb21pc2VDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJp
bGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfYnVpbHRpblByb21pc2VSZWplY3RQ
cm9taXNlQ29kZUxlbmd0aCA9IDQxMzsKK2NvbnN0IGNoYXIqIHNfYnVpbHRpblByb21pc2VSZWpl
Y3RQcm9taXNlQ29kZSA9CisgICAgIihmdW5jdGlvbiAocHJvbWlzZSwgcmVhc29uKVxuIiBcCisg
ICAgIntcbiIgXAorICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAg
ICAiICAgIHZhciByZWFjdGlvbnMgPSBwcm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25zO1xu
IiBcCisgICAgIiAgICBwcm9taXNlLkBwcm9taXNlUmVzdWx0ID0gcmVhc29uO1xuIiBcCisgICAg
IiAgICBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucyA9IHVuZGVmaW5lZDtcbiIgXAor
ICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucyA9IHVuZGVmaW5lZDtcbiIg
XAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVN0YXRlID0gQHByb21pc2VSZWplY3RlZDtcbiIg
XAorICAgICJcbiIgXAorICAgICIgICAgQEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5wcm9taXNl
UmVqZWN0ZWQocHJvbWlzZSwgcmVhc29uLCByZWFjdGlvbnMpO1xuIiBcCisgICAgIlxuIiBcCisg
ICAgIiAgICBAdHJpZ2dlclByb21pc2VSZWFjdGlvbnMocmVhY3Rpb25zLCByZWFzb24pO1xuIiBc
CisgICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRp
blByb21pc2VGdWxmaWxsUHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19idWlsdGluUHJvbWlzZUZ1
bGZpbGxQcm9taXNlQ29kZUxlbmd0aCA9IDQxMjsKK2NvbnN0IGNoYXIqIHNfYnVpbHRpblByb21p
c2VGdWxmaWxsUHJvbWlzZUNvZGUgPQorICAgICIoZnVuY3Rpb24gKHByb21pc2UsIHZhbHVlKVxu
IiBcCisgICAgIntcbiIgXAorICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4i
IFwKKyAgICAiICAgIHZhciByZWFjdGlvbnMgPSBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0
aW9ucztcbiIgXAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlc3VsdCA9IHZhbHVlO1xuIiBc
CisgICAgIiAgICBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucyA9IHVuZGVmaW5lZDtc
biIgXAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucyA9IHVuZGVmaW5l
ZDtcbiIgXAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVN0YXRlID0gQHByb21pc2VGdWxmaWxs
ZWQ7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIEBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
cHJvbWlzZUZ1bGZpbGxlZChwcm9taXNlLCB2YWx1ZSwgcmVhY3Rpb25zKTtcbiIgXAorICAgICJc
biIgXAorICAgICIgICAgQHRyaWdnZXJQcm9taXNlUmVhY3Rpb25zKHJlYWN0aW9ucywgdmFsdWUp
O1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVS
QVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCitKU0M6OkZ1bmN0
aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAore1wKKyAg
ICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCkt
Pmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyB9
CitKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3Vu
ZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgorCisKK30gLy8gbmFtZXNwYWNlIEpTQworIyMj
IEVuZCBGaWxlOiBKU0NCdWlsdGlucy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0
aW4uUHJvbWlzZS1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21p
c2UtU2VwYXJhdGUuanMtcmVzdWx0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyN2JhMjRjNWNjMjllNWUyOWIxZGI5
ZjU0NjI1ZmUwZjI5NTE4MjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGlu
LlByb21pc2UtU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0wLDAgKzEsMTY3IEBACisjIyMgQmVnaW4g
RmlsZTogQnVpbHRpblByb21pc2VCdWlsdGlucy5oCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1
IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKiAKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLwor
CisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVk
IGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNp
Zm5kZWYgQnVpbHRpblByb21pc2VCdWlsdGluc19oCisjZGVmaW5lIEJ1aWx0aW5Qcm9taXNlQnVp
bHRpbnNfaAorCisKKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7
Cit9CisKK25hbWVzcGFjZSBKU0MgeworCisvKiBCdWlsdGluLlByb21pc2UgKi8KK2V4dGVybiBj
b25zdCBjaGFyKiBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNvZGU7CitleHRlcm4gY29u
c3QgaW50IHNfYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNlQ29kZUxlbmd0aDsKK2V4dGVybiBj
b25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvbWlzZVJlamVjdFByb21pc2VD
b2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm9taXNl
RnVsZmlsbFByb21pc2VDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2J1aWx0aW5Qcm9taXNlRnVs
ZmlsbFByb21pc2VDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0
eSBzX2J1aWx0aW5Qcm9taXNlRnVsZmlsbFByb21pc2VDb2RlQ29uc3RydWN0QWJpbGl0eTsKKwor
I2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOX1BST01JU0VfQlVJTFRJTl9EQVRBKG1hY3JvKSBc
CisgICAgbWFjcm8ocmVqZWN0UHJvbWlzZSwgYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNlLCAy
KSBcCisgICAgbWFjcm8oZnVsZmlsbFByb21pc2UsIGJ1aWx0aW5Qcm9taXNlRnVsZmlsbFByb21p
c2UsIDIpIFwKKworI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOX1BST01JU0VfUkVKRUNUUFJP
TUlTRSAxCisjZGVmaW5lIEpTQ19CVUlMVElOX0JVSUxUSU5fUFJPTUlTRV9GVUxGSUxMUFJPTUlT
RSAxCisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTi5QUk9NSVNFX0JVSUxUSU5fQ09ERSht
YWNybykgXAorICAgIG1hY3JvKGJ1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNvZGUsIHJlamVj
dFByb21pc2UsIHNfYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNlQ29kZUxlbmd0aCkgXAorICAg
IG1hY3JvKGJ1aWx0aW5Qcm9taXNlRnVsZmlsbFByb21pc2VDb2RlLCBmdWxmaWxsUHJvbWlzZSwg
c19idWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZUxlbmd0aCkgXAorCisjZGVmaW5lIEpT
Q19GT1JFQUNIX0JVSUxUSU4uUFJPTUlTRV9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFwK
KyAgICBtYWNybyhmdWxmaWxsUHJvbWlzZSkgXAorICAgIG1hY3JvKHJlamVjdFByb21pc2UpIFwK
KworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5h
bWUsIGFyZ3VtZW50Q291bnQpIFwKKyAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5h
bWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisKK0pTQ19GT1JFQUNIX0JVSUxUSU4uUFJPTUlTRV9C
VUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUNMQVJFX0JV
SUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTi5QUk9NSVNFX0VY
SVNUUyhvYmplY3QsIGZ1bmMpIGRlZmluZWQgSlNDX0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMj
IGZ1bmMKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBCdWlsdGluUHJvbWlzZUJ1
aWx0aW5zX2gKKworIyMjIEVuZCBGaWxlOiBCdWlsdGluUHJvbWlzZUJ1aWx0aW5zLmgKKworIyMj
IEJlZ2luIEZpbGU6IEJ1aWx0aW5Qcm9taXNlQnVpbHRpbnMuY3BwCisvKgorICogQ29weXJpZ2h0
IChjKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKiAKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
KiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkg
Z2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBz
Y3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5z
LnB5CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCdWlsdGluUHJvbWlzZUJ1aWx0
aW5zLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJFeGVj
dXRhYmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGlu
UHJvbWlzZVJlamVjdFByb21pc2VDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0
QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfYnVpbHRpblByb21pc2VSZWpl
Y3RQcm9taXNlQ29kZUxlbmd0aCA9IDQxMzsKK2NvbnN0IGNoYXIqIHNfYnVpbHRpblByb21pc2VS
ZWplY3RQcm9taXNlQ29kZSA9CisgICAgIihmdW5jdGlvbiAocHJvbWlzZSwgcmVhc29uKVxuIiBc
CisgICAgIntcbiIgXAorICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwK
KyAgICAiICAgIHZhciByZWFjdGlvbnMgPSBwcm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25z
O1xuIiBcCisgICAgIiAgICBwcm9taXNlLkBwcm9taXNlUmVzdWx0ID0gcmVhc29uO1xuIiBcCisg
ICAgIiAgICBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucyA9IHVuZGVmaW5lZDtcbiIg
XAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucyA9IHVuZGVmaW5lZDtc
biIgXAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVN0YXRlID0gQHByb21pc2VSZWplY3RlZDtc
biIgXAorICAgICJcbiIgXAorICAgICIgICAgQEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5wcm9t
aXNlUmVqZWN0ZWQocHJvbWlzZSwgcmVhc29uLCByZWFjdGlvbnMpO1xuIiBcCisgICAgIlxuIiBc
CisgICAgIiAgICBAdHJpZ2dlclByb21pc2VSZWFjdGlvbnMocmVhY3Rpb25zLCByZWFzb24pO1xu
IiBcCisgICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVp
bHRpblByb21pc2VGdWxmaWxsUHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25z
dHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19idWlsdGluUHJvbWlz
ZUZ1bGZpbGxQcm9taXNlQ29kZUxlbmd0aCA9IDQxMjsKK2NvbnN0IGNoYXIqIHNfYnVpbHRpblBy
b21pc2VGdWxmaWxsUHJvbWlzZUNvZGUgPQorICAgICIoZnVuY3Rpb24gKHByb21pc2UsIHZhbHVl
KVxuIiBcCisgICAgIntcbiIgXAorICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAi
XG4iIFwKKyAgICAiICAgIHZhciByZWFjdGlvbnMgPSBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJl
YWN0aW9ucztcbiIgXAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlc3VsdCA9IHZhbHVlO1xu
IiBcCisgICAgIiAgICBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucyA9IHVuZGVmaW5l
ZDtcbiIgXAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucyA9IHVuZGVm
aW5lZDtcbiIgXAorICAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVN0YXRlID0gQHByb21pc2VGdWxm
aWxsZWQ7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIEBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24ucHJvbWlzZUZ1bGZpbGxlZChwcm9taXNlLCB2YWx1ZSwgcmVhY3Rpb25zKTtcbiIgXAorICAg
ICJcbiIgXAorICAgICIgICAgQHRyaWdnZXJQcm9taXNlUmVhY3Rpb25zKHJlYWN0aW9ucywgdmFs
dWUpO1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0dF
TkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCitKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAore1wK
KyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxl
KCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkp
OyB9CitKU0NfRk9SRUFDSF9CVUlMVElOLlBST01JU0VfQlVJTFRJTl9DT0RFKERFRklORV9CVUlM
VElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKworCit9IC8v
IG5hbWVzcGFjZSBKU0MKKyMjIyBFbmQgRmlsZTogQnVpbHRpblByb21pc2VCdWlsdGlucy5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5z
L2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzLXJl
c3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVj
dGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzLXJlc3VsdApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45NGY2N2M1YWMwMWRkYTNkYmY5YjFkOWU3Nzk4MzlmZDc4NjNjNmI1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRp
bnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMt
cmVzdWx0CkBAIC0wLDAgKzEsMTkyIEBACisjIyMgQmVnaW4gRmlsZTogSlNDQnVpbHRpbnMuaAor
LyoKKyAqIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPi4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4g
SXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgor
Ly8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
Z2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lmbmRlZiBKU0NCdWlsdGluc19oCisjZGVmaW5l
IEpTQ0J1aWx0aW5zX2gKKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFi
bGU7CitjbGFzcyBWTTsKKworZW51bSBjbGFzcyBDb25zdHJ1Y3RBYmlsaXR5IDogdW5zaWduZWQ7
Cit9CisKK25hbWVzcGFjZSBKU0MgeworCisvKiBCdWlsdGluLnByb3RvdHlwZSAqLworZXh0ZXJu
IGNvbnN0IGNoYXIqIHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZTsKK2V4dGVybiBjb25zdCBp
bnQgc19idWlsdGluUHJvdG90eXBlRXZlcnlDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6
Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGVDb25zdHJ1Y3RBYmls
aXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfYnVpbHRpblByb3RvdHlwZUZvckVhY2hDb2RlOwor
ZXh0ZXJuIGNvbnN0IGludCBzX2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZUxlbmd0aDsKK2V4
dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvdG90eXBlRm9yRWFj
aENvZGVDb25zdHJ1Y3RBYmlsaXR5OworCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5QUk9U
T1RZUEVfQlVJTFRJTl9EQVRBKG1hY3JvKSBcCisgICAgbWFjcm8oZXZlcnksIGJ1aWx0aW5Qcm90
b3R5cGVFdmVyeSwgMSkgXAorICAgIG1hY3JvKGZvckVhY2gsIGJ1aWx0aW5Qcm90b3R5cGVGb3JF
YWNoLCAxKSBcCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTlBST1RPVFlQRV9FVkVSWSAx
CisjZGVmaW5lIEpTQ19CVUlMVElOX0JVSUxUSU5QUk9UT1RZUEVfRk9SRUFDSCAxCisKKyNkZWZp
bmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKG1hY3JvKSBcCisgICAgbWFjcm8oYnVpbHRpblBy
b3RvdHlwZUV2ZXJ5Q29kZSwgZXZlcnksIHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZUxlbmd0
aCkgXAorICAgIG1hY3JvKGJ1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZSwgZm9yRWFjaCwgc19i
dWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGVMZW5ndGgpIFwKKworI2RlZmluZSBKU0NfRk9SRUFD
SF9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFwKKyAgICBtYWNybyhldmVyeSkgXAorICAg
IG1hY3JvKGZvckVhY2gpIFwKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNv
ZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKKyAgICBKU0M6OkZ1bmN0aW9u
RXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisKK0pTQ19GT1JFQUNI
X0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVf
QlVJTFRJTl9HRU5FUkFUT1IKKworI2RlZmluZSBKU0NfQlVJTFRJTl9FWElTVFMob2JqZWN0LCBm
dW5jKSBkZWZpbmVkIEpTQ19CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNDQnVpbHRpbnNfaAorCisjIyMgRW5kIEZpbGU6
IEpTQ0J1aWx0aW5zLmgKKworIyMjIEJlZ2luIEZpbGU6IEpTQ0J1aWx0aW5zLmNwcAorLyoKKyAq
IENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPi4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMg
YXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVp
bHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJh
dGUtanMtYnVpbHRpbnMucHkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQ0J1
aWx0aW5zLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJF
eGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWls
dGluUHJvdG90eXBlRXZlcnlDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJp
bGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5
Q29kZUxlbmd0aCA9IDc2MjsKK2NvbnN0IGNoYXIqIHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29k
ZSA9CisgICAgIihmdW5jdGlvbiAoY2FsbGJhY2sgKVxuIiBcCisgICAgIntcbiIgXAorICAgICIg
ICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIGlmICh0aGlzID09
PSBudWxsKVxuIiBcCisgICAgIiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5w
cm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGxcIik7XG4iIFwK
KyAgICAiICAgIFxuIiBcCisgICAgIiAgICBpZiAodGhpcyA9PT0gdW5kZWZpbmVkKVxuIiBcCisg
ICAgIiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5wcm90b3R5cGUuZXZlcnkg
cmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZFwiKTtcbiIgXAorICAgICIgICAg
XG4iIFwKKyAgICAiICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7XG4iIFwKKyAgICAiICAg
IHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTtcbiIgXAorICAgICJcbiIgXAor
ICAgICIgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gXCJmdW5jdGlvblwiKVxuIiBcCisgICAg
IiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5wcm90b3R5cGUuZXZlcnkgY2Fs
bGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uXCIpO1xuIiBcCisgICAgIiAgICBcbiIgXAorICAgICIg
ICAgdmFyIHRoaXNBcmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVu
ZGVmaW5lZDtcbiIgXAorICAgICIgICAgXG4iIFwKKyAgICAiICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbGVuZ3RoOyBpKyspIHtcbiIgXAorICAgICIgICAgICAgIGlmICghKGkgaW4gYXJyYXkpKVxu
IiBcCisgICAgIiAgICAgICAgICAgIGNvbnRpbnVlO1xuIiBcCisgICAgIiAgICAgICAgaWYgKCFj
YWxsYmFjay5AY2FsbCh0aGlzQXJnLCBhcnJheVtpXSwgaSwgYXJyYXkpKVxuIiBcCisgICAgIiAg
ICAgICAgICAgIHJldHVybiBmYWxzZTtcbiIgXAorICAgICIgICAgfVxuIiBcCisgICAgIiAgICBc
biIgXAorICAgICIgICAgcmV0dXJuIHRydWU7XG4iIFwKKyAgICAifSlcbiIgXAorOworCitjb25z
dCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGVDb25z
dHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citj
b25zdCBpbnQgc19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGVMZW5ndGggPSA2OTQ7Citjb25z
dCBjaGFyKiBzX2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZSA9CisgICAgIihmdW5jdGlvbiAo
Y2FsbGJhY2sgKVxuIiBcCisgICAgIntcbiIgXAorICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4i
IFwKKyAgICAiXG4iIFwKKyAgICAiICAgIGlmICh0aGlzID09PSBudWxsKVxuIiBcCisgICAgIiAg
ICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCByZXF1
aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbFwiKTtcbiIgXAorICAgICIgICAgXG4iIFwKKyAg
ICAiICAgIGlmICh0aGlzID09PSB1bmRlZmluZWQpXG4iIFwKKyAgICAiICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcihcIkFycmF5LnByb3RvdHlwZS5mb3JFYWNoIHJlcXVpcmVzIHRoYXQgfHRo
aXN8IG5vdCBiZSB1bmRlZmluZWRcIik7XG4iIFwKKyAgICAiICAgIFxuIiBcCisgICAgIiAgICB2
YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMpO1xuIiBcCisgICAgIiAgICB2YXIgbGVuZ3RoID0gQHRv
TGVuZ3RoKGFycmF5Lmxlbmd0aCk7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIGlmICh0eXBl
b2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rpb25cIilcbiIgXAorICAgICIgICAgICAgIHRocm93IG5l
dyBAVHlwZUVycm9yKFwiQXJyYXkucHJvdG90eXBlLmZvckVhY2ggY2FsbGJhY2sgbXVzdCBiZSBh
IGZ1bmN0aW9uXCIpO1xuIiBcCisgICAgIiAgICBcbiIgXAorICAgICIgICAgdmFyIHRoaXNBcmcg
PSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiIgXAor
ICAgICIgICAgXG4iIFwKKyAgICAiICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysp
IHtcbiIgXAorICAgICIgICAgICAgIGlmIChpIGluIGFycmF5KVxuIiBcCisgICAgIiAgICAgICAg
ICAgIGNhbGxiYWNrLkBjYWxsKHRoaXNBcmcsIGFycmF5W2ldLCBpLCBhcnJheSk7XG4iIFwKKyAg
ICAiICAgIH1cbiIgXAorICAgICJ9KVxuIiBcCis7CisKKworI2RlZmluZSBERUZJTkVfQlVJTFRJ
Tl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorSlND
OjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwK
K3tcCisgICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0
YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJj
ZSgpKTsgfQorSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRP
UikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKworCit9IC8vIG5hbWVzcGFjZSBK
U0MKKyMjIyBFbmQgRmlsZTogSlNDQnVpbHRpbnMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29y
ZS1CdWlsdGluLnByb3RvdHlwZS1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWls
dGluLnByb3RvdHlwZS1TZXBhcmF0ZS5qcy1yZXN1bHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjkzODNmNGY3YWFm
OTBjYzgxNGQ0MTE4ZGQyY2ZjYzRmN2Q4NmU2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRD
b3JlLUJ1aWx0aW4ucHJvdG90eXBlLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMCwwICsxLDE5MSBA
QAorIyMjIEJlZ2luIEZpbGU6IEJ1aWx0aW5Qcm90b3R5cGVCdWlsdGlucy5oCisvKgorICogQ29w
eXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoYykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
LgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRv
bWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlu
cyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1q
cy1idWlsdGlucy5weQorCisjaWZuZGVmIEJ1aWx0aW5Qcm90b3R5cGVCdWlsdGluc19oCisjZGVm
aW5lIEJ1aWx0aW5Qcm90b3R5cGVCdWlsdGluc19oCisKKworCituYW1lc3BhY2UgSlNDIHsKK2Ns
YXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK30KKworbmFtZXNwYWNlIEpTQyB7CisKKy8qIEJ1aWx0
aW4ucHJvdG90eXBlICovCitleHRlcm4gY29uc3QgY2hhciogc19idWlsdGluUHJvdG90eXBlRXZl
cnlDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGVMZW5n
dGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb3RvdHlw
ZUV2ZXJ5Q29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19idWlsdGlu
UHJvdG90eXBlRm9yRWFjaENvZGU7CitleHRlcm4gY29uc3QgaW50IHNfYnVpbHRpblByb3RvdHlw
ZUZvckVhY2hDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBz
X2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZUNvbnN0cnVjdEFiaWxpdHk7CisKKyNkZWZpbmUg
SlNDX0ZPUkVBQ0hfQlVJTFRJTl9QUk9UT1RZUEVfQlVJTFRJTl9EQVRBKG1hY3JvKSBcCisgICAg
bWFjcm8oZXZlcnksIGJ1aWx0aW5Qcm90b3R5cGVFdmVyeSwgMSkgXAorICAgIG1hY3JvKGZvckVh
Y2gsIGJ1aWx0aW5Qcm90b3R5cGVGb3JFYWNoLCAxKSBcCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5f
QlVJTFRJTl9QUk9UT1RZUEVfRVZFUlkgMQorI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOX1BS
T1RPVFlQRV9GT1JFQUNIIDEKKworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOLlBST1RPVFlQ
RV9CVUlMVElOX0NPREUobWFjcm8pIFwKKyAgICBtYWNybyhidWlsdGluUHJvdG90eXBlRXZlcnlD
b2RlLCBldmVyeSwgc19idWlsdGluUHJvdG90eXBlRXZlcnlDb2RlTGVuZ3RoKSBcCisgICAgbWFj
cm8oYnVpbHRpblByb3RvdHlwZUZvckVhY2hDb2RlLCBmb3JFYWNoLCBzX2J1aWx0aW5Qcm90b3R5
cGVGb3JFYWNoQ29kZUxlbmd0aCkgXAorCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU4uUFJP
VE9UWVBFX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXAorICAgIG1hY3JvKGV2ZXJ5KSBc
CisgICAgbWFjcm8oZm9yRWFjaCkgXAorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFU
T1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorICAgIEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKworSlNDX0ZP
UkVBQ0hfQlVJTFRJTi5QUk9UT1RZUEVfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5F
UkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIEpTQ19C
VUlMVElOX0JVSUxUSU4uUFJPVE9UWVBFX0VYSVNUUyhvYmplY3QsIGZ1bmMpIGRlZmluZWQgSlND
X0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMKKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZiAvLyBCdWlsdGluUHJvdG90eXBlQnVpbHRpbnNfaAorCisjIyMgRW5kIEZpbGU6IEJ1
aWx0aW5Qcm90b3R5cGVCdWlsdGlucy5oCisKKyMjIyBCZWdpbiBGaWxlOiBCdWlsdGluUHJvdG90
eXBlQnVpbHRpbnMuY3BwCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAxNSBZdXN1a2UgU3V6
dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9U
IEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFT
Y3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQnVpbHRpblByb3RvdHlwZUJ1aWx0aW5zLmgiCisKKyNpbmNsdWRl
ICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVk
ZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
Citjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvdG90eXBlRXZlcnlDb2Rl
Q29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0
OworY29uc3QgaW50IHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZUxlbmd0aCA9IDc2MjsKK2Nv
bnN0IGNoYXIqIHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZSA9CisgICAgIihmdW5jdGlvbiAo
Y2FsbGJhY2sgKVxuIiBcCisgICAgIntcbiIgXAorICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4i
IFwKKyAgICAiXG4iIFwKKyAgICAiICAgIGlmICh0aGlzID09PSBudWxsKVxuIiBcCisgICAgIiAg
ICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWly
ZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGxcIik7XG4iIFwKKyAgICAiICAgIFxuIiBcCisgICAg
IiAgICBpZiAodGhpcyA9PT0gdW5kZWZpbmVkKVxuIiBcCisgICAgIiAgICAgICAgdGhyb3cgbmV3
IEBUeXBlRXJyb3IoXCJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wg
bm90IGJlIHVuZGVmaW5lZFwiKTtcbiIgXAorICAgICIgICAgXG4iIFwKKyAgICAiICAgIHZhciBh
cnJheSA9IEBPYmplY3QodGhpcyk7XG4iIFwKKyAgICAiICAgIHZhciBsZW5ndGggPSBAdG9MZW5n
dGgoYXJyYXkubGVuZ3RoKTtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgaWYgKHR5cGVvZiBj
YWxsYmFjayAhPT0gXCJmdW5jdGlvblwiKVxuIiBcCisgICAgIiAgICAgICAgdGhyb3cgbmV3IEBU
eXBlRXJyb3IoXCJBcnJheS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0
aW9uXCIpO1xuIiBcCisgICAgIiAgICBcbiIgXAorICAgICIgICAgdmFyIHRoaXNBcmcgPSBhcmd1
bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiIgXAorICAgICIg
ICAgXG4iIFwKKyAgICAiICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiIg
XAorICAgICIgICAgICAgIGlmICghKGkgaW4gYXJyYXkpKVxuIiBcCisgICAgIiAgICAgICAgICAg
IGNvbnRpbnVlO1xuIiBcCisgICAgIiAgICAgICAgaWYgKCFjYWxsYmFjay5AY2FsbCh0aGlzQXJn
LCBhcnJheVtpXSwgaSwgYXJyYXkpKVxuIiBcCisgICAgIiAgICAgICAgICAgIHJldHVybiBmYWxz
ZTtcbiIgXAorICAgICIgICAgfVxuIiBcCisgICAgIiAgICBcbiIgXAorICAgICIgICAgcmV0dXJu
IHRydWU7XG4iIFwKKyAgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxp
dHkgc19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpD
b25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19idWlsdGluUHJv
dG90eXBlRm9yRWFjaENvZGVMZW5ndGggPSA2OTQ7Citjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm90
b3R5cGVGb3JFYWNoQ29kZSA9CisgICAgIihmdW5jdGlvbiAoY2FsbGJhY2sgKVxuIiBcCisgICAg
IntcbiIgXAorICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAi
ICAgIGlmICh0aGlzID09PSBudWxsKVxuIiBcCisgICAgIiAgICAgICAgdGhyb3cgbmV3IEBUeXBl
RXJyb3IoXCJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3Qg
YmUgbnVsbFwiKTtcbiIgXAorICAgICIgICAgXG4iIFwKKyAgICAiICAgIGlmICh0aGlzID09PSB1
bmRlZmluZWQpXG4iIFwKKyAgICAiICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcIkFycmF5
LnByb3RvdHlwZS5mb3JFYWNoIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWRc
Iik7XG4iIFwKKyAgICAiICAgIFxuIiBcCisgICAgIiAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRo
aXMpO1xuIiBcCisgICAgIiAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7
XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVu
Y3Rpb25cIilcbiIgXAorICAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXku
cHJvdG90eXBlLmZvckVhY2ggY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uXCIpO1xuIiBcCisg
ICAgIiAgICBcbiIgXAorICAgICIgICAgdmFyIHRoaXNBcmcgPSBhcmd1bWVudHMubGVuZ3RoID4g
MSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiIgXAorICAgICIgICAgXG4iIFwKKyAgICAi
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiIgXAorICAgICIgICAgICAg
IGlmIChpIGluIGFycmF5KVxuIiBcCisgICAgIiAgICAgICAgICAgIGNhbGxiYWNrLkBjYWxsKHRo
aXNBcmcsIGFycmF5W2ldLCBpLCBhcnJheSk7XG4iIFwKKyAgICAiICAgIH1cbiIgXAorICAgICJ9
KVxuIiBcCis7CisKKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUs
IGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUq
IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKK3tcCisgICAgcmV0dXJuIHZtLmJ1
aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5i
dWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsgfQorSlNDX0ZPUkVBQ0hf
QlVJTFRJTi5QUk9UT1RZUEVfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikK
KyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKworCit9IC8vIG5hbWVzcGFjZSBKU0MK
KyMjIyBFbmQgRmlsZTogQnVpbHRpblByb3RvdHlwZUJ1aWx0aW5zLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2
YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpzLXJlc3VsdCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3Jp
cHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qcy1yZXN1bHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTMzNzEzMzg1ZTE2MjE3MDAwMjhlZTdkODFhMjMwMGE3ODIyYWU2ZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVk
L0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qcy1yZXN1bHQKQEAg
LTAsMCArMSwyMjQgQEAKKyMjIyBCZWdpbiBGaWxlOiBKU0NCdWlsdGlucy5oCisvKgorICogQ29w
eXJpZ2h0IChjKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
IAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBn
ZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNj
cmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMu
cHkKKworI2lmbmRlZiBKU0NCdWlsdGluc19oCisjZGVmaW5lIEpTQ0J1aWx0aW5zX2gKKworbmFt
ZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CitjbGFzcyBWTTsKKworZW51
bSBjbGFzcyBDb25zdHJ1Y3RBYmlsaXR5IDogdW5zaWduZWQ7Cit9CisKK25hbWVzcGFjZSBKU0Mg
eworCisvKiBCdWlsdGluQ29uc3RydWN0b3IgKi8KK2V4dGVybiBjb25zdCBjaGFyKiBzX2J1aWx0
aW5Db25zdHJ1Y3Rvck9mQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19idWlsdGluQ29uc3RydWN0
b3JPZkNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVp
bHRpbkNvbnN0cnVjdG9yT2ZDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFy
KiBzX2J1aWx0aW5Db25zdHJ1Y3RvckZyb21Db2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2J1aWx0
aW5Db25zdHJ1Y3RvckZyb21Db2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0
QWJpbGl0eSBzX2J1aWx0aW5Db25zdHJ1Y3RvckZyb21Db2RlQ29uc3RydWN0QWJpbGl0eTsKKwor
I2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOQ09OU1RSVUNUT1JfQlVJTFRJTl9EQVRBKG1hY3Jv
KSBcCisgICAgbWFjcm8ob2YsIGJ1aWx0aW5Db25zdHJ1Y3Rvck9mLCAwKSBcCisgICAgbWFjcm8o
ZnJvbSwgYnVpbHRpbkNvbnN0cnVjdG9yRnJvbSwgMSkgXAorCisjZGVmaW5lIEpTQ19CVUlMVElO
X0JVSUxUSU5DT05TVFJVQ1RPUl9PRiAxCisjZGVmaW5lIEpTQ19CVUlMVElOX0JVSUxUSU5DT05T
VFJVQ1RPUl9GUk9NIDEKKworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUobWFjcm8p
IFwKKyAgICBtYWNybyhidWlsdGluQ29uc3RydWN0b3JPZkNvZGUsIG9mLCBzX2J1aWx0aW5Db25z
dHJ1Y3Rvck9mQ29kZUxlbmd0aCkgXAorICAgIG1hY3JvKGJ1aWx0aW5Db25zdHJ1Y3RvckZyb21D
b2RlLCBmcm9tLCBzX2J1aWx0aW5Db25zdHJ1Y3RvckZyb21Db2RlTGVuZ3RoKSBcCisKKyNkZWZp
bmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcCisgICAgbWFjcm8o
ZnJvbSkgXAorICAgIG1hY3JvKG9mKSBcCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVS
QVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCisgICAgSlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCitKU0Nf
Rk9SRUFDSF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBE
RUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fRVhJU1RTKG9i
amVjdCwgZnVuYykgZGVmaW5lZCBKU0NfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVuYwor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTQ0J1aWx0aW5zX2gKKworIyMjIEVu
ZCBGaWxlOiBKU0NCdWlsdGlucy5oCisKKyMjIyBCZWdpbiBGaWxlOiBKU0NCdWlsdGlucy5jcHAK
Ky8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRv
bWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlu
cyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1q
cy1idWlsdGlucy5weQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNDQnVpbHRp
bnMuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkV4ZWN1
dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5D
b25zdHJ1Y3Rvck9mQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6
OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0aW5Db25zdHJ1Y3Rvck9mQ29kZUxl
bmd0aCA9IDI5NDsKK2NvbnN0IGNoYXIqIHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2RlID0KKyAg
ICAiKGZ1bmN0aW9uICgpXG4iIFwKKyAgICAie1xuIiBcCisgICAgIiAgICBcInVzZSBzdHJpY3Rc
IjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5n
dGg7XG4iIFwKKyAgICAiICAgIC8vXG4iIFwKKyAgICAiICAgIHZhciBhcnJheSA9IHR5cGVvZiB0
aGlzID09PSAnZnVuY3Rpb24nID8gbmV3IHRoaXMobGVuZ3RoKSA6IG5ldyBAQXJyYXkobGVuZ3Ro
KTtcbiIgXAorICAgICIgICAgZm9yICh2YXIgayA9IDA7IGsgPCBsZW5ndGg7ICsraylcbiIgXAor
ICAgICIgICAgICAgIEBwdXRCeVZhbERpcmVjdChhcnJheSwgaywgYXJndW1lbnRzW2tdKTtcbiIg
XAorICAgICIgICAgYXJyYXkubGVuZ3RoID0gbGVuZ3RoO1xuIiBcCisgICAgIiAgICByZXR1cm4g
YXJyYXk7XG4iIFwKKyAgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxp
dHkgc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNv
bnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0aW5Db25z
dHJ1Y3RvckZyb21Db2RlTGVuZ3RoID0gMjA0NjsKK2NvbnN0IGNoYXIqIHNfYnVpbHRpbkNvbnN0
cnVjdG9yRnJvbUNvZGUgPQorICAgICIoZnVuY3Rpb24gKGl0ZW1zIClcbiIgXAorICAgICJ7XG4i
IFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICB2
YXIgdGhpc09iaiA9IHRoaXM7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHZhciBtYXBGbiA9
IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuIiBcCisg
ICAgIlxuIiBcCisgICAgIiAgICB2YXIgdGhpc0FyZztcbiIgXAorICAgICJcbiIgXAorICAgICIg
ICAgaWYgKG1hcEZuICE9PSB1bmRlZmluZWQpIHtcbiIgXAorICAgICIgICAgICAgIGlmICh0eXBl
b2YgbWFwRm4gIT09IFwiZnVuY3Rpb25cIilcbiIgXAorICAgICIgICAgICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcihcIkFycmF5LmZyb20gcmVxdWlyZXMgdGhhdCB0aGUgc2Vjb25kIGFyZ3Vt
ZW50LCB3aGVuIHByb3ZpZGVkLCBiZSBhIGZ1bmN0aW9uXCIpO1xuIiBcCisgICAgIlxuIiBcCisg
ICAgIiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKVxuIiBcCisgICAgIiAgICAgICAg
ICAgIHRoaXNBcmcgPSBhcmd1bWVudHNbMl07XG4iIFwKKyAgICAiICAgIH1cbiIgXAorICAgICJc
biIgXAorICAgICIgICAgaWYgKGl0ZW1zID09IG51bGwpXG4iIFwKKyAgICAiICAgICAgICB0aHJv
dyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LmZyb20gcmVxdWlyZXMgYW4gYXJyYXktbGlrZSBvYmpl
Y3QgLSBub3QgbnVsbCBvciB1bmRlZmluZWRcIik7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAg
IHZhciBpdGVyYXRvck1ldGhvZCA9IGl0ZW1zW0BzeW1ib2xJdGVyYXRvcl07XG4iIFwKKyAgICAi
ICAgIGlmIChpdGVyYXRvck1ldGhvZCAhPSBudWxsKSB7XG4iIFwKKyAgICAiICAgICAgICBpZiAo
dHlwZW9mIGl0ZXJhdG9yTWV0aG9kICE9PSBcImZ1bmN0aW9uXCIpXG4iIFwKKyAgICAiICAgICAg
ICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5mcm9tIHJlcXVpcmVzIHRoYXQgdGhl
IHByb3BlcnR5IG9mIHRoZSBmaXJzdCBhcmd1bWVudCwgaXRlbXNbU3ltYm9sLml0ZXJhdG9yXSwg
d2hlbiBleGlzdHMsIGJlIGEgZnVuY3Rpb25cIik7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAg
ICAgICAvL1xuIiBcCisgICAgIiAgICAgICAgdmFyIHJlc3VsdCA9ICh0eXBlb2YgdGhpc09iaiA9
PT0gXCJmdW5jdGlvblwiKSA/IEBPYmplY3QobmV3IHRoaXNPYmooKSkgOiBbXTtcbiIgXAorICAg
ICJcbiIgXAorICAgICIgICAgICAgIHZhciBrID0gMDtcbiIgXAorICAgICIgICAgICAgIHZhciBp
dGVyYXRvciA9IGl0ZXJhdG9yTWV0aG9kLkBjYWxsKGl0ZW1zKTtcbiIgXAorICAgICJcbiIgXAor
ICAgICIgICAgICAgIC8vXG4iIFwKKyAgICAiICAgICAgICAvL1xuIiBcCisgICAgIiAgICAgICAg
Ly9cbiIgXAorICAgICIgICAgICAgIHZhciB3cmFwcGVyID0ge1xuIiBcCisgICAgIiAgICAgICAg
ICAgIFtAc3ltYm9sSXRlcmF0b3JdKCkge1xuIiBcCisgICAgIiAgICAgICAgICAgICAgICByZXR1
cm4gaXRlcmF0b3I7XG4iIFwKKyAgICAiICAgICAgICAgICAgfVxuIiBcCisgICAgIiAgICAgICAg
fTtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgICAgIGZvciAodmFyIHZhbHVlIG9mIHdyYXBw
ZXIpIHtcbiIgXAorICAgICIgICAgICAgICAgICBpZiAobWFwRm4pXG4iIFwKKyAgICAiICAgICAg
ICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHRoaXNBcmcgPT09IHVuZGVmaW5l
ZCA/IG1hcEZuKHZhbHVlLCBrKSA6IG1hcEZuLkBjYWxsKHRoaXNBcmcsIHZhbHVlLCBrKSk7XG4i
IFwKKyAgICAiICAgICAgICAgICAgZWxzZVxuIiBcCisgICAgIiAgICAgICAgICAgICAgICBAcHV0
QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB2YWx1ZSk7XG4iIFwKKyAgICAiICAgICAgICAgICAgayAr
PSAxO1xuIiBcCisgICAgIiAgICAgICAgfVxuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICAgICAg
cmVzdWx0Lmxlbmd0aCA9IGs7XG4iIFwKKyAgICAiICAgICAgICByZXR1cm4gcmVzdWx0O1xuIiBc
CisgICAgIiAgICB9XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHZhciBhcnJheUxpa2UgPSBA
T2JqZWN0KGl0ZW1zKTtcbiIgXAorICAgICIgICAgdmFyIGFycmF5TGlrZUxlbmd0aCA9IEB0b0xl
bmd0aChhcnJheUxpa2UubGVuZ3RoKTtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgLy9cbiIg
XAorICAgICIgICAgdmFyIHJlc3VsdCA9ICh0eXBlb2YgdGhpc09iaiA9PT0gXCJmdW5jdGlvblwi
KSA/IEBPYmplY3QobmV3IHRoaXNPYmooYXJyYXlMaWtlTGVuZ3RoKSkgOiBuZXcgQEFycmF5KGFy
cmF5TGlrZUxlbmd0aCk7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHZhciBrID0gMDtcbiIg
XAorICAgICIgICAgd2hpbGUgKGsgPCBhcnJheUxpa2VMZW5ndGgpIHtcbiIgXAorICAgICIgICAg
ICAgIHZhciB2YWx1ZSA9IGFycmF5TGlrZVtrXTtcbiIgXAorICAgICIgICAgICAgIGlmIChtYXBG
bilcbiIgXAorICAgICIgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB0aGlz
QXJnID09PSB1bmRlZmluZWQgPyBtYXBGbih2YWx1ZSwgaykgOiBtYXBGbi5AY2FsbCh0aGlzQXJn
LCB2YWx1ZSwgaykpO1xuIiBcCisgICAgIiAgICAgICAgZWxzZVxuIiBcCisgICAgIiAgICAgICAg
ICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHZhbHVlKTtcbiIgXAorICAgICIgICAgICAg
IGsgKz0gMTtcbiIgXAorICAgICIgICAgfVxuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICByZXN1
bHQubGVuZ3RoID0gYXJyYXlMaWtlTGVuZ3RoO1xuIiBcCisgICAgIiAgICByZXR1cm4gcmVzdWx0
O1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVS
QVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCitKU0M6OkZ1bmN0
aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAore1wKKyAg
ICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCkt
Pmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyB9
CitKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3Vu
ZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgorCisKK30gLy8gbmFtZXNwYWNlIEpTQworIyMj
IEVuZCBGaWxlOiBKU0NCdWlsdGlucy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0
aW5Db25zdHJ1Y3Rvci1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29u
c3RydWN0b3ItU2VwYXJhdGUuanMtcmVzdWx0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyNjZkMDVkNDAwZDVkNzY0
YmYyZGQ2N2MyYjg2NWJjYTU3OWQzYjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1C
dWlsdGluQ29uc3RydWN0b3ItU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0wLDAgKzEsMjIzIEBACisj
IyMgQmVnaW4gRmlsZTogQnVpbHRpbkNvbnN0cnVjdG9yQnVpbHRpbnMuaAorLyoKKyAqIENvcHly
aWdodCAoYykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAK
KyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2Vu
ZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3Jp
cHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5
CisKKyNpZm5kZWYgQnVpbHRpbkNvbnN0cnVjdG9yQnVpbHRpbnNfaAorI2RlZmluZSBCdWlsdGlu
Q29uc3RydWN0b3JCdWlsdGluc19oCisKKworCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEZ1bmN0
aW9uRXhlY3V0YWJsZTsKK30KKworbmFtZXNwYWNlIEpTQyB7CisKKy8qIEJ1aWx0aW5Db25zdHJ1
Y3RvciAqLworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2RlOwor
ZXh0ZXJuIGNvbnN0IGludCBzX2J1aWx0aW5Db25zdHJ1Y3Rvck9mQ29kZUxlbmd0aDsKK2V4dGVy
biBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluQ29uc3RydWN0b3JPZkNvZGVD
b25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfYnVpbHRpbkNvbnN0cnVjdG9y
RnJvbUNvZGU7CitleHRlcm4gY29uc3QgaW50IHNfYnVpbHRpbkNvbnN0cnVjdG9yRnJvbUNvZGVM
ZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpbkNvbnN0
cnVjdG9yRnJvbUNvZGVDb25zdHJ1Y3RBYmlsaXR5OworCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JV
SUxUSU5DT05TVFJVQ1RPUl9CVUlMVElOX0RBVEEobWFjcm8pIFwKKyAgICBtYWNybyhvZiwgYnVp
bHRpbkNvbnN0cnVjdG9yT2YsIDApIFwKKyAgICBtYWNybyhmcm9tLCBidWlsdGluQ29uc3RydWN0
b3JGcm9tLCAxKSBcCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTkNPTlNUUlVDVE9SX09G
IDEKKyNkZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTkNPTlNUUlVDVE9SX0ZST00gMQorCisjZGVm
aW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5DT05TVFJVQ1RPUl9CVUlMVElOX0NPREUobWFjcm8pIFwK
KyAgICBtYWNybyhidWlsdGluQ29uc3RydWN0b3JPZkNvZGUsIG9mLCBzX2J1aWx0aW5Db25zdHJ1
Y3Rvck9mQ29kZUxlbmd0aCkgXAorICAgIG1hY3JvKGJ1aWx0aW5Db25zdHJ1Y3RvckZyb21Db2Rl
LCBmcm9tLCBzX2J1aWx0aW5Db25zdHJ1Y3RvckZyb21Db2RlTGVuZ3RoKSBcCisKKyNkZWZpbmUg
SlNDX0ZPUkVBQ0hfQlVJTFRJTkNPTlNUUlVDVE9SX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNy
bykgXAorICAgIG1hY3JvKGZyb20pIFwKKyAgICBtYWNybyhvZikgXAorCisjZGVmaW5lIERFQ0xB
UkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3Vu
dCkgXAorICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpT
Qzo6Vk0mKTsKKworSlNDX0ZPUkVBQ0hfQlVJTFRJTkNPTlNUUlVDVE9SX0JVSUxUSU5fQ09ERShE
RUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFU
T1IKKworI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOQ09OU1RSVUNUT1JfRVhJU1RTKG9iamVj
dCwgZnVuYykgZGVmaW5lZCBKU0NfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVuYworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEJ1aWx0aW5Db25zdHJ1Y3RvckJ1aWx0aW5z
X2gKKworIyMjIEVuZCBGaWxlOiBCdWlsdGluQ29uc3RydWN0b3JCdWlsdGlucy5oCisKKyMjIyBC
ZWdpbiBGaWxlOiBCdWlsdGluQ29uc3RydWN0b3JCdWlsdGlucy5jcHAKKy8qCisgKiBDb3B5cmln
aHQgKGMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisg
Ki8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVy
YXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnVpbHRpbkNvbnN0cnVjdG9yQnVpbHRp
bnMuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkV4ZWN1
dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5D
b25zdHJ1Y3Rvck9mQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6
OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0aW5Db25zdHJ1Y3Rvck9mQ29kZUxl
bmd0aCA9IDI5NDsKK2NvbnN0IGNoYXIqIHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2RlID0KKyAg
ICAiKGZ1bmN0aW9uICgpXG4iIFwKKyAgICAie1xuIiBcCisgICAgIiAgICBcInVzZSBzdHJpY3Rc
IjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5n
dGg7XG4iIFwKKyAgICAiICAgIC8vXG4iIFwKKyAgICAiICAgIHZhciBhcnJheSA9IHR5cGVvZiB0
aGlzID09PSAnZnVuY3Rpb24nID8gbmV3IHRoaXMobGVuZ3RoKSA6IG5ldyBAQXJyYXkobGVuZ3Ro
KTtcbiIgXAorICAgICIgICAgZm9yICh2YXIgayA9IDA7IGsgPCBsZW5ndGg7ICsraylcbiIgXAor
ICAgICIgICAgICAgIEBwdXRCeVZhbERpcmVjdChhcnJheSwgaywgYXJndW1lbnRzW2tdKTtcbiIg
XAorICAgICIgICAgYXJyYXkubGVuZ3RoID0gbGVuZ3RoO1xuIiBcCisgICAgIiAgICByZXR1cm4g
YXJyYXk7XG4iIFwKKyAgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxp
dHkgc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNv
bnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0aW5Db25z
dHJ1Y3RvckZyb21Db2RlTGVuZ3RoID0gMjA0NjsKK2NvbnN0IGNoYXIqIHNfYnVpbHRpbkNvbnN0
cnVjdG9yRnJvbUNvZGUgPQorICAgICIoZnVuY3Rpb24gKGl0ZW1zIClcbiIgXAorICAgICJ7XG4i
IFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICB2
YXIgdGhpc09iaiA9IHRoaXM7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHZhciBtYXBGbiA9
IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuIiBcCisg
ICAgIlxuIiBcCisgICAgIiAgICB2YXIgdGhpc0FyZztcbiIgXAorICAgICJcbiIgXAorICAgICIg
ICAgaWYgKG1hcEZuICE9PSB1bmRlZmluZWQpIHtcbiIgXAorICAgICIgICAgICAgIGlmICh0eXBl
b2YgbWFwRm4gIT09IFwiZnVuY3Rpb25cIilcbiIgXAorICAgICIgICAgICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcihcIkFycmF5LmZyb20gcmVxdWlyZXMgdGhhdCB0aGUgc2Vjb25kIGFyZ3Vt
ZW50LCB3aGVuIHByb3ZpZGVkLCBiZSBhIGZ1bmN0aW9uXCIpO1xuIiBcCisgICAgIlxuIiBcCisg
ICAgIiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKVxuIiBcCisgICAgIiAgICAgICAg
ICAgIHRoaXNBcmcgPSBhcmd1bWVudHNbMl07XG4iIFwKKyAgICAiICAgIH1cbiIgXAorICAgICJc
biIgXAorICAgICIgICAgaWYgKGl0ZW1zID09IG51bGwpXG4iIFwKKyAgICAiICAgICAgICB0aHJv
dyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LmZyb20gcmVxdWlyZXMgYW4gYXJyYXktbGlrZSBvYmpl
Y3QgLSBub3QgbnVsbCBvciB1bmRlZmluZWRcIik7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAg
IHZhciBpdGVyYXRvck1ldGhvZCA9IGl0ZW1zW0BzeW1ib2xJdGVyYXRvcl07XG4iIFwKKyAgICAi
ICAgIGlmIChpdGVyYXRvck1ldGhvZCAhPSBudWxsKSB7XG4iIFwKKyAgICAiICAgICAgICBpZiAo
dHlwZW9mIGl0ZXJhdG9yTWV0aG9kICE9PSBcImZ1bmN0aW9uXCIpXG4iIFwKKyAgICAiICAgICAg
ICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5mcm9tIHJlcXVpcmVzIHRoYXQgdGhl
IHByb3BlcnR5IG9mIHRoZSBmaXJzdCBhcmd1bWVudCwgaXRlbXNbU3ltYm9sLml0ZXJhdG9yXSwg
d2hlbiBleGlzdHMsIGJlIGEgZnVuY3Rpb25cIik7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAg
ICAgICAvL1xuIiBcCisgICAgIiAgICAgICAgdmFyIHJlc3VsdCA9ICh0eXBlb2YgdGhpc09iaiA9
PT0gXCJmdW5jdGlvblwiKSA/IEBPYmplY3QobmV3IHRoaXNPYmooKSkgOiBbXTtcbiIgXAorICAg
ICJcbiIgXAorICAgICIgICAgICAgIHZhciBrID0gMDtcbiIgXAorICAgICIgICAgICAgIHZhciBp
dGVyYXRvciA9IGl0ZXJhdG9yTWV0aG9kLkBjYWxsKGl0ZW1zKTtcbiIgXAorICAgICJcbiIgXAor
ICAgICIgICAgICAgIC8vXG4iIFwKKyAgICAiICAgICAgICAvL1xuIiBcCisgICAgIiAgICAgICAg
Ly9cbiIgXAorICAgICIgICAgICAgIHZhciB3cmFwcGVyID0ge1xuIiBcCisgICAgIiAgICAgICAg
ICAgIFtAc3ltYm9sSXRlcmF0b3JdKCkge1xuIiBcCisgICAgIiAgICAgICAgICAgICAgICByZXR1
cm4gaXRlcmF0b3I7XG4iIFwKKyAgICAiICAgICAgICAgICAgfVxuIiBcCisgICAgIiAgICAgICAg
fTtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgICAgIGZvciAodmFyIHZhbHVlIG9mIHdyYXBw
ZXIpIHtcbiIgXAorICAgICIgICAgICAgICAgICBpZiAobWFwRm4pXG4iIFwKKyAgICAiICAgICAg
ICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHRoaXNBcmcgPT09IHVuZGVmaW5l
ZCA/IG1hcEZuKHZhbHVlLCBrKSA6IG1hcEZuLkBjYWxsKHRoaXNBcmcsIHZhbHVlLCBrKSk7XG4i
IFwKKyAgICAiICAgICAgICAgICAgZWxzZVxuIiBcCisgICAgIiAgICAgICAgICAgICAgICBAcHV0
QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB2YWx1ZSk7XG4iIFwKKyAgICAiICAgICAgICAgICAgayAr
PSAxO1xuIiBcCisgICAgIiAgICAgICAgfVxuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICAgICAg
cmVzdWx0Lmxlbmd0aCA9IGs7XG4iIFwKKyAgICAiICAgICAgICByZXR1cm4gcmVzdWx0O1xuIiBc
CisgICAgIiAgICB9XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHZhciBhcnJheUxpa2UgPSBA
T2JqZWN0KGl0ZW1zKTtcbiIgXAorICAgICIgICAgdmFyIGFycmF5TGlrZUxlbmd0aCA9IEB0b0xl
bmd0aChhcnJheUxpa2UubGVuZ3RoKTtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgLy9cbiIg
XAorICAgICIgICAgdmFyIHJlc3VsdCA9ICh0eXBlb2YgdGhpc09iaiA9PT0gXCJmdW5jdGlvblwi
KSA/IEBPYmplY3QobmV3IHRoaXNPYmooYXJyYXlMaWtlTGVuZ3RoKSkgOiBuZXcgQEFycmF5KGFy
cmF5TGlrZUxlbmd0aCk7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHZhciBrID0gMDtcbiIg
XAorICAgICIgICAgd2hpbGUgKGsgPCBhcnJheUxpa2VMZW5ndGgpIHtcbiIgXAorICAgICIgICAg
ICAgIHZhciB2YWx1ZSA9IGFycmF5TGlrZVtrXTtcbiIgXAorICAgICIgICAgICAgIGlmIChtYXBG
bilcbiIgXAorICAgICIgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB0aGlz
QXJnID09PSB1bmRlZmluZWQgPyBtYXBGbih2YWx1ZSwgaykgOiBtYXBGbi5AY2FsbCh0aGlzQXJn
LCB2YWx1ZSwgaykpO1xuIiBcCisgICAgIiAgICAgICAgZWxzZVxuIiBcCisgICAgIiAgICAgICAg
ICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHZhbHVlKTtcbiIgXAorICAgICIgICAgICAg
IGsgKz0gMTtcbiIgXAorICAgICIgICAgfVxuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICByZXN1
bHQubGVuZ3RoID0gYXJyYXlMaWtlTGVuZ3RoO1xuIiBcCisgICAgIiAgICByZXR1cm4gcmVzdWx0
O1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVS
QVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCitKU0M6OkZ1bmN0
aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAore1wKKyAg
ICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCkt
Pmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyB9
CitKU0NfRk9SRUFDSF9CVUlMVElOQ09OU1RSVUNUT1JfQlVJTFRJTl9DT0RFKERFRklORV9CVUlM
VElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKworCit9IC8v
IG5hbWVzcGFjZSBKU0MKKyMjIyBFbmQgRmlsZTogQnVpbHRpbkNvbnN0cnVjdG9yQnVpbHRpbnMu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWls
dGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1PcGVyYXRpb25zLlByb21pc2UtQ29tYmluZWQu
anMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
ZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtT3BlcmF0aW9ucy5Qcm9taXNlLUNvbWJpbmVkLmpzLXJl
c3VsdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jMTQ1MTExMWNhN2Q2NzU1ZmUyNzVhMzk0NGU3NzE2NDFiM2I5ZGY2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMv
YnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtT3BlcmF0aW9ucy5Qcm9taXNlLUNvbWJp
bmVkLmpzLXJlc3VsdApAQCAtMCwwICsxLDQxNSBAQAorIyMjIEJlZ2luIEZpbGU6IEpTQ0J1aWx0
aW5zLmgKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPi4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklM
RS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZv
cgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lmbmRlZiBKU0NCdWlsdGluc19oCisjZGVm
aW5lIEpTQ0J1aWx0aW5zX2gKKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1
dGFibGU7CitjbGFzcyBWTTsKKworZW51bSBjbGFzcyBDb25zdHJ1Y3RBYmlsaXR5IDogdW5zaWdu
ZWQ7Cit9CisKK25hbWVzcGFjZSBKU0MgeworCisvKiBPcGVyYXRpb25zLlByb21pc2UgKi8KK2V4
dGVybiBjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQcm9taXNlSXNQcm9taXNlQ29kZTsKK2V4dGVy
biBjb25zdCBpbnQgc19vcGVyYXRpb25zUHJvbWlzZUlzUHJvbWlzZUNvZGVMZW5ndGg7CitleHRl
cm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VJc1Byb21p
c2VDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQ
cm9taXNlTmV3UHJvbWlzZVJlYWN0aW9uQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19vcGVyYXRp
b25zUHJvbWlzZU5ld1Byb21pc2VSZWFjdGlvbkNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlND
OjpDb25zdHJ1Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VOZXdQcm9taXNlUmVhY3Rpb25D
b2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQcm9t
aXNlTmV3UHJvbWlzZUNhcGFiaWxpdHlDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX29wZXJhdGlv
bnNQcm9taXNlTmV3UHJvbWlzZUNhcGFiaWxpdHlDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpT
Qzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9taXNlTmV3UHJvbWlzZUNhcGFiaWxp
dHlDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQ
cm9taXNlVHJpZ2dlclByb21pc2VSZWFjdGlvbnNDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX29w
ZXJhdGlvbnNQcm9taXNlVHJpZ2dlclByb21pc2VSZWFjdGlvbnNDb2RlTGVuZ3RoOworZXh0ZXJu
IGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9taXNlVHJpZ2dlclBy
b21pc2VSZWFjdGlvbnNDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBz
X29wZXJhdGlvbnNQcm9taXNlUmVqZWN0UHJvbWlzZUNvZGU7CitleHRlcm4gY29uc3QgaW50IHNf
b3BlcmF0aW9uc1Byb21pc2VSZWplY3RQcm9taXNlQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBK
U0M6OkNvbnN0cnVjdEFiaWxpdHkgc19vcGVyYXRpb25zUHJvbWlzZVJlamVjdFByb21pc2VDb2Rl
Q29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQcm9taXNl
RnVsZmlsbFByb21pc2VDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX29wZXJhdGlvbnNQcm9taXNl
RnVsZmlsbFByb21pc2VDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJp
bGl0eSBzX29wZXJhdGlvbnNQcm9taXNlRnVsZmlsbFByb21pc2VDb2RlQ29uc3RydWN0QWJpbGl0
eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQcm9taXNlQ3JlYXRlUmVzb2x2aW5n
RnVuY3Rpb25zQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19vcGVyYXRpb25zUHJvbWlzZUNyZWF0
ZVJlc29sdmluZ0Z1bmN0aW9uc0NvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VDcmVhdGVSZXNvbHZpbmdGdW5jdGlvbnNDb2Rl
Q29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQcm9taXNl
UHJvbWlzZVJlYWN0aW9uSm9iQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19vcGVyYXRpb25zUHJv
bWlzZVByb21pc2VSZWFjdGlvbkpvYkNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25z
dHJ1Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVhY3Rpb25Kb2JDb2RlQ29u
c3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQcm9taXNlUHJv
bWlzZVJlc29sdmVUaGVuYWJsZUpvYkNvZGU7CitleHRlcm4gY29uc3QgaW50IHNfb3BlcmF0aW9u
c1Byb21pc2VQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZUxlbmd0aDsKK2V4dGVybiBjb25z
dCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19vcGVyYXRpb25zUHJvbWlzZVByb21pc2VSZXNvbHZl
VGhlbmFibGVKb2JDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX29w
ZXJhdGlvbnNQcm9taXNlSW5pdGlhbGl6ZVByb21pc2VDb2RlOworZXh0ZXJuIGNvbnN0IGludCBz
X29wZXJhdGlvbnNQcm9taXNlSW5pdGlhbGl6ZVByb21pc2VDb2RlTGVuZ3RoOworZXh0ZXJuIGNv
bnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9taXNlSW5pdGlhbGl6ZVBy
b21pc2VDb2RlQ29uc3RydWN0QWJpbGl0eTsKKworI2RlZmluZSBKU0NfRk9SRUFDSF9PUEVSQVRJ
T05TUFJPTUlTRV9CVUlMVElOX0RBVEEobWFjcm8pIFwKKyAgICBtYWNybyhpc1Byb21pc2UsIG9w
ZXJhdGlvbnNQcm9taXNlSXNQcm9taXNlLCAxKSBcCisgICAgbWFjcm8obmV3UHJvbWlzZVJlYWN0
aW9uLCBvcGVyYXRpb25zUHJvbWlzZU5ld1Byb21pc2VSZWFjdGlvbiwgMikgXAorICAgIG1hY3Jv
KG5ld1Byb21pc2VDYXBhYmlsaXR5LCBvcGVyYXRpb25zUHJvbWlzZU5ld1Byb21pc2VDYXBhYmls
aXR5LCAxKSBcCisgICAgbWFjcm8odHJpZ2dlclByb21pc2VSZWFjdGlvbnMsIG9wZXJhdGlvbnNQ
cm9taXNlVHJpZ2dlclByb21pc2VSZWFjdGlvbnMsIDIpIFwKKyAgICBtYWNybyhyZWplY3RQcm9t
aXNlLCBvcGVyYXRpb25zUHJvbWlzZVJlamVjdFByb21pc2UsIDIpIFwKKyAgICBtYWNybyhmdWxm
aWxsUHJvbWlzZSwgb3BlcmF0aW9uc1Byb21pc2VGdWxmaWxsUHJvbWlzZSwgMikgXAorICAgIG1h
Y3JvKGNyZWF0ZVJlc29sdmluZ0Z1bmN0aW9ucywgb3BlcmF0aW9uc1Byb21pc2VDcmVhdGVSZXNv
bHZpbmdGdW5jdGlvbnMsIDEpIFwKKyAgICBtYWNybyhwcm9taXNlUmVhY3Rpb25Kb2IsIG9wZXJh
dGlvbnNQcm9taXNlUHJvbWlzZVJlYWN0aW9uSm9iLCAyKSBcCisgICAgbWFjcm8ocHJvbWlzZVJl
c29sdmVUaGVuYWJsZUpvYiwgb3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVzb2x2ZVRoZW5hYmxl
Sm9iLCAzKSBcCisgICAgbWFjcm8oaW5pdGlhbGl6ZVByb21pc2UsIG9wZXJhdGlvbnNQcm9taXNl
SW5pdGlhbGl6ZVByb21pc2UsIDEpIFwKKworI2RlZmluZSBKU0NfQlVJTFRJTl9PUEVSQVRJT05T
UFJPTUlTRV9JU1BST01JU0UgMQorI2RlZmluZSBKU0NfQlVJTFRJTl9PUEVSQVRJT05TUFJPTUlT
RV9ORVdQUk9NSVNFUkVBQ1RJT04gMQorI2RlZmluZSBKU0NfQlVJTFRJTl9PUEVSQVRJT05TUFJP
TUlTRV9ORVdQUk9NSVNFQ0FQQUJJTElUWSAxCisjZGVmaW5lIEpTQ19CVUlMVElOX09QRVJBVElP
TlNQUk9NSVNFX1RSSUdHRVJQUk9NSVNFUkVBQ1RJT05TIDEKKyNkZWZpbmUgSlNDX0JVSUxUSU5f
T1BFUkFUSU9OU1BST01JU0VfUkVKRUNUUFJPTUlTRSAxCisjZGVmaW5lIEpTQ19CVUlMVElOX09Q
RVJBVElPTlNQUk9NSVNFX0ZVTEZJTExQUk9NSVNFIDEKKyNkZWZpbmUgSlNDX0JVSUxUSU5fT1BF
UkFUSU9OU1BST01JU0VfQ1JFQVRFUkVTT0xWSU5HRlVOQ1RJT05TIDEKKyNkZWZpbmUgSlNDX0JV
SUxUSU5fT1BFUkFUSU9OU1BST01JU0VfUFJPTUlTRVJFQUNUSU9OSk9CIDEKKyNkZWZpbmUgSlND
X0JVSUxUSU5fT1BFUkFUSU9OU1BST01JU0VfUFJPTUlTRVJFU09MVkVUSEVOQUJMRUpPQiAxCisj
ZGVmaW5lIEpTQ19CVUlMVElOX09QRVJBVElPTlNQUk9NSVNFX0lOSVRJQUxJWkVQUk9NSVNFIDEK
KworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUobWFjcm8pIFwKKyAgICBtYWNybyhv
cGVyYXRpb25zUHJvbWlzZUlzUHJvbWlzZUNvZGUsIGlzUHJvbWlzZSwgc19vcGVyYXRpb25zUHJv
bWlzZUlzUHJvbWlzZUNvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhvcGVyYXRpb25zUHJvbWlzZU5l
d1Byb21pc2VSZWFjdGlvbkNvZGUsIG5ld1Byb21pc2VSZWFjdGlvbiwgc19vcGVyYXRpb25zUHJv
bWlzZU5ld1Byb21pc2VSZWFjdGlvbkNvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhvcGVyYXRpb25z
UHJvbWlzZU5ld1Byb21pc2VDYXBhYmlsaXR5Q29kZSwgbmV3UHJvbWlzZUNhcGFiaWxpdHksIHNf
b3BlcmF0aW9uc1Byb21pc2VOZXdQcm9taXNlQ2FwYWJpbGl0eUNvZGVMZW5ndGgpIFwKKyAgICBt
YWNybyhvcGVyYXRpb25zUHJvbWlzZVRyaWdnZXJQcm9taXNlUmVhY3Rpb25zQ29kZSwgdHJpZ2dl
clByb21pc2VSZWFjdGlvbnMsIHNfb3BlcmF0aW9uc1Byb21pc2VUcmlnZ2VyUHJvbWlzZVJlYWN0
aW9uc0NvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhvcGVyYXRpb25zUHJvbWlzZVJlamVjdFByb21p
c2VDb2RlLCByZWplY3RQcm9taXNlLCBzX29wZXJhdGlvbnNQcm9taXNlUmVqZWN0UHJvbWlzZUNv
ZGVMZW5ndGgpIFwKKyAgICBtYWNybyhvcGVyYXRpb25zUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29k
ZSwgZnVsZmlsbFByb21pc2UsIHNfb3BlcmF0aW9uc1Byb21pc2VGdWxmaWxsUHJvbWlzZUNvZGVM
ZW5ndGgpIFwKKyAgICBtYWNybyhvcGVyYXRpb25zUHJvbWlzZUNyZWF0ZVJlc29sdmluZ0Z1bmN0
aW9uc0NvZGUsIGNyZWF0ZVJlc29sdmluZ0Z1bmN0aW9ucywgc19vcGVyYXRpb25zUHJvbWlzZUNy
ZWF0ZVJlc29sdmluZ0Z1bmN0aW9uc0NvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhvcGVyYXRpb25z
UHJvbWlzZVByb21pc2VSZWFjdGlvbkpvYkNvZGUsIHByb21pc2VSZWFjdGlvbkpvYiwgc19vcGVy
YXRpb25zUHJvbWlzZVByb21pc2VSZWFjdGlvbkpvYkNvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhv
cGVyYXRpb25zUHJvbWlzZVByb21pc2VSZXNvbHZlVGhlbmFibGVKb2JDb2RlLCBwcm9taXNlUmVz
b2x2ZVRoZW5hYmxlSm9iLCBzX29wZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJlc29sdmVUaGVuYWJs
ZUpvYkNvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhvcGVyYXRpb25zUHJvbWlzZUluaXRpYWxpemVQ
cm9taXNlQ29kZSwgaW5pdGlhbGl6ZVByb21pc2UsIHNfb3BlcmF0aW9uc1Byb21pc2VJbml0aWFs
aXplUHJvbWlzZUNvZGVMZW5ndGgpIFwKKworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOX0ZV
TkNUSU9OX05BTUUobWFjcm8pIFwKKyAgICBtYWNybyhjcmVhdGVSZXNvbHZpbmdGdW5jdGlvbnMp
IFwKKyAgICBtYWNybyhmdWxmaWxsUHJvbWlzZSkgXAorICAgIG1hY3JvKGluaXRpYWxpemVQcm9t
aXNlKSBcCisgICAgbWFjcm8oaXNQcm9taXNlKSBcCisgICAgbWFjcm8obmV3UHJvbWlzZUNhcGFi
aWxpdHkpIFwKKyAgICBtYWNybyhuZXdQcm9taXNlUmVhY3Rpb24pIFwKKyAgICBtYWNybyhwcm9t
aXNlUmVhY3Rpb25Kb2IpIFwKKyAgICBtYWNybyhwcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iKSBc
CisgICAgbWFjcm8ocmVqZWN0UHJvbWlzZSkgXAorICAgIG1hY3JvKHRyaWdnZXJQcm9taXNlUmVh
Y3Rpb25zKSBcCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwg
ZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCisgICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCitKU0NfRk9SRUFDSF9CVUlMVElO
X0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5f
R0VORVJBVE9SCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fRVhJU1RTKG9iamVjdCwgZnVuYykgZGVm
aW5lZCBKU0NfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVuYworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworI2VuZGlmIC8vIEpTQ0J1aWx0aW5zX2gKKworIyMjIEVuZCBGaWxlOiBKU0NCdWls
dGlucy5oCisKKyMjIyBCZWdpbiBGaWxlOiBKU0NCdWlsdGlucy5jcHAKKy8qCisgKiBDb3B5cmln
aHQgKGMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqIAor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxs
eSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhl
IHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRp
bnMucHkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCisK
KyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgi
CisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19vcGVyYXRpb25zUHJvbWlz
ZUlzUHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpD
YW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19vcGVyYXRpb25zUHJvbWlzZUlzUHJvbWlzZUNv
ZGVMZW5ndGggPSAxNTg7Citjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQcm9taXNlSXNQcm9taXNl
Q29kZSA9CisgICAiKGZ1bmN0aW9uIChwcm9taXNlKVxuIiBcCisgICAie1xuIiBcCisgICAiICAg
IFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgcmV0dXJuIEBpc09iamVj
dChwcm9taXNlKSAmJiAhIXByb21pc2UuQHByb21pc2VTdGF0ZTtcbiIgXAorICAgIn0pXG4iIFwK
KzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VOZXdQ
cm9taXNlUmVhY3Rpb25Db2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0
eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfb3BlcmF0aW9uc1Byb21pc2VOZXdQcm9t
aXNlUmVhY3Rpb25Db2RlTGVuZ3RoID0gMjIwOworY29uc3QgY2hhciogc19vcGVyYXRpb25zUHJv
bWlzZU5ld1Byb21pc2VSZWFjdGlvbkNvZGUgPQorICAgIihmdW5jdGlvbiAoY2FwYWJpbGl0eSwg
aGFuZGxlcilcbiIgXAorICAgIntcbiIgXAorICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAor
ICAgIlxuIiBcCisgICAiICAgIHJldHVybiB7XG4iIFwKKyAgICIgICAgICAgIEBjYXBhYmlsaXRp
ZXM6IGNhcGFiaWxpdHksXG4iIFwKKyAgICIgICAgICAgIEBoYW5kbGVyOiBoYW5kbGVyXG4iIFwK
KyAgICIgICAgfTtcbiIgXAorICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RB
YmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VOZXdQcm9taXNlQ2FwYWJpbGl0eUNvZGVDb25zdHJ1
Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25z
dCBpbnQgc19vcGVyYXRpb25zUHJvbWlzZU5ld1Byb21pc2VDYXBhYmlsaXR5Q29kZUxlbmd0aCA9
IDE0Mjc7Citjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQcm9taXNlTmV3UHJvbWlzZUNhcGFiaWxp
dHlDb2RlID0KKyAgICIoZnVuY3Rpb24gKGNvbnN0cnVjdG9yKVxuIiBcCisgICAie1xuIiBcCisg
ICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgLy9cbiIgXAor
ICAgIiAgICBpZiAodHlwZW9mIGNvbnN0cnVjdG9yICE9PSBcImZ1bmN0aW9uXCIpXG4iIFwKKyAg
ICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwicHJvbWlzZSBjYXBhYmlsaXR5IHJlcXVp
cmVzIGEgY29uc3RydWN0b3IgZnVuY3Rpb25cIik7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICB2
YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSB7XG4iIFwKKyAgICIgICAgICAgIEBwcm9taXNlOiB1bmRl
ZmluZWQsXG4iIFwKKyAgICIgICAgICAgIEByZXNvbHZlOiB1bmRlZmluZWQsXG4iIFwKKyAgICIg
ICAgICAgIEByZWplY3Q6IHVuZGVmaW5lZFxuIiBcCisgICAiICAgIH07XG4iIFwKKyAgICJcbiIg
XAorICAgIiAgICBmdW5jdGlvbiBleGVjdXRvcihyZXNvbHZlLCByZWplY3QpXG4iIFwKKyAgICIg
ICAge1xuIiBcCisgICAiICAgICAgICBpZiAocHJvbWlzZUNhcGFiaWxpdHkuQHJlc29sdmUgIT09
IHVuZGVmaW5lZClcbiIgXAorICAgIiAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwi
cmVzb2x2ZSBmdW5jdGlvbiBpcyBhbHJlYWR5IHNldFwiKTtcbiIgXAorICAgIiAgICAgICAgaWYg
KHByb21pc2VDYXBhYmlsaXR5LkByZWplY3QgIT09IHVuZGVmaW5lZClcbiIgXAorICAgIiAgICAg
ICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwicmVqZWN0IGZ1bmN0aW9uIGlzIGFscmVhZHkg
c2V0XCIpO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgICAgIHByb21pc2VDYXBhYmlsaXR5LkBy
ZXNvbHZlID0gcmVzb2x2ZTtcbiIgXAorICAgIiAgICAgICAgcHJvbWlzZUNhcGFiaWxpdHkuQHJl
amVjdCA9IHJlamVjdDtcbiIgXAorICAgIiAgICB9XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICB2
YXIgcHJvbWlzZSA9IG5ldyBjb25zdHJ1Y3RvcihleGVjdXRvcik7XG4iIFwKKyAgICJcbiIgXAor
ICAgIiAgICBpZiAodHlwZW9mIHByb21pc2VDYXBhYmlsaXR5LkByZXNvbHZlICE9PSBcImZ1bmN0
aW9uXCIpXG4iIFwKKyAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiZXhlY3V0b3Ig
ZGlkIG5vdCB0YWtlIGEgcmVzb2x2ZSBmdW5jdGlvblwiKTtcbiIgXAorICAgIlxuIiBcCisgICAi
ICAgIGlmICh0eXBlb2YgcHJvbWlzZUNhcGFiaWxpdHkuQHJlamVjdCAhPT0gXCJmdW5jdGlvblwi
KVxuIiBcCisgICAiICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcImV4ZWN1dG9yIGRpZCBu
b3QgdGFrZSBhIHJlamVjdCBmdW5jdGlvblwiKTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHBy
b21pc2VDYXBhYmlsaXR5LkBwcm9taXNlID0gcHJvbWlzZTtcbiIgXAorICAgIlxuIiBcCisgICAi
ICAgIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eTtcbiIgXAorICAgIn0pXG4iIFwKKzsKKworY29u
c3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VUcmlnZ2VyUHJvbWlz
ZVJlYWN0aW9uc0NvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpD
YW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19vcGVyYXRpb25zUHJvbWlzZVRyaWdnZXJQcm9t
aXNlUmVhY3Rpb25zQ29kZUxlbmd0aCA9IDI2OTsKK2NvbnN0IGNoYXIqIHNfb3BlcmF0aW9uc1By
b21pc2VUcmlnZ2VyUHJvbWlzZVJlYWN0aW9uc0NvZGUgPQorICAgIihmdW5jdGlvbiAocmVhY3Rp
b25zLCBhcmd1bWVudClcbiIgXAorICAgIntcbiIgXAorICAgIiAgICBcInVzZSBzdHJpY3RcIjtc
biIgXAorICAgIlxuIiBcCisgICAiICAgIGZvciAodmFyIGluZGV4ID0gMCwgbGVuZ3RoID0gcmVh
Y3Rpb25zLmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7ICsraW5kZXgpXG4iIFwKKyAgICIgICAgICAg
IEBlbnF1ZXVlSm9iKEBwcm9taXNlUmVhY3Rpb25Kb2IsIFtyZWFjdGlvbnNbaW5kZXhdLCBhcmd1
bWVudF0pO1xuIiBcCisgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxp
dHkgc19vcGVyYXRpb25zUHJvbWlzZVJlamVjdFByb21pc2VDb2RlQ29uc3RydWN0QWJpbGl0eSA9
IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfb3Bl
cmF0aW9uc1Byb21pc2VSZWplY3RQcm9taXNlQ29kZUxlbmd0aCA9IDU0MTsKK2NvbnN0IGNoYXIq
IHNfb3BlcmF0aW9uc1Byb21pc2VSZWplY3RQcm9taXNlQ29kZSA9CisgICAiKGZ1bmN0aW9uIChw
cm9taXNlLCByZWFzb24pXG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7
XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICB2YXIgcmVhY3Rpb25zID0gcHJvbWlzZS5AcHJvbWlz
ZVJlamVjdFJlYWN0aW9ucztcbiIgXAorICAgIiAgICBwcm9taXNlLkBwcm9taXNlUmVzdWx0ID0g
cmVhc29uO1xuIiBcCisgICAiICAgIHByb21pc2UuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zID0g
dW5kZWZpbmVkO1xuIiBcCisgICAiICAgIHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnMg
PSB1bmRlZmluZWQ7XG4iIFwKKyAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVN0YXRlID0gQHByb21p
c2VSZWplY3RlZDtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIEBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24ucHJvbWlzZVJlamVjdGVkKHByb21pc2UsIHJlYXNvbiwgcmVhY3Rpb25zKTtcbiIgXAor
ICAgIlxuIiBcCisgICAiICAgIEB0cmlnZ2VyUHJvbWlzZVJlYWN0aW9ucyhyZWFjdGlvbnMsIHJl
YXNvbik7XG4iIFwKKyAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0
eSBzX29wZXJhdGlvbnNQcm9taXNlRnVsZmlsbFByb21pc2VDb2RlQ29uc3RydWN0QWJpbGl0eSA9
IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfb3Bl
cmF0aW9uc1Byb21pc2VGdWxmaWxsUHJvbWlzZUNvZGVMZW5ndGggPSA1NDA7Citjb25zdCBjaGFy
KiBzX29wZXJhdGlvbnNQcm9taXNlRnVsZmlsbFByb21pc2VDb2RlID0KKyAgICIoZnVuY3Rpb24g
KHByb21pc2UsIHZhbHVlKVxuIiBcCisgICAie1xuIiBcCisgICAiICAgIFwidXNlIHN0cmljdFwi
O1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdmFyIHJlYWN0aW9ucyA9IHByb21pc2UuQHByb21p
c2VGdWxmaWxsUmVhY3Rpb25zO1xuIiBcCisgICAiICAgIHByb21pc2UuQHByb21pc2VSZXN1bHQg
PSB2YWx1ZTtcbiIgXAorICAgIiAgICBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9ucyA9
IHVuZGVmaW5lZDtcbiIgXAorICAgIiAgICBwcm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25z
ID0gdW5kZWZpbmVkO1xuIiBcCisgICAiICAgIHByb21pc2UuQHByb21pc2VTdGF0ZSA9IEBwcm9t
aXNlRnVsZmlsbGVkO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgQEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5wcm9taXNlRnVsZmlsbGVkKHByb21pc2UsIHZhbHVlLCByZWFjdGlvbnMpO1xuIiBc
CisgICAiXG4iIFwKKyAgICIgICAgQHRyaWdnZXJQcm9taXNlUmVhY3Rpb25zKHJlYWN0aW9ucywg
dmFsdWUpO1xuIiBcCisgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxp
dHkgc19vcGVyYXRpb25zUHJvbWlzZUNyZWF0ZVJlc29sdmluZ0Z1bmN0aW9uc0NvZGVDb25zdHJ1
Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25z
dCBpbnQgc19vcGVyYXRpb25zUHJvbWlzZUNyZWF0ZVJlc29sdmluZ0Z1bmN0aW9uc0NvZGVMZW5n
dGggPSAxNDY4OworY29uc3QgY2hhciogc19vcGVyYXRpb25zUHJvbWlzZUNyZWF0ZVJlc29sdmlu
Z0Z1bmN0aW9uc0NvZGUgPQorICAgIihmdW5jdGlvbiAocHJvbWlzZSlcbiIgXAorICAgIntcbiIg
XAorICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHZhciBh
bHJlYWR5UmVzb2x2ZWQgPSBmYWxzZTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHZhciByZXNv
bHZlID0gZnVuY3Rpb24gKHJlc29sdXRpb24pIHtcbiIgXAorICAgIiAgICAgICAgaWYgKGFscmVh
ZHlSZXNvbHZlZClcbiIgXAorICAgIiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4iIFwK
KyAgICIgICAgICAgIGFscmVhZHlSZXNvbHZlZCA9IHRydWU7XG4iIFwKKyAgICJcbiIgXAorICAg
IiAgICAgICAgaWYgKHJlc29sdXRpb24gPT09IHByb21pc2UpXG4iIFwKKyAgICIgICAgICAgICAg
ICByZXR1cm4gQHJlamVjdFByb21pc2UocHJvbWlzZSwgbmV3IEBUeXBlRXJyb3IoXCJSZXNvbHZl
IGEgcHJvbWlzZSB3aXRoIGl0c2VsZlwiKSk7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICAgICAg
aWYgKCFAaXNPYmplY3QocmVzb2x1dGlvbikpXG4iIFwKKyAgICIgICAgICAgICAgICByZXR1cm4g
QGZ1bGZpbGxQcm9taXNlKHByb21pc2UsIHJlc29sdXRpb24pO1xuIiBcCisgICAiXG4iIFwKKyAg
ICIgICAgICAgIHZhciB0aGVuO1xuIiBcCisgICAiICAgICAgICB0cnkge1xuIiBcCisgICAiICAg
ICAgICAgICAgdGhlbiA9IHJlc29sdXRpb24udGhlbjtcbiIgXAorICAgIiAgICAgICAgfSBjYXRj
aCAoZXJyb3IpIHtcbiIgXAorICAgIiAgICAgICAgICAgIHJldHVybiBAcmVqZWN0UHJvbWlzZShw
cm9taXNlLCBlcnJvcik7XG4iIFwKKyAgICIgICAgICAgIH1cbiIgXAorICAgIlxuIiBcCisgICAi
ICAgICAgICBpZiAodHlwZW9mIHRoZW4gIT09ICdmdW5jdGlvbicpXG4iIFwKKyAgICIgICAgICAg
ICAgICByZXR1cm4gQGZ1bGZpbGxQcm9taXNlKHByb21pc2UsIHJlc29sdXRpb24pO1xuIiBcCisg
ICAiXG4iIFwKKyAgICIgICAgICAgIEBlbnF1ZXVlSm9iKEBwcm9taXNlUmVzb2x2ZVRoZW5hYmxl
Sm9iLCBbcHJvbWlzZSwgcmVzb2x1dGlvbiwgdGhlbl0pO1xuIiBcCisgICAiXG4iIFwKKyAgICIg
ICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4iIFwKKyAgICIgICAgfTtcbiIgXAorICAgIlxuIiBc
CisgICAiICAgIHZhciByZWplY3QgPSBmdW5jdGlvbiAocmVhc29uKSB7XG4iIFwKKyAgICIgICAg
ICAgIGlmIChhbHJlYWR5UmVzb2x2ZWQpXG4iIFwKKyAgICIgICAgICAgICAgICByZXR1cm4gdW5k
ZWZpbmVkO1xuIiBcCisgICAiICAgICAgICBhbHJlYWR5UmVzb2x2ZWQgPSB0cnVlO1xuIiBcCisg
ICAiXG4iIFwKKyAgICIgICAgICAgIHJldHVybiBAcmVqZWN0UHJvbWlzZShwcm9taXNlLCByZWFz
b24pO1xuIiBcCisgICAiICAgIH07XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICByZXR1cm4ge1xu
IiBcCisgICAiICAgICAgICBAcmVzb2x2ZTogcmVzb2x2ZSxcbiIgXAorICAgIiAgICAgICAgQHJl
amVjdDogcmVqZWN0XG4iIFwKKyAgICIgICAgfTtcbiIgXAorICAgIn0pXG4iIFwKKzsKKworY29u
c3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVhY3Rp
b25Kb2JDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90
Q29uc3RydWN0OworY29uc3QgaW50IHNfb3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVhY3Rpb25K
b2JDb2RlTGVuZ3RoID0gNDkzOworY29uc3QgY2hhciogc19vcGVyYXRpb25zUHJvbWlzZVByb21p
c2VSZWFjdGlvbkpvYkNvZGUgPQorICAgIihmdW5jdGlvbiAocmVhY3Rpb24sIGFyZ3VtZW50KVxu
IiBcCisgICAie1xuIiBcCisgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwK
KyAgICIgICAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gcmVhY3Rpb24uQGNhcGFiaWxpdGllcztc
biIgXAorICAgIlxuIiBcCisgICAiICAgIHZhciByZXN1bHQ7XG4iIFwKKyAgICIgICAgdHJ5IHtc
biIgXAorICAgIiAgICAgICAgcmVzdWx0ID0gcmVhY3Rpb24uQGhhbmRsZXIuQGNhbGwodW5kZWZp
bmVkLCBhcmd1bWVudCk7XG4iIFwKKyAgICIgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiIgXAorICAg
IiAgICAgICAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LkByZWplY3QuQGNhbGwodW5kZWZpbmVk
LCBlcnJvcik7XG4iIFwKKyAgICIgICAgfVxuIiBcCisgICAiXG4iIFwKKyAgICIgICAgcmV0dXJu
IHByb21pc2VDYXBhYmlsaXR5LkByZXNvbHZlLkBjYWxsKHVuZGVmaW5lZCwgcmVzdWx0KTtcbiIg
XAorICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfb3BlcmF0
aW9uc1Byb21pc2VQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZUNvbnN0cnVjdEFiaWxpdHkg
PSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX29w
ZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYkNvZGVMZW5ndGggPSA0NTM7
Citjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJlc29sdmVUaGVuYWJsZUpv
YkNvZGUgPQorICAgIihmdW5jdGlvbiAocHJvbWlzZVRvUmVzb2x2ZSwgdGhlbmFibGUsIHRoZW4p
XG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICJcbiIg
XAorICAgIiAgICB2YXIgcmVzb2x2aW5nRnVuY3Rpb25zID0gQGNyZWF0ZVJlc29sdmluZ0Z1bmN0
aW9ucyhwcm9taXNlVG9SZXNvbHZlKTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHRyeSB7XG4i
IFwKKyAgICIgICAgICAgIHJldHVybiB0aGVuLkBjYWxsKHRoZW5hYmxlLCByZXNvbHZpbmdGdW5j
dGlvbnMuQHJlc29sdmUsIHJlc29sdmluZ0Z1bmN0aW9ucy5AcmVqZWN0KTtcbiIgXAorICAgIiAg
ICB9IGNhdGNoIChlcnJvcikge1xuIiBcCisgICAiICAgICAgICByZXR1cm4gcmVzb2x2aW5nRnVu
Y3Rpb25zLkByZWplY3QuQGNhbGwodW5kZWZpbmVkLCBlcnJvcik7XG4iIFwKKyAgICIgICAgfVxu
IiBcCisgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19vcGVy
YXRpb25zUHJvbWlzZUluaXRpYWxpemVQcm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6
OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX29wZXJhdGlv
bnNQcm9taXNlSW5pdGlhbGl6ZVByb21pc2VDb2RlTGVuZ3RoID0gNzMxOworY29uc3QgY2hhciog
c19vcGVyYXRpb25zUHJvbWlzZUluaXRpYWxpemVQcm9taXNlQ29kZSA9CisgICAiKGZ1bmN0aW9u
IChleGVjdXRvcilcbiIgXAorICAgIntcbiIgXAorICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIg
XAorICAgIlxuIiBcCisgICAiICAgIGlmICh0eXBlb2YgZXhlY3V0b3IgIT09ICdmdW5jdGlvbicp
XG4iIFwKKyAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiUHJvbWlzZSBjb25zdHJ1
Y3RvciB0YWtlcyBhIGZ1bmN0aW9uIGFyZ3VtZW50XCIpO1xuIiBcCisgICAiXG4iIFwKKyAgICIg
ICAgdGhpcy5AcHJvbWlzZVN0YXRlID0gQHByb21pc2VQZW5kaW5nO1xuIiBcCisgICAiICAgIHRo
aXMuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zID0gW107XG4iIFwKKyAgICIgICAgdGhpcy5AcHJv
bWlzZVJlamVjdFJlYWN0aW9ucyA9IFtdO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdmFyIHJl
c29sdmluZ0Z1bmN0aW9ucyA9IEBjcmVhdGVSZXNvbHZpbmdGdW5jdGlvbnModGhpcyk7XG4iIFwK
KyAgICIgICAgdHJ5IHtcbiIgXAorICAgIiAgICAgICAgZXhlY3V0b3IocmVzb2x2aW5nRnVuY3Rp
b25zLkByZXNvbHZlLCByZXNvbHZpbmdGdW5jdGlvbnMuQHJlamVjdCk7XG4iIFwKKyAgICIgICAg
fSBjYXRjaCAoZXJyb3IpIHtcbiIgXAorICAgIiAgICAgICAgcmV0dXJuIHJlc29sdmluZ0Z1bmN0
aW9ucy5AcmVqZWN0LkBjYWxsKHVuZGVmaW5lZCwgZXJyb3IpO1xuIiBcCisgICAiICAgIH1cbiIg
XAorICAgIlxuIiBcCisgICAiICAgIHJldHVybiB0aGlzO1xuIiBcCisgICAifSlcbiIgXAorOwor
CisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5h
bWUsIGFyZ3VtZW50Q291bnQpIFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMj
R2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCit7XAorICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0
YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1
dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IH0KK0pTQ19GT1JFQUNIX0JVSUxUSU5fQ09E
RShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJB
VE9SCisKKworfSAvLyBuYW1lc3BhY2UgSlNDCisjIyMgRW5kIEZpbGU6IEpTQ0J1aWx0aW5zLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRp
bnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJD
b3JlLUd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NWEyMWQ0
NjU2ODY2ZmU4ZjczN2YxODMwN2IxMjYyNGE3NDQ4MmFhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29y
ZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTAsMCArMSwzMTggQEAKKyMj
IyBCZWdpbiBGaWxlOiBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmgKKy8qCisgKiBDb3B5cmlnaHQg
KGMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8K
KworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRl
ZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisj
aWZuZGVmIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNfaAorI2RlZmluZSBHdWFyZGVkQnVpbHRpbkJ1
aWx0aW5zX2gKKworI2luY2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK30KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisvKiBHdWFyZGVkQnVpbHRpbiAqLworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfZ3VhcmRl
ZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19n
dWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlTGVuZ3RoOworZXh0ZXJuIGNv
bnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVh
bUxvY2tlZENvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfZ3VhcmRl
ZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGU7CitleHRlcm4gY29uc3QgaW50IHNfZ3Vh
cmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGVMZW5ndGg7CitleHRlcm4gY29uc3Qg
SlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVh
bUNvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfZ3VhcmRlZEJ1aWx0
aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19ndWFyZGVkQnVp
bHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29u
c3RydWN0QWJpbGl0eSBzX2d1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVDb25z
dHJ1Y3RBYmlsaXR5OworCisjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9C
VUlMVElOX0RBVEEobWFjcm8pIFwKKyAgICBtYWNybyhpc1JlYWRhYmxlU3RyZWFtTG9ja2VkLCBn
dWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIDEpIFwKKyAgICBtYWNybyhjYW5j
ZWxSZWFkYWJsZVN0cmVhbSwgZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbSwgMikg
XAorICAgIG1hY3JvKHByb21pc2VJbnZva2VPck5vb3AsIGd1YXJkZWRCdWlsdGluUHJvbWlzZUlu
dm9rZU9yTm9vcCwgMykgXAorCisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9HVUFSREVEQlVJTFRJ
Tl9JU1JFQURBQkxFU1RSRUFNTE9DS0VEIDEKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX0dVQVJE
RURCVUlMVElOX0NBTkNFTFJFQURBQkxFU1RSRUFNIDEKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElO
X0dVQVJERURCVUlMVElOX1BST01JU0VJTlZPS0VPUk5PT1AgMQorCisjZGVmaW5lIFdFQkNPUkVf
Rk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUobWFjcm8pIFwKKyAgICBtYWNybyhn
dWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlLCBpc1JlYWRhYmxlU3RyZWFt
TG9ja2VkLCBzX2d1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5ndGgp
IFwKKyAgICBtYWNybyhndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZSwgY2Fu
Y2VsUmVhZGFibGVTdHJlYW0sIHNfZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNv
ZGVMZW5ndGgpIFwKKyAgICBtYWNybyhndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BD
b2RlLCBwcm9taXNlSW52b2tlT3JOb29wLCBzX2d1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9y
Tm9vcENvZGVMZW5ndGgpIFwKKworI2RlZmluZSBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxU
SU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcCisgICAgbWFjcm8oY2FuY2VsUmVhZGFi
bGVTdHJlYW0pIFwKKyAgICBtYWNybyhpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKSBcCisgICAgbWFj
cm8ocHJvbWlzZUludm9rZU9yTm9vcCkgXAorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5F
UkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorICAgIEpTQzo6
RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKworV0VC
Q09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5f
R0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKKworI2RlZmluZSBX
RUJDT1JFX0JVSUxUSU5fR1VBUkRFREJVSUxUSU5fRVhJU1RTKG9iamVjdCwgZnVuYykgZGVmaW5l
ZCBXRUJDT1JFX0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gR3VhcmRlZEJ1aWx0aW5CdWlsdGluc19oCisKKyMjIyBF
bmQgRmlsZTogR3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5oCisKKyMjIyBCZWdpbiBGaWxlOiBHdWFy
ZGVkQnVpbHRpbkJ1aWx0aW5zLmNwcAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJ
VCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlw
dCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmgiCisKKyNpbmNsdWRlICJXZWJD
b3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSA8cnVudGltZS9FeGVjdXRhYmxlLmg+CisjaW5j
bHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlND
ZWxsSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oPgorI2lu
Y2x1ZGUgPHJ1bnRpbWUvVk0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBKU0M6
OkNvbnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRD
b2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3Ry
dWN0OworY29uc3QgaW50IHNfZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29k
ZUxlbmd0aCA9IDcxOworY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJl
YW1Mb2NrZWRDb2RlID0KKyAgICAiKGZ1bmN0aW9uIChzdHJlYW0pXG4iIFwKKyAgICAie1xuIiBc
CisgICAgIiAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICByZXR1
cm4gISFzdHJlYW0uQHJlYWRlcjtcbiIgXAorICAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6
Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2Rl
Q29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0
OworY29uc3QgaW50IHNfZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGVMZW5n
dGggPSA0MDI7Citjb25zdCBjaGFyKiBzX2d1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJl
YW1Db2RlID0KKyAgICAiKGZ1bmN0aW9uIChzdHJlYW0sIHJlYXNvbilcbiIgXAorICAgICJ7XG4i
IFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICBp
ZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xvc2VkKVxuIiBcCisgICAgIiAg
ICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuIiBcCisgICAgIiAgICBpZiAoc3RyZWFt
LkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZClcbiIgXAorICAgICIgICAgICAgIHJl
dHVybiBQcm9taXNlLnJlamVjdChzdHJlYW0uQHN0b3JlZEVycm9yKTtcbiIgXAorICAgICIgICAg
c3RyZWFtLkBxdWV1ZSA9IFtdO1xuIiBcCisgICAgIiAgICBAZmluaXNoQ2xvc2luZ1JlYWRhYmxl
U3RyZWFtKHN0cmVhbSk7XG4iIFwKKyAgICAiICAgIHJldHVybiBAcHJvbWlzZUludm9rZU9yTm9v
cChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsIFwiY2FuY2VsXCIsIFtyZWFzb25dKS50aGVuKGZ1
bmN0aW9uKCkgeyB9KTtcbiIgXAorICAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3Ry
dWN0QWJpbGl0eSBzX2d1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVDb25zdHJ1
Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25z
dCBpbnQgc19ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlTGVuZ3RoID0gMzM4
OworY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlID0K
KyAgICAiKGZ1bmN0aW9uIChvYmplY3QsIGtleSwgYXJncylcbiIgXAorICAgICJ7XG4iIFwKKyAg
ICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICB0cnkge1xu
IiBcCisgICAgIiAgICAgICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldO1xuIiBcCisgICAgIiAg
ICAgICAgaWYgKHR5cGVvZiBtZXRob2QgPT09IFwidW5kZWZpbmVkXCIpXG4iIFwKKyAgICAiICAg
ICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuIiBcCisgICAgIiAgICAgICAgdmFy
IHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBhcmdzKTtcbiIgXAorICAgICIgICAgICAg
IHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcbiIgXAorICAgICIgICAgfVxuIiBcCisg
ICAgIiAgICBjYXRjaChlcnJvcikge1xuIiBcCisgICAgIiAgICAgICAgcmV0dXJuIFByb21pc2Uu
cmVqZWN0KGVycm9yKTtcbiIgXAorICAgICIgICAgfVxuIiBcCisgICAgIn0pXG4iIFwKKzsKKwor
CisjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1l
LCBhcmd1bWVudENvdW50KSBcCitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dl
bmVyYXRvcihKU0M6OlZNJiB2bSkgXAore1wKKyAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0
YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFwKKyAgICBy
ZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmd1YXJkZWRCdWlsdGluQnVpbHRp
bnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGlu
RnVuY3Rpb25zKCkuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSk7
IFwKK30KK1dFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVGSU5F
X0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgorCisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyMjIyBFbmQgRmlsZTogR3VhcmRlZEJ1aWx0aW5CdWls
dGlucy5jcHAKKworIyMjIEJlZ2luIEZpbGU6IEd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVy
LmgKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBh
dXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWls
dGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0
ZS1qcy1idWlsdGlucy5weQorCisjaWZuZGVmIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVy
X2gKKyNkZWZpbmUgR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAorCisjaW5jbHVkZSAi
R3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5oIgorI2luY2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5VdGls
cy5oPgorI2luY2x1ZGUgPGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg+Cisj
aW5jbHVkZSA8cnVudGltZS9JZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0Z1bmN0
aW9uLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR3VhcmRlZEJ1aWx0aW5CdWls
dGluc1dyYXBwZXIgOiBwcml2YXRlIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcihKU0M6OlZNKiB2bSkKKyAg
ICAgICAgOiBtX3ZtKCp2bSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElO
X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX0JVSUxUSU5fTkFNRVMpCisjZGVmaW5l
IElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxl
bmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKEpTQzo6bWFrZVNvdXJjZShTdHJpbmdJbXBsOjpjcmVh
dGVGcm9tTGl0ZXJhbChzXyMjbmFtZSwgbGVuZ3RoKSkpCisgICAgICAgIFdFQkNPUkVfRk9SRUFD
SF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9N
RU1CRVJTKQorI3VuZGVmIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworICAgIHsK
KyAgICB9CisKKyNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rp
b25OYW1lLCBsZW5ndGgpIFwKKyAgICBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBu
YW1lIyNFeGVjdXRhYmxlKCk7IFwKKyAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIG5hbWUjI1Nv
dXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KKyAgICBXRUJDT1JFX0ZP
UkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFC
TEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCisKKyAgICBXRUJDT1JFX0ZP
UkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJ
Tl9JREVOVElGSUVSX0FDQ0VTU09SKQorCisgICAgdm9pZCBleHBvcnROYW1lcygpOworCitwcml2
YXRlOgorICAgIEpTQzo6Vk0mIG1fdm07CisKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJV
SUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FUykKKworI2Rl
ZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBs
ZW5ndGgpIFwKKyAgICBKU0M6OlNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJjZTtcCisgICAgSlND
OjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVjdXRh
YmxlOworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVD
TEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VS
Q0VfTUVNQkVSUworCit9OworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5h
bWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitpbmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4ZWN1dGFi
bGUoKSBcCit7XAorICAgIGlmICghbV8jI25hbWUjI0V4ZWN1dGFibGUpXAorICAgICAgICBtXyMj
bmFtZSMjRXhlY3V0YWJsZSA9IEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlPihKU0M6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fdm0sIG1fIyNuYW1lIyNTb3VyY2Us
IGZ1bmN0aW9uTmFtZSMjUHVibGljTmFtZSgpLCBzXyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0eSks
IHRoaXMsICZtXyMjbmFtZSMjRXhlY3V0YWJsZSk7XAorICAgIHJldHVybiBtXyMjbmFtZSMjRXhl
Y3V0YWJsZS5nZXQoKTtcCit9CitXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJ
Tl9DT0RFKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIERFRklORV9CVUlMVElO
X0VYRUNVVEFCTEVTCisKK2lubGluZSB2b2lkIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVy
OjpleHBvcnROYW1lcygpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTl9OQU1FKG5hbWUpIG1f
dm0ucHJvcGVydHlOYW1lcy0+YXBwZW5kRXh0ZXJuYWxOYW1lKG5hbWUjI1B1YmxpY05hbWUoKSwg
bmFtZSMjUHJpdmF0ZU5hbWUoKSk7CisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElO
X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShFWFBPUlRfRlVOQ1RJT05fTkFNRSkKKyN1bmRlZiBFWFBP
UlRfRlVOQ1RJT05fTkFNRQorfQorCitjbGFzcyBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5GdW5jdGlv
bnMgeworcHVibGljOgorICAgIGV4cGxpY2l0IEd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9u
cyhKU0M6OlZNJiB2bSkgOiBtX3ZtKHZtKSB7IH0KKworICAgIHZvaWQgaW5pdChKU0M6OkpTR2xv
YmFsT2JqZWN0Jik7CisgICAgdm9pZCB2aXNpdChKU0M6OlNsb3RWaXNpdG9yJik7CisKK3B1Ymxp
YzoKKyAgICBKU0M6OlZNJiBtX3ZtOworCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0Vf
TUVNQkVSUyhmdW5jdGlvbk5hbWUpIFwKKyAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTRnVu
Y3Rpb24+IG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uOworICAgIFdFQkNPUkVfRk9SRUFDSF9H
VUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX1NPVVJD
RV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworfTsKKwor
aW5saW5lIHZvaWQgR3VhcmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zOjppbml0KEpTQzo6SlNH
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9OKGNv
ZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aClcCisgICAgbV8jI2Z1bmN0aW9uTmFtZSMjRnVu
Y3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmplY3QsIEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVp
bHRpbkZ1bmN0aW9uKG1fdm0sIGNvZGVOYW1lIyNHZW5lcmF0b3IobV92bSksICZnbG9iYWxPYmpl
Y3QpKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKEVY
UE9SVF9GVU5DVElPTikKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT04KK30KKworaW5saW5lIHZvaWQg
R3VhcmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zOjp2aXNpdChKU0M6OlNsb3RWaXNpdG9yJiB2
aXNpdG9yKQoreworI2RlZmluZSBWSVNJVF9GVU5DVElPTihuYW1lKSB2aXNpdG9yLmFwcGVuZCgm
bV8jI25hbWUjI0Z1bmN0aW9uKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5f
QlVJTFRJTl9GVU5DVElPTl9OQU1FKFZJU0lUX0ZVTkNUSU9OKQorI3VuZGVmIFZJU0lUX0ZVTkNU
SU9OCit9CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gR3VhcmRlZEJ1
aWx0aW5CdWlsdGluc1dyYXBwZXJfaAorCisjIyMgRW5kIEZpbGU6IEd1YXJkZWRCdWlsdGluQnVp
bHRpbnNXcmFwcGVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1T
ZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUu
anMtcmVzdWx0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0OGExY2ZjNDQ4NGFlZjNmNzYwZTg3OTQ2NmVmYmFiOTY2
ZTUwZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2Vw
YXJhdGUuanMtcmVzdWx0CkBAIC0wLDAgKzEsMzE4IEBACisjIyMgQmVnaW4gRmlsZTogR3VhcmRl
ZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zLmgKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ2Fu
b24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9U
IEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFT
Y3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaWZuZGVmIEd1YXJk
ZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc19oCisjZGVmaW5lIEd1YXJkZWRJbnRlcm5hbEJ1aWx0
aW5CdWlsdGluc19oCisKKyNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4KKworbmFt
ZXNwYWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Cit9CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworLyogR3VhcmRlZEludGVybmFsQnVpbHRpbiAqLworZXh0ZXJuIGNvbnN0IGNo
YXIqIHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlOwor
ZXh0ZXJuIGNvbnN0IGludCBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFt
TG9ja2VkQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19n
dWFyZGVkSW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVDb25zdHJ1Y3RB
YmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbkNhbmNl
bFJlYWRhYmxlU3RyZWFtQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19ndWFyZGVkSW50ZXJuYWxC
dWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6
Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0
cmVhbUNvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfZ3VhcmRlZElu
dGVybmFsQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlOworZXh0ZXJuIGNvbnN0IGludCBz
X2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUxlbmd0aDsKK2V4
dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGlu
UHJvbWlzZUludm9rZU9yTm9vcENvZGVDb25zdHJ1Y3RBYmlsaXR5OworCisjZGVmaW5lIFdFQkNP
UkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fREFUQShtYWNybykgXAor
ICAgIG1hY3JvKGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIGd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5J
c1JlYWRhYmxlU3RyZWFtTG9ja2VkLCAxKSBcCisgICAgbWFjcm8oY2FuY2VsUmVhZGFibGVTdHJl
YW0sIGd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbSwgMikgXAorICAg
IG1hY3JvKHByb21pc2VJbnZva2VPck5vb3AsIGd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Qcm9taXNl
SW52b2tlT3JOb29wLCAzKSBcCisKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX0dVQVJERURJTlRF
Uk5BTEJVSUxUSU5fSVNSRUFEQUJMRVNUUkVBTUxPQ0tFRCAxCisjZGVmaW5lIFdFQkNPUkVfQlVJ
TFRJTl9HVUFSREVESU5URVJOQUxCVUlMVElOX0NBTkNFTFJFQURBQkxFU1RSRUFNIDEKKyNkZWZp
bmUgV0VCQ09SRV9CVUlMVElOX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fUFJPTUlTRUlOVk9LRU9S
Tk9PUCAxCisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5f
QlVJTFRJTl9DT0RFKG1hY3JvKSBcCisgICAgbWFjcm8oZ3VhcmRlZEludGVybmFsQnVpbHRpbklz
UmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlLCBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkLCBzX2d1YXJk
ZWRJbnRlcm5hbEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUxlbmd0aCkgXAorICAg
IG1hY3JvKGd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGUsIGNh
bmNlbFJlYWRhYmxlU3RyZWFtLCBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFkYWJs
ZVN0cmVhbUNvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhndWFyZGVkSW50ZXJuYWxCdWlsdGluUHJv
bWlzZUludm9rZU9yTm9vcENvZGUsIHByb21pc2VJbnZva2VPck5vb3AsIHNfZ3VhcmRlZEludGVy
bmFsQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlTGVuZ3RoKSBcCisKKyNkZWZpbmUgV0VC
Q09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1F
KG1hY3JvKSBcCisgICAgbWFjcm8oY2FuY2VsUmVhZGFibGVTdHJlYW0pIFwKKyAgICBtYWNybyhp
c1JlYWRhYmxlU3RyZWFtTG9ja2VkKSBcCisgICAgbWFjcm8ocHJvbWlzZUludm9rZU9yTm9vcCkg
XAorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9u
TmFtZSwgYXJndW1lbnRDb3VudCkgXAorICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2Rl
TmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKworV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRF
Uk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5k
ZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9H
VUFSREVESU5URVJOQUxCVUlMVElOX0VYSVNUUyhvYmplY3QsIGZ1bmMpIGRlZmluZWQgV0VCQ09S
RV9CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc19oCisKKyMjIyBF
bmQgRmlsZTogR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zLmgKKworIyMjIEJlZ2luIEZp
bGU6IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucy5jcHAKKy8qCisgKiBDb3B5cmlnaHQg
KGMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8K
KworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRl
ZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0
aW5zLmgiCisKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSA8cnVu
dGltZS9FeGVjdXRhYmxlLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5o
PgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUv
U3RydWN0dXJlSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVk0uaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19ndWFyZGVkSW50ZXJu
YWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlND
OjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19ndWFyZGVk
SW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5ndGggPSA3MTsKK2Nv
bnN0IGNoYXIqIHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRD
b2RlID0KKyAgICAiKGZ1bmN0aW9uIChzdHJlYW0pXG4iIFwKKyAgICAie1xuIiBcCisgICAgIiAg
IFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICByZXR1cm4gISFzdHJl
YW0uQHJlYWRlcjtcbiIgXAorICAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0
QWJpbGl0eSBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGVD
b25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7
Citjb25zdCBpbnQgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1D
b2RlTGVuZ3RoID0gNDAyOworY29uc3QgY2hhciogc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2Fu
Y2VsUmVhZGFibGVTdHJlYW1Db2RlID0KKyAgICAiKGZ1bmN0aW9uIChzdHJlYW0sIHJlYXNvbilc
biIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxu
IiBcCisgICAgIiAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xvc2Vk
KVxuIiBcCisgICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuIiBcCisgICAg
IiAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZClcbiIgXAor
ICAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChzdHJlYW0uQHN0b3JlZEVycm9yKTtc
biIgXAorICAgICIgICAgc3RyZWFtLkBxdWV1ZSA9IFtdO1xuIiBcCisgICAgIiAgICBAZmluaXNo
Q2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7XG4iIFwKKyAgICAiICAgIHJldHVybiBAcHJv
bWlzZUludm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsIFwiY2FuY2VsXCIsIFty
ZWFzb25dKS50aGVuKGZ1bmN0aW9uKCkgeyB9KTtcbiIgXAorICAgICJ9KVxuIiBcCis7CisKK2Nv
bnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Qcm9taXNl
SW52b2tlT3JOb29wQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6
OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Qcm9t
aXNlSW52b2tlT3JOb29wQ29kZUxlbmd0aCA9IDMzODsKK2NvbnN0IGNoYXIqIHNfZ3VhcmRlZElu
dGVybmFsQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlID0KKyAgICAiKGZ1bmN0aW9uIChv
YmplY3QsIGtleSwgYXJncylcbiIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmlj
dFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICB0cnkge1xuIiBcCisgICAgIiAgICAgICAg
dmFyIG1ldGhvZCA9IG9iamVjdFtrZXldO1xuIiBcCisgICAgIiAgICAgICAgaWYgKHR5cGVvZiBt
ZXRob2QgPT09IFwidW5kZWZpbmVkXCIpXG4iIFwKKyAgICAiICAgICAgICAgICAgcmV0dXJuIFBy
b21pc2UucmVzb2x2ZSgpO1xuIiBcCisgICAgIiAgICAgICAgdmFyIHJlc3VsdCA9IG1ldGhvZC5A
YXBwbHkob2JqZWN0LCBhcmdzKTtcbiIgXAorICAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJl
c29sdmUocmVzdWx0KTtcbiIgXAorICAgICIgICAgfVxuIiBcCisgICAgIiAgICBjYXRjaChlcnJv
cikge1xuIiBcCisgICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiIg
XAorICAgICIgICAgfVxuIiBcCisgICAgIn0pXG4iIFwKKzsKKworCisjZGVmaW5lIERFRklORV9C
VUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBc
CitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2
bSkgXAore1wKKyAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+
YnVpbHRpbkZ1bmN0aW9ucygpLmd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucygpLmNvZGVO
YW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMo
KS5ndWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCkpOyBc
Cit9CitXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0NPREUo
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRP
UgorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyMjIyBFbmQgRmlsZTogR3VhcmRlZEludGVy
bmFsQnVpbHRpbkJ1aWx0aW5zLmNwcAorCisjIyMgQmVnaW4gRmlsZTogR3VhcmRlZEludGVybmFs
QnVpbHRpbkJ1aWx0aW5zV3JhcHBlci5oCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IENhbm9u
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBF
RElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2Ny
aXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lmbmRlZiBHdWFyZGVk
SW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyX2gKKyNkZWZpbmUgR3VhcmRlZEludGVybmFs
QnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9oCisKKyNpbmNsdWRlICJHdWFyZGVkSW50ZXJuYWxCdWls
dGluQnVpbHRpbnMuaCIKKyNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4KKyNpbmNs
dWRlIDxieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgorI2luY2x1ZGUgPHJ1
bnRpbWUvSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlu
c1dyYXBwZXIgOiBwcml2YXRlIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyKEpTQzo6Vk0qIHZt
KQorICAgICAgICA6IG1fdm0oKnZtKQorICAgICAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElO
VEVSTkFMQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElaRV9CVUlMVElOX05B
TUVTKQorI2RlZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVu
Y3Rpb25OYW1lLCBsZW5ndGgpICwgbV8jI25hbWUjI1NvdXJjZShKU0M6Om1ha2VTb3VyY2UoU3Ry
aW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc18jI25hbWUsIGxlbmd0aCkpKQorICAgICAgICBX
RUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0NPREUoSU5JVElB
TElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIElOSVRJQUxJWkVfQlVJTFRJTl9T
T1VSQ0VfTUVNQkVSUworICAgIHsKKyAgICB9CisKKyNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhF
Q1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKKyAgICBKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFwKKyAgICBjb25zdCBKU0M6
OlNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNTb3Vy
Y2U7IH0KKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElO
X0NPREUoRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgRVhQT1NFX0JVSUxUSU5f
RVhFQ1VUQUJMRVMKKworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElO
X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NP
UikKKworICAgIHZvaWQgZXhwb3J0TmFtZXMoKTsKKworcHJpdmF0ZToKKyAgICBKU0M6OlZNJiBt
X3ZtOworCisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJ
Tl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FUykKKworI2RlZmluZSBERUNMQVJF
X0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKKyAg
ICBKU0M6OlNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJjZTtcCisgICAgSlNDOjpXZWFrPEpTQzo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVjdXRhYmxlOworICAgIFdF
QkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShERUNMQVJF
X0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9N
RU1CRVJTCisKK307CisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwg
ZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKK2lubGluZSBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyOjpuYW1lIyNFeGVj
dXRhYmxlKCkgXAore1wKKyAgICBpZiAoIW1fIyNuYW1lIyNFeGVjdXRhYmxlKVwKKyAgICAgICAg
bV8jI25hbWUjI0V4ZWN1dGFibGUgPSBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZT4oSlNDOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShtX3ZtLCBtXyMjbmFtZSMjU291
cmNlLCBmdW5jdGlvbk5hbWUjI1B1YmxpY05hbWUoKSwgc18jI25hbWUjI0NvbnN0cnVjdEFiaWxp
dHkpLCB0aGlzLCAmbV8jI25hbWUjI0V4ZWN1dGFibGUpO1wKKyAgICByZXR1cm4gbV8jI25hbWUj
I0V4ZWN1dGFibGUuZ2V0KCk7XAorfQorV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJV
SUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIERF
RklORV9CVUlMVElOX0VYRUNVVEFCTEVTCisKK2lubGluZSB2b2lkIEd1YXJkZWRJbnRlcm5hbEJ1
aWx0aW5CdWlsdGluc1dyYXBwZXI6OmV4cG9ydE5hbWVzKCkKK3sKKyNkZWZpbmUgRVhQT1JUX0ZV
TkNUSU9OX05BTUUobmFtZSkgbV92bS5wcm9wZXJ0eU5hbWVzLT5hcHBlbmRFeHRlcm5hbE5hbWUo
bmFtZSMjUHVibGljTmFtZSgpLCBuYW1lIyNQcml2YXRlTmFtZSgpKTsKKyAgICBXRUJDT1JFX0ZP
UkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoRVhQT1JU
X0ZVTkNUSU9OX05BTUUpCisjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OX05BTUUKK30KKworY2xhc3Mg
R3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnMgeworcHVibGljOgorICAgIGV4
cGxpY2l0IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zKEpTQzo6Vk0mIHZt
KSA6IG1fdm0odm0pIHsgfQorCisgICAgdm9pZCBpbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmKTsK
KyAgICB2b2lkIHZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImKTsKKworcHVibGljOgorICAgIEpTQzo6
Vk0mIG1fdm07CisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKGZ1bmN0
aW9uTmFtZSkgXAorICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNGdW5jdGlvbj4gbV8jI2Z1
bmN0aW9uTmFtZSMjRnVuY3Rpb247CisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5B
TEJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVN
QkVSUykKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKK307CisKK2lubGlu
ZSB2b2lkIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zOjppbml0KEpTQzo6
SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9O
KGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aClcCisgICAgbV8jI2Z1bmN0aW9uTmFtZSMj
RnVuY3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmplY3QsIEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRl
QnVpbHRpbkZ1bmN0aW9uKG1fdm0sIGNvZGVOYW1lIyNHZW5lcmF0b3IobV92bSksICZnbG9iYWxP
YmplY3QpKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlM
VElOX0NPREUoRVhQT1JUX0ZVTkNUSU9OKQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTgorfQorCitp
bmxpbmUgdm9pZCBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbkZ1bmN0aW9uczo6dmlzaXQo
SlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyNkZWZpbmUgVklTSVRfRlVOQ1RJT04obmFt
ZSkgdmlzaXRvci5hcHBlbmQoJm1fIyNuYW1lIyNGdW5jdGlvbik7CisgICAgV0VCQ09SRV9GT1JF
QUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKFZJU0lUX0ZV
TkNUSU9OKQorI3VuZGVmIFZJU0lUX0ZVTkNUSU9OCit9CisKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9o
CisKKyMjIyBFbmQgRmlsZTogR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlci5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlu
cy9leHBlY3RlZC9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2Vi
Q29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OGVl
MmRhYmJhYzljMWE2YjY1OWFiMTMyYjBhNmM0NzFlNjNlNDU4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2Vi
Q29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMCwwICsxLDMxOCBA
QAorIyMjIEJlZ2luIEZpbGU6IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5oCisvKgorICogQ29w
eXJpZ2h0IChjKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
IAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBn
ZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNj
cmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMu
cHkKKworI2lmbmRlZiBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNfaAorI2RlZmluZSBVbmd1YXJk
ZWRCdWlsdGluQnVpbHRpbnNfaAorCisjaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+
CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOworfQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKy8qIFVuZ3VhcmRlZEJ1aWx0aW4gKi8KK2V4dGVybiBjb25zdCBj
aGFyKiBzX3VuZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZTsKK2V4dGVy
biBjb25zdCBpbnQgc191bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVM
ZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfdW5ndWFyZGVkQnVp
bHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBj
b25zdCBjaGFyKiBzX3VuZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGU7Citl
eHRlcm4gY29uc3QgaW50IHNfdW5ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29k
ZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc191bmd1YXJkZWRC
dWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBj
b25zdCBjaGFyKiBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZTsKK2V4
dGVybiBjb25zdCBpbnQgc191bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVM
ZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfdW5ndWFyZGVkQnVp
bHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlQ29uc3RydWN0QWJpbGl0eTsKKworI2RlZmluZSBX
RUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0RBVEEobWFjcm8pIFwKKyAg
ICBtYWNybyhpc1JlYWRhYmxlU3RyZWFtTG9ja2VkLCB1bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJs
ZVN0cmVhbUxvY2tlZCwgMSkgXAorICAgIG1hY3JvKGNhbmNlbFJlYWRhYmxlU3RyZWFtLCB1bmd1
YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW0sIDIpIFwKKyAgICBtYWNybyhwcm9taXNl
SW52b2tlT3JOb29wLCB1bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcCwgMykgXAor
CisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9VTkdVQVJERURCVUlMVElOX0lTUkVBREFCTEVTVFJF
QU1MT0NLRUQgMQorI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fVU5HVUFSREVEQlVJTFRJTl9DQU5D
RUxSRUFEQUJMRVNUUkVBTSAxCisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9VTkdVQVJERURCVUlM
VElOX1BST01JU0VJTlZPS0VPUk5PT1AgMQorCisjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9VTkdV
QVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShtYWNybykgXAorICAgIG1hY3JvKHVuZ3VhcmRlZEJ1
aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZSwgaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCwg
c191bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5ndGgpIFwKKyAg
ICBtYWNybyh1bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlLCBjYW5jZWxS
ZWFkYWJsZVN0cmVhbSwgc191bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2Rl
TGVuZ3RoKSBcCisgICAgbWFjcm8odW5ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BD
b2RlLCBwcm9taXNlSW52b2tlT3JOb29wLCBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tl
T3JOb29wQ29kZUxlbmd0aCkgXAorCisjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURC
VUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXAorICAgIG1hY3JvKGNhbmNlbFJl
YWRhYmxlU3RyZWFtKSBcCisgICAgbWFjcm8oaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCkgXAorICAg
IG1hY3JvKHByb21pc2VJbnZva2VPck5vb3ApIFwKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5f
R0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKKyAgICBK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisK
K1dFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShERUNMQVJFX0JV
SUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IKKworI2Rl
ZmluZSBXRUJDT1JFX0JVSUxUSU5fVU5HVUFSREVEQlVJTFRJTl9FWElTVFMob2JqZWN0LCBmdW5j
KSBkZWZpbmVkIFdFQkNPUkVfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVuYworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNf
aAorCisjIyMgRW5kIEZpbGU6IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5oCisKKyMjIyBCZWdp
biBGaWxlOiBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnMuY3BwCisvKgorICogQ29weXJpZ2h0IChj
KSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisK
Ky8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQg
ZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5oIgor
CisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXhl
Y3V0YWJsZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4KKyNpbmNs
dWRlIDxydW50aW1lL0pTQ2VsbElubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL1N0cnVjdHVy
ZUlubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL1ZNLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfdW5ndWFyZGVkQnVpbHRpbklzUmVh
ZGFibGVTdHJlYW1Mb2NrZWRDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJp
bGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfdW5ndWFyZGVkQnVpbHRpbklzUmVh
ZGFibGVTdHJlYW1Mb2NrZWRDb2RlTGVuZ3RoID0gNzE7Citjb25zdCBjaGFyKiBzX3VuZ3VhcmRl
ZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZSA9CisgICAgIihmdW5jdGlvbiAoc3Ry
ZWFtKVxuIiBcCisgICAgIntcbiIgXAorICAgICIgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAg
ICJcbiIgXAorICAgICIgICAgcmV0dXJuICEhc3RyZWFtLkByZWFkZXI7XG4iIFwKKyAgICAifSlc
biIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc191bmd1YXJkZWRCdWlsdGlu
Q2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0
QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfdW5ndWFyZGVkQnVpbHRpbkNh
bmNlbFJlYWRhYmxlU3RyZWFtQ29kZUxlbmd0aCA9IDQwMjsKK2NvbnN0IGNoYXIqIHNfdW5ndWFy
ZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZSA9CisgICAgIihmdW5jdGlvbiAoc3Ry
ZWFtLCByZWFzb24pXG4iIFwKKyAgICAie1xuIiBcCisgICAgIiAgICBcInVzZSBzdHJpY3RcIjtc
biIgXAorICAgICJcbiIgXAorICAgICIgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJs
ZVN0cmVhbUNsb3NlZClcbiIgXAorICAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUo
KTtcbiIgXAorICAgICIgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVy
cm9yZWQpXG4iIFwKKyAgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoc3RyZWFtLkBz
dG9yZWRFcnJvcik7XG4iIFwKKyAgICAiICAgIHN0cmVhbS5AcXVldWUgPSBbXTtcbiIgXAorICAg
ICIgICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pO1xuIiBcCisgICAgIiAg
ICByZXR1cm4gQHByb21pc2VJbnZva2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCBc
ImNhbmNlbFwiLCBbcmVhc29uXSkudGhlbihmdW5jdGlvbigpIHsgfSk7XG4iIFwKKyAgICAifSlc
biIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc191bmd1YXJkZWRCdWlsdGlu
UHJvbWlzZUludm9rZU9yTm9vcENvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RB
YmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc191bmd1YXJkZWRCdWlsdGluUHJv
bWlzZUludm9rZU9yTm9vcENvZGVMZW5ndGggPSAzMzg7Citjb25zdCBjaGFyKiBzX3VuZ3VhcmRl
ZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZSA9CisgICAgIihmdW5jdGlvbiAob2JqZWN0
LCBrZXksIGFyZ3MpXG4iIFwKKyAgICAie1xuIiBcCisgICAgIiAgICBcInVzZSBzdHJpY3RcIjtc
biIgXAorICAgICJcbiIgXAorICAgICIgICAgdHJ5IHtcbiIgXAorICAgICIgICAgICAgIHZhciBt
ZXRob2QgPSBvYmplY3Rba2V5XTtcbiIgXAorICAgICIgICAgICAgIGlmICh0eXBlb2YgbWV0aG9k
ID09PSBcInVuZGVmaW5lZFwiKVxuIiBcCisgICAgIiAgICAgICAgICAgIHJldHVybiBQcm9taXNl
LnJlc29sdmUoKTtcbiIgXAorICAgICIgICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFwcGx5
KG9iamVjdCwgYXJncyk7XG4iIFwKKyAgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZl
KHJlc3VsdCk7XG4iIFwKKyAgICAiICAgIH1cbiIgXAorICAgICIgICAgY2F0Y2goZXJyb3IpIHtc
biIgXAorICAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4iIFwKKyAg
ICAiICAgIH1cbiIgXAorICAgICJ9KVxuIiBcCis7CisKKworI2RlZmluZSBERUZJTkVfQlVJTFRJ
Tl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorSlND
OjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwK
K3tcCisgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xp
ZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcCisgICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0
aW5GdW5jdGlvbnMoKS51bmd1YXJkZWRCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0
YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkudW5ndWFyZGVk
QnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpKTsgXAorfQorV0VCQ09SRV9GT1JF
QUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRP
UikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisjIyMgRW5kIEZpbGU6IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5jcHAKKworIyMj
IEJlZ2luIEZpbGU6IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIuaAorLyoKKyAqIENv
cHlyaWdodCAoYykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
KiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkg
Z2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBz
Y3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5z
LnB5CisKKyNpZm5kZWYgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9oCisjZGVmaW5l
IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAorCisjaW5jbHVkZSAiVW5ndWFyZGVk
QnVpbHRpbkJ1aWx0aW5zLmgiCisjaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+Cisj
aW5jbHVkZSA8Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaD4KKyNpbmNsdWRl
IDxydW50aW1lL0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNX
cmFwcGVyIDogcHJpdmF0ZSBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcihKU0M6OlZNKiB2bSkKKyAgICAg
ICAgOiBtX3ZtKCp2bSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5f
QlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJWkVfQlVJTFRJTl9OQU1FUykKKyNkZWZpbmUg
SU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVu
Z3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UoSlNDOjptYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0
ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpKSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNI
X1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0Vf
TUVNQkVSUykKKyN1bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKKyAgICB7
CisgICAgfQorCisjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0
aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
bmFtZSMjRXhlY3V0YWJsZSgpOyBcCisgICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNT
b3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CisgICAgV0VCQ09SRV9G
T1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNV
VEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCisKKyAgICBXRUJDT1JF
X0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9C
VUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCisKKyAgICB2b2lkIGV4cG9ydE5hbWVzKCk7CisK
K3ByaXZhdGU6CisgICAgSlNDOjpWTSYgbV92bTsKKworICAgIFdFQkNPUkVfRk9SRUFDSF9VTkdV
QVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fTkFNRVMp
CisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9u
TmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7XAor
ICAgIEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFtZSMj
RXhlY3V0YWJsZTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElO
X0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJ
TFRJTl9TT1VSQ0VfTUVNQkVSUworCit9OworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNV
VEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitpbmxpbmUgSlNDOjpVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcjo6bmFt
ZSMjRXhlY3V0YWJsZSgpIFwKK3tcCisgICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSlcCisg
ICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU+KEpTQzo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUobV92bSwgbV8jI25h
bWUjI1NvdXJjZSwgZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCksIHNfIyNuYW1lIyNDb25zdHJ1
Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRhYmxlKTtcCisgICAgcmV0dXJuIG1f
IyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKK30KK1dFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURC
VUlMVElOX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBE
RUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUworCitpbmxpbmUgdm9pZCBVbmd1YXJkZWRCdWlsdGlu
QnVpbHRpbnNXcmFwcGVyOjpleHBvcnROYW1lcygpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElP
Tl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+YXBwZW5kRXh0ZXJuYWxOYW1lKG5hbWUj
I1B1YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUoKSk7CisgICAgV0VCQ09SRV9GT1JFQUNI
X1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKEVYUE9SVF9GVU5DVElPTl9O
QU1FKQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTl9OQU1FCit9CisKK2NsYXNzIFVuZ3VhcmRlZEJ1
aWx0aW5CdWlsdGluRnVuY3Rpb25zIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBVbmd1YXJkZWRC
dWlsdGluQnVpbHRpbkZ1bmN0aW9ucyhKU0M6OlZNJiB2bSkgOiBtX3ZtKHZtKSB7IH0KKworICAg
IHZvaWQgaW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CisgICAgdm9pZCB2aXNpdChKU0M6OlNs
b3RWaXNpdG9yJik7CisKK3B1YmxpYzoKKyAgICBKU0M6OlZNJiBtX3ZtOworCisjZGVmaW5lIERF
Q0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhmdW5jdGlvbk5hbWUpIFwKKyAgICBKU0M6Oldy
aXRlQmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uOwor
ICAgIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFN
RShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlMVElO
X1NPVVJDRV9NRU1CRVJTCit9OworCitpbmxpbmUgdm9pZCBVbmd1YXJkZWRCdWlsdGluQnVpbHRp
bkZ1bmN0aW9uczo6aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7Cisj
ZGVmaW5lIEVYUE9SVF9GVU5DVElPTihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXAor
ICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihtX3ZtLCBjb2RlTmFtZSMjR2Vu
ZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7CisgICAgV0VCQ09SRV9GT1JFQUNIX1VOR1VB
UkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9SVF9GVU5DVElPTikKKyN1bmRlZiBFWFBPUlRf
RlVOQ1RJT04KK30KKworaW5saW5lIHZvaWQgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5GdW5jdGlv
bnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisjZGVmaW5lIFZJU0lUX0ZV
TkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFtZSMjRnVuY3Rpb24pOworICAgIFdF
QkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShWSVNJ
VF9GVU5DVElPTikKKyN1bmRlZiBWSVNJVF9GVU5DVElPTgorfQorCisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAor
CisjIyMgRW5kIEZpbGU6IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIuaApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0
ZWQvV2ViQ29yZS14bWxDYXNpbmdUZXN0LVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUteG1sQ2Fz
aW5nVGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODY4ZmM2ZmM2ZmJmODVlZGQ3
YjhkM2M4OGVjNmQyMjY2N2UxZTc3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUteG1sQ2FzaW5n
VGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTAsMCArMSwzMTggQEAKKyMjIyBCZWdpbiBGaWxl
OiB4bWxDYXNpbmdUZXN0QnVpbHRpbnMuaAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5v
biBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1Qg
RURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNj
cmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgeG1sQ2Fz
aW5nVGVzdEJ1aWx0aW5zX2gKKyNkZWZpbmUgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zX2gKKworI2lu
Y2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oPgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNz
IEZ1bmN0aW9uRXhlY3V0YWJsZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvKiB4bWxD
YXNpbmdUZXN0ICovCitleHRlcm4gY29uc3QgY2hhciogc194bWxDYXNpbmdUZXN0WE1MQ2FzaW5n
VGVzdENvZGU7CitleHRlcm4gY29uc3QgaW50IHNfeG1sQ2FzaW5nVGVzdFhNTENhc2luZ1Rlc3RD
b2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3htbENhc2lu
Z1Rlc3RYTUxDYXNpbmdUZXN0Q29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hh
ciogc194bWxDYXNpbmdUZXN0Q3NzQ2FzaW5nVGVzdENvZGU7CitleHRlcm4gY29uc3QgaW50IHNf
eG1sQ2FzaW5nVGVzdENzc0Nhc2luZ1Rlc3RDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6
Q29uc3RydWN0QWJpbGl0eSBzX3htbENhc2luZ1Rlc3RDc3NDYXNpbmdUZXN0Q29kZUNvbnN0cnVj
dEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc194bWxDYXNpbmdUZXN0VXJsQ2FzaW5nVGVz
dENvZGU7CitleHRlcm4gY29uc3QgaW50IHNfeG1sQ2FzaW5nVGVzdFVybENhc2luZ1Rlc3RDb2Rl
TGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3htbENhc2luZ1Rl
c3RVcmxDYXNpbmdUZXN0Q29kZUNvbnN0cnVjdEFiaWxpdHk7CisKKyNkZWZpbmUgV0VCQ09SRV9G
T1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9EQVRBKG1hY3JvKSBcCisgICAgbWFjcm8oeG1s
Q2FzaW5nVGVzdCwgeG1sQ2FzaW5nVGVzdFhNTENhc2luZ1Rlc3QsIDEpIFwKKyAgICBtYWNybyhj
c3NDYXNpbmdUZXN0LCB4bWxDYXNpbmdUZXN0Q3NzQ2FzaW5nVGVzdCwgMikgXAorICAgIG1hY3Jv
KHVybENhc2luZ1Rlc3QsIHhtbENhc2luZ1Rlc3RVcmxDYXNpbmdUZXN0LCAzKSBcCisKKyNkZWZp
bmUgV0VCQ09SRV9CVUlMVElOX1hNTENBU0lOR1RFU1RfWE1MQ0FTSU5HVEVTVCAxCisjZGVmaW5l
IFdFQkNPUkVfQlVJTFRJTl9YTUxDQVNJTkdURVNUX0NTU0NBU0lOR1RFU1QgMQorI2RlZmluZSBX
RUJDT1JFX0JVSUxUSU5fWE1MQ0FTSU5HVEVTVF9VUkxDQVNJTkdURVNUIDEKKworI2RlZmluZSBX
RUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0NPREUobWFjcm8pIFwKKyAgICBt
YWNybyh4bWxDYXNpbmdUZXN0WE1MQ2FzaW5nVGVzdENvZGUsIHhtbENhc2luZ1Rlc3QsIHNfeG1s
Q2FzaW5nVGVzdFhNTENhc2luZ1Rlc3RDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8oeG1sQ2FzaW5n
VGVzdENzc0Nhc2luZ1Rlc3RDb2RlLCBjc3NDYXNpbmdUZXN0LCBzX3htbENhc2luZ1Rlc3RDc3ND
YXNpbmdUZXN0Q29kZUxlbmd0aCkgXAorICAgIG1hY3JvKHhtbENhc2luZ1Rlc3RVcmxDYXNpbmdU
ZXN0Q29kZSwgdXJsQ2FzaW5nVGVzdCwgc194bWxDYXNpbmdUZXN0VXJsQ2FzaW5nVGVzdENvZGVM
ZW5ndGgpIFwKKworI2RlZmluZSBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElO
X0ZVTkNUSU9OX05BTUUobWFjcm8pIFwKKyAgICBtYWNybyhjc3NDYXNpbmdUZXN0KSBcCisgICAg
bWFjcm8odXJsQ2FzaW5nVGVzdCkgXAorICAgIG1hY3JvKHhtbENhc2luZ1Rlc3QpIFwKKworI2Rl
ZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFy
Z3VtZW50Q291bnQpIFwKKyAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dl
bmVyYXRvcihKU0M6OlZNJik7CisKK1dFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxU
SU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJ
Tl9HRU5FUkFUT1IKKworI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fWE1MQ0FTSU5HVEVTVF9FWElT
VFMob2JqZWN0LCBmdW5jKSBkZWZpbmVkIFdFQkNPUkVfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8g
IyMgZnVuYworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyB4bWxDYXNpbmdU
ZXN0QnVpbHRpbnNfaAorCisjIyMgRW5kIEZpbGU6IHhtbENhc2luZ1Rlc3RCdWlsdGlucy5oCisK
KyMjIyBCZWdpbiBGaWxlOiB4bWxDYXNpbmdUZXN0QnVpbHRpbnMuY3BwCisvKgorICogQ29weXJp
Z2h0IChjKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAor
ICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5l
cmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlw
dDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkK
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInhtbENhc2luZ1Rlc3RCdWlsdGlucy5o
IgorCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUv
RXhlY3V0YWJsZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4KKyNp
bmNsdWRlIDxydW50aW1lL0pTQ2VsbElubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL1N0cnVj
dHVyZUlubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL1ZNLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfeG1sQ2FzaW5nVGVzdFhNTENh
c2luZ1Rlc3RDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fu
bm90Q29uc3RydWN0OworY29uc3QgaW50IHNfeG1sQ2FzaW5nVGVzdFhNTENhc2luZ1Rlc3RDb2Rl
TGVuZ3RoID0gNzE7Citjb25zdCBjaGFyKiBzX3htbENhc2luZ1Rlc3RYTUxDYXNpbmdUZXN0Q29k
ZSA9CisgICAgIihmdW5jdGlvbiAoc3RyZWFtKVxuIiBcCisgICAgIntcbiIgXAorICAgICIgICBc
InVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgcmV0dXJuICEhc3RyZWFt
LkByZWFkZXI7XG4iIFwKKyAgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFi
aWxpdHkgc194bWxDYXNpbmdUZXN0Q3NzQ2FzaW5nVGVzdENvZGVDb25zdHJ1Y3RBYmlsaXR5ID0g
SlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc194bWxD
YXNpbmdUZXN0Q3NzQ2FzaW5nVGVzdENvZGVMZW5ndGggPSA0MDI7Citjb25zdCBjaGFyKiBzX3ht
bENhc2luZ1Rlc3RDc3NDYXNpbmdUZXN0Q29kZSA9CisgICAgIihmdW5jdGlvbiAoc3RyZWFtLCBy
ZWFzb24pXG4iIFwKKyAgICAie1xuIiBcCisgICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAor
ICAgICJcbiIgXAorICAgICIgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVh
bUNsb3NlZClcbiIgXAorICAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiIg
XAorICAgICIgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQp
XG4iIFwKKyAgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoc3RyZWFtLkBzdG9yZWRF
cnJvcik7XG4iIFwKKyAgICAiICAgIHN0cmVhbS5AcXVldWUgPSBbXTtcbiIgXAorICAgICIgICAg
QGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pO1xuIiBcCisgICAgIiAgICByZXR1
cm4gQHByb21pc2VJbnZva2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCBcImNhbmNl
bFwiLCBbcmVhc29uXSkudGhlbihmdW5jdGlvbigpIHsgfSk7XG4iIFwKKyAgICAifSlcbiIgXAor
OworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc194bWxDYXNpbmdUZXN0VXJsQ2FzaW5n
VGVzdENvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RD
b25zdHJ1Y3Q7Citjb25zdCBpbnQgc194bWxDYXNpbmdUZXN0VXJsQ2FzaW5nVGVzdENvZGVMZW5n
dGggPSAzMzg7Citjb25zdCBjaGFyKiBzX3htbENhc2luZ1Rlc3RVcmxDYXNpbmdUZXN0Q29kZSA9
CisgICAgIihmdW5jdGlvbiAob2JqZWN0LCBrZXksIGFyZ3MpXG4iIFwKKyAgICAie1xuIiBcCisg
ICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdHJ5IHtc
biIgXAorICAgICIgICAgICAgIHZhciBtZXRob2QgPSBvYmplY3Rba2V5XTtcbiIgXAorICAgICIg
ICAgICAgIGlmICh0eXBlb2YgbWV0aG9kID09PSBcInVuZGVmaW5lZFwiKVxuIiBcCisgICAgIiAg
ICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiIgXAorICAgICIgICAgICAgIHZh
ciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9iamVjdCwgYXJncyk7XG4iIFwKKyAgICAiICAgICAg
ICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XG4iIFwKKyAgICAiICAgIH1cbiIgXAor
ICAgICIgICAgY2F0Y2goZXJyb3IpIHtcbiIgXAorICAgICIgICAgICAgIHJldHVybiBQcm9taXNl
LnJlamVjdChlcnJvcik7XG4iIFwKKyAgICAiICAgIH1cbiIgXAorICAgICJ9KVxuIiBcCis7CisK
KworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFt
ZSwgYXJndW1lbnRDb3VudCkgXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNH
ZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKK3tcCisgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERh
dGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcCisgICAg
cmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS54bWxDYXNpbmdUZXN0QnVpbHRp
bnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGlu
RnVuY3Rpb25zKCkueG1sQ2FzaW5nVGVzdEJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpKTsg
XAorfQorV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKERFRklORV9C
VUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjIyMgRW5kIEZpbGU6IHhtbENhc2luZ1Rlc3RCdWlsdGlu
cy5jcHAKKworIyMjIEJlZ2luIEZpbGU6IHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXIuaAor
LyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9t
YXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5z
IGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpz
LWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcl9oCisj
ZGVmaW5lIHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXJfaAorCisjaW5jbHVkZSAieG1sQ2Fz
aW5nVGVzdEJ1aWx0aW5zLmgiCisjaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+Cisj
aW5jbHVkZSA8Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaD4KKyNpbmNsdWRl
IDxydW50aW1lL0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFw
cGVyIDogcHJpdmF0ZSBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcihKU0M6OlZNKiB2bSkKKyAgICAgICAgOiBt
X3ZtKCp2bSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9G
VU5DVElPTl9OQU1FKElOSVRJQUxJWkVfQlVJTFRJTl9OQU1FUykKKyNkZWZpbmUgSU5JVElBTEla
RV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1f
IyNuYW1lIyNTb3VyY2UoSlNDOjptYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRl
cmFsKHNfIyNuYW1lLCBsZW5ndGgpKSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lO
R1RFU1RfQlVJTFRJTl9DT0RFKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1
bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKKyAgICB7CisgICAgfQorCisj
ZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVu
Z3RoKSBcCisgICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0
YWJsZSgpOyBcCisgICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSBjb25z
dCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CisgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENB
U0lOR1RFU1RfQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVm
IEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCisKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FT
SU5HVEVTVF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJf
QUNDRVNTT1IpCisKKyAgICB2b2lkIGV4cG9ydE5hbWVzKCk7CisKK3ByaXZhdGU6CisgICAgSlND
OjpWTSYgbV92bTsKKworICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5f
RlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fTkFNRVMpCisKKyNkZWZpbmUgREVDTEFSRV9C
VUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAg
SlNDOjpTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7XAorICAgIEpTQzo6V2VhazxKU0M6OlVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKKyAgICBXRUJD
T1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NP
VVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworCit9
OworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFt
ZSwgbGVuZ3RoKSBcCitpbmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogeG1s
Q2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tcCisgICAg
aWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxl
ID0gSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6Y3JlYXRl
QnVpbHRpbkV4ZWN1dGFibGUobV92bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25OYW1lIyNQ
dWJsaWNOYW1lKCksIHNfIyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1l
IyNFeGVjdXRhYmxlKTtcCisgICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wK
K30KK1dFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJ
TFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUworCitp
bmxpbmUgdm9pZCB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyOjpleHBvcnROYW1lcygpCit7
CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+
YXBwZW5kRXh0ZXJuYWxOYW1lKG5hbWUjI1B1YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUo
KSk7CisgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9GVU5DVElPTl9O
QU1FKEVYUE9SVF9GVU5DVElPTl9OQU1FKQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTl9OQU1FCit9
CisKK2NsYXNzIHhtbENhc2luZ1Rlc3RCdWlsdGluRnVuY3Rpb25zIHsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCB4bWxDYXNpbmdUZXN0QnVpbHRpbkZ1bmN0aW9ucyhKU0M6OlZNJiB2bSkgOiBtX3Zt
KHZtKSB7IH0KKworICAgIHZvaWQgaW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CisgICAgdm9p
ZCB2aXNpdChKU0M6OlNsb3RWaXNpdG9yJik7CisKK3B1YmxpYzoKKyAgICBKU0M6OlZNJiBtX3Zt
OworCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhmdW5jdGlvbk5hbWUp
IFwKKyAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5h
bWUjI0Z1bmN0aW9uOworICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5f
RlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgREVD
TEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCit9OworCitpbmxpbmUgdm9pZCB4bWxDYXNpbmdU
ZXN0QnVpbHRpbkZ1bmN0aW9uczo6aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBs
ZW5ndGgpXAorICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihtX3ZtLCBjb2Rl
TmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7CisgICAgV0VCQ09SRV9GT1JF
QUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKEVYUE9SVF9GVU5DVElPTikKKyN1bmRlZiBF
WFBPUlRfRlVOQ1RJT04KK30KKworaW5saW5lIHZvaWQgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5GdW5j
dGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisjZGVmaW5lIFZJU0lU
X0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFtZSMjRnVuY3Rpb24pOworICAg
IFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShWSVNJ
VF9GVU5DVElPTikKKyN1bmRlZiBWSVNJVF9GVU5DVElPTgorfQorCisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXJfaAorCisj
IyMgRW5kIEZpbGU6IHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXIuaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL1VwZGF0ZUNvbnRlbnRzLnB5IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1VwZGF0ZUNvbnRlbnRzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1
MmY5NTMyY2I2ZmIwYWJhZjUyMGRhZTA0ODU4YWM5MmE0ZmM2MjQxLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9VcGRh
dGVDb250ZW50cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLSMhL3Vzci9iaW4v
cHl0aG9uCi0KLSMgQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSMgMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgcHV0ZXIsIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSMgICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSMgICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSMgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCi0jIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBzeXMKLWltcG9ydCBvcwotCi1h
c3NlcnQobGVuKHN5cy5hcmd2KSA9PSAzKQotCi1jb21wID0gc3lzLmFyZ3ZbMV0KLWZpbGVuYW1l
ID0gc3lzLmFyZ3ZbMl0KLQotdCA9IEZhbHNlCi0KLWlmIG9zLnBhdGguaXNmaWxlKGZpbGVuYW1l
KToKLSAgICBmID0gb3BlbihmaWxlbmFtZSwgJ3InKQotICAgIGNvbXBhcmF0b3IgPSBmLnJlYWQo
KQotICAgIGYuY2xvc2UoKQotICAgIHQgPSBUcnVlCi0KLWlmIChub3QgdCBvciBjb21wICE9IGNv
bXBhcmF0b3IpOgotICAgIGYgPSBvcGVuKGZpbGVuYW1lLCAndycpCi0gICAgZi53cml0ZShjb21w
KQotICAgIGYuY2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAppbmRleCA3M2ViZTQ3OTkzNWZjYTc0MDlmZDkzMmY4
ODliNjU4NGJlNThiNjE0Li44MTZiNGE1ZDMwYjUyMGI1ZDFkZmVhZWFiMmY5Mzk0YzY4YmRjMGEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmNwcApAQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbChWTSYsIGNvbnN0IFNvdXJjZUNvZAog
QnVpbHRpbkV4ZWN1dGFibGVzOjpCdWlsdGluRXhlY3V0YWJsZXMoVk0mIHZtKQogICAgIDogbV92
bSh2bSkKICNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1
bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UobWFrZVNvdXJjZShTdHJpbmdJ
bXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFtZSwgbGVuZ3RoKSkpCi0gICAgSlNDX0ZPUkVB
Q0hfQlVJTFRJTihJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisgICAgSlNDX0ZP
UkVBQ0hfQlVJTFRJTl9DT0RFKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKICN1
bmRlZiBFWFBPU0VfQlVJTFRJTl9TVFJJTkdTCiB7CiB9CkBAIC0xMzIsNyArMTMyLDcgQEAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6bmFtZSMjRXhlY3V0
YWJsZSgpIFwKICAgICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUgPSBXZWFrPFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlPihjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShtXyMjbmFtZSMjU291cmNl
LCBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZ1bmN0aW9uTmFtZSMjUHVibGlj
TmFtZSgpLCBzXyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0eSksIHRoaXMsICZtXyMjbmFtZSMjRXhl
Y3V0YWJsZSk7XAogICAgIHJldHVybiBtXyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtcCiB9Ci1K
U0NfRk9SRUFDSF9CVUlMVElOKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQorSlNDX0ZPUkVB
Q0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQogI3VuZGVmIEVYUE9T
RV9CVUlMVElOX1NPVVJDRVMKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCmluZGV4IDZhOTgzMjE3YTBhODg0NTdlZjA5OGZi
Y2I5NTEyM2Q1OWE1MjUxNzUuLmVjOGQ1NzcwNGI4N2M1ODRhOTM2ZGRlNDE3ZDYyOWY4NTdiMzY1
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXAogY29uc3QgU291cmNlQ29kZSYgbmFtZSMj
U291cmNlKCkgeyByZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQogICAgIAotICAgIEpTQ19GT1JF
QUNIX0JVSUxUSU4oRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisgICAgSlNDX0ZPUkVBQ0hf
QlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQogI3VuZGVmIEVYUE9TRV9C
VUlMVElOX1NPVVJDRVMKIAogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVE
ZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1l
KTsKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NP
VVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKVwKICAgICBTb3VyY2VDb2Rl
IG1fIyNuYW1lIyNTb3VyY2U7IFwKICAgICBXZWFrPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
PiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKLSAgICBKU0NfRk9SRUFDSF9CVUlMVElOKERFQ0xBUkVf
QlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUoREVD
TEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQogI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VS
Q0VfTUVNQkVSUwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0
ZV9oYXNoX3RhYmxlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCmlu
ZGV4IDZmYTc4Y2VhMjg3MzhjMGYxNzQ1MTQ3ZjA0OTczYWNiNmNhODM2ZDguLmEyMjVjYmU2N2Q4
MGRhYTJmZDNlOThmMTkwNTJlYzA5ODE4ZDIzZjggMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3Jl
YXRlX2hhc2hfdGFibGUKQEAgLTMxOSw3ICszMTksNyBAQCBzdWIgb3V0cHV0KCkgewogICAgICAg
ICBpZiAoJHZhbHVlc1skaV17InR5cGUifSBlcSAiRnVuY3Rpb24iKSAgewogICAgICAgICAgICAg
bXkgJHRhYmxlSGVhZCA9ICRuYW1lOwogICAgICAgICAgICAgJHRhYmxlSGVhZCA9fiBzL1RhYmxl
JC8vOwotICAgICAgICAgICAgcHJpbnQgIiAjaWYgSlNDX0JVSUxUSU5fRVhJU1RTKCIgLiB1Yygk
dGFibGVIZWFkIC4gJGtleSkgLiIpXG4iOworICAgICAgICAgICAgcHJpbnQgIiAjaWYgSlNDX0JV
SUxUSU5fRVhJU1RTKCIgLiB1YygkdGFibGVIZWFkKSAuICIsICIgLiB1Yygka2V5KSAuIilcbiI7
CiAgICAgICAgICAgICBwcmludCAiICAgeyBcIiRrZXlcIiwgKCgkYXR0cnNbJGldKSAmIH5GdW5j
dGlvbikgfCBCdWlsdGluLCAkaW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxCdWls
dGluR2VuZXJhdG9yPigiIC4gJHRhYmxlSGVhZCAuIHVjZmlyc3QoJGtleSkgLiAiQ29kZUdlbmVy
YXRvciksIChpbnRwdHJfdCkkc2Vjb25kVmFsdWUgfSB9LFxuIjsKICAgICAgICAgICAgIHByaW50
ICIgI2Vsc2VcbiIKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAwN2VjM2M4MWU0
NzY2YWI4NTdkZGEyOGI5M2ZmYjcxODMzOTZmYWM4Li42NWFhYWE0ZmIzNTdkNzk3OTk5MTI2M2E1
MTBiNzc5YzMyMjY2ODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODIxLDE0ICs4MjEsMTAg
QEAgc2V0KFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgJHtXZWJDb3JlX1NWR19JRExfRklMRVN9CiAp
CiAKLWlmIChXSU4zMikKLSAgICBpZiAoSU5URVJOQUxfQlVJTEQpCi0gICAgICAgIHNldChKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUiAiJHtDTUFLRV9CSU5BUllfRElSfS8uLi9pbmNsdWRlL3By
aXZhdGUvSmF2YVNjcmlwdENvcmUvU2NyaXB0cyIpCi0gICAgZWxzZSAoKQotICAgICAgICBzZXQo
SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIgIiR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vRm9yd2Fy
ZGluZ0hlYWRlcnMvSmF2YVNjcmlwdENvcmUvU2NyaXB0cyIpCi0gICAgZW5kaWYgKCkKK2lmIChX
SU4zMiBBTkQgSU5URVJOQUxfQlVJTEQpCisgICAgc2V0KEphdmFTY3JpcHRDb3JlX1NDUklQVFNf
RElSICIke0NNQUtFX0JJTkFSWV9ESVJ9Ly4uL2luY2x1ZGUvcHJpdmF0ZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzIikKIGVsc2UgKCkKLSAgICBzZXQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIg
IiR7SkFWQVNDUklQVENPUkVfRElSfS9TY3JpcHRzIikKKyAgICBzZXQoSmF2YVNjcmlwdENvcmVf
U0NSSVBUU19ESVIgIiR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cyIpCiBlbmRpZiAoKQogCiBzZXQoV2ViQ29yZV9TT1VSQ0VTCkBA
IC0zMzYxLDE4ICszMzU3LDYgQEAgc2V0KFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVDVE9SU19G
SUxFICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9Xb3JrZXJHbG8KIHNldChERURJQ0FU
RURXT1JLRVJHTE9CQUxTQ09QRV9DT05TVFJVQ1RPUlNfRklMRSAke0RFUklWRURfU09VUkNFU19X
RUJDT1JFX0RJUn0vRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsKQog
c2V0KElETF9BVFRSSUJVVEVTX0ZJTEUgJHtXRUJDT1JFX0RJUn0vYmluZGluZ3Mvc2NyaXB0cy9J
RExBdHRyaWJ1dGVzLnR4dCkKIAotc2V0KFdFQkNPUkVfSlNfQlVJTFRJTlMKLSAgICAke1dFQkNP
UkVfRElSfS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5qcwotICAgICR7V0VCQ09S
RV9ESVJ9L01vZHVsZXMvc3RyZWFtcy9CeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmpzCi0gICAg
JHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zdHJlYW1zL0NvdW50UXVldWluZ1N0cmF0ZWd5LmpzCi0g
ICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmpzCi0gICAg
JHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5q
cwotICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVy
bmFscy5qcwotICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bVJlYWRlci5qcwotICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3RyZWFtcy9TdHJlYW1JbnRl
cm5hbHMuanMKLSAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJl
YW0uanMKLSkKLQogV0VCS0lUX0lOQ0xVREVfQ09ORklHX0ZJTEVTX0lGX0VYSVNUUygpCiAKICMg
R2VuZXJhdGUgSW5zcGVjdG9yT3ZlcmxheVBhZ2UuaApAQCAtMzU5NywyMiArMzU4MSw1MSBAQCBH
RU5FUkFURV9CSU5ESU5HUyhXZWJDb3JlVGVzdFN1cHBvcnRfU09VUkNFUwogICAgICR7QURESVRJ
T05BTF9CSU5ESU5HU19ERVBFTkRFTkNJRVN9KQogCiAjIFdlYkNvcmUgSlMgQnVpbHRpbnMKLWZv
cmVhY2ggKF9idWlsdGluanMgJHtXRUJDT1JFX0pTX0JVSUxUSU5TfSkKLSAgICBnZXRfZmlsZW5h
bWVfY29tcG9uZW50KF9uYW1lICR7X2J1aWx0aW5qc30gTkFNRV9XRSkKKworc2V0KFdlYkNvcmVf
QlVJTFRJTlNfU09VUkNFUworICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFEZXZpY2VzLmpzCisgICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zdHJlYW1zL0J5dGVM
ZW5ndGhRdWV1aW5nU3RyYXRlZ3kuanMKKyAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3N0cmVh
bXMvQ291bnRRdWV1aW5nU3RyYXRlZ3kuanMKKyAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW0uanMKKyAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3N0cmVh
bXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmpzCisgICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCisgICAgJHtXRUJDT1JFX0RJUn0v
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmpzCisgICAgJHtXRUJDT1JFX0RJ
Un0vTW9kdWxlcy9zdHJlYW1zL1N0cmVhbUludGVybmFscy5qcworICAgICR7V0VCQ09SRV9ESVJ9
L01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5qcworKQorCitzZXQoQlVJTFRJTlNfR0VO
RVJBVE9SX1NDUklQVFMKKyAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGlu
cy5weQorICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5zX2dlbmVyYXRv
ci5weQorICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5zX21vZGVsLnB5
CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnNfdGVtcGxhdGVzLnB5
CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnNfZ2VuZXJhdGVfY29t
YmluZWRfaGVhZGVyLnB5CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRp
bnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkKKyAgICAke0phdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSfS9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkKKyAg
ICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0
ZV9pbXBsZW1lbnRhdGlvbi5weQorICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1
aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX3dyYXBwZXIucHkKKyAgICAke0phdmFTY3JpcHRDb3Jl
X1NDUklQVFNfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorICAgICR7SmF2YVNjcmlwdENv
cmVfU0NSSVBUU19ESVJ9L2xhenl3cml0ZXIucHkKKykKKworZm9yZWFjaCAoX2J1aWx0aW5Tb3Vy
Y2UgJHtXZWJDb3JlX0JVSUxUSU5TX1NPVVJDRVN9KQorICAgIGdldF9maWxlbmFtZV9jb21wb25l
bnQoX29iamVjdE5hbWUgJHtfYnVpbHRpblNvdXJjZX0gTkFNRV9XRSkKICAgICBhZGRfY3VzdG9t
X2NvbW1hbmQoCi0gICAgICAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0v
JHtfbmFtZX1CdWlsdGluc1dyYXBwZXIuaCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0v
JHtfbmFtZX1CdWlsdGlucy5oICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS8ke19uYW1l
fUJ1aWx0aW5zLmNwcAotICAgICAgICBNQUlOX0RFUEVOREVOQ1kgJHtXRUJDT1JFX0RJUn0vZ2Vu
ZXJhdGUtanMtYnVpbHRpbnMKLSAgICAgICAgREVQRU5EUyAke0phdmFTY3JpcHRDb3JlX1NDUklQ
VFNfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucwotICAgICAgICBERVBFTkRTICR7X2J1aWx0aW5q
c30KLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRf
U09VUkNFX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMgLS1pbnB1dCAke19idWlsdGluanN9IC0t
b3V0cHV0X2RpciAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0gLS1nZW5lcmF0ZV9qc19i
dWlsdGluc19wYXRoICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9CisgICAgICAgIE9VVFBV
VCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vJHtfb2JqZWN0TmFtZX1CdWlsdGlucy5j
cHAKKyAgICAgICAgICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS8ke19vYmpl
Y3ROYW1lfUJ1aWx0aW5zLmgKKyAgICAgICAgICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNP
UkVfRElSfS8ke19vYmplY3ROYW1lfUJ1aWx0aW5zV3JhcHBlci5oIAorICAgICAgICBNQUlOX0RF
UEVOREVOQ1kgJHtfYnVpbHRpblNvdXJjZX0KKyAgICAgICAgREVQRU5EUyAke0JVSUxUSU5TX0dF
TkVSQVRPUl9TQ1JJUFRTfQorICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7
SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5IC0tZnJh
bWV3b3JrIFdlYkNvcmUgLS1vdXRwdXQtZGlyZWN0b3J5ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNP
UkVfRElSfSAke19idWlsdGluU291cmNlfQogICAgICAgICBWRVJCQVRJTSkKICAgICBsaXN0KEFQ
UEVORCBXZWJDb3JlX1NPVVJDRVMKLSAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9LyR7X25hbWV9QnVpbHRpbnMuaAotICAgICAgICAke0RFUklWRURfU09VUkNFU19XRUJDT1JF
X0RJUn0vJHtfbmFtZX1CdWlsdGluc1dyYXBwZXIuaAorICAgICAgICAke0RFUklWRURfU09VUkNF
U19XRUJDT1JFX0RJUn0vJHtfb2JqZWN0TmFtZX1CdWlsdGlucy5oCisgICAgICAgICR7REVSSVZF
RF9TT1VSQ0VTX1dFQkNPUkVfRElSfS8ke19vYmplY3ROYW1lfUJ1aWx0aW5zV3JhcHBlci5oCiAg
ICAgKQotICAgIEFERF9TT1VSQ0VfV0VCQ09SRV9ERVJJVkVEX0RFUEVOREVOQ0lFUygke1dFQkNP
UkVfRElSfS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNCdWlsdGlucy5jcHAgJHtfbmFtZX1CdWlsdGlu
cy5jcHApCisgICAgQUREX1NPVVJDRV9XRUJDT1JFX0RFUklWRURfREVQRU5ERU5DSUVTKCR7V0VC
Q09SRV9ESVJ9L2JpbmRpbmdzL2pzL1dlYkNvcmVKU0J1aWx0aW5zLmNwcCAke19vYmplY3ROYW1l
fUJ1aWx0aW5zLmNwcCkKIGVuZGZvcmVhY2ggKCkKIAorCiBBRERfU09VUkNFX1dFQkNPUkVfREVS
SVZFRF9ERVBFTkRFTkNJRVMoJHtXRUJDT1JFX0RJUn0vaHRtbC9IVE1MVHJlZUJ1aWxkZXIuY3Bw
IE1hdGhNTE5hbWVzLmNwcCkKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBj
MzcxNjdlOTk3NWM2MTZjNGUzMTNmMDExMmYxM2Y0Y2U3YzUyNmI3Li43Y2M1NzUzNDc3MjcyNjBk
ZWY2YjVhYjBiZDNmMDJhMmQ0M2Y2ZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
QEAgLTc5Nyw3ICs3OTcsNiBAQCBhbGwgOiBcCiAgICAgJChXT1JLRVJHTE9CQUxTQ09QRV9DT05T
VFJVQ1RPUlNfRklMRSkgXAogICAgICQoSlNfRE9NX0hFQURFUlMpIFwKICAgICAkKFdFQl9ET01f
SEVBREVSUykgXAotICAgICQoV0VCQ09SRV9KU19CVUlMVElOUykgXAogICAgIFwKICAgICBDU1NH
cmFtbWFyLmNwcCBcCiAgICAgQ1NTUHJvcGVydHlOYW1lcy5jcHAgXApAQCAtMTI1Niw3ICsxMjU1
LDcgQEAgV2ViUmVwbGF5SW5wdXRzLmggOiAkKElOUFVUX0dFTkVSQVRPUl9TUEVDSUZJQ0FUSU9O
UykgJChJTlBVVF9HRU5FUkFUT1JfU0NSSVBUUykKIAogIyBXZWJDb3JlIEpTIEJ1aWx0aW5zCiAK
LVdFQkNPUkVfSlNfQlVJTFRJTlMgPSBcCitXZWJDb3JlX0JVSUxUSU5TX1NPVVJDRVMgPSBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5qcyBcCiAgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5qcyBc
CiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvQ291bnRRdWV1aW5nU3RyYXRlZ3kuanMg
XApAQCAtMTI2OCwxMCArMTI2NywzMSBAQCBXRUJDT1JFX0pTX0JVSUxUSU5TID0gXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzIFwKICMKIAotYWxsIDog
JChXRUJDT1JFX0pTX0JVSUxUSU5TOiUuanM9JUJ1aWx0aW5zLmNwcCkKK0JVSUxUSU5TX0dFTkVS
QVRPUl9TQ1JJUFRTID0gXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0
aW5zLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGluc19nZW5l
cmF0b3IucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zX21v
ZGVsLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGluc190ZW1w
bGF0ZXMucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zX2dl
bmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRT
X0RJUikvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkgXAorICAg
ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRl
X2hlYWRlci5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnNf
Z2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkgXAorICAgICQoSmF2YVNjcmlwdENv
cmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX3dyYXBwZXIucHkgXAor
ICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5
IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9sYXp5d3JpdGVyLnB5IFwKKyMK
KworIyBBZGRpbmcvcmVtb3Zpbmcgc2NyaXB0cyBzaG91bGQgdHJpZ2dlciByZWdlbmVyYXRpb24s
IGJ1dCBjaGFuZ2luZyB3aGljaCBidWlsdGlucyBhcmUKKyMgZ2VuZXJhdGVkIHNob3VsZCBub3Qg
YWZmZWN0IG90aGVyIGJ1aWx0aW5zIHdoZW4gbm90IHBhc3NpbmcgJy0tY29tYmluZWQnIHRvIHRo
ZSBnZW5lcmF0b3IuCisKKy5QSE9OWTogZm9yY2UKK1dlYkNvcmVfQlVJTFRJTlNfREVQRU5ERU5D
SUVTX0xJU1QgOiAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9VcGRhdGVDb250ZW50cy5w
eSBmb3JjZQorCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9VcGRhdGVD
b250ZW50cy5weSAnJChCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUyknICRACisKKyVCdWlsdGlu
cy5oOiAlLmpzICQoQlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMpIFdlYkNvcmVfQlVJTFRJTlNf
REVQRU5ERU5DSUVTX0xJU1QKKwkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJ
UikvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgLS1vdXRwdXQtZGlyZWN0b3J5IC4gLS1mcmFtZXdv
cmsgV2ViQ29yZSAkPAogCi0lQnVpbHRpbnMuY3BwOiAlLmpzCi0JJChQWVRIT04pICQoV2ViQ29y
ZSkvZ2VuZXJhdGUtanMtYnVpbHRpbnMgLS1pbnB1dCAkPCAtLWdlbmVyYXRlX2pzX2J1aWx0aW5z
X3BhdGggJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikKK2FsbCA6ICQobm90ZGlyICQoV2Vi
Q29yZV9CVUlMVElOU19TT1VSQ0VTOiUuanM9JUJ1aWx0aW5zLmgpKQogCiAjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYzdhYjVjMDEwYmQyZmYxMzIxNzc2NjMyMDUzM2Q5MzM3Y2M2
YzFhNy4uMDdmYjM2NTMxZmQ1ODliY2YzNjJkNWE1MTFiZDY3OWM0NjZjMWY2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE0
OSw3ICsxMTQ5LDcgQEAKIAkJMkQ1MDAyRjgxQjU2RDc4MTAwMjBBQUY3IC8qIERPTVBhdGguY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ1MDAyRjcx
QjU2RDc4MTAwMjBBQUY3IC8qIERPTVBhdGguY3BwICovOyB9OwogCQkyRDUwMDJGQjFCNTZENzk5
MDAyMEFBRjcgLyogUGF0aFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRDUwMDJGOTFCNTZENzk5MDAyMEFBRjcgLyogUGF0aFV0aWxp
dGllcy5jcHAgKi87IH07CiAJCTJENTAwMkZDMUI1NkQ3OTkwMDIwQUFGNyAvKiBQYXRoVXRpbGl0
aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDUw
MDJGQTFCNTZENzk5MDAyMEFBRjcgLyogUGF0aFV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTJENTAzNjY4MUJDREREQzQwMEUyMEJC
MyAvKiBHZXN0dXJlRXZlbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJENTAzNjY3MUJDREREQzQwMEUyMEJCMyAvKiBHZXN0dXJlRXZlbnRzLmNw
cCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OworCQkyRDUwMzY2ODFCQ0RE
REM0MDBFMjBCQjMgLyogR2VzdHVyZUV2ZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDUwMzY2NzFCQ0REREM0MDBFMjBCQjMgLyogR2VzdHVy
ZUV2ZW50cy5jcHAgKi87IH07CiAJCTJENTY0NkIwMUI4Rjg0OTMwMDNDNDk5NCAvKiBEaWN0aW9u
YXJ5UG9wdXBJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRDU2NDZBRjFCOEY4NDkzMDAzQzQ5OTQgLyogRGljdGlvbmFyeVBvcHVwSW5mby5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJENThEODU1
MUExNUY2NUYwMEE1RjcyNiAvKiBEYXRhRGV0ZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDU4RDg1MzFBMTVGNjVGMDBBNUY3MjYgLyogRGF0
YURldGVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTJENThEODU2MUExNUY2NUYwMEE1RjcyNiAvKiBEYXRhRGV0ZWN0aW9uLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ1OEQ4NTQxQTE1RjY1
RjAwQTVGNzI2IC8qIERhdGFEZXRlY3Rpb24ubW0gKi87IH07CkBAIC0xNTE5LDggKzE1MTksOCBA
QAogCQk0MTZFNkZFQTFCQkQxNjg0MDAwQTYwMzQgLyogU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNX
cmFwcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
QjAzRDgwNzFCQjMxMTBEMDBCNzY0Q0EgLyogU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2
RTZGRTgxQkJEMTJERjAwMEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2
MUJCMzExMEQwMEI3NjREOSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTkx
QkJEMTJFNTAwMEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjRE
OCAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDE2RTZGRUExQkJEMTY4NDAwMEE2MDQ0IC8qIFJlYWRh
YmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNzFCQjMxMTBEMDBCNzY0REEgLyogUmVh
ZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGluc1dyYXBwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFOTFCQkQxMkU1MDAwQTYwNTMg
LyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU4IC8qIFdyaXRhYmxlU3Ry
ZWFtQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk0MTZFNkZFQTFCQkQxNjg0MDAwQTYwNDQgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5h
bHNCdWlsdGluc1dyYXBwZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlCMDNEODA3MUJCMzExMEQwMEI3NjREQSAvKiBSZWFkYWJsZVN0cmVhbUludGVy
bmFsc0J1aWx0aW5zV3JhcHBlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQxNzI1M0FBMTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xF
bGVtZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTcyNTNBODEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3BwICov
OyB9OwogCQk0MTcyNTNBQjEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzI1M0E5
MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oICovOyB9OwogCQk0MTdE
QTZEOTEzNzM0RTZFMDA3QzU3RkIgLyogSW50ZXJuYWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxN0RBNENGMTM3MzQzMjYwMDdDNTdGQiAvKiBJ
bnRlcm5hbHMuY3BwICovOyB9OwpAQCAtMjY1OSwxMSArMjY1OSwxMSBAQAogCQk3QzQ4QTZEMTE5
MUM5RDY1MDAwMjY2NzQgLyogV2ViS2l0TmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzQ4QTZDRjE5MUM5RDY1MDAwMjY2NzQgLyogV2Vi
S2l0TmFtZXNwYWNlLmggKi87IH07CiAJCTdDNDkwMkEyMThCODI1RjgwMDdEOTI5OCAvKiBET01X
aGVlbEV2ZW50SW50ZXJuYWwuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1OTg5RENBMEFDQzhCQkQwMEEwQkM1MSAvKiBET01X
aGVlbEV2ZW50SW50ZXJuYWwuaCAqLzsgfTsKIAkJN0M0Qzk2REMxQUQ0NDgzNTAwMzY1QTUwIC8q
IEpTUmVhZGFibGVTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0M0Qzk2RDgxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW0u
Y3BwICovOyB9OworCQk3QzRDOTZEQzFBRDQ0ODM1MDAzNjVBNjAgLyogSlNXcml0YWJsZVN0cmVh
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzRD
OTZEODFBRDQ0ODM1MDAzNjVBNjAgLyogSlNXcml0YWJsZVN0cmVhbS5jcHAgKi87IH07CiAJCTdD
NEM5NkREMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzRDOTZEOTFBRDQ0ODM1MDAzNjVB
NTAgLyogSlNSZWFkYWJsZVN0cmVhbS5oICovOyB9OworCQk3QzRDOTZERDFBRDQ0ODM1MDAzNjVB
NjAgLyogSlNXcml0YWJsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0M0Qzk2RDkxQUQ0NDgzNTAwMzY1QTYwIC8qIEpTV3JpdGFibGVTdHJl
YW0uaCAqLzsgfTsKIAkJN0M0Qzk2REUxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJl
YW1SZWFkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0M0Qzk2REExQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuY3Bw
ICovOyB9OwogCQk3QzRDOTZERjFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbVJl
YWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M0
Qzk2REIxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuaCAqLzsgfTsK
LQkJN0M0Qzk2REMxQUQ0NDgzNTAwMzY1QTYwIC8qIEpTV3JpdGFibGVTdHJlYW0uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M0Qzk2RDgxQUQ0NDgz
NTAwMzY1QTYwIC8qIEpTV3JpdGFibGVTdHJlYW0uY3BwICovOyB9OwotCQk3QzRDOTZERDFBRDQ0
ODM1MDAzNjVBNjAgLyogSlNXcml0YWJsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M0Qzk2RDkxQUQ0NDgzNTAwMzY1QTYwIC8qIEpTV3Jp
dGFibGVTdHJlYW0uaCAqLzsgfTsKIAkJN0M0Qzk2RTMxQUQ0NEFCRjAwMzY1QTUwIC8qIExhdW5j
aFNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzRDOTZFMjFBRDQ0QUJGMDAzNjVBNTAgLyogTGF1bmNoU2VydmljZXNTUEkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzRFREQ3NDFB
N0I2MDc4MDAxOThDNEQgLyogRm9udENvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0M0RURENzMxQTdCNjA3ODAwMTk4QzREIC8qIEZvbnRDb2Nv
YS5tbSAqLzsgfTsKIAkJN0M1MjJENEIxNUI0NzdFODAwOUI3Qzk1IC8qIEluc3BlY3Rvck92ZXJs
YXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M1
MjJENDkxNUI0NzdFODAwOUI3Qzk1IC8qIEluc3BlY3Rvck92ZXJsYXkuY3BwICovOyB9OwpAQCAt
NTUwOCw4ICs1NTA4LDggQEAKIAkJQkM3NzlFMTcxQkIyMjdDQTAwQ0FBOEJGIC8qIFN0eWxlQ3Vz
dG9tUHJvcGVydHlEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzc3OUUxNTFCQjIyNkEyMDBDQUE4QkYgLyogU3R5bGVDdXN0b21Qcm9wZXJ0eURh
dGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlC
QzdEOEZFRjFCRDAzQjY0MDBGRkU1NDAgLyogQ1NTVW5zZXRWYWx1ZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdEOEZFRDFCRDAzQjY0MDBGRkU1
NDAgLyogQ1NTVW5zZXRWYWx1ZS5jcHAgKi87IH07CiAJCUJDN0Q4RkYwMUJEMDNCNjQwMEZGRTU0
MCAvKiBDU1NVbnNldFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzdEOEZFRTFCRDAzQjY0MDBGRkU1NDAgLyogQ1NTVW5zZXRWYWx1ZS5oICov
OyB9OwotCQlCQzdEOEZGMzFCRDFBNDc5MDBGRkU1NDAgLyogQ1NTUmV2ZXJ0VmFsdWUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3RDhGRjExQkQx
QTQ3OTAwRkZFNTQwIC8qIENTU1JldmVydFZhbHVlLmNwcCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRf
VEFHUyA9ICgpOyB9OyB9OwotCQlCQzdEOEZGNDFCRDFBNDc5MDBGRkU1NDAgLyogQ1NTUmV2ZXJ0
VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
N0Q4RkYyMUJEMUE0NzkwMEZGRTU0MCAvKiBDU1NSZXZlcnRWYWx1ZS5oICovOyBzZXR0aW5ncyA9
IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCUJDN0Q4RkYzMUJEMUE0NzkwMEZGRTU0MCAvKiBD
U1NSZXZlcnRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzdEOEZGMTFCRDFBNDc5MDBGRkU1NDAgLyogQ1NTUmV2ZXJ0VmFsdWUuY3BwICov
OyB9OworCQlCQzdEOEZGNDFCRDFBNDc5MDBGRkU1NDAgLyogQ1NTUmV2ZXJ0VmFsdWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0Q4RkYyMUJEMUE0
NzkwMEZGRTU0MCAvKiBDU1NSZXZlcnRWYWx1ZS5oICovOyB9OwogCQlCQzdGNDRBODBCOUUzMjRF
MDBBOUQwODEgLyogSW1hZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkM3RjQ0QTcwQjlFMzI0RTAwQTlEMDgxIC8qIEltYWdlT2JzZXJ2
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlC
QzdGQTYyMDBEMUYwQ0JEMDBEQjIyQTkgLyogTGl2ZU5vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0ZBNjFFMEQxRjBDQkQwMERCMjJB
OSAvKiBMaXZlTm9kZUxpc3QuY3BwICovOyB9OwogCQlCQzdGQTYyMTBEMUYwQ0JEMDBEQjIyQTkg
LyogTGl2ZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzdGQTYxRjBEMUYwQ0JEMDBEQjIyQTkgLyogTGl2ZU5vZGVMaXN0LmggKi87IH07
CkBAIC0xMDExOCwxMSArMTAxMTgsMTEgQEAKIAkJN0M0OEE2Q0YxOTFDOUQ2NTAwMDI2Njc0IC8q
IFdlYktpdE5hbWVzcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJL
aXROYW1lc3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M0OEE2RDIxOTFD
OUQ4RTAwMDI2Njc0IC8qIFdlYktpdE5hbWVzcGFjZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0TmFtZXNwYWNl
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M0Qzk2RDgxQUQ0NDgzNTAwMzY1
QTUwIC8qIEpTUmVhZGFibGVTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdDNEM5NkQ4MUFENDQ4MzUwMDM2NUE2MCAvKiBKU1dyaXRhYmxlU3RyZWFtLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV3JpdGFibGVTdHJlYW0uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyog
SlNSZWFkYWJsZVN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Jl
YWRhYmxlU3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNEM5NkQ5MUFE
NDQ4MzUwMDM2NUE2MCAvKiBKU1dyaXRhYmxlU3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTV3JpdGFibGVTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0M0Qzk2REExQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1SZWFkZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVh
bVJlYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNEM5NkRCMUFENDQ4
MzUwMDM2NUE1MCAvKiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTUmVhZGFibGVTdHJlYW1SZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJN0M0Qzk2RDgxQUQ0NDgzNTAwMzY1QTYwIC8qIEpTV3JpdGFibGVTdHJl
YW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXcml0YWJsZVN0
cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDNEM5NkQ5MUFENDQ4MzUw
MDM2NUE2MCAvKiBKU1dyaXRhYmxlU3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTV3JpdGFibGVTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0M0Qzk2RTIxQUQ0NEFCRjAwMzY1QTUwIC8qIExhdW5jaFNlcnZpY2VzU1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhdW5jaFNlcnZpY2VzU1BJLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDNEVERDczMUE3QjYwNzgwMDE5OEM0RCAvKiBGb250Q29jb2Eu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGb250Q29jb2EubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNTIyRDQ5MTVCNDc3RTgwMDlCN0M5NSAv
KiBJbnNwZWN0b3JPdmVybGF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEluc3BlY3Rvck92ZXJsYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTEzNTksMTYgKzExMzU5LDE1IEBACiAJCTk4Q0U0MzI1MTI5RTAwQkQwMDU4MjFEQyAvKiBMaW5r
TG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExpbmtMb2Fk
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OENFNDMyOTEyOUUwMEU1MDA1
ODIxREMgLyogTGlua0xvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBM
aW5rTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk4RUIxRjk0MTMxM0ZF
MDUwMEQwRTFFQSAvKiBOb3RJbXBsZW1lbnRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOb3RJbXBsZW1lbnRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5
OTA4QjBFQzFCQ0FDRjFGMDBFRDBGNjUgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSAiZ2VuZXJhdGUtanMtYnVpbHRpbnMiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBFRDFCQ0FDRjkxMDBFRDBGNjUgLyogQnl0
ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlw
dDsgcGF0aCA9IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kuanM7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk5MDhCMEVFMUJDQUNGOTEwMEVEMEY2NSAvKiBDb3VudFF1ZXVpbmdTdHJh
dGVneS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IENvdW50UXVl
dWluZ1N0cmF0ZWd5LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGMTFC
Q0FDRjkxMDBFRDBGNTUgLyogU3RyZWFtSW50ZXJuYWxzLmpzICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5qYXZhc2NyaXB0OyBwYXRoID0gU3RyZWFtSW50ZXJuYWxzLmpzOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5OTA4QjBGRDFCQ0FEMDdEMDBFRDBGNTUgLyogU3RyZWFtSW50ZXJuYWxz
QnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFt
SW50ZXJuYWxzQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4
QjBFRjFCQ0FDRjkxMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW0uanMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbS5qczsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTkwOEIwRUYxQkNBQ0Y5MTAwRUQwRjc1IC8qIFdyaXRhYmxlU3Ry
ZWFtLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gV3JpdGFibGVT
dHJlYW0uanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEYwMUJDQUNGOTEw
MEVEMEY2NSAvKiBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuanMgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmphdmFzY3JpcHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuanM7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEYxMUJDQUNGOTEwMEVEMEY2NSAvKiBSZWFk
YWJsZVN0cmVhbUludGVybmFscy5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsg
cGF0aCA9IFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5OTA4QjBGMjFCQ0FDRjkxMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1SZWFkZXIu
anMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVh
bVJlYWRlci5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTkwOEIwRUYxQkNBQ0Y5
MTAwRUQwRjc1IC8qIFdyaXRhYmxlU3RyZWFtLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZh
c2NyaXB0OyBwYXRoID0gV3JpdGFibGVTdHJlYW0uanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk5MDhCMEYzMUJDQUNGRkUwMEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0
ZWd5QnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnl0
ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTkwOEIwRjQxQkNBQ0ZGRTAwRUQwRjY1IC8qIEJ5dGVMZW5ndGhRdWV1aW5nU3Ry
YXRlZ3lCdWlsdGluc1dyYXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Qnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zV3JhcHBlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5OTA4QjBGNTFCQ0FEMDdEMDBFRDBGNjUgLyogQnl0ZUxlbmd0aFF1
ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTEzNzYsNiArMTEzNzUsNyBAQAogCQk5OTA4QjBGNzFCQ0FEMDdEMDBFRDBG
NjUgLyogQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDb3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEY4MUJDQUQwN0QwMEVEMEY2NSAvKiBDb3VudFF1ZXVp
bmdTdHJhdGVneUJ1aWx0aW5zV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zV3JhcHBlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5OTA4QjBGOTFCQ0FEMDdEMDBFRDBGNjUgLyogUmVhZGFibGVTdHJl
YW1CdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFk
YWJsZVN0cmVhbUJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTkw
OEIwRjkxQkNBRDA3RDAwRUQwRjc1IC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV3JpdGFibGVTdHJlYW1CdWlsdGlucy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEZBMUJDQUQwN0QwMEVEMEY2
NSAvKiBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJCdWlsdGlucy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEZCMUJDQUQwN0QwMEVEMEY2
NSAvKiBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJCdWlsdGlucy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGQzFCQ0FEMDdEMDBFRDBGNjUgLyogUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyQnVpbHRpbnNXcmFwcGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlckJ1aWx0aW5zV3JhcHBlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEzODMsNyArMTEzODMsNiBAQAogCQk5
OTA4QjBGRTFCQ0FEMDdEMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1SZWFkZXJCdWlsdGlucy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFkYWJsZVN0cmVhbVJl
YWRlckJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRkYx
QkNBRDA3RDAwRUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyQnVpbHRpbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVTdHJlYW1SZWFkZXJCdWlsdGlucy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjEwMDFCQ0FEMDdEMDBFRDBGNjUg
LyogUmVhZGFibGVTdHJlYW1SZWFkZXJCdWlsdGluc1dyYXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVTdHJlYW1SZWFkZXJCdWlsdGluc1dyYXBwZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTkwOEIwRjkxQkNBRDA3RDAwRUQwRjc1IC8q
IFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV3JpdGFibGVTdHJlYW1CdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk5MjAzOTgwMThCOTVCQzYwMEIzOUFGOSAvKiBVc2VySW5wdXRCcmlkZ2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlcklucHV0QnJpZGdlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkyMDM5ODExOEI5NUJDNjAwQjM5QUY5
IC8qIFVzZXJJbnB1dEJyaWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBV
c2VySW5wdXRCcmlkZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlDN0NDQjIx
OEM2NjNFNDAwMzJFNDEzIC8qIE1lbW9pemVkRE9NUmVzdWx0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lbW9pemVkRE9NUmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMTQyNCw5ICsxMTQyMyw5IEBACiAJCTlCMDNEODA3MUJCMzExMEQwMEI3NjRD
QSAvKiBTdHJlYW1JbnRlcm5hbHNCdWlsdGluc1dyYXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDNEODA2MUJCMzExMEQwMEI3NjREOCAvKiBSZWFkYWJs
ZVN0cmVhbUJ1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRh
YmxlU3RyZWFtQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwM0Q4
MDYxQkIzMTEwRDAwQjc2NEQ5IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNC
dWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QjAzRDgwNjFCQjMxMTBE
MDBCNzY0RTggLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlCMDNEODA3MUJCMzExMEQwMEI3NjREOCAvKiBSZWFkYWJsZVN0cmVhbUJ1
aWx0aW5zV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJs
ZVN0cmVhbUJ1aWx0aW5zV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
QjAzRDgwNzFCQjMxMTBEMDBCNzY0REEgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlu
c1dyYXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVTdHJl
YW1JbnRlcm5hbHNCdWlsdGluc1dyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU4IC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGFibGVTdHJlYW1CdWlsdGlucy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjAzRDgwNzFCQjMxMTBEMDBCNzY0RTgg
LyogV3JpdGFibGVTdHJlYW1CdWlsdGluc1dyYXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV3JpdGFibGVTdHJlYW1CdWlsdGluc1dyYXBwZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOUIxOUI2N0UxQjk2NEU1MjAwMzQ4NzQ1IC8qIFNoYWRvd1Jvb3Qu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNoYWRvd1Jvb3QuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5QjFBQjA3OTE2NDhDNjlEMDA1MUYzRjIgLyogSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MzUxLDcgKzE1MzUwLDYgQEAKIAkJMDg2
N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIFdlYktpdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJOTkwOEIwRUMxQkNBQ0YxRjAwRUQwRjY1IC8qIGdlbmVy
YXRlLWpzLWJ1aWx0aW5zICovLAogCQkJCTY1Qzk3QUYyMDhFQTkwODgwMEFDRDI3MyAvKiBjb25m
aWcuaCAqLywKIAkJCQlFREVDOTgwMjBBRUQ3RTE3MDA1OTEzN0YgLyogV2ViQ29yZVByZWZpeC5o
ICovLAogCQkJCTkzMDcwNjEzMDlFMENBODIwMEIxN0ZFNCAvKiBEZXJpdmVkU291cmNlcy5tYWtl
ICovLApAQCAtMTY0MDEsNyArMTYzOTksNiBAQAogCQkJCTk5MDhCMEYxMUJDQUNGOTEwMEVEMEY1
NSAvKiBTdHJlYW1JbnRlcm5hbHMuanMgKi8sCiAJCQkJNDFBMDIzRUQxQTM5REI3OTAwRjcyMkRG
IC8qIFdyaXRhYmxlU3RyZWFtLmlkbCAqLywKIAkJCQk5OTA4QjBFRjFCQ0FDRjkxMDBFRDBGNzUg
LyogV3JpdGFibGVTdHJlYW0uanMgKi8sCi0KIAkJCSk7CiAJCQlwYXRoID0gc3RyZWFtczsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNzI1Nyw5ICsxNzI1NCw5IEBACiAJCQkJMUEx
NDE0QjQxM0EwRjA1MDAwMTk5OTZDIC8qIFdlYktpdEZvbnRGYW1pbHlOYW1lcy5oICovLAogCQkJ
CTk5Q0MwQjY4MThCRUExRkYwMDZDRUJDQyAvKiBXZWJSZXBsYXlJbnB1dHMuY3BwICovLAogCQkJ
CTk5Q0MwQjY5MThCRUExRkYwMDZDRUJDQyAvKiBXZWJSZXBsYXlJbnB1dHMuaCAqLywKKwkJCQk5
OTA4QjBGOTFCQ0FEMDdEMDBFRDBGNzUgLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5jcHAgKi8s
CiAJCQkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU4IC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMu
aCAqLywKIAkJCQk5QjAzRDgwNzFCQjMxMTBEMDBCNzY0RTggLyogV3JpdGFibGVTdHJlYW1CdWls
dGluc1dyYXBwZXIuaCAqLywKLQkJCQk5OTA4QjBGOTFCQ0FEMDdEMDBFRDBGNzUgLyogV3JpdGFi
bGVTdHJlYW1CdWlsdGlucy5jcHAgKi8sCiAJCQkJNjU2NTgxRUEwOUQxNTA4RDAwMEU2MUQ3IC8q
IFhMaW5rTmFtZXMuY3BwICovLAogCQkJCTY1NjU4MUVCMDlEMTUwOEQwMDBFNjFENyAvKiBYTGlu
a05hbWVzLmggKi8sCiAJCQkJQTgzM0M4MEEwQTJDRjI1NjAwRDU3NjY0IC8qIFhNTE5hbWVzLmNw
cCAqLywKQEAgLTI5MTIzLDYgKzI5MTIwLDcgQEAKIAkJCQk5NzQ2QUYyNjE0RjREREU2MDAzRTdB
NzAgLyogR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQjYy
NTJFMThERTFCMTUwMEEwN0MwNSAvKiBHZW9tZXRyeVV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0NkM4M0VGRDFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMkQ1MDM2NjgxQkNERERDNDAwRTIwQkIzIC8qIEdlc3R1cmVFdmVudHMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJBRkZDODMwRDAwQTVDMTAwMzAwNzREIC8qIEdseXBo
UGFnZU1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzUzQzYwODBEQTU2QzU3MDAyMUVCNUQg
LyogR3JhZGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1M0M2MEIwREE1NkNGMTAwMjFF
QjVEIC8qIEdyYWRpZW50Q0cuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTc1MSw3ICsyOTc0OSw2
IEBACiAJCQkJMDcwNTg1MzMxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFp
bnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MDU4NTM1MTdGREU2RDkwMDVGMkJDQiAvKiBK
U01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMDc0MDBE
MEU3N0JEQzAwMDMzQUYyNCAvKiBKU01lc3NhZ2VDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTBGRUYyMENFMUJENEEyNDEwMDEyOEU1RCAvKiBMZW5ndGhTaXplLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxQTVGOTlCMEU3RUFBMjUwMEFGODVFQSAvKiBKU01lc3NhZ2VDaGFubmVsQ3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc1NzkzRUM4MEQwQ0U3MkQwMDdGQzBBQyAvKiBK
U01lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTBCN0U3MjEwNDVGQUIwMDBE
ODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDE2
Myw2ICszMDE2MCw3IEBACiAJCQkJNTFCMjQxN0IwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2FjeVdl
YkFyY2hpdmVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0U2NUJFQTBFQUNERjE2MDA3RTQ1
MzMgLyogTGVuZ3RoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU1NUY0OTdBMTUxQjg4ODAwMEJC
NjdEQiAvKiBMZW5ndGhGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZFRjIwQ0Ux
QkQ0QTI0MTAwMTI4RTVEIC8qIExlbmd0aFNpemUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkZC
Njk4Q0MxODMzRUUwRDAwMTU4QTMxIC8qIExpbmVCcmVha2VyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTg5QjVFQUExMTFFODAwM0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5nLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUZGQjY5OENGMTgzNDAyQkIwMDE1OEEzMSAvKiBMaW5lSW5mby5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTMwNDk0LDcgKzMwNDkyLDYgQEAKIAkJCQlEMzAyNzU0OTEyQTVGRTg0MDA0
QkQ4MjggLyogUmVuZGVyRGV0YWlsc01hcmtlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5QjMy
Q0RBQTEzREY3RkE5MDBGMzREMTMgLyogUmVuZGVyZWRQb3NpdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFNDNBMDIzRDE3RUIzNzEzMDA0Q0REMjUgLyogUmVuZGVyRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQkwRkVGMjBEMDFCRDRBNjRGMDAxMjhFNUQgLyogUmVuZGVyU3R5bGVD
b25zdGFudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1QjdBNTQxMEY2NUQ3QTAwMzc2MzAy
IC8qIFJlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4RUE3M0Mz
MEExOTAwRTMwMEE4RUY1RiAvKiBSZW5kZXJGaWVsZHNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwNjZDNzczMDBBQjYwM0ZEMDAyMzhDQzQgLyogUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0zMDU2Niw2ICszMDU2Myw3IEBACiAJCQkJQUIyNDdBNkMwQUZE
NjM4MzAwM0ZBNUZEIC8qIFJlbmRlclNsaWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTk1
NUE4NjE2MEQxOTkwMDA4NTgwMjUgLyogUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkM4QzhGQUQwRERDRDMxQjAwQjU5MkY0IC8qIFJlbmRlclN0eWxlLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBGRUYyMEQwMUJENEE2NEYwMDEyOEU1RCAvKiBSZW5kZXJT
dHlsZUNvbnN0YW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjRFNTcxNzEzMTMyNzYyMDBD
Rjg1QUYgLyogUmVuZGVyU1ZHQWxsSW5PbmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThERjRB
RUMwOTgwQzQyQzAwNTI5ODFCIC8qIFJlbmRlclRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTZFRDg3OEM0MTQ3NDkzRjQwMDRDMzU5NyAvKiBSZW5kZXJUYWJsZUNhcHRpb24uY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0zMDg4MSw3ICszMDg3OSw2IEBACiAJCQkJMjREOTEyQjcxM0NBOUE2OTAw
RDIxOTE1IC8qIFNWR0FsdEdseXBoSXRlbUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QjIyMjc5NzYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuZ2xlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUIyMjI3OTc5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTJENTAzNjY4MUJDREREQzQwMEUyMEJCMyAvKiBHZXN0dXJl
RXZlbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzNjJDN0I5MTNBQzZGMUEwMDM0NEJFQiAv
KiBTVkdBbmltYXRlZEFuZ2xlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzMUEzMDg4MTNCOEY5
NzgwMDc3OTFFNCAvKiBTVkdBbmltYXRlZEJvb2xlYW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDNBNjI1RjkxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNw
cAppbmRleCBmYTJhMzA5ODk5MDQxYzUyNTI4ZmM3OTQ5N2M4MWVlODNkY2I2YThlLi5kM2ExYTcx
YTdjNDhmMzA1M2NmNTc5NDZlZTY4YmUyNDJhZTZkNDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTk1LDEzICs5NSwxMyBAQCB2b2lk
IEpTRE9NV2luZG93QmFzZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0RPTVdpbmRvd1NoZWxs
KiBzaGVsbCkKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKFwKICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5GdW5jdGlvbnMo
KS5yZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zKCkubmFtZSMjUHJpdmF0ZU5hbWUoKSwg
XAogICAgICAgICAgICAgbV9wcml2YXRlRnVuY3Rpb25zLnJlYWRhYmxlU3RyZWFtSW50ZXJuYWxz
KCkubV8jI25hbWUjI0Z1bmN0aW9uLmdldCgpICwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSAg
ICAgICAgV0VCQ09SRVJFQURBQkxFU1RSRUFNSU5URVJOQUxTX0ZPUkVBQ0hfQlVJTFRJTl9GVU5D
VElPTl9OQU1FKERFQ0xBUkVfR0xPQkFMX1NUQVRJQykKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNI
X1JFQURBQkxFU1RSRUFNSU5URVJOQUxTX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0dM
T0JBTF9TVEFUSUMpCiAjdW5kZWYgREVDTEFSRV9HTE9CQUxfU1RBVElDCiAjZGVmaW5lIERFQ0xB
UkVfR0xPQkFMX1NUQVRJQyhuYW1lKVwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKFwKICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1
aWx0aW5GdW5jdGlvbnMoKS5zdHJlYW1JbnRlcm5hbHNCdWlsdGlucygpLm5hbWUjI1ByaXZhdGVO
YW1lKCksIFwKICAgICAgICAgICAgIG1fcHJpdmF0ZUZ1bmN0aW9ucy5zdHJlYW1JbnRlcm5hbHMo
KS5tXyMjbmFtZSMjRnVuY3Rpb24uZ2V0KCkgLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAotICAg
ICAgICBXRUJDT1JFU1RSRUFNSU5URVJOQUxTX0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1F
KERFQ0xBUkVfR0xPQkFMX1NUQVRJQykKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNIX1NUUkVBTUlO
VEVSTkFMU19CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9HTE9CQUxfU1RBVElDKQogI3Vu
ZGVmIERFQ0xBUkVfR0xPQkFMX1NUQVRJQwogI2VuZGlmCiAgICAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5zIGIvU291cmNlL1dlYkNvcmUvZ2VuZXJh
dGUtanMtYnVpbHRpbnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxZGQ2NDJlN2Nh
MmY4OWE3OGUxZDFhNTAzZDhiOTc4MmI0MDQ0ODAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMK
KysrIC9kZXYvbnVsbApAQCAtMSwxODEgKzAsMCBAQAotIyEvdXNyL2Jpbi9weXRob24KLSMgQ29w
eXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0j
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotIyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSMgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
IyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotIyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0KLQotaW1wb3J0IGFyZ3BhcnNlCi1pbXBvcnQgZmlsZWNtcAotaW1wb3J0IG9zCi1p
bXBvcnQgc3VicHJvY2VzcwotCi1mcm9tIHN0cmluZyBpbXBvcnQgVGVtcGxhdGUKLQotCi1wYXJz
ZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCi1wYXJzZXIuYWRkX2FyZ3VtZW50KCctLW91
dHB1dF9kaXInLCBkZWZhdWx0PScnLCBoZWxwPSdvdXRwdXQgZGlyZWN0b3J5JykKLXBhcnNlci5h
ZGRfYXJndW1lbnQoJy0taW5wdXQnLCBoZWxwPSdwYXRoIHRvIGlucHV0IEpTIGZpbGUnKQotcGFy
c2VyLmFkZF9hcmd1bWVudCgnLS1nZW5lcmF0ZV9qc19idWlsdGluc19wYXRoJywgaGVscD0ncGF0
aCB0byBkaXJlY3RvcnkgY29udGFpbmluZyBKYXZhU2NyaXB0Q29yZVwncyBnZW5lcmF0ZS1qcy1i
dWlsdGlucycpCi0KLWFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCi1maWxlbmFtZSA9IG9zLnBh
dGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShhcmdzLmlucHV0KSlbMF0KLQotIyBnZW5lcmF0
ZSBKUyBidWlsdGlucwotbmFtZXNwYWNlID0gIldlYkNvcmUiCi1wcmVmaXggPSAiV0VCQ09SRSIg
KyBmaWxlbmFtZS51cHBlcigpCi1vdXRwdXQgPSBvcy5wYXRoLmpvaW4oYXJncy5vdXRwdXRfZGly
LCBmaWxlbmFtZSArICJCdWlsdGlucyIpCi1qc2NfZ2VuZXJhdGVfYnVpbHRpbl9zY3JpcHQgPSBv
cy5wYXRoLmpvaW4oYXJncy5nZW5lcmF0ZV9qc19idWlsdGluc19wYXRoLCAiZ2VuZXJhdGUtanMt
YnVpbHRpbnMiKQotCi1zdWJwcm9jZXNzLmNhbGwoWyJweXRob24iLCBqc2NfZ2VuZXJhdGVfYnVp
bHRpbl9zY3JpcHQsICItLW91dHB1dCIsIG91dHB1dCwgIi0tbmFtZXNwYWNlIiwgbmFtZXNwYWNl
LCAiLS1wcmVmaXgiLCBwcmVmaXgsIGFyZ3MuaW5wdXRdLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERP
VVQpCi0KLSMgZ2VuZXJhdGUgSlMgYnVpbHRpbnMgd3JhcHBlcgotb3V0cHV0X2Jhc2UgPSBvdXRw
dXQgKyAiV3JhcHBlciIKLQotYnVpbHRpbnNXcmFwcGVySGVhZGVyID0gb3BlbihvdXRwdXRfYmFz
ZSArICIuaC50bXAiLCAidyIpCi0KLWJ1aWx0aW5zV3JhcHBlckhlYWRlci53cml0ZShUZW1wbGF0
ZSgKLSIiIgotLyogR2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWpzLWJ1aWx0aW5zIGRvIG5vdCBoYW5k
IGVkaXQuICovCi0KLS8qCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGVzc2VyIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwot
ICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhl
IEZyZWUgU29mdHdhcmUKLSAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqLwotCi0jaWZuZGVm
ICR7RmlsZW5hbWV9QnVpbHRpbnNXcmFwcGVyX2gKLSNkZWZpbmUgJHtGaWxlbmFtZX1CdWlsdGlu
c1dyYXBwZXJfaAotCi0jaW5jbHVkZSAiJHtGaWxlbmFtZX1CdWlsdGlucy5oIgotI2luY2x1ZGUg
PGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg+Ci0jaW5jbHVkZSA8YnVpbHRp
bnMvQnVpbHRpblV0aWxzLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9JZGVudGlmaWVyLmg+Ci0jaW5j
bHVkZSA8cnVudGltZS9KU0Z1bmN0aW9uLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgJHtGaWxlbmFtZX1CdWlsdGluc1dyYXBwZXIgOiBwcml2YXRlIEpTQzo6V2Vha0hhbmRsZU93
bmVyIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCAke0ZpbGVuYW1lfUJ1aWx0aW5zV3JhcHBlcihK
U0M6OlZNKiB2bSkKLSAgICAgICAgOiBtX3ZtKCp2bSkKLSAgICAgICAgJHtQcmVmaXh9X0ZPUkVB
Q0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJWkVfQlVJTFRJTl9OQU1FUykKLSNkZWZp
bmUgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwg
bGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UoSlNDOjptYWtlU291cmNlKFN0cmluZ0ltcGw6OmNy
ZWF0ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpKSkKLSAgICAgICAgJHtQcmVmaXh9X0ZP
UkVBQ0hfQlVJTFRJTihJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCi0jdW5kZWYg
SU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCi0gICAgewotICAgIH0KLQotI2RlZmlu
ZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkg
XFwKLSAgICBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxl
KCk7IFxcCi0gICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSBjb25zdCB7
IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9Ci0gICAgJHtQcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJ
TihFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKLSN1bmRlZiBFWFBPU0VfQlVJTFRJTl9FWEVD
VVRBQkxFUwotCi0gICAgJHtQcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERF
Q0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKQotCi0gICAgdm9pZCBleHBvcnROYW1l
cygpOwotCi1wcml2YXRlOgotICAgIEpTQzo6Vk0mIG1fdm07Ci0KLSAgICAke1ByZWZpeH1fRk9S
RUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX05BTUVTKQotCi0jZGVm
aW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxl
bmd0aCkgXFwKLSAgICBKU0M6OlNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJjZTtcXAotICAgIEpT
Qzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0
YWJsZTsKLSAgICAke1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOKERFQ0xBUkVfQlVJTFRJTl9TT1VS
Q0VfTUVNQkVSUykKLSN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKLQotfTsK
LQotI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUs
IGxlbmd0aCkgXFwKLWlubGluZSBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiAke0Zp
bGVuYW1lfUJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFxcCi17XFwKLSAgICBp
ZiAoIW1fIyNuYW1lIyNFeGVjdXRhYmxlKVxcCi0gICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxl
ID0gSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6Y3JlYXRl
QnVpbHRpbkV4ZWN1dGFibGUobV92bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25OYW1lIyNQ
dWJsaWNOYW1lKCksIHNfIyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1l
IyNFeGVjdXRhYmxlKTtcXAotICAgIHJldHVybiBtXyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtc
XAotfQotJHtQcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTihERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxF
UykKLSN1bmRlZiBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUwotCi1pbmxpbmUgdm9pZCAke0Zp
bGVuYW1lfUJ1aWx0aW5zV3JhcHBlcjo6ZXhwb3J0TmFtZXMoKQotewotI2RlZmluZSBFWFBPUlRf
RlVOQ1RJT05fTkFNRShuYW1lKSBtX3ZtLnByb3BlcnR5TmFtZXMtPmFwcGVuZEV4dGVybmFsTmFt
ZShuYW1lIyNQdWJsaWNOYW1lKCksIG5hbWUjI1ByaXZhdGVOYW1lKCkpOwotICAgICR7UHJlZml4
fV9GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShFWFBPUlRfRlVOQ1RJT05fTkFNRSkKLSN1
bmRlZiBFWFBPUlRfRlVOQ1RJT05fTkFNRQotfQotCi1jbGFzcyAke0ZpbGVuYW1lfUJ1aWx0aW5G
dW5jdGlvbnMgewotcHVibGljOgotICAgIGV4cGxpY2l0ICR7RmlsZW5hbWV9QnVpbHRpbkZ1bmN0
aW9ucyhKU0M6OlZNJiB2bSkgOiBtX3ZtKHZtKSB7IH0KLQotICAgIHZvaWQgaW5pdChKU0M6OkpT
R2xvYmFsT2JqZWN0Jik7Ci0gICAgdm9pZCB2aXNpdChKU0M6OlNsb3RWaXNpdG9yJik7Ci0KLXB1
YmxpYzoKLSAgICBKU0M6OlZNJiBtX3ZtOwotCi0jZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VS
Q0VfTUVNQkVSUyhmdW5jdGlvbk5hbWUpIFxcCi0gICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpK
U0Z1bmN0aW9uPiBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbjsKLSAgICAke1ByZWZpeH1fRk9S
RUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJT
KQotI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUwotfTsKLQotaW5saW5lIHZv
aWQgJHtGaWxlbmFtZX1CdWlsdGluRnVuY3Rpb25zOjppbml0KEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKLXsKLSNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9OKGNvZGVOYW1lLCBmdW5j
dGlvbk5hbWUsIGxlbmd0aClcXAotICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldCht
X3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlv
bihtX3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7Ci0gICAg
JHtQcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTihFWFBPUlRfRlVOQ1RJT04pCi0jdW5kZWYgRVhQT1JU
X0ZVTkNUSU9OCi19Ci0KLWlubGluZSB2b2lkICR7RmlsZW5hbWV9QnVpbHRpbkZ1bmN0aW9uczo6
dmlzaXQoSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKLXsKLSNkZWZpbmUgVklTSVRfRlVOQ1RJ
T04obmFtZSkgdmlzaXRvci5hcHBlbmQoJm1fIyNuYW1lIyNGdW5jdGlvbik7Ci0gICAgJHtQcmVm
aXh9X0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKFZJU0lUX0ZVTkNUSU9OKQotI3VuZGVm
IFZJU0lUX0ZVTkNUSU9OCi19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
ICR7RmlsZW5hbWV9QnVpbHRpbnNXcmFwcGVyX2gKLSIiIikuc3Vic3RpdHV0ZShkaWN0KEZpbGVu
YW1lPWZpbGVuYW1lLCBQcmVmaXg9cHJlZml4KSkpCi0KLWJ1aWx0aW5zV3JhcHBlckhlYWRlci5j
bG9zZSgpCi0KLWlmIChub3Qgb3MucGF0aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmgiKSkgb3Ig
KG5vdCBmaWxlY21wLmNtcChvdXRwdXRfYmFzZSArICIuaC50bXAiLCBvdXRwdXRfYmFzZSArICIu
aCIsIHNoYWxsb3c9RmFsc2UpKToKLSAgICBpZiAob3MucGF0aC5leGlzdHMob3V0cHV0X2Jhc2Ug
KyAiLmgiKSk6Ci0gICAgICAgIG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIuaCIpCi0gICAgb3Mu
cmVuYW1lKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsIG91dHB1dF9iYXNlICsgIi5oIikKLWVsc2U6
Ci0gICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5oLnRtcCIpCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTYwMTJmYjdmYzJkNTAyMmY0NTc3
ZjMzZDdmNDQwNThmZWQ2MzEzMi4uZTQzODMwYWY4M2YzNGRjOTE0M2Y0NDkwODk1MGFlNzgzY2Iz
M2VmMyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMwIEBACisyMDE1LTEwLTIwICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29t
PgorCisgICAgICAgIFJlc3RydWN0dXJlIGdlbmVyYXRlLWpzLWJpbmRpbmdzIHNjcmlwdCB0byBi
ZSBtb2R1bGFyIGFuZCB0ZXN0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5OTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGEgc3R1YiBzaGVsbCBzY3JpcHQgYW5kIGJhc2ljIHdlYmtpdHB5
IHN1cHBvcnQgZm9yIHJ1bm5pbmcgYnVpbHRpbnMKKyAgICAgICAgZ2VuZXJhdG9yIHRlc3RzLgor
CisgICAgICAgICogU2NyaXB0cy9ydW4tYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzOiBBZGRlZC4K
KyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29kZWdlbi9fX2lu
aXRfXy5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb2RlZ2VuL21haW4u
cHk6IEFkZGVkLgorCisgICAgICAgICAgICBUaGUgb25seSBpbnRlcmVzdGluZyBkaWZmZXJlbmNl
IGhlcmUgZnJvbSB0aGUgaW5zcGVjdG9yIHByb3RvY29sCisgICAgICAgICAgICBnZW5lcmF0b3Ig
ZXF1aXZhbGVudCBpcyB0aGF0IHRoaXMgaW1wbGVtZW50YXRpb24gZGVjb2RlcyB0aGUgdGFyZ2V0
CisgICAgICAgICAgICBmcmFtZXdvcmsgYW5kIG91dHB1dCBtb2RlIChjb21iaW5lZCBvciBzZXBh
cmF0ZSkgZnJvbSB0aGUgdGVzdCdzIGZpbGUgbmFtZS4KKworICAgICAgICAoQnVpbHRpbnNHZW5l
cmF0b3JUZXN0cyk6CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvclRlc3RzLl9faW5pdF9fKToK
KyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHMuZ2VuZXJhdGVfZnJvbV9qc19idWlsdGlu
cyk6CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvclRlc3RzLndyaXRlX2Vycm9yX2ZpbGUpOgor
ICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3JUZXN0cy5kZXRlY3RfY2hhbmdlcyk6CisgICAgICAg
IChCdWlsdGluc0dlbmVyYXRvclRlc3RzLnJ1bl90ZXN0cyk6CisgICAgICAgIChCdWlsdGluc0dl
bmVyYXRvclRlc3RzLm1haW4pOgorCiAyMDE1LTEwLTIwICBBbGV4ZXkgUHJvc2t1cnlha292ICA8
YXBAYXBwbGUuY29tPgogCiAgICAgICAgIE1hYyBEZWJ1ZyBFV1MgbmV2ZXIgZmluaXNoZXMgd2hl
biB0aGVyZSBhcmUgZmFpbHVyZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWJ1aWx0
aW5zLWdlbmVyYXRvci10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWJ1aWx0aW5zLWdlbmVyYXRv
ci10ZXN0cwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMzk4Yzc4Y2ExMGVjNTk3NjI2NjEyYzg1NTUzYWJkMWE0ZTZm
YmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tYnVpbHRpbnMtZ2VuZXJh
dG9yLXRlc3RzCkBAIC0wLDAgKzEsNDIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
IyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHN5cworZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtIGltcG9ydCBleGVjdXRpdmUKKworZGVmIG1haW4oYXJndik6CisgICAg
IiIiUnVucyB0aGUgSlMgYnVpbHRpbnMgY29kZSBnZW5lcmF0b3Igb24gdGVzdCBpbnB1dCBmaWxl
cyBhbmQgY29tcGFyZXMKKyAgICB0aGUgcmVzdWx0cyB3aXRoIHJlZmVyZW5jZSBmaWxlcy4KKwor
ICAgIE9wdGlvbnM6CisgICAgICAgLS1yZXNldC1yZXN1bHRzOiBPdmVyd3JpdGVzIHRoZSByZWZl
cmVuY2UgZmlsZXMgd2l0aCB0aGUgZ2VuZXJhdGVkIHJlc3VsdHMuCisKKyAgICAiIiIKKyAgICBy
ZXNldF9yZXN1bHRzID0gIi0tcmVzZXQtcmVzdWx0cyIgaW4gYXJndgorCisgICAgZnJvbSB3ZWJr
aXRweS5jb2RlZ2VuLm1haW4gaW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHMKKyAgICByZXR1
cm4gQnVpbHRpbnNHZW5lcmF0b3JUZXN0cyhyZXNldF9yZXN1bHRzLCBleGVjdXRpdmUuRXhlY3V0
aXZlKCkpLm1haW4oKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHN5cy5leGl0
KG1haW4oc3lzLmFyZ3YpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb2Rl
Z2VuL19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb2RlZ2VuL19faW5pdF9f
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmVmNjViZWU1YmI3N2U5NmViYzdjZDljNDc2NDA2OTBmYmRhOGFjMTkK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvZGVnZW4vX19pbml0
X18ucHkKQEAgLTAsMCArMSBAQAorIyBSZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlz
IGRpcmVjdG9yeSBmb3IgbW9kdWxlIGZpbGVzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvZGVnZW4vbWFpbi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29kZWdlbi9t
YWluLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjAwMzk2ZGI5YTM4YmUwZjA3YmUxODYzYjg4YWVkNDFlZGY5N2Q5
NjkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvZGVnZW4vbWFp
bi5weQpAQCAtMCwwICsxLDE0NCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUworIyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQKKyMgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBCisjIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgb3MKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQg
c2h1dGlsCitpbXBvcnQgc3lzCitpbXBvcnQgdGVtcGZpbGUKK2Zyb20gd2Via2l0cHkuY29tbW9u
LmNoZWNrb3V0LnNjbS5kZXRlY3Rpb24gaW1wb3J0IGRldGVjdF9zY21fc3lzdGVtCitmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgorCisKK2Ns
YXNzIEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHM6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVz
ZXRfcmVzdWx0cywgZXhlY3V0aXZlKToKKyAgICAgICAgc2VsZi5yZXNldF9yZXN1bHRzID0gcmVz
ZXRfcmVzdWx0cworICAgICAgICBzZWxmLmV4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZQorCisgICAgZGVm
IGdlbmVyYXRlX2Zyb21fanNfYnVpbHRpbnMoc2VsZiwgYnVpbHRpbnNfZmlsZSwgb3V0cHV0X2Rp
cmVjdG9yeSwgZnJhbWV3b3JrX25hbWU9IiIsIGNvbWJpbmVkX291dHB1dHM9RmFsc2UpOgorICAg
ICAgICBjbWQgPSBbJ3B5dGhvbicsCisgICAgICAgICAgICAgICAnSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weScsCisgICAgICAgICAgICAgICAnLS1vdXRwdXQt
ZGlyZWN0b3J5Jywgb3V0cHV0X2RpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICctLWZvcmNlJywK
KyAgICAgICAgICAgICAgICctLWZyYW1ld29yaycsIGZyYW1ld29ya19uYW1lLAorICAgICAgICAg
ICAgICAgJy0tdGVzdCddCisKKyAgICAgICAgaWYgY29tYmluZWRfb3V0cHV0czoKKyAgICAgICAg
ICAgIGNtZC5hcHBlbmQoJy0tY29tYmluZWQnKQorCisgICAgICAgIGNtZC5hcHBlbmQoYnVpbHRp
bnNfZmlsZSkKKworICAgICAgICBleGl0X2NvZGUgPSAwCisgICAgICAgIHRyeToKKyAgICAgICAg
ICAgIHN0ZGVycl9vdXRwdXQgPSBzZWxmLmV4ZWN1dGl2ZS5ydW5fY29tbWFuZChjbWQpCisgICAg
ICAgICAgICBpZiBzdGRlcnJfb3V0cHV0OgorICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfZXJy
b3JfZmlsZShidWlsdGluc19maWxlLCBvdXRwdXRfZGlyZWN0b3J5LCBzdGRlcnJfb3V0cHV0KQor
ICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IsIGU6CisgICAgICAgICAgICBwcmludCBlLm91dHB1
dAorICAgICAgICAgICAgZXhpdF9jb2RlID0gZS5leGl0X2NvZGUKKyAgICAgICAgcmV0dXJuIGV4
aXRfY29kZQorCisgICAgZGVmIHdyaXRlX2Vycm9yX2ZpbGUoc2VsZiwgaW5wdXRfZmlsZXBhdGgs
IG91dHB1dF9kaXJlY3RvcnksIGVycm9yX291dHB1dCk6CisgICAgICAgIG91dHB1dF9maWxlcGF0
aCA9IG9zLnBhdGguam9pbihvdXRwdXRfZGlyZWN0b3J5LCBvcy5wYXRoLmJhc2VuYW1lKGlucHV0
X2ZpbGVwYXRoKSArICctZXJyb3InKQorCisgICAgICAgIHdpdGggb3BlbihvdXRwdXRfZmlsZXBh
dGgsICJ3IikgYXMgb3V0cHV0X2ZpbGU6CisgICAgICAgICAgICBvdXRwdXRfZmlsZS53cml0ZShl
cnJvcl9vdXRwdXQpCisKKyAgICBkZWYgZGV0ZWN0X2NoYW5nZXMoc2VsZiwgd29ya19kaXJlY3Rv
cnksIHJlZmVyZW5jZV9kaXJlY3RvcnkpOgorICAgICAgICBjaGFuZ2VzX2ZvdW5kID0gRmFsc2UK
KyAgICAgICAgZm9yIG91dHB1dF9maWxlIGluIG9zLmxpc3RkaXIod29ya19kaXJlY3RvcnkpOgor
ICAgICAgICAgICAgY21kID0gWydkaWZmJywKKyAgICAgICAgICAgICAgICAgICAnLXUnLAorICAg
ICAgICAgICAgICAgICAgICctTicsCisgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHJl
ZmVyZW5jZV9kaXJlY3RvcnksIG91dHB1dF9maWxlKSwKKyAgICAgICAgICAgICAgICAgICBvcy5w
YXRoLmpvaW4od29ya19kaXJlY3RvcnksIG91dHB1dF9maWxlKV0KKworICAgICAgICAgICAgZXhp
dF9jb2RlID0gMAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG91dHB1dCA9IHNl
bGYuZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGNtZCkKKyAgICAgICAgICAgIGV4Y2VwdCBTY3JpcHRF
cnJvciwgZToKKyAgICAgICAgICAgICAgICBvdXRwdXQgPSBlLm91dHB1dAorICAgICAgICAgICAg
ICAgIGV4aXRfY29kZSA9IGUuZXhpdF9jb2RlCisKKyAgICAgICAgICAgIGlmIGV4aXRfY29kZSBv
ciBvdXRwdXQ6CisgICAgICAgICAgICAgICAgcHJpbnQgJ0ZBSUw6ICVzJyAlIG91dHB1dF9maWxl
CisgICAgICAgICAgICAgICAgcHJpbnQgb3V0cHV0CisgICAgICAgICAgICAgICAgY2hhbmdlc19m
b3VuZCA9IFRydWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcHJpbnQgJ1BB
U1M6ICVzJyAlIG91dHB1dF9maWxlCisgICAgICAgIHJldHVybiBjaGFuZ2VzX2ZvdW5kCisKKyAg
ICBkZWYgcnVuX3Rlc3RzKHNlbGYsIGlucHV0X2RpcmVjdG9yeSwgcmVmZXJlbmNlX2RpcmVjdG9y
eSk6CisgICAgICAgIHdvcmtfZGlyZWN0b3J5ID0gcmVmZXJlbmNlX2RpcmVjdG9yeQorCisgICAg
ICAgIHBhc3NlZCA9IFRydWUKKyAgICAgICAgZm9yIGlucHV0X2ZpbGUgaW4gb3MubGlzdGRpcihp
bnB1dF9kaXJlY3RvcnkpOgorICAgICAgICAgICAgKHRlc3RfbmFtZSwgZXh0ZW5zaW9uKSA9IG9z
LnBhdGguc3BsaXRleHQoaW5wdXRfZmlsZSkKKyAgICAgICAgICAgIGlmIGV4dGVuc2lvbiAhPSAn
LmpzJzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBHZW5lcmF0ZSBv
dXRwdXQgaW50byB0aGUgd29yayBkaXJlY3RvcnkgKGVpdGhlciB0aGUgZ2l2ZW4gb25lIG9yIGEK
KyAgICAgICAgICAgICMgdGVtcCBvbmUgaWYgbm90IHJlc2V0X3Jlc3VsdHMgaXMgcGVyZm9ybWVk
KQorICAgICAgICAgICAgaWYgbm90IHNlbGYucmVzZXRfcmVzdWx0czoKKyAgICAgICAgICAgICAg
ICB3b3JrX2RpcmVjdG9yeSA9IHRlbXBmaWxlLm1rZHRlbXAoKQorCisgICAgICAgICAgICAoZnJh
bWV3b3JrX25hbWUsIHRlc3RfY2FzZSwgb3V0cHV0X21vZGUpID0gdGVzdF9uYW1lLnNwbGl0KCct
JykKKyAgICAgICAgICAgIGlmIG5vdCBmcmFtZXdvcmtfbmFtZSBvciBub3Qgb3V0cHV0X21vZGUg
b3Igbm90IHRlc3RfY2FzZToKKyAgICAgICAgICAgICAgICBwcmludCAiSW52YWxpZCB0ZXN0IGNh
c2UgbmFtZTogc2hvdWxkIGJlIEZyYW1ld29yay1UZXN0Q2FzZU5hbWUtT3V0cHV0TW9kZS5qcyIK
KyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBjb21iaW5lZF9vdXRwdXRz
ID0gb3V0cHV0X21vZGUgPT0gIkNvbWJpbmVkIgorICAgICAgICAgICAgaWYgc2VsZi5nZW5lcmF0
ZV9mcm9tX2pzX2J1aWx0aW5zKG9zLnBhdGguam9pbihpbnB1dF9kaXJlY3RvcnksIGlucHV0X2Zp
bGUpLCB3b3JrX2RpcmVjdG9yeSwgZnJhbWV3b3JrX25hbWU9ZnJhbWV3b3JrX25hbWUsIGNvbWJp
bmVkX291dHB1dHM9Y29tYmluZWRfb3V0cHV0cyk6CisgICAgICAgICAgICAgICAgcGFzc2VkID0g
RmFsc2UKKworICAgICAgICAgICAgaWYgc2VsZi5yZXNldF9yZXN1bHRzOgorICAgICAgICAgICAg
ICAgIHByaW50ICJSZXNldCByZXN1bHRzIGZvciB0ZXN0OiAlcyIgJSAoaW5wdXRfZmlsZSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAjIERldGVjdCBjaGFuZ2VzCisg
ICAgICAgICAgICBpZiBzZWxmLmRldGVjdF9jaGFuZ2VzKHdvcmtfZGlyZWN0b3J5LCByZWZlcmVu
Y2VfZGlyZWN0b3J5KToKKyAgICAgICAgICAgICAgICBwYXNzZWQgPSBGYWxzZQorICAgICAgICAg
ICAgc2h1dGlsLnJtdHJlZSh3b3JrX2RpcmVjdG9yeSkKKworICAgICAgICByZXR1cm4gcGFzc2Vk
CisKKyAgICBkZWYgbWFpbihzZWxmKToKKyAgICAgICAgY3VycmVudF9zY20gPSBkZXRlY3Rfc2Nt
X3N5c3RlbShvcy5jdXJkaXIpCisgICAgICAgIG9zLmNoZGlyKG9zLnBhdGguam9pbihjdXJyZW50
X3NjbS5jaGVja291dF9yb290LCAnU291cmNlJykpCisKKyAgICAgICAgYWxsX3Rlc3RzX3Bhc3Nl
ZCA9IFRydWUKKworICAgICAgICBpbnB1dF9kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oJ0phdmFT
Y3JpcHRDb3JlJywgJ1NjcmlwdHMnLCAndGVzdHMnLCAnYnVpbHRpbnMnKQorICAgICAgICByZWZl
cmVuY2VfZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKCdKYXZhU2NyaXB0Q29yZScsICdTY3JpcHRz
JywgJ3Rlc3RzJywgJ2J1aWx0aW5zJywgJ2V4cGVjdGVkJykKKyAgICAgICAgaWYgbm90IHNlbGYu
cnVuX3Rlc3RzKGlucHV0X2RpcmVjdG9yeSwgcmVmZXJlbmNlX2RpcmVjdG9yeSk6CisgICAgICAg
ICAgICBhbGxfdGVzdHNfcGFzc2VkID0gRmFsc2UKKworICAgICAgICBwcmludCAnJworICAgICAg
ICBpZiBhbGxfdGVzdHNfcGFzc2VkOgorICAgICAgICAgICAgcHJpbnQgJ0FsbCB0ZXN0cyBQQVNT
IScKKyAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcmlu
dCAnU29tZSB0ZXN0cyBGQUlMISAoVG8gdXBkYXRlIHRoZSByZWZlcmVuY2UgZmlsZXMsIGV4ZWN1
dGUgInJ1bi1idWlsdGlucy1nZW5lcmF0b3ItdGVzdHMgLS1yZXNldC1yZXN1bHRzIiknCisgICAg
ICAgICAgICByZXR1cm4gLTEK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263757</attachid>
            <date>2015-10-21 16:14:01 -0700</date>
            <delta_ts>2015-10-21 21:30:00 -0700</delta_ts>
            <desc>Proposed Fix (re-re-rebased)</desc>
            <filename>bug-149929-20151021161317.patch</filename>
            <type>text/plain</type>
            <size>333832</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
Mzg4NDYxYzk1ZDFjMGZkNDFkYzkwZDcwYTllMTAwMmEyZThmZTc2Li5mZmE3M2MyM2JhNzg4MTll
NDJlNDA3MGY4OGY3YmJjZjM0ODNiODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOTkgQEAKKzIwMTUtMTAtMjEgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmVzdHJ1Y3R1cmUgZ2VuZXJhdGUtanMtYmluZGluZ3Mgc2NyaXB0IHRvIGJlIG1v
ZHVsYXIgYW5kIHRlc3RhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDk5MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGlzIGEgbmV3IGNvZGUgZ2VuZXJhdG9yLCBiYXNlZCBvbiB0aGUgcmVw
bGF5IGlucHV0cyBjb2RlIGdlbmVyYXRvciBhbmQKKyAgICAgICAgdGhlIGluc3BlY3RvciBwcm90
b2NvbCBjb2RlIGdlbmVyYXRvciwgd2hpY2ggcHJvZHVjZXMgdmFyaW91cyBmaWxlcyBmb3IgSlMK
KyAgICAgICAgYnVpbHRpbnMuCisKKyAgICAgICAgUmVsYXRpdmUgdG8gdGhlIGdlbmVyYXRvciBp
dCByZXBsYWNlcywgdGhpcyBvbmUgY29uc29saWRhdGVzIHR3byBzY3JpcHRzIGluCisgICAgICAg
IEphdmFTY3JpcHRDb3JlIGFuZCBXZWJDb3JlIGludG8gYSBzaW5nbGUgc2NyaXB0IHdpdGggbXVs
dGlwbGUgZmlsZXMuIFBhcnNlZAorICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnVpbHRp
bnMgZmlsZSBpcyBzdG9yZWQgaW4gYmFja2VuZC1pbmRlcGVuZGVudCBtb2RlbAorICAgICAgICBv
YmplY3RzLiBFYWNoIG91dHB1dCBmaWxlIGhhcyBpdHMgb3duIGNvZGUgZ2VuZXJhdG9yIHRoYXQg
dXNlcyB0aGUgbW9kZWwgdG8KKyAgICAgICAgcHJvZHVjZSByZXN1bHRpbmcgY29kZS4gR2VuZXJh
dG9ycyBhcmUgYWRkaXRpb25hbGx5IHBhcmFtZXRlcml6ZWQgYnkgdGhlIHRhcmdldAorICAgICAg
ICBmcmFtZXdvcmsgKHRvIGNob29zZSBjb3JyZWN0IG1hY3JvcyBhbmQgaW5jbHVkZXMpIGFuZCBv
dXRwdXQgbW9kZSAob25lCisgICAgICAgIGhlYWRlci9pbXBsZW1lbnRhdGlvbiBmaWxlIHBlciBi
dWlsdGluIG9yIHBlciBmcmFtZXdvcmspLgorCisgICAgICAgIEl0IGluY2x1ZGVzIGEgZmV3IHNp
bXBsZSB0ZXN0cyBvZiB0aGUgZ2VuZXJhdG9yJ3MgZnVuY3Rpb25hbGl0eS4gVGhlc2UgcmVzdWx0
LQorICAgICAgICBiYXNlZCB0ZXN0cyB3aWxsIGJlY29tZSBpbmNyZWFzaW5nbHkgbW9yZSBpbXBv
cnRhbnQgYXMgd2Ugc3RhcnQgdG8gYWRkIHN1cHBvcnQKKyAgICAgICAgZm9yIGJ1aWx0aW5zIGFu
bm90YXRpb24gc3VjaCBhcyBAb3B0aW9uYWwsIEBpbnRlcm5hbCwgZXRjLiB0byB0aGUgY29kZSBn
ZW5lcmF0b3IuCisKKyAgICAgICAgU29tZSBvZiB0aGVzZSBjb21wbGV4aXRpZXMsIHN1Y2ggYXMg
aGF2aW5nIHR3byBvdXRwdXQgbW9kZXMsIHdpbGwgYmUgcmVtb3ZlZCBpbgorICAgICAgICBzdWJz
ZXF1ZW50IHBhdGNoZXMuIFRoaXMgcGF0Y2ggaXMgaW50ZW5kZWQgdG8gZXhhY3RseSByZXBsYWNl
IHRoZSBleGlzdGluZworICAgICAgICBmdW5jdGlvbmFsaXR5IHdpdGggYSB1bmlmaWVkIHNjcmlw
dCB0aGF0IG1ha2VzIGFkZGl0aW9uYWwgY2xlYW51cHMgc3RyYWlnaHRmb3J3YXJkLgorCisgICAg
ICAgIEFkZGl0aW9uYWwgY2xlYW51cCBhbmQgY29uc29saWRhdGlvbiBiZXR3ZWVuIGluc3BlY3Rv
ciBjb2RlIGdlbmVyYXRvciBzY3JpcHRzCisgICAgICAgIGFuZCB0aGlzIHNjcmlwdCB3aWxsIGJl
IHB1cnN1ZWQgaW4gZm9sbG93dXAgcGF0Y2hlcy4KKworICAgICAgICBOZXcgdGVzdHM6CisKKyAg
ICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21p
c2UtQ29tYmluZWQuanMKKyAgICAgICAgU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0
Q29yZS1CdWlsdGluLlByb21pc2UtU2VwYXJhdGUuanMKKyAgICAgICAgU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5qcworICAg
ICAgICBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90
eXBlLVNlcGFyYXRlLmpzCisgICAgICAgIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlw
dENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpzCisgICAgICAgIFNjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFyYXRlLmpz
CisgICAgICAgIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1T
ZXBhcmF0ZS5qcworICAgICAgICBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRl
ZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcworICAgICAgICBTY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcworICAgICAgICBTY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcworCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKworICAgICAgICAgICAgQ29weSB0aGUgc2NyaXB0cyB0
aGF0IGFyZSB1c2VkIGJ5IG90aGVyIHRhcmdldHMgdG8gYSBzdGFnaW5nIGRpcmVjdG9yeSBpbnNp
ZGUKKyAgICAgICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy4KKyAgICAgICAgICAgIERlZmluZSBKYXZhU2NyaXB0Q29y
ZV9TQ1JJUFRTX0RJUiB0byBwb2ludCBoZXJlIHNvIHRoYXQgdGhlIGFkZF9jdXN0b21fY29tbWFu
ZAorICAgICAgICAgICAgYW5kIHNoYXJlZCBmaWxlIGxpc3RzIGFyZSBpZGVudGljYWwgYmV0d2Vl
biBKYXZhU2NyaXB0Q29yZSBhbmQgV2ViQ29yZS4gVGhlIHN0YWdlZAorICAgICAgICAgICAgc2Ny
aXB0cyBhcmUgYSBkZXBlbmRlbmN5IG9mIHRoZSBtYWluIEphdmFTY3JpcHRDb3JlIHRhcmdldCBz
byB0aGF0IHRoZXkgYXJlCisgICAgICAgICAgICBhbHdheXMgc3RhZ2VkLCBldmVuIGlmIEphdmFT
Y3JpcHRDb3JlIGl0c2VsZiBkb2VzIG5vdCB1c2UgYSBwYXJ0aWN1bGFyIHNjcmlwdC4KKworICAg
ICAgICAgICAgVGhlIG91dHB1dCBmaWxlcyBhZGRpdGlvbmFsbHkgZGVwZW5kIG9uIGFsbCBidWls
dGluIGdlbmVyYXRvciBzY3JpcHQgZmlsZXMKKyAgICAgICAgICAgIGFuZCBpbnB1dCBmaWxlcyB0
aGF0IGFyZSBjb21iaW5lZCBpbnRvIHRoZSBzaW5nbGUgaGVhZGVyL2ltcGxlbWVudGF0aW9uIGZp
bGUuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorCisgICAgICAgICAgICBEZWZp
bmUgSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIgZXhwbGljaXRseSBzbyB0aGUgcnVsZSBmb3Ig
Y29kZSBnZW5lcmF0aW9uIGFuZAorICAgICAgICAgICAgc2hhcmVkIGZpbGUgbGlzdHMgYXJlIGlk
ZW50aWNhbCBiZXR3ZWVuIEphdmFTY3JpcHRDb3JlIGFuZCBXZWJDb3JlLgorCisgICAgICAgICAg
ICBUaGUgb3V0cHV0IGZpbGVzIGFkZGl0aW9uYWxseSBkZXBlbmQgb24gYWxsIGJ1aWx0aW4gZ2Vu
ZXJhdG9yIHNjcmlwdCBmaWxlcworICAgICAgICAgICAgYW5kIGlucHV0IGZpbGVzIHRoYXQgYXJl
IGNvbWJpbmVkIGludG8gdGhlIHNpbmdsZSBoZWFkZXIvaW1wbGVtZW50YXRpb24gZmlsZS4KKwor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAg
ICAgICAgICAgIE1hcmsgdGhlIG5ldyBidWlsdGlucyBnZW5lcmF0b3IgZmlsZXMgYXMgcHJpdmF0
ZSBoZWFkZXJzIHNvIHdlIGNhbiB1c2UgdGhlbSBmcm9tCisgICAgICAgICAgICBXZWJDb3JlLgor
CisgICAgICAgICogU2NyaXB0cy9VcGRhdGVDb250ZW50cy5weTogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9VcGRhdGVDb250ZW50cy5weS4KKyAgICAgICAgKiBTY3JpcHRzL2J1
aWx0aW5zL19faW5pdF9fLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1
aWx0aW5zLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dl
bmVyYXRvci5weTogQWRkZWQuIFRoaXMgZmlsZSBjb250YWlucyB0aGUgYmFzZSBnZW5lcmF0b3Iu
CisgICAgICAgIChXS19sY2ZpcnN0KToKKyAgICAgICAgKFdLX3VjZmlyc3QpOgorICAgICAgICAo
QnVpbHRpbnNHZW5lcmF0b3IpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3IuX19pbml0X18p
OgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3IubW9kZWwpOgorICAgICAgICAoQnVpbHRpbnNH
ZW5lcmF0b3IuZ2VuZXJhdGVfbGljZW5zZSk6CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvci5n
ZW5lcmF0ZV9pbmNsdWRlc19mcm9tX2VudHJpZXMpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0
b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yLm91dHB1dF9m
aWxlbmFtZSk6CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvckZ1bmN0
aW9uKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rpb24u
dG9DYW1lbCk6CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvci5nZW5lcmF0ZV9lbWJlZGRlZF9j
b2RlX3N0cmluZ19zZWN0aW9uX2Zvcl9mdW5jdGlvbik6CisgICAgICAgICogU2NyaXB0cy9idWls
dGlucy9idWlsdGluc19tb2RlbC5weTogQWRkZWQuIFRoaXMgZmlsZSBjb250YWlucyBidWlsdGlu
cyBtb2RlbCBvYmplY3RzLgorICAgICAgICAoUGFyc2VFeGNlcHRpb24pOgorICAgICAgICAoRnJh
bWV3b3JrKToKKyAgICAgICAgKEZyYW1ld29yay5fX2luaXRfXyk6CisgICAgICAgIChGcmFtZXdv
cmsuc2V0dGluZyk6CisgICAgICAgIChGcmFtZXdvcmsuZnJvbVN0cmluZyk6CisgICAgICAgIChG
cmFtZXdvcmtzKToKKyAgICAgICAgKEJ1aWx0aW5PYmplY3QpOgorICAgICAgICAoQnVpbHRpbk9i
amVjdC5fX2luaXRfXyk6CisgICAgICAgIChCdWlsdGluRnVuY3Rpb24pOgorICAgICAgICAoQnVp
bHRpbkZ1bmN0aW9uLl9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0aW5GdW5jdGlvbi5mcm9tU3Ry
aW5nKToKKyAgICAgICAgKEJ1aWx0aW5GdW5jdGlvbi5fX3N0cl9fKToKKyAgICAgICAgKEJ1aWx0
aW5zQ29sbGVjdGlvbik6CisgICAgICAgIChCdWlsdGluc0NvbGxlY3Rpb24uX19pbml0X18pOgor
ICAgICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLnBhcnNlX2J1aWx0aW5zX2ZpbGUpOgorICAgICAg
ICAoQnVpbHRpbnNDb2xsZWN0aW9uLmNvcHlyaWdodHMpOgorICAgICAgICAoQnVpbHRpbnNDb2xs
ZWN0aW9uLmFsbF9mdW5jdGlvbnMpOgorICAgICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLl9wYXJz
ZV9jb3B5cmlnaHRfbGluZXMpOgorICAgICAgICAoQnVpbHRpbnNDb2xsZWN0aW9uLl9wYXJzZV9m
dW5jdGlvbnMpOgorICAgICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVz
LnB5OiBBZGRlZC4KKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVzKToKKyAgICAg
ICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5w
eTogQWRkZWQuCisgICAgICAgIChCdWlsdGluc0NvbWJpbmVkSGVhZGVyR2VuZXJhdG9yKToKKyAg
ICAgICAgKEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJHZW5lcmF0b3IuX19pbml0X18pOgorICAgICAg
ICAoQnVpbHRpbnNDb21iaW5lZEhlYWRlckdlbmVyYXRvci5vdXRwdXRfZmlsZW5hbWUpOgorICAg
ICAgICAoQnVpbHRpbnNDb21iaW5lZEhlYWRlckdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgor
ICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEhlYWRlckdlbmVyYXRvci5nZW5lcmF0ZV9mb3J3YXJk
X2RlY2xhcmF0aW9ucyk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAo
Vk0pOgorICAgICAgICAoQ29uc3RydWN0QWJpbGl0eSk6CisgICAgICAgIChnZW5lcmF0ZV9zZWN0
aW9uX2Zvcl9vYmplY3QpOgorICAgICAgICAoZ2VuZXJhdGVfZXh0ZXJuc19mb3Jfb2JqZWN0KToK
KyAgICAgICAgKGdlbmVyYXRlX21hY3Jvc19mb3Jfb2JqZWN0KToKKyAgICAgICAgKGdlbmVyYXRl
X2RlZmluZXNfZm9yX29iamVjdCk6CisgICAgICAgIChnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2Rl
X3RhYmxlX21hY3JvKToKKyAgICAgICAgKGdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfbmFtZV9t
YWNybyk6CisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21i
aW5lZF9pbXBsZW1lbnRhdGlvbi5weTogQWRkZWQuCisgICAgICAgIChCdWlsdGluc0NvbWJpbmVk
SW1wbGVtZW50YXRpb25HZW5lcmF0b3IpOgorICAgICAgICAoQnVpbHRpbnNDb21iaW5lZEltcGxl
bWVudGF0aW9uR2VuZXJhdG9yLl9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0aW5zQ29tYmluZWRJ
bXBsZW1lbnRhdGlvbkdlbmVyYXRvci5vdXRwdXRfZmlsZW5hbWUpOgorICAgICAgICAoQnVpbHRp
bnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAg
ICAgIChCdWlsdGluc0NvbWJpbmVkSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVfaGVh
ZGVyX2luY2x1ZGVzKToKKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVy
YXRlX3NlcGFyYXRlX2hlYWRlci5weTogQWRkZWQuCisgICAgICAgIChCdWlsdGluc1NlcGFyYXRl
SGVhZGVyR2VuZXJhdG9yKToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0
b3IuX19pbml0X18pOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvci5v
dXRwdXRfZmlsZW5hbWUpOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRv
ci5tYWNyb19wcmVmaXgpOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRv
ci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVy
YXRvci5nZW5lcmF0ZV9mb3J3YXJkX2RlY2xhcmF0aW9ucyk6CisgICAgICAgIChGdW5jdGlvbkV4
ZWN1dGFibGUpOgorICAgICAgICAoZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKToKKyAgICAgICAg
KGdlbmVyYXRlX3NlY3Rpb25fZm9yX29iamVjdCk6CisgICAgICAgIChnZW5lcmF0ZV9leHRlcm5z
X2Zvcl9vYmplY3QpOgorICAgICAgICAoZ2VuZXJhdGVfbWFjcm9zX2Zvcl9vYmplY3QpOgorICAg
ICAgICAoZ2VuZXJhdGVfZGVmaW5lc19mb3Jfb2JqZWN0KToKKyAgICAgICAgKGdlbmVyYXRlX3Nl
Y3Rpb25fZm9yX2NvZGVfdGFibGVfbWFjcm8pOgorICAgICAgICAoZ2VuZXJhdGVfc2VjdGlvbl9m
b3JfY29kZV9uYW1lX21hY3JvKToKKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5z
X2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5OiBBZGRlZC4KKyAgICAgICAgKEJ1
aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChCdWlsdGlu
c1NlcGFyYXRlSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX19pbml0X18pOgorICAgICAgICAoQnVp
bHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9uR2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSk6Cisg
ICAgICAgIChCdWlsdGluc1NlcGFyYXRlSW1wbGVtZW50YXRpb25HZW5lcmF0b3IubWFjcm9fcHJl
Zml4KToKKyAgICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5n
ZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAoQnVpbHRpbnNTZXBhcmF0ZUltcGxlbWVudGF0aW9u
R2VuZXJhdG9yLmdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcyk6CisgICAgICAgICogU2NyaXB0cy9i
dWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFwcGVyLnB5OiBBZGRlZC4KKyAg
ICAgICAgKEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9yKToKKyAgICAgICAgKEJ1aWx0
aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9yLl9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0aW5z
U2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSk6CisgICAgICAgIChCdWls
dGluc1NlcGFyYXRlV3JhcHBlckdlbmVyYXRvci5tYWNyb19wcmVmaXgpOgorICAgICAgICAoQnVp
bHRpbnNTZXBhcmF0ZVdyYXBwZXJHZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAgICAg
KEJ1aWx0aW5zU2VwYXJhdGVXcmFwcGVyR2VuZXJhdG9yLmdlbmVyYXRlX2hlYWRlcl9pbmNsdWRl
cyk6CisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weTogQWRkZWQuCisK
KyAgICAgICAgICAgIFBhcnNlIGNvbW1hbmQgbGluZSBvcHRpb25zLCBkZWNpZGUgd2hpY2ggZ2Vu
ZXJhdG9ycyBhbmQgb3V0cHV0IG1vZGVzIHRvIHVzZS4KKworICAgICAgICAoZ2VuZXJhdGVfYmlu
ZGluZ3NfZm9yX2J1aWx0aW5zX2ZpbGVzKToKKyAgICAgICAgKiBTY3JpcHRzL2xhenl3cml0ZXIu
cHk6IENvcGllZCBmcm9tIHRoZSBpbnNwZWN0b3IgcHJvdG9jb2wgZ2VuZXJhdG9yLgorICAgICAg
ICAoTGF6eUZpbGVXcml0ZXIpOgorICAgICAgICAoTGF6eUZpbGVXcml0ZXIuX19pbml0X18pOgor
ICAgICAgICAoTGF6eUZpbGVXcml0ZXIud3JpdGUpOgorICAgICAgICAoTGF6eUZpbGVXcml0ZXIu
Y2xvc2UpOgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUt
QnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS5qczog
QWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1C
dWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5qczogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1TZXBhcmF0ZS5q
czogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29y
ZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmluZWQuanM6IEFkZGVkLgorICAgICAgICAqIFNjcmlw
dHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFy
YXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUt
R3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanM6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtVW5ndWFyZGVk
QnVpbHRpbi1TZXBhcmF0ZS5qczogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWls
dGlucy9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanM6IEFkZGVkLgorICAgICAgICAq
IFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Q
cm9taXNlLUNvbWJpbmVkLmpzLXJlc3VsdDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0
cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtU2VwYXJh
dGUuanMtcmVzdWx0OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4
cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzLXJlc3Vs
dDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZh
U2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1TZXBhcmF0ZS5qcy1yZXN1bHQ6IEFkZGVkLgor
ICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUt
QnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpzLXJlc3VsdDogQWRkZWQuCisgICAgICAgICog
U2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29u
c3RydWN0b3ItU2VwYXJhdGUuanMtcmVzdWx0OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMt
cmVzdWx0OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVk
L1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQ6IEFkZGVk
LgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Vbmd1
YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdDogQWRkZWQuCisgICAgICAgICogU2NyaXB0
cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUu
anMtcmVzdWx0OiBBZGRlZC4KKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMu
Y3BwOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxl
cyk6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgICog
Y3JlYXRlX2hhc2hfdGFibGU6CisKKyAgICAgICAgICAgIFVwZGF0ZSB0aGUgZ2VuZXJhdGVkIGJ1
aWx0aW4gbWFjcm8gbmFtZXMuCisKKyAgICAgICAgKiBnZW5lcmF0ZS1qcy1idWlsdGluczogUmVt
b3ZlZC4KKwogMjAxNS0xMC0yMSAgU2FhbSBiYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDIGNhbGxzIGluIFBvbHltb3JwaGljQWNjZXNzIHNob3VsZG4ndCBhc3N1bWUgdGhh
dCB0aGUgdG9wIG9mIHRoZSBzdGFjayBsb29rcyBsaWtlIGEgSlNDIEpJVCBmcmFtZSBhbmQgZW5h
YmxlICpCeUlkRmx1c2ggaW4gRlRMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjdiY2I0ZmFjYjNjMjU2ZWY2NzBj
MGJiOWI1YjIzMzM3NWU0YWI2OS4uYjQyNzg2MGI0ODBkYmFhZTJiZjA4ODExNTYyOWVjYTdmYWVh
ZmFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE1LTEwLTIxICBCcmlhbiBCdXJn
ICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFJlc3RydWN0dXJlIGdlbmVyYXRlLWpzLWJp
bmRpbmdzIHNjcmlwdCB0byBiZSBtb2R1bGFyIGFuZCB0ZXN0YWJsZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5OTI5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKworICAg
ICAgICAgICAgRGVmaW5lIEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSIGV4cGxpY2l0bHkgc28g
dGhlIGFkZF9jdXN0b21fY29tbWFuZCBhbmQKKyAgICAgICAgICAgIHNoYXJlZCBmaWxlIGxpc3Rz
IGFyZSBpZGVudGljYWwgYmV0d2VlbiBKYXZhU2NyaXB0Q29yZSBhbmQgV2ViQ29yZS4KKworICAg
ICAgICAgICAgVGhlIG91dHB1dCBmaWxlcyBhZGRpdGlvbmFsbHkgZGVwZW5kIG9uIGFsbCBidWls
dGluIGdlbmVyYXRvciBzY3JpcHQgZmlsZXMuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOgorCisgICAgICAgICAgICBVc2UgSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIgc28gdGhh
dCB0aGUgcnVsZSBmb3IgY29kZSBnZW5lcmF0aW9uIGFuZAorICAgICAgICAgICAgc2hhcmVkIGZp
bGUgbGlzdHMgYXJlIGlkZW50aWNhbCBiZXR3ZWVuIEphdmFTY3JpcHRDb3JlIGFuZCBXZWJDb3Jl
LgorCisgICAgICAgICAgICBUaGUgb3V0cHV0IGZpbGVzIGFkZGl0aW9uYWxseSBkZXBlbmQgb24g
YWxsIGJ1aWx0aW4gZ2VuZXJhdG9yIHNjcmlwdCBmaWxlcy4KKworICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAgICAgRGVmaW5lIEphdmFTY3Jp
cHRDb3JlX1NDUklQVFNfRElSIGJlZm9yZSBjYWxsaW5nIERlcml2ZWRTb3VyY2VzLm1ha2UuCisg
ICAgICAgICAgICBUaGlzIHdpbGwgZXZlbnR1YWxseSBiZSBtZXJnZWQgd2l0aCB0aGUgb3RoZXIg
c2ltaWxhciBzY3JpcHQgcGF0aHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpmaW5pc2hDcmVh
dGlvbik6CisKKyAgICAgICAgICAgIFVwZGF0ZSB0aGUgZ2VuZXJhdGVkIGJ1aWx0aW4gbWFjcm8g
bmFtZXMuCisKKyAgICAgICAgKiBnZW5lcmF0ZS1qcy1idWlsdGluczogUmVtb3ZlZC4KKwogMjAx
NS0xMC0yMSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgTnVsbCBk
ZXJlZmVyZW5jZSBsb2FkaW5nIEJsaW5rIGxheW91dCB0ZXN0IHN2Zy9maWx0ZXJzL2Rpc3BsYXkt
bm9uZS1maWx0ZXItcHJpbWl0aXZlLmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCAzN2Y0NjMzNTk2YTg3MTY5NjczMWY3M2Y3YjgxYzM3MjJkYzBmOWVlLi5hMzgxMGFj
MGQzN2UyZDA4YWFhZTIwYTM1YWNlNGFjZGYzODQ4NDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC03MDAsMTMgKzcwMCw0MCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfTFVU
X0ZJTEVTCiAgICAgcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCiApCiAKLXNldChKYXZhU2Ny
aXB0Q29yZV9TQ1JJUFRTX0RJUiAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L1NjcmlwdHMiKQotCiBz
ZXQoSmF2YVNjcmlwdENvcmVfTElCUkFSSUVTCiAgICAgV1RGJHtERUJVR19TVUZGSVh9CiAgICAg
JHtJQ1VfSTE4Tl9MSUJSQVJJRVN9CiApCiAKK3NldChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX1NP
VVJDRVNfRElSICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vU2NyaXB0cyIpCisKKyMgR2xvYmJpbmcg
cmVsaWVzIG9uIHRoZSBmYWN0IHRoYXQgZ2VuZXJhdG9yLXNwZWNpZmljIGZpbGUgbmFtZXMgYXJl
IHByZWZpeGVkIHdpdGggdGhlaXIgZGlyZWN0b3J5LgorIyBUb3AtbGV2ZWwgc2NyaXB0cyBzaG91
bGQgaGF2ZSBhIGZpbGUgZXh0ZW5zaW9uLCBzaW5jZSB0aGV5IGFyZSBpbnZva2VkIGR1cmluZyB0
aGUgYnVpbGQuCisKK3NldChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX1NPVVJDRVNfUEFUSFMKKyAg
ICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfU09VUkNFU19ESVJ9LyoucGwKKyAgICAke0phdmFT
Y3JpcHRDb3JlX1NDUklQVFNfU09VUkNFU19ESVJ9LyoucHkKKyAgICAke0phdmFTY3JpcHRDb3Jl
X1NDUklQVFNfU09VUkNFU19ESVJ9L2J1aWx0aW5zL2J1aWx0aW5zKi5weQorKQorCisjIEZvcmNl
IEphdmFTY3JpcHRDb3JlIHRvIHJ1biBzY3JpcHRzIGZyb20gdGhlIHNhbWUgc3RhZ2luZyBwYXRo
IGFzIFdlYkNvcmUuCitzZXQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIgIiR7REVSSVZFRF9T
T1VSQ0VTX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMvSmF2YVNjcmlwdENvcmUvU2NyaXB0cyIpCisK
KyMgVGhlIGRpcmVjdG9yeSBmbGF0dGVuaW5nIHBlcmZvcm1lZCBiZWxvdyBtaXJyb3JzIHdoYXQg
dGhlIE1hYyBwb3J0IGRvZXMgd2l0aCBwcml2YXRlIGhlYWRlcnMuCisKK2ZpbGUoR0xPQiBKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX1NPVVJDRVMgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX1NPVVJD
RVNfUEFUSFN9KQorCitmb3JlYWNoIChfZmlsZSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfU09V
UkNFU30pCisgICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChfc2NyaXB0ICIke19maWxlfSIgTkFN
RSkKKyAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCisgICAgICAgIE9VVFBVVCAke0phdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSfS8ke19zY3JpcHR9CisgICAgICAgIE1BSU5fREVQRU5ERU5DWSAke19m
aWxlfQorICAgICAgICBXT1JLSU5HX0RJUkVDVE9SWSAke0RFUklWRURfU09VUkNFU19ESVJ9Cisg
ICAgICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBjb3B5X2lmX2RpZmZlcmVudCAke19m
aWxlfSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS8ke19zY3JpcHR9CisgICAgICAgIFZF
UkJBVElNKQorICAgIGxpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NDUklQVFMgJHtKYXZhU2Ny
aXB0Q29yZV9TQ1JJUFRTX0RJUn0vJHtfc2NyaXB0fSkKK2VuZGZvcmVhY2ggKCkKKwogaWYgKFVT
RV9VRElTODYpCiAgICAgc2V0KFVESVNfR0VOX0RFUAogICAgICAgICBkaXNhc3NlbWJsZXIvdWRp
czg2L3VkX29wY29kZS5weQpAQCAtOTQxLDcgKzk2OCw3IEBAIHNldChIQVNIX0xVVF9HRU5FUkFU
T1IgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2NyZWF0ZV9oYXNoX3RhYmxlKQogbWFjcm8o
R0VORVJBVEVfSEFTSF9MVVQgX2lucHV0IF9vdXRwdXQpCiAgICAgYWRkX2N1c3RvbV9jb21tYW5k
KAogICAgICAgICBPVVRQVVQgJHtfb3V0cHV0fQotICAgICAgICBERVBFTkRTICR7SEFTSF9MVVRf
R0VORVJBVE9SfSAke19pbnB1dH0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vZ2VuZXJh
dGUtanMtYnVpbHRpbnMKKyAgICAgICAgREVQRU5EUyAke0hBU0hfTFVUX0dFTkVSQVRPUn0gJHtf
aW5wdXR9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5z
LnB5CiAgICAgICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7SEFTSF9MVVRfR0VORVJB
VE9SfSAke19pbnB1dH0gLWkgPiAke19vdXRwdXR9CiAgICAgICAgIFZFUkJBVElNKQogICAgIGxp
c3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMgJHtfb3V0cHV0fSkKQEAgLTEwODAsNiAr
MTEwNywyMSBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgVkVSQkFUSU0pCiAKICMgSlNDQnVp
bHRpbnMKKworc2V0KEJVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTCisgICAgJHtKYXZhU2NyaXB0
Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnMucHkKKyAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQ
VFNfRElSfS9idWlsdGluc19nZW5lcmF0b3IucHkKKyAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQ
VFNfRElSfS9idWlsdGluc19tb2RlbC5weQorICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVJ9L2J1aWx0aW5zX3RlbXBsYXRlcy5weQorICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVJ9L2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlci5weQorICAgICR7SmF2YVNjcmlw
dENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0
aW9uLnB5CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnNfZ2VuZXJh
dGVfc2VwYXJhdGVfaGVhZGVyLnB5CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0v
YnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkKKyAgICAke0phdmFT
Y3JpcHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFwcGVy
LnB5CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRp
bnMucHkKKyAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9sYXp5d3JpdGVyLnB5Cisp
CisKIHNldChKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2J1aWx0aW5zL0FycmF5Q29uc3RydWN0b3IuanMKICAgICAke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vYnVpbHRpbnMvQXJyYXlJdGVyYXRvci5wcm90b3R5cGUuanMKQEAgLTExMDIsMTAg
KzExNDQsMTEgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMKICkKIAogYWRk
X2N1c3RvbV9jb21tYW5kKAotICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRD
T1JFX0RJUn0vSlNDQnVpbHRpbnMuY3BwICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0vSlNDQnVpbHRpbnMuaAotICAgTUFJTl9ERVBFTkRFTkNZICR7SmF2YVNjcmlwdENvcmVf
U0NSSVBUU19ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zCi0gICBERVBFTkRTICR7SmF2YVNjcmlw
dENvcmVfQlVJTFRJTlNfU09VUkNFU30KLSAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0g
JHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMgLS1pbnB1
dC1kaXJlY3RvcnkgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2J1aWx0aW5zIC0tb3V0cHV0
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSlNDQnVpbHRpbnMuY3BwCisg
ICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9KU0NCdWlsdGlu
cy5jcHAKKyAgICAgICAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0pT
Q0J1aWx0aW5zLmgKKyAgIE1BSU5fREVQRU5ERU5DWSAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNf
RElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorICAgREVQRU5EUyAke0phdmFTY3JpcHRDb3Jl
X0JVSUxUSU5TX1NPVVJDRVN9ICR7QlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFN9CisgICBDT01N
QU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2dl
bmVyYXRlLWpzLWJ1aWx0aW5zLnB5IC0tZnJhbWV3b3JrIEphdmFTY3JpcHRDb3JlIC0tb3V0cHV0
LWRpcmVjdG9yeSAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9IC0tY29tYmlu
ZWQgJHtKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTfQogICAgVkVSQkFUSU0pCiAKIGxp
c3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKQEAgLTEyMDksNCArMTI1Miw3IEBAIGlm
IChFTkFCTEVfRlRMX0pJVCkKICAgICBhZGRfZGVwZW5kZW5jaWVzKEphdmFTY3JpcHRDb3JlIGxs
dm1Gb3JKU0MpCiBlbmRpZiAoKQogCisjIEZvcmNlIHN0YWdpbmcgb2Ygc2hhcmVkIHNjcmlwdHMs
IGV2ZW4gaWYgdGhleSBhcmVuJ3QgZGlyZWN0bHkgdXNlZCB0byBidWlsZCBKYXZhU2NyaXB0Q29y
ZS4KIAorYWRkX2N1c3RvbV90YXJnZXQoc3RhZ2VTaGFyZWRTY3JpcHRzIERFUEVORFMgJHtKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTfSkKK2FkZF9kZXBlbmRlbmNpZXMoSmF2YVNjcmlwdENvcmUgc3Rh
Z2VTaGFyZWRTY3JpcHRzKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggOTA5MTEyZDQwZjRkZmUyZGZkZWE0
ZDRiYzc5MDhiMjliNDM5NjhmMS4uNDE0NGE3ZmEzZjdmMDcxYzNkNjBlMzQwZjJkZTNkYjBmYzcz
OGJkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTcx
LDEwICs3MSw5IEBAIGFsbCA6IFwKICAgICB1ZGlzODZfaXRhYi5oIFwKICAgICBCeXRlY29kZXMu
aCBcCiAgICAgSW5pdEJ5dGVjb2Rlcy5hc20gXAotICAgIEpTQ0J1aWx0aW5zIFwKKyAgICBKU0NC
dWlsdGlucy5oIFwKICMKIAotIyBidWlsdGluIGZ1bmN0aW9ucwogUFlUSE9OID0gcHl0aG9uCiBQ
RVJMID0gcGVybAogCkBAIC04NywxNSArODYsMjQgQEAgZWxzZQogZW5kaWYKICMgLS0tLS0tLS0K
IAotLlBIT05ZOiBKU0NCdWlsdGlucwotSlNDQnVpbHRpbnM6ICQoSmF2YVNjcmlwdENvcmVfU0NS
SVBUU19ESVIpL2dlbmVyYXRlLWpzLWJ1aWx0aW5zIEpTQ0J1aWx0aW5zLmggSlNDQnVpbHRpbnMu
Y3BwCi1KU0NCdWlsdGlucy5oOiAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0
ZS1qcy1idWlsdGlucyAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucyBKU0NCdWlsdGluc1NvdXJj
ZXMKLQkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGUtanMt
YnVpbHRpbnMgLS1pbnB1dC1kaXJlY3RvcnkgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMgLS1v
dXRwdXQgJEAKLQotSlNDQnVpbHRpbnMuY3BwOiBKU0NCdWlsdGlucy5oCisjIEphdmFTY3JpcHQg
YnVpbHRpbnMuCisKK0JVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTID0gXAorICAgICQoSmF2YVNj
cmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zL19faW5pdF9fLnB5IFwKKyAgICAkKEphdmFT
Y3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGlucy9idWlsdGlucy5weSBcCisgICAgJChKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5IFwK
KyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWlsdGlucy9idWlsdGluc19tb2Rl
bC5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnMvYnVpbHRp
bnNfdGVtcGxhdGVzLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWls
dGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkgXAorICAgICQoSmF2YVNj
cmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVk
X2ltcGxlbWVudGF0aW9uLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9i
dWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkgXAorICAgICQoSmF2
YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFy
YXRlX2ltcGxlbWVudGF0aW9uLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
KS9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFwcGVyLnB5IFwKKyAgICAk
KEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZS1qcy1idWlsdGlucy5weSBcCisg
ICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvbGF6eXdyaXRlci5weSBcCisjCiAKLS5Q
SE9OWTogSlNDQnVpbHRpbnNTb3VyY2VzCi1KU0NCdWlsdGluc1NvdXJjZXM6IFwKK0phdmFTY3Jp
cHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMgPSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRp
bnMvQXJyYXlDb25zdHJ1Y3Rvci5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMv
QXJyYXlJdGVyYXRvci5wcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0
aW5zL0FycmF5LnByb3RvdHlwZS5qcyBcCkBAIC0xMTIsOCArMTIwLDIwIEBAIEpTQ0J1aWx0aW5z
U291cmNlczogXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1JlZmxlY3RPYmplY3Qu
anMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1N0cmluZ0NvbnN0cnVjdG9yLmpz
IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9TdHJpbmdJdGVyYXRvci5wcm90b3R5
cGUuanMgXAorICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL1R5cGVkQXJyYXlDb25zdHJ1
Y3Rvci5qcyBcCisgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvVHlwZWRBcnJheS5wcm90
b3R5cGUuanMgXAogIwogCisjIFRoZSBjb21iaW5lZCBvdXRwdXQgZmlsZSBkZXBlbmRzIG9uIHRo
ZSBjb250ZW50cyBvZiBidWlsdGlucyBhbmQgZ2VuZXJhdG9yIHNjcmlwdHMsIHNvCisjIGFkZGlu
ZywgbW9kaWZ5aW5nLCBvciByZW1vdmluZyBidWlsdGlucyBvciBzY3JpcHRzIHdpbGwgdHJpZ2dl
ciByZWdlbmVyYXRpb24gb2YgZmlsZXMuCisKKy5QSE9OWTogZm9yY2UKK0phdmFTY3JpcHRDb3Jl
X0JVSUxUSU5TX0RFUEVOREVOQ0lFU19MSVNUIDogJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJ
UikvVXBkYXRlQ29udGVudHMucHkgZm9yY2UKKwkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZV9T
Q1JJUFRTX0RJUikvVXBkYXRlQ29udGVudHMucHkgJyQoSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNf
U09VUkNFUykgJChCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUyknICRACisKK0pTQ0J1aWx0aW5z
Lmg6ICQoQlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFMpICQoSmF2YVNjcmlwdENvcmVfQlVJTFRJ
TlNfU09VUkNFUykgSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfREVQRU5ERU5DSUVTX0xJU1QKKwkk
KFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGUtanMtYnVpbHRp
bnMucHkgLS1jb21iaW5lZCAtLW91dHB1dC1kaXJlY3RvcnkgLiAtLWZyYW1ld29yayBKYXZhU2Ny
aXB0Q29yZSAkKEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMpCisKICMgbG9va3VwIHRh
YmxlcyBmb3IgY2xhc3NlcwogCiAlLmx1dC5oOiBjcmVhdGVfaGFzaF90YWJsZSAlLmNwcApAQCAt
MjAxLDggKzIyMSw4IEBAIGFsbCA6IFwKICMgYWRkaW5nLCBtb2RpZnlpbmcsIG9yIHJlbW92aW5n
IGRvbWFpbnMgd2lsbCB0cmlnZ2VyIHJlZ2VuZXJhdGlvbiBvZiBpbnNwZWN0b3IgZmlsZXMuCiAK
IC5QSE9OWTogZm9yY2UKLUVuYWJsZWRJbnNwZWN0b3JEb21haW5zIDogJChKYXZhU2NyaXB0Q29y
ZSkvVXBkYXRlQ29udGVudHMucHkgZm9yY2UKLQkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZSkv
VXBkYXRlQ29udGVudHMucHkgJyQoSU5TUEVDVE9SX0RPTUFJTlMpJyAkQAorRW5hYmxlZEluc3Bl
Y3RvckRvbWFpbnMgOiAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9VcGRhdGVDb250ZW50
cy5weSBmb3JjZQorCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9VcGRh
dGVDb250ZW50cy5weSAnJChJTlNQRUNUT1JfRE9NQUlOUyknICRACiAKIENvbWJpbmVkRG9tYWlu
cy5qc29uIDogJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGUtY29tYmluZWQt
aW5zcGVjdG9yLWpzb24ucHkgJChJTlNQRUNUT1JfRE9NQUlOUykgRW5hYmxlZEluc3BlY3RvckRv
bWFpbnMKIAkkKFBZVEhPTikgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGUt
Y29tYmluZWQtaW5zcGVjdG9yLWpzb24ucHkgJChJTlNQRUNUT1JfRE9NQUlOUykgPiAuL0NvbWJp
bmVkRG9tYWlucy5qc29uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDEzMzhlNDgy
NjhmYjE4N2Q1ZmQ1YTNjZjhhNzBiOWRlZThhZWY1ZDMuLmU1ZTE3NGU0MDEzMjZlZWZmZDNjMjBl
OTJlYjc3M2Q3OWIxYzdhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjE0
LDcgKzEyMTQsNiBAQAogCQk5OTI4RkYzQjE4QUM0QUVDMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1
dHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTky
OEZGMzkxOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmNwcCAqLzsgfTsKIAkJOTky
OEZGM0MxOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTI4RkYzQTE4QUM0QUVDMDBCOENGMTIg
LyogSlNSZXBsYXlJbnB1dHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5OTU5RTkyQjFCRDE3RkE0MDAxQUE0MTMgLyogY3NzbWluLnB5IGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1OUU5MjcxQkQxN0ZB
MDAwMUFBNDEzIC8qIGNzc21pbi5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQk5OTU5RTkyQzFCRDE3RkE0MDAxQUE0MTMgLyogZ2VuZXJhdGUtanMt
YnVpbHRpbnMgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
OTU5RTkyODFCRDE3RkEwMDAxQUE0MTMgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMgKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTk1OUU5MkQxQkQxN0ZB
NDAwMUFBNDEzIC8qIGpzbWluLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTk1OUU5MjkxQkQxN0ZBMDAwMUFBNDEzIC8qIGpzbWluLnB5ICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5NTlFOTJFMUJEMTdG
QTQwMDFBQTQxMyAvKiB4eGQucGwgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5OTU5RTkyQTFCRDE3RkEwMDAxQUE0MTMgLyogeHhkLnBsICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5NTlFOTMxMUJEMTgyNzIw
MDFBQTQxMyAvKiBnZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTlFOTJGMUJEMTgxRjYwMDFB
QTQxMyAvKiBnZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTIyMiw2ICsxMjIxLDE4IEBA
CiAJCTk5NjIzMUU5MThEMTgwNDIwMEMwM0ZEQSAvKiBJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMu
anMgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTMyNDM5
NjE4NTZBNDc1MDAyRUQ2OTIgLyogSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5Q0MwQjYyMThCRTk5
NDYwMDZDRUJDQyAvKiBDb2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzVGVtcGxhdGVzLnB5IGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlFNDVBMUUxOEExQjFF
NzAwMjZEODhGIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHNUZW1wbGF0ZXMucHkgKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTlDQzBCNjMxOEJF
OTk1MDAwNkNFQkNDIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkgaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUU0NUExRDE4QTFCMUU3MDAyNkQ4
OEYgLyogQ29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OURBMDBBMzFCRDU5OTMxMDBGNDU3NUMgLyog
YnVpbHRpbnNfZ2VuZXJhdG9yLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTlEQTAwOUExQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRv
ci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5
OURBMDBBNDFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfbW9kZWwucHkgaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OURBMDA5QjFCRDU5OTI3MDBGNDU3
NUMgLyogYnVpbHRpbnNfbW9kZWwucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJOTlEQTAwQTUxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX3Rl
bXBsYXRlcy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk5REEwMDlDMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc190ZW1wbGF0ZXMucHkgKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlEQTAwQTYxQkQ1
OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTlEQTAwOUQxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zLnB5
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5REEw
MEE3MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIu
cHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OURBMDA5
RTFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaGVhZGVyLnB5
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5REEw
MEE4MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1l
bnRhdGlvbi5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk5REEwMDlGMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9p
bXBsZW1lbnRhdGlvbi5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk5OURBMDBBOTFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVf
c2VwYXJhdGVfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTlEQTAwQTAxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3Nl
cGFyYXRlX2hlYWRlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk5OURBMDBBQTFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVf
c2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5OURBMDBBMTFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2Vu
ZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlEQTAwQUIxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1
aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX3dyYXBwZXIucHkgaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OURBMDBBMjFCRDU5OTI3MDBGNDU3NUMgLyogYnVp
bHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfd3JhcHBlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OURBMDBBRjFCRDU5OTRFMDBGNDU3NUMgLyog
Z2VuZXJhdGUtanMtYnVpbHRpbnMucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5OURBMDBBQzFCRDU5OTNFMDBGNDU3NUMgLyogZ2VuZXJhdGUtanMtYnVp
bHRpbnMucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJOTlEQTAwQjAxQkQ1OTk0RTAwRjQ1NzVDIC8qIGxhenl3cml0ZXIucHkgaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OURBMDBBRDFCRDU5OTNFMDBGNDU3
NUMgLyogbGF6eXdyaXRlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk5OURBMDBCMTFCRDU5OTRFMDBGNDU3NUMgLyogVXBkYXRlQ29udGVudHMu
cHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OURBMDBB
RTFCRDU5OTNFMDBGNDU3NUMgLyogVXBkYXRlQ29udGVudHMucHkgKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTlFNDVBMjQxOEExQjI1OTAwMjZEODhG
IC8qIEVtcHR5SW5wdXRDdXJzb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk5RTQ1QTFGMThBMUIyNTkwMDI2RDg4RiAvKiBFbXB0eUlucHV0Q3Vyc29y
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTlF
NDVBMjUxOEExQjI1OTAwMjZEODhGIC8qIEVuY29kZWRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUU0NUEyMDE4QTFCMjU5MDAyNkQ4OEYg
LyogRW5jb2RlZFZhbHVlLmNwcCAqLzsgfTsKIAkJOTlFNDVBMjYxOEExQjI1OTAwMjZEODhGIC8q
IEVuY29kZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTlFNDVBMjExOEExQjI1OTAwMjZEODhGIC8qIEVuY29kZWRWYWx1ZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNzk0LDcgKzE4MDUs
NyBAQAogCQlGRTdDNDE5NjFCOTdGQzRCMDBGNEQ1OTggLyogUGluZ1BvbmdTdGFja092ZXJmbG93
VGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RURBNTBENDFCOTdGNDQyMDA5QTNCNEYgLyogUGluZ1BvbmdTdGFja092ZXJmbG93VGVzdC5jcHAg
Ki87IH07CiAJCUZFQTA4NjIwMTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVha3BvaW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUEwODYxRTE4MkI3QTA0
MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUZFQTA4NjIxMTgyQjdBMDQwMEY2RDg1MSAvKiBEZWJ1Z2dlclBy
aW1pdGl2ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFQTA4NjFGMTgyQjdBMDQwMEY2RDg1MSAvKiBEZWJ1Z2dlclByaW1pdGl2ZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlGRUIxMzc1NzFCQjEx
RUY5MDBDRDUxMDAgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUIxMzc1NjFCQjExRUVFMDBDRDUxMDAgLyog
TWFjcm9Bc3NlbWJsZXJBUk02NC5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsg
fTsgfTsKKwkJRkVCMTM3NTcxQkIxMUVGOTAwQ0Q1MTAwIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVCMTM3
NTYxQkIxMUVFRTAwQ0Q1MTAwIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuY3BwICovOyB9OwogCQlG
RUI1MUY2QzFBOTdCNjg4MDAxRjkyMUMgLyogUmVncmVzczE0MTgwOS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjUxRjZCMUE5N0I2ODgwMDFGOTIx
QyAvKiBSZWdyZXNzMTQxODA5Lm1tICovOyB9OwogCQlGRUI1OEMxNDE4N0I4QjE2MDA5OEVGMEIg
LyogRXJyb3JIYW5kbGluZ1Njb3BlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFQjU4QzEyMTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRsaW5n
U2NvcGUuY3BwICovOyB9OwogCQlGRUI1OEMxNTE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5k
bGluZ1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRUI1OEMxMzE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMxMTgsMTEgKzMx
MjksMjMgQEAKIAkJOTkyOEZGM0ExOEFDNEFFQzAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVwbGF5SW5wdXRzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MjhGRjNEMThBQzRCMUMwMEI4Q0YxMiAvKiBKU0lu
cHV0cy5qc29uICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5qc29uOyBwYXRoID0gSlNJbnB1dHMuanNvbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk1OUU5MjcxQkQxN0ZBMDAwMUFBNDEzIC8qIGNz
c21pbi5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGNzc21pbi5weTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTk1OUU5MjgxQkQxN0ZBMDAwMUFBNDEzIC8q
IGdlbmVyYXRlLWpzLWJ1aWx0aW5zICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRo
ID0gImdlbmVyYXRlLWpzLWJ1aWx0aW5zIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTk1OUU5MjkxQkQxN0ZBMDAwMUFBNDEzIC8qIGpzbWluLnB5ICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3Jp
cHQucHl0aG9uOyBwYXRoID0ganNtaW4ucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk5NTlFOTJBMUJEMTdGQTAwMDFBQTQxMyAvKiB4eGQucGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlw
dC5wZXJsOyBwYXRoID0geHhkLnBsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTU5
RTkyRjFCRDE4MUY2MDAxQUE0MTMgLyogZ2VuZXJhdGUtY29tYmluZWQtaW5zcGVjdG9yLWpzb24u
cHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSAiZ2VuZXJhdGUtY29tYmlu
ZWQtaW5zcGVjdG9yLWpzb24ucHkiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTU5
RTkzMDFCRDE4MUY2MDAxQUE0MTMgLyogaW5saW5lLWFuZC1taW5pZnktc3R5bGVzaGVldHMtYW5k
LXNjcmlwdHMucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSAiaW5saW5l
LWFuZC1taW5pZnktc3R5bGVzaGVldHMtYW5kLXNjcmlwdHMucHkiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5OURBMDA5OTFCRDU5OTI3MDBGNDU3NUMgLyogX19pbml0X18ucHkgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBfX2luaXRfXy5weTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlEQTAwOUExQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5z
X2dlbmVyYXRvci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGJ1aWx0
aW5zX2dlbmVyYXRvci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlEQTAwOUIx
QkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX21vZGVsLnB5ICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3Jp
cHQucHl0aG9uOyBwYXRoID0gYnVpbHRpbnNfbW9kZWwucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTk5REEwMDlDMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc190ZW1wbGF0ZXMu
cHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBidWlsdGluc190ZW1wbGF0
ZXMucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5REEwMDlEMUJENTk5MjcwMEY0
NTc1QyAvKiBidWlsdGlucy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9
IGJ1aWx0aW5zLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OURBMDA5RTFCRDU5
OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaGVhZGVyLnB5ICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmlu
ZWRfaGVhZGVyLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OURBMDA5RjFCRDU5
OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaW1wbGVtZW50YXRpb24u
cHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBidWlsdGluc19nZW5lcmF0
ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTlEQTAwQTAxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRl
X2hlYWRlci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGJ1aWx0aW5z
X2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTlEQTAwQTExQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRl
X2ltcGxlbWVudGF0aW9uLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0g
YnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHk7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTk5REEwMEEyMUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19n
ZW5lcmF0ZV9zZXBhcmF0ZV93cmFwcGVyLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9u
OyBwYXRoID0gYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfd3JhcHBlci5weTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlEQTAwQUMxQkQ1OTkzRTAwRjQ1NzVDIC8qIGdlbmVyYXRl
LWpzLWJ1aWx0aW5zLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gImdl
bmVyYXRlLWpzLWJ1aWx0aW5zLnB5Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlE
QTAwQUQxQkQ1OTkzRTAwRjQ1NzVDIC8qIGxhenl3cml0ZXIucHkgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNj
cmlwdC5weXRob247IHBhdGggPSBsYXp5d3JpdGVyLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5OURBMDBBRTFCRDU5OTNFMDBGNDU3NUMgLyogVXBkYXRlQ29udGVudHMucHkgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBVcGRhdGVDb250ZW50cy5weTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlFNDVBMUQxOEExQjFFNzAwMjZEODhGIC8qIENv
ZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247
IHBhdGggPSBDb2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzLnB5OyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5OUU0NUExRTE4QTFCMUU3MDAyNkQ4OEYgLyogQ29kZUdlbmVyYXRvclJlcGxh
eUlucHV0c1RlbXBsYXRlcy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9
IENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHNUZW1wbGF0ZXMucHk7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk5RTQ1QTFGMThBMUIyNTkwMDI2RDg4RiAvKiBFbXB0eUlucHV0Q3Vyc29y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVtcHR5SW5wdXRDdXJzb3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM4MTAsOSArMzgzMyw5IEBACiAJCTAzNDc2
OERGRkYzOEE1MDQxMURCOUM4QiAvKiBQcm9kdWN0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEZGOTIyQ0YxNEY0NkIxMzAwNDFBMjRFIC8qIEpTQ0xM
SW50T2Zmc2V0c0V4dHJhY3RvciAqLywKIAkJCQk5MzJGNUJEOTA4MjJBMUM3MDA3MzY5NzUgLyog
SmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovLAogCQkJCTkzMkY1QkUxMDgyMkExQzcwMDczNjk3
NSAvKiBqc2MgKi8sCi0JCQkJMEZGOTIyQ0YxNEY0NkIxMzAwNDFBMjRFIC8qIEpTQ0xMSW50T2Zm
c2V0c0V4dHJhY3RvciAqLywKIAkJCQkwRkNFRkFCNjE4MDVENjE2MDA0NzJDRTQgLyogbGlibGx2
bUZvckpTQy5keWxpYiAqLywKIAkJCQkxNDEyMTEyMDBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRv
bSAqLywKIAkJCQkxNEJENTlCRjBBM0U4RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAqLywKQEAgLTU3
MzIsMTYgKzU3NTUsMzYgQEAKIAkJOTk1OUU5MjUxQkQxN0YxRTAwMUFBNDEzIC8qIFNjcmlwdHMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTk5NTlFOTI4
MUJEMTdGQTAwMDFBQTQxMyAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLywKKwkJCQk5OURBMDA5
NzFCRDU5OEUwMDBGNDU3NUMgLyogYnVpbHRpbnMgKi8sCiAJCQkJOTk1OUU5MjcxQkQxN0ZBMDAw
MUFBNDEzIC8qIGNzc21pbi5weSAqLywKIAkJCQk5OTU5RTkyRjFCRDE4MUY2MDAxQUE0MTMgLyog
Z2VuZXJhdGUtY29tYmluZWQtaW5zcGVjdG9yLWpzb24ucHkgKi8sCisJCQkJOTlEQTAwQUMxQkQ1
OTkzRTAwRjQ1NzVDIC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5ICovLAogCQkJCTk5NTlFOTMw
MUJEMTgxRjYwMDFBQTQxMyAvKiBpbmxpbmUtYW5kLW1pbmlmeS1zdHlsZXNoZWV0cy1hbmQtc2Ny
aXB0cy5weSAqLywKIAkJCQk5OTU5RTkyOTFCRDE3RkEwMDAxQUE0MTMgLyoganNtaW4ucHkgKi8s
CisJCQkJOTlEQTAwQUQxQkQ1OTkzRTAwRjQ1NzVDIC8qIGxhenl3cml0ZXIucHkgKi8sCisJCQkJ
OTlEQTAwQUUxQkQ1OTkzRTAwRjQ1NzVDIC8qIFVwZGF0ZUNvbnRlbnRzLnB5ICovLAogCQkJCTk5
NTlFOTJBMUJEMTdGQTAwMDFBQTQxMyAvKiB4eGQucGwgKi8sCiAJCQkpOwogCQkJcGF0aCA9IFNj
cmlwdHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk5OURBMDA5NzFCRDU5
OEUwMDBGNDU3NUMgLyogYnVpbHRpbnMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCTk5REEwMDk5MUJENTk5MjcwMEY0NTc1QyAvKiBfX2luaXRfXy5weSAq
LywKKwkJCQk5OURBMDA5RDFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnMucHkgKi8sCisJCQkJ
OTlEQTAwOUUxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hl
YWRlci5weSAqLywKKwkJCQk5OURBMDA5RjFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2Vu
ZXJhdGVfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkgKi8sCisJCQkJOTlEQTAwQTAxQkQ1OTky
NzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weSAqLywKKwkJ
CQk5OURBMDBBMTFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVf
aW1wbGVtZW50YXRpb24ucHkgKi8sCisJCQkJOTlEQTAwQTIxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1
aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX3dyYXBwZXIucHkgKi8sCisJCQkJOTlEQTAwOUExQkQ1
OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRvci5weSAqLywKKwkJCQk5OURBMDA5QjFC
RDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfbW9kZWwucHkgKi8sCisJCQkJOTlEQTAwOUMxQkQ1
OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX3RlbXBsYXRlcy5weSAqLywKKwkJCSk7CisJCQlwYXRo
ID0gYnVpbHRpbnM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk5OUU0NUEw
QzE4QTAxRTkzMDAyNkQ4OEYgLyogcmVwbGF5ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKQEAgLTYwMzcsNiArNjA4MCwxNSBAQAogCQkJCUZFQTA4NjIwMTgyQjdB
MDQwMEY2RDg1MSAvKiBCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4MDFBNTE4
ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzVFRTlCMjE4QUFCN0UyMDBBQUQwNDMgLyogQnVpbHRpbk5hbWVzLmggaW4gSGVhZGVycyAq
LywKKwkJCQk5OURBMDBBNjFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnMucHkgaW4gSGVhZGVy
cyAqLywKKwkJCQk5OURBMDBBNzFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVf
Y29tYmluZWRfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJOTlEQTAwQTgxQkQ1OTkzMTAw
RjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5IGlu
IEhlYWRlcnMgKi8sCisJCQkJOTlEQTAwQTkxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dl
bmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weSBpbiBIZWFkZXJzICovLAorCQkJCTk5REEwMEFBMUJE
NTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9pbXBsZW1lbnRhdGlv
bi5weSBpbiBIZWFkZXJzICovLAorCQkJCTk5REEwMEFCMUJENTk5MzEwMEY0NTc1QyAvKiBidWls
dGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFwcGVyLnB5IGluIEhlYWRlcnMgKi8sCisJCQkJOTlE
QTAwQTMxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRvci5weSBpbiBIZWFkZXJz
ICovLAorCQkJCTk5REEwMEE0MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19tb2RlbC5weSBp
biBIZWFkZXJzICovLAorCQkJCTk5REEwMEE1MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc190
ZW1wbGF0ZXMucHkgaW4gSGVhZGVycyAqLywKIAkJCQk0MURFQTEzMjFCOUYzMTYzMDA2RDY1REQg
LyogQnVpbHRpblV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5RTcyOTQwQjE5MEYwNTE0MDAx
QTkxQjUgLyogQnVuZGxlUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTcxNUVEOEU0
NjAwRjE2N0IyIC8qIEJ1dHRlcmZseS5oIGluIEhlYWRlcnMgKi8sCkBAIC02MTA0LDYgKzYxNTYs
NyBAQAogCQkJCUMyRkM5QkQzMTY2NDRERkIwMDgxMEQzMyAvKiBDb3BpZWRCbG9ja0lubGluZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUMyRUFBM0ZBMTQ5QTgzNUUwMEZDRTExMiAvKiBDb3BpZWRT
cGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJDOEQwMkQxNEEzQzZFMDAwNTc4RTY1IC8qIENv
cGllZFNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3QzExQUQxQkMzODYyQzAw
Qzc0Q0RCIC8qIENvcHlCYXJyaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVBNTJEMDE3QURE
NzE3MDA4RUNCMkQgLyogQ29weVRva2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjIzOUQxODE2
MjYyQkREMDA1QUM1RkQgLyogQ29weVZpc2l0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyMjM5
RDE5MTYyNjJCREQwMDVBQzVGRCAvKiBDb3B5VmlzaXRvcklubGluZXMuaCBpbiBIZWFkZXJzICov
LApAQCAtNjE3NCw2ICs2MjI3LDcgQEAKIAkJCQkwRjM4QjAxQTE3Q0ZFNzU1MDBCMTQ0RDMgLyog
REZHQ29tcGlsYXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjNCM0ExQjE1M0U2OEY0
MDAzRUQwRkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRUQ2N0JBMUIyNjI1NkQwMDY2Q0UxNSAvKiBERkdDb25zdGFudEhvaXN0aW5nUGhhc2UuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGMDk4MUY4MUJDNUU1NjUwMDQ4MTRGOCAvKiBERkdDb3B5QmFy
cmllck9wdGltaXphdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3MzE2QzFE
QjA1MDA4MkM1RTggLyogREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTdEODlDRjYxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0NyaXRpY2FsRWRnZUJyZWFraW5nUGhh
c2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTVBMTRFRjkwQTkwMEM3MjUzMiAvKiBERkdD
U0VQaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC02NDEwLDcgKzY0NjQsNyBAQAogCQkJCUE1NEU4
RUIxMThCRkZCQkUwMDU1NkQyOCAvKiBHQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTk1OUU5MzExQkQxODI3MjAwMUFBNDEzIC8qIGdlbmVyYXRlLWNvbWJpbmVk
LWluc3BlY3Rvci1qc29uLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQzQ3MDNDQzAxOTI4NDQ5NjAw
MTNGQkVBIC8qIGdlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weSBpbiBIZWFk
ZXJzICovLAotCQkJCTk5NTlFOTJDMUJEMTdGQTQwMDFBQTQxMyAvKiBnZW5lcmF0ZS1qcy1idWls
dGlucyBpbiBIZWFkZXJzICovLAorCQkJCTk5REEwMEFGMUJENTk5NEUwMEY0NTc1QyAvKiBnZW5l
cmF0ZS1qcy1idWlsdGlucy5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MEVDMTlGNUIzRUEw
MDk4RjVFQyAvKiBnZW5lcmF0ZV9jcHBfYWx0ZXJuYXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFk
ZXIucHkgaW4gSGVhZGVycyAqLywKIAkJCQlBNUVGOUIxNDFBMUQ0M0Y2MDA3MDJFOTAgLyogZ2Vu
ZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgaW4gSGVhZGVycyAqLywKIAkJ
CQlBNUVGOUIxNTFBMUQ0M0ZBMDA3MDJFOTAgLyogZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0
Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovLApAQCAtNjU0Miw3ICs2NTk2LDYg
QEAKIAkJCQkwRjc2NkQyQzE1QThDQzNBMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNUVGOTFGMTY4NzhGN0QwMDNFNUMyNSAvKiBKSVRUaHVua3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzcxMkUzMTdDRDg3OTMwMDhDQzkzQyAvKiBKSVRUb0RG
R0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEYwOTgx
RjgxQkM1RTU2NTAwNDgxNEY4IC8qIERGR0NvcHlCYXJyaWVyT3B0aW1pemF0aW9uUGhhc2UuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3NkY1NEEzMTNCMjhBQUIwMEVGMkJDRSAvKiBKSVRXcml0ZUJh
cnJpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0MDQ4MDEzMTAyMUExRDkwMDhFN0YwMSAvKiBK
U0FQSVZhbHVlV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJDRjM5QzIxNkUxNUE4MTAw
REQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCkBAIC02NjAxLDcg
KzY2NTQsNiBAQAogCQkJCTc5N0UwN0FBMUI4RkNGQjkwMDg0MDBCQSAvKiBKU0dsb2JhbExleGlj
YWxFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjEwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTR2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUZEMDA4NjE4OUIx
QjdFMDA2MzMyMzEgLyogSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQuaCBpbiBIZWFkZXJzICov
LAotCQkJCTUzNEM0NTdDMUJDNzI0MTEwMDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlWaWV3Q29uc3Ry
dWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QzNBMUE2MThDMDQ5MDIwMEM5NTkzQSAvKiBK
U0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1OTQ1NTkz
MTgyNDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE1N0QyM0VBMTg5MUIwNzcwMDMxQzdGQSAvKiBKU0dsb2JhbE9iamVjdERlYnVn
Z2VyQWdlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtNjY3MCw2ICs2NzIyLDcgQEAKIAkJCQkwRjJC
NjZGQjE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjJCNjZGRDE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFycmF5UHJv
dG90eXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RkYxN0I2QjVBQjAwQTdBRTNGIC8q
IEpTVHlwZWRBcnJheXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzNEM0NTdDMUJDNzI0MTEwMDc0
NzZBNyAvKiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CURFQTdFMjQ1MUJCQzY3N0YwMEQ3ODQ0MCAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk2NTA3RDI5RTBFODcxRTVFMDBEN0Q4OTYgLyogSlNUeXBlSW5m
by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY3MDIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTVWlu
dDE2QXJyYXkuaCBpbiBIZWFkZXJzICovLApAQCAtNjY5NCw2ICs2NzQ3LDcgQEAKIAkJCQk5NjlB
MDcyQTBFRDFDRTY5MDBGMUY2ODEgLyogTGFiZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2MDA5
N0E2MEVCQUJCNTgwMDdBNzI5NyAvKiBMYWJlbFNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkI1NDY3NzE0RjU5QjVDMDAyQzI5ODkgLyogTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTk5REEwMEIwMUJENTk5NEUwMEY0NTc1QyAvKiBsYXp5d3JpdGVyLnB5
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NTIwRTE2RjVDRDAwQjM0NDYwIC8qIExlZ2FjeVBy
b2ZpbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQzMTBFMTZGNUNEMDBCMzQ0NjAgLyog
TGV4ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNTJFMEUxNkZDRTEwMEIzNDQ2MCAvKiBM
ZXhlci5sdXQuaCBpbiBIZWFkZXJzICovLApAQCAtNjc5MCw3ICs2ODQ0LDYgQEAKIAkJCQk4Njg5
MTZCMDE1NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDNDUwMEUxNkY1Q0QwMEIzNDQ2MCAvKiBQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5NUNENDU3NzBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMEY3QzExQUQxQkMzODYyQzAwQzc0Q0RCIC8qIENvcHlCYXJyaWVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1MTBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvZmlsZU5vZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcyOUE1MTY2QUQzNTEwMDBGNUJBMyAvKiBQcm9maWxl
ckJ5dGVjb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MjlCOTE2NkFEMzYwMDAwRjVCQTMg
LyogUHJvZmlsZXJCeXRlY29kZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNjk0OSw2ICs3MDAyLDcg
QEAKIAkJCQlBN0I2MDE4MjE2MzlGRDJBMDAzNzJCQTMgLyogVW5saW5rZWRDb2RlQmxvY2suaCBp
biBIZWFkZXJzICovLAogCQkJCTE0MTQyRTUxMUI3OTZFQ0UwMEY0QkY0QiAvKiBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyRTg5MkMxNkQwMjhBRDAw
OUU0RkQyIC8qIFVudXNlZFBvaW50ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5REEwMEIxMUJE
NTk5NEUwMEY0NTc1QyAvKiBVcGRhdGVDb250ZW50cy5weSBpbiBIZWFkZXJzICovLAogCQkJCTBG
OTYzQjM4MTNGQzZGRTkwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNDI2QTQ4MTQ2MENCQjMwMDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3OUVFMEMwMDFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVu
dC5oIGluIEhlYWRlcnMgKi8sCkBAIC03NDg4LDcgKzc1NDIsNiBAQAogCQkJCTBGNjM5NDU0MTVE
MDcwNTUwMDZBNTk3QyAvKiBBcnJheVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3
RjM5QzAxMDdFQzM3NjAwNDI3QTQ4IC8qIEFycmF5UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGMjRFNTQwMTdFQTlGNTkwMEFCQjIxNyAvKiBBc3NlbWJseUhlbHBlcnMuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJRkVCMTM3NTcxQkIxMUVGOTAwQ0Q1MTAwIC8qIE1hY3JvQXNzZW1i
bGVyQVJNNjQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTI2NzhGOEUxQTAzMTAwOTAwNkEzMDZE
IC8qIEJhc2ljQmxvY2tMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjY0QjI3MTFB
Nzg0QkFGMDA2RTRFNjYgLyogQmluYXJ5U3dpdGNoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0
MjgwODYzMTA3RUMxMUEwMDEzRTdCMiAvKiBCb29sZWFuQ29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC03NTIwLDcgKzc1NzMsNiBAQAogCQkJCUE3N0YxODIxMTY0MDg4QjIwMDY0MEE0
NyAvKiBDb2RlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4Rjk0NDYxNjY3NjRGMTAw
RDYxOTcxIC8qIENvZGVPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZCNTgyNjcxNEQy
Nzk2QzAwQTlDMzA2IC8qIENvZGVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCURFNUEw
QTAwMUJBM0FDM0UwMDNENDQyNCAvKiBJbnRyaW5zaWNFbWl0dGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg2QjU4MjY5MTREMjc5NzAwMEE5QzMwNiAvKiBDb2RlUHJvZmlsaW5nLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGOEY5NDNDMTY2NzYzMTMwMEQ2MTk3MSAvKiBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEY5NDQyMTY2NzYzMzUwMEQ2MTk3
MSAvKiBDb2RlVHlwZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc1MzgsNiArNzU5MCw3IEBACiAJ
CQkJMTQyODA4MkUxMDdFQzA1NzAwMTNFN0IyIC8qIENvbnN0cnVjdERhdGEuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTU3RDIzRjExODkxQjVCNDAwMzFDN0ZBIC8qIENvbnRlbnRTZWFyY2hVdGls
aXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTJCNzE3QjUxQTA1OTdFMTAwN0FGNEYzIC8q
IENvbnRyb2xGbG93UHJvZmlsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZCQURGNTQxQkQx
RjRCODAwRTA3M0MxIC8qIENvcGllZEJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyNDAz
MDU1MTRCNDA0RTYwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDMjIzOUQxNzE2MjYyQkREMDA1QUM1RkQgLyogQ29weVZpc2l0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkExMTEyNDUxOTJGQ0U3OTAwNUVFMThEIC8qIEN1c3RvbUdldHRlclNldHRlci5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTc1ODQsNiArNzYzNyw3IEBACiAJCQkJMEYzOEIwMTkxN0NG
RTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uTW9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjNCM0ExQTE1M0U2OEYyMDAzRUQwRkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFRDY3QjkxQjI2MjU2RDAwNjZDRTE1IC8qIERGR0NvbnN0
YW50SG9pc3RpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjA5ODFGNzFCQzVFNTY1
MDA0ODE0RjggLyogREZHQ29weUJhcnJpZXJPcHRpbWl6YXRpb25QaGFzZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkJFMEY3MjE2QzFEQjAzMDA4MkM1RTggLyogREZHQ1BTUmV0aHJlYWRpbmdQ
aGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Q4OUNGNTE3QTBCOENDMDA3NzNBRDggLyog
REZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkZG
Qzk1OTE0RUY5MEE2MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC03ODI0LDYgKzc4NzgsNyBAQAogCQkJCUExRDc5MkZFMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFENzkzMDAx
QjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTEyQkJGRjQxQjA0NEE5ODAwNjY0QjY5IC8qIEludGxPYmplY3QuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJREU1QTBBMDAxQkEzQUMzRTAwM0Q0NDI0IC8qIEludHJpbnNpY0Vt
aXR0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzAxMTNENEIxQThEQjA5MzAwMzg0OEM0IC8q
IEl0ZXJhdG9yT3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MERDM0UwOTFCMkRG
MkM3MDAwNTQyOTkgLyogSXRlcmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTUwM0ZBMTkxODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC03ODQxLDcgKzc4OTYsNiBAQAogCQkJCTBGMjRFNTRDMTdFRTI3NDkwMEFC
QjIxNyAvKiBKSVRPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2Q0M4NUM0MEVF
N0E4OTQwMDI4ODY4MiAvKiBKSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBN0MxRThFNDExMkU3MkVGMDBBMzdGOTggLyogSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQkwRkJBREY1NDFCRDFGNEI4MDBFMDczQzEgLyogQ29waWVkQmxv
Y2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NjZEMjgxNUE4Q0MxRTAwOEYzNjNFIC8qIEpJ
VFN0dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDJCMTVBOENDMzgwMDhG
MzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjVFRjkx
RTE2ODc4RjdBMDAzRTVDMjUgLyogSklUVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzkz
NCw2ICs3OTg4LDcgQEAKIAkJCQkwRjJCNjZGQTE3QjZCNUFCMDBBN0FFM0YgLyogSlNUeXBlZEFy
cmF5Q29uc3RydWN0b3JzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkI2NkZDMTdCNkI1QUIw
MEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlQcm90b3R5cGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMkI2NkZFMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlzLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTUzNEM0NTdFMUJDNzI1NDkwMDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREVBN0UyNDQxQkJDNjc3MjAwRDc4NDQw
IC8qIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZF
M0M2MUExNjdCQUJFRTAwNkQ3NjBBIC8qIEpTVmFsdWUubW0gaW4gU291cmNlcyAqLywKIAkJCQkx
NEJENUEzMjBBM0U5MUY2MDBCQUY1OUMgLyogSlNWYWx1ZVJlZi5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTc5NjUsNiArODAyMCw3IEBACiAJCQkJMTRCNzIzQjIxMkQ3REE0NjAwM0JENUVEIC8qIE1h
Y2hpbmVTdGFja01hcmtlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVCM0VDRjE2MjM3RjZD
MDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZDNTY4
RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUZFQjEzNzU3MUJCMTFFRjkwMENENTEwMCAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE3MjkwMDlDMTc5NzZDNjAwMDMxNzI5OCAvKiBNYWNyb0Fz
c2VtYmxlckFSTXY3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFNjhDNjM4MUI5MERFMEIwMDQy
QkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdB
NEFFMDgxNzk3M0IyNjAwNTYxMkIxIC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtODA0NCw3ICs4MTAwLDYgQEAKIAkJCQk2NTQwQzdBMDFCODJFMUMzMDAw
RjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTQwQzdB
MTFCODJFMUMzMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldExpc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZDMzE0MTUxODE0NkQ3MDAwMDMzMjMyIC8qIFJlZ2lzdGVyU2V0LmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTUzNEM0NTdFMUJDNzI1NDkwMDc0NzZBNyAvKiBKU1R5cGVkQXJyYXlW
aWV3Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU3RDIzRUQxODkxQjU1NDAw
MzFDN0ZBIC8qIFJlZ3VsYXJFeHByZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1QkEx
NUU5MTgyMzQwQjMwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3IubW0gaW4gU291cmNlcyAqLywK
IAkJCQlBNTk0NTU4RjE4MjQ1RUZEMDBDQzM4NDMgLyogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTgxNDUsNyArODIwMCw2IEBACiAJCQkJNzA5RkI4NkIx
QUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkE0RUM5MEIxODYwRDZDMjAwOTRGNzgyIC8qIFdyaXRlQmFycmllckJ1ZmZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkM4MTUwQjE0MDQzQzBFMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVy
U3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwRjA5ODFGNzFCQzVFNTY1MDA0ODE0Rjgg
LyogREZHQ29weUJhcnJpZXJPcHRpbWl6YXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBN0U1QUIzQTE3OTlFNEIyMDBEMjgzM0QgLyogWDg2RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTg2M0M2RDlDMTUyMTExMUEwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXpl
VUNTMi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4NDEyREJBMzM3MDBBOUZFN0IgLyog
WWFyckludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Bs
YXRmb3JtV2luLmNtYWtlCmluZGV4IDA5NzFkNDQ0YmY3MzNlMTE5ZDU1ZmEyMzA2MWNlNDI1ZDZl
N2Q1M2EuLjE2MzJiN2UyM2EyZTYxZTNlZjQ1NDhjZWY3MDJiZDZmOTNkYTIyOTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTMwLDE1ICszMCwxMCBAQCBmaWxl
KENPUFkKIAogZmlsZShNQUtFX0RJUkVDVE9SWSAke0RFUklWRURfU09VUkNFU19ESVJ9L0Zvcndh
cmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlKQogCi1maWxlKEdMT0IgX0phdmFTY3JpcHRDb3Jl
X1NjcmlwdHMgIiR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9LyoiKQotZm9yZWFjaCAoX3Nj
cmlwdCAke19KYXZhU2NyaXB0Q29yZV9TY3JpcHRzfSkKLSAgICBmaWxlKENPUFkgJHtfc2NyaXB0
fSBERVNUSU5BVElPTiAke0RFUklWRURfU09VUkNFU19ESVJ9L0ZvcndhcmRpbmdIZWFkZXJzL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMpCi1lbmRmb3JlYWNoKCkKLQogc2V0KEphdmFTY3JpcHRDb3Jl
X1BPU1RfQlVJTERfQ09NTUFORCAiJHtDTUFLRV9CSU5BUllfRElSfS9EZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS9wb3N0QnVpbGQuY21kIikKIGZpbGUoV1JJVEUgIiR7SmF2YVNjcmlwdENv
cmVfUE9TVF9CVUlMRF9DT01NQU5EfSIgIkB4Y29weSAveSAvZCAvZiBcIiR7REVSSVZFRF9TT1VS
Q0VTX0RJUn0vSmF2YVNjcmlwdENvcmUvKi5oXCIgXCIke0RFUklWRURfU09VUkNFU19ESVJ9L0Zv
cndhcmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlXCIgPm51bCAyPm51bFxuIikKIGZpbGUoQVBQ
RU5EICIke0phdmFTY3JpcHRDb3JlX1BPU1RfQlVJTERfQ09NTUFORH0iICJAeGNvcHkgL3kgL2Qg
L2YgXCIke0RFUklWRURfU09VUkNFU19ESVJ9L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci8qLmhc
IiBcIiR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMvSmF2YVNjcmlwdENv
cmVcIiA+bnVsIDI+bnVsXG4iKQotZmlsZShBUFBFTkQgIiR7SmF2YVNjcmlwdENvcmVfUE9TVF9C
VUlMRF9DT01NQU5EfSIgIkB4Y29weSAveSAvZCAvZiBcIiR7SmF2YVNjcmlwdENvcmVfU0NSSVBU
U19ESVJ9LyouKlwiIFwiJHtERVJJVkVEX1NPVVJDRVNfRElSfS9Gb3J3YXJkaW5nSGVhZGVycy9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzXCIgPm51bCAyPm51bFxuIikKKwogZm9yZWFjaCAoX2RpcmVj
dG9yeSAke0phdmFTY3JpcHRDb3JlX0ZPUldBUkRJTkdfSEVBREVSU19ESVJFQ1RPUklFU30pCiAg
ICAgZmlsZShBUFBFTkQgIiR7SmF2YVNjcmlwdENvcmVfUE9TVF9CVUlMRF9DT01NQU5EfSIgIkB4
Y29weSAveSAvZCAvZiBcIiR7SkFWQVNDUklQVENPUkVfRElSfS8ke19kaXJlY3Rvcnl9LyouaFwi
IFwiJHtERVJJVkVEX1NPVVJDRVNfRElSfS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0Q29y
ZVwiID5udWwgMj5udWxcbiIpCiBlbmRmb3JlYWNoICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy9VcGRhdGVDb250ZW50cy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL1VwZGF0ZUNvbnRlbnRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3NmQ0NmZiNGM0MjMw
MmI4NWZmMTBjODUxZWIzNGMxZTI3ODk0YzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy9VcGRhdGVDb250ZW50cy5weQpAQCAtMCwwICsxLDQ4IEBACisj
IS91c3IvYmluL3B5dGhvbgorCisjIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisjICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisjICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgc3lzCitpbXBvcnQgb3MK
KworYXNzZXJ0KGxlbihzeXMuYXJndikgPT0gMykKKworY29tcCA9IHN5cy5hcmd2WzFdCitmaWxl
bmFtZSA9IHN5cy5hcmd2WzJdCisKK3QgPSBGYWxzZQorCitpZiBvcy5wYXRoLmlzZmlsZShmaWxl
bmFtZSk6CisgICAgZiA9IG9wZW4oZmlsZW5hbWUsICdyJykKKyAgICBjb21wYXJhdG9yID0gZi5y
ZWFkKCkKKyAgICBmLmNsb3NlKCkKKyAgICB0ID0gVHJ1ZQorCitpZiAobm90IHQgb3IgY29tcCAh
PSBjb21wYXJhdG9yKToKKyAgICBmID0gb3BlbihmaWxlbmFtZSwgJ3cnKQorICAgIGYud3JpdGUo
Y29tcCkKKyAgICBmLmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL2J1aWx0aW5zL19faW5pdF9fLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvYnVpbHRpbnMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmRmY2JhOTgxZDhmOGRhMDc4MTM1
OGNmZTY0ZmExYzc4MDc0YTE2MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2J1aWx0aW5zL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMyBAQAorIyBSZXF1
aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlIGZpbGVz
CisKK2Zyb20gYnVpbHRpbnMgaW1wb3J0ICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzY3Y2RhZDhhMzBkNzBj
Y2M0NWExOWQ4M2QyMjRhNjRmM2JlZmY3MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zLnB5CkBAIC0wLDAgKzEsMTIgQEAK
KyMgVGhpcyBmaWxlIGlzIHVzZWQgdG8gc2ltdWxhdGUgdGhlIGJ1aWx0aW5zLyBkaXJlY3Rvcnkg
d2hlbiBnZW5lcmF0ZS1qcy1idWlsdGlucy5weQorIyBpcyBydW4gZnJvbSBKYXZhU2NyaXB0Q29y
ZSBmcmFtZXdvcmsncyBwcml2YXRlIGhlYWRlcnMgZGlyZWN0b3J5LCB3aGljaCBpcyBmbGF0dGVu
ZWQuCisKK2Zyb20gYnVpbHRpbnNfbW9kZWwgaW1wb3J0ICoKK2Zyb20gYnVpbHRpbnNfdGVtcGxh
dGVzIGltcG9ydCAqCisKK2Zyb20gYnVpbHRpbnNfZ2VuZXJhdG9yIGltcG9ydCAqCitmcm9tIGJ1
aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlciBpbXBvcnQgKgorZnJvbSBidWlsdGluc19n
ZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbiBpbXBvcnQgKgorZnJvbSBidWlsdGluc19n
ZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIgaW1wb3J0ICoKK2Zyb20gYnVpbHRpbnNfZ2VuZXJhdGVf
c2VwYXJhdGVfaW1wbGVtZW50YXRpb24gaW1wb3J0ICoKK2Zyb20gYnVpbHRpbnNfZ2VuZXJhdGVf
c2VwYXJhdGVfd3JhcHBlciBpbXBvcnQgKgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfY29tYmluZWRfaGVhZGVyLnB5
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJh
dGVfY29tYmluZWRfaGVhZGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwODlmZGY1OWEyYmFlOTYxNWU5OGE4
YTZlMmNjMjk4MDQ5M2U2MTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9oZWFkZXIucHkK
QEAgLTAsMCArMSwxNjIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQg
KGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmln
aHQgKGMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitpbXBvcnQgbG9n
Z2luZworaW1wb3J0IHJlCitpbXBvcnQgc3RyaW5nCitmcm9tIHN0cmluZyBpbXBvcnQgVGVtcGxh
dGUKKworZnJvbSBidWlsdGluc19nZW5lcmF0b3IgaW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9yCitm
cm9tIGJ1aWx0aW5zX3RlbXBsYXRlcyBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3JUZW1wbGF0ZXMg
YXMgVGVtcGxhdGVzCisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwnKQorCisKK2Ns
YXNzIEJ1aWx0aW5zQ29tYmluZWRIZWFkZXJHZW5lcmF0b3IoQnVpbHRpbnNHZW5lcmF0b3IpOgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCk6CisgICAgICAgIEJ1aWx0aW5zR2VuZXJhdG9y
Ll9faW5pdF9fKHNlbGYsIG1vZGVsKQorCisgICAgZGVmIG91dHB1dF9maWxlbmFtZShzZWxmKToK
KyAgICAgICAgcmV0dXJuICIlc0J1aWx0aW5zLmgiICUgc2VsZi5tb2RlbCgpLmZyYW1ld29yay5z
ZXR0aW5nKCduYW1lc3BhY2UnKQorCisgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKKyAg
ICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICduYW1lc3BhY2UnOiBzZWxmLm1vZGVsKCkuZnJh
bWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpLAorICAgICAgICAgICAgJ2hlYWRlckd1YXJkJzog
c2VsZi5vdXRwdXRfZmlsZW5hbWUoKS5yZXBsYWNlKCcuJywgJ18nKSwKKyAgICAgICAgICAgICdt
YWNyb1ByZWZpeCc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbWFjcm9fcHJlZml4
JyksCisgICAgICAgIH0KKworICAgICAgICBzZWN0aW9ucyA9IFtdCisgICAgICAgIHNlY3Rpb25z
LmFwcGVuZChzZWxmLmdlbmVyYXRlX2xpY2Vuc2UoKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5k
KFRlbXBsYXRlKFRlbXBsYXRlcy5Eb05vdEVkaXRXYXJuaW5nKS5zdWJzdGl0dXRlKGFyZ3MpKQor
ICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkhlYWRlckluY2x1ZGVH
dWFyZFRvcCkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYu
Z2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlvbnMoKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5k
KFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VUb3ApLnN1YnN0aXR1dGUoYXJncykpCisgICAg
ICAgIGZvciBvYmplY3QgaW4gc2VsZi5tb2RlbCgpLm9iamVjdHM6CisgICAgICAgICAgICBzZWN0
aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9zZWN0aW9uX2Zvcl9vYmplY3Qob2JqZWN0KSkKKyAg
ICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV90YWJs
ZV9tYWNybygpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9zZWN0aW9u
X2Zvcl9jb2RlX25hbWVfbWFjcm8oKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRl
KFRlbXBsYXRlcy5Db21iaW5lZEhlYWRlclN0YXRpY01hY3Jvcykuc3Vic3RpdHV0ZShhcmdzKSkK
KyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VCb3R0
b20pLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShU
ZW1wbGF0ZXMuSGVhZGVySW5jbHVkZUd1YXJkQm90dG9tKS5zdWJzdGl0dXRlKGFyZ3MpKQorCisg
ICAgICAgIHJldHVybiAiXG5cbiIuam9pbihzZWN0aW9ucykKKworICAgIGRlZiBnZW5lcmF0ZV9m
b3J3YXJkX2RlY2xhcmF0aW9ucyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIiIm5hbWVzcGFjZSBK
U0MgeworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOworY2xhc3MgVk07CisKK2VudW0gY2xhc3Mg
Q29uc3RydWN0QWJpbGl0eSA6IHVuc2lnbmVkOworfSIiIgorCisgICAgZGVmIGdlbmVyYXRlX3Nl
Y3Rpb25fZm9yX29iamVjdChzZWxmLCBvYmplY3QpOgorICAgICAgICBsaW5lcyA9IFtdCisgICAg
ICAgIGxpbmVzLmFwcGVuZCgnLyogJXMgKi8nICUgb2JqZWN0Lm9iamVjdF9uYW1lKQorICAgICAg
ICBsaW5lcy5leHRlbmQoc2VsZi5nZW5lcmF0ZV9leHRlcm5zX2Zvcl9vYmplY3Qob2JqZWN0KSkK
KyAgICAgICAgbGluZXMuYXBwZW5kKCIiKQorICAgICAgICBsaW5lcy5leHRlbmQoc2VsZi5nZW5l
cmF0ZV9tYWNyb3NfZm9yX29iamVjdChvYmplY3QpKQorICAgICAgICBsaW5lcy5hcHBlbmQoIiIp
CisgICAgICAgIGxpbmVzLmV4dGVuZChzZWxmLmdlbmVyYXRlX2RlZmluZXNfZm9yX29iamVjdChv
YmplY3QpKQorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQorCisgICAgZGVmIGdlbmVy
YXRlX2V4dGVybnNfZm9yX29iamVjdChzZWxmLCBvYmplY3QpOgorICAgICAgICBsaW5lcyA9IFtd
CisKKyAgICAgICAgZm9yIGZ1bmN0aW9uIGluIG9iamVjdC5mdW5jdGlvbnM6CisgICAgICAgICAg
ICBmdW5jdGlvbl9hcmdzID0geworICAgICAgICAgICAgICAgICdjb2RlTmFtZSc6IEJ1aWx0aW5z
R2VuZXJhdG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rpb24oZnVuY3Rpb24pICsgJ0NvZGUnLAorICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiIiZXh0ZXJuIGNvbnN0IGNo
YXIqIHNfJShjb2RlTmFtZSlzOworZXh0ZXJuIGNvbnN0IGludCBzXyUoY29kZU5hbWUpc0xlbmd0
aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc18lKGNvZGVOYW1lKXNDb25z
dHJ1Y3RBYmlsaXR5OyIiIiAlIGZ1bmN0aW9uX2FyZ3MpCisKKyAgICAgICAgcmV0dXJuIGxpbmVz
CisKKyAgICBkZWYgZ2VuZXJhdGVfbWFjcm9zX2Zvcl9vYmplY3Qoc2VsZiwgb2JqZWN0KToKKyAg
ICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICdtYWNyb1ByZWZpeCc6IHNlbGYubW9kZWwoKS5m
cmFtZXdvcmsuc2V0dGluZygnbWFjcm9fcHJlZml4JyksCisgICAgICAgICAgICAnb2JqZWN0TWFj
cm8nOiBvYmplY3Qub2JqZWN0X25hbWUucmVwbGFjZSgnLicsICcnKS51cHBlcigpLAorICAgICAg
ICB9CisKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoIiNkZWZpbmUg
JShtYWNyb1ByZWZpeClzX0ZPUkVBQ0hfJShvYmplY3RNYWNybylzX0JVSUxUSU5fREFUQShtYWNy
bykgXFwiICUgYXJncykKKyAgICAgICAgZm9yIGZ1bmN0aW9uIGluIG9iamVjdC5mdW5jdGlvbnM6
CisgICAgICAgICAgICBmdW5jdGlvbl9hcmdzID0geworICAgICAgICAgICAgICAgICdmdW5jTmFt
ZSc6IGZ1bmN0aW9uLmZ1bmN0aW9uX25hbWUsCisgICAgICAgICAgICAgICAgJ21hbmdsZWROYW1l
JzogQnVpbHRpbnNHZW5lcmF0b3IubWFuZ2xlZE5hbWVGb3JGdW5jdGlvbihmdW5jdGlvbiksCisg
ICAgICAgICAgICAgICAgJ3BhcmFtQ291bnQnOiBsZW4oZnVuY3Rpb24ucGFyYW1ldGVycyksCisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiICAgIG1hY3JvKCUoZnVu
Y05hbWUpcywgJShtYW5nbGVkTmFtZSlzLCAlKHBhcmFtQ291bnQpZCkgXFwiICUgZnVuY3Rpb25f
YXJncykKKyAgICAgICAgcmV0dXJuIGxpbmVzCisKKyAgICBkZWYgZ2VuZXJhdGVfZGVmaW5lc19m
b3Jfb2JqZWN0KHNlbGYsIG9iamVjdCk6CisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgZm9y
IGZ1bmN0aW9uIGluIG9iamVjdC5mdW5jdGlvbnM6CisgICAgICAgICAgICBhcmdzID0geworICAg
ICAgICAgICAgICAgICdtYWNyb1ByZWZpeCc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGlu
ZygnbWFjcm9fcHJlZml4JyksCisgICAgICAgICAgICAgICAgJ29iamVjdE1hY3JvJzogb2JqZWN0
Lm9iamVjdF9uYW1lLnJlcGxhY2UoJy4nLCAnJykudXBwZXIoKSwKKyAgICAgICAgICAgICAgICAn
ZnVuY3Rpb25NYWNybyc6IGZ1bmN0aW9uLmZ1bmN0aW9uX25hbWUudXBwZXIoKSwKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiI2RlZmluZSAlKG1hY3JvUHJlZml4KXNf
QlVJTFRJTl8lKG9iamVjdE1hY3JvKXNfJShmdW5jdGlvbk1hY3JvKXMgMSIgJSBhcmdzKQorCisg
ICAgICAgIHJldHVybiBsaW5lcworCisgICAgZGVmIGdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVf
dGFibGVfbWFjcm8oc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbWFjcm9Q
cmVmaXgnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ21hY3JvX3ByZWZpeCcpLAor
ICAgICAgICB9CisKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoIiNk
ZWZpbmUgJShtYWNyb1ByZWZpeClzX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKG1hY3JvKSBcXCIgJSBh
cmdzKQorICAgICAgICBmb3IgZnVuY3Rpb24gaW4gc2VsZi5tb2RlbCgpLmFsbF9mdW5jdGlvbnMo
KToKKyAgICAgICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ2Z1bmNO
YW1lJzogZnVuY3Rpb24uZnVuY3Rpb25fbmFtZSwKKyAgICAgICAgICAgICAgICAnY29kZU5hbWUn
OiBCdWlsdGluc0dlbmVyYXRvci5tYW5nbGVkTmFtZUZvckZ1bmN0aW9uKGZ1bmN0aW9uKSArICdD
b2RlJywKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIgICAgbWFj
cm8oJShjb2RlTmFtZSlzLCAlKGZ1bmNOYW1lKXMsIHNfJShjb2RlTmFtZSlzTGVuZ3RoKSBcXCIg
JSBmdW5jdGlvbl9hcmdzKQorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQorCisgICAg
ZGVmIGdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfbmFtZV9tYWNybyhzZWxmKToKKyAgICAgICAg
YXJncyA9IHsKKyAgICAgICAgICAgICdtYWNyb1ByZWZpeCc6IHNlbGYubW9kZWwoKS5mcmFtZXdv
cmsuc2V0dGluZygnbWFjcm9fcHJlZml4JyksCisgICAgICAgIH0KKworICAgICAgICBsaW5lcyA9
IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZCgiI2RlZmluZSAlKG1hY3JvUHJlZml4KXNfRk9SRUFD
SF9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFxcIiAlIGFyZ3MpCisgICAgICAgIHVuaXF1
ZV9uYW1lcyA9IGxpc3Qoc2V0KFtmdW5jdGlvbi5mdW5jdGlvbl9uYW1lIGZvciBmdW5jdGlvbiBp
biBzZWxmLm1vZGVsKCkuYWxsX2Z1bmN0aW9ucygpXSkpCisgICAgICAgIHVuaXF1ZV9uYW1lcy5z
b3J0KCkKKyAgICAgICAgZm9yIGZ1bmN0aW9uX25hbWUgaW4gdW5pcXVlX25hbWVzOgorICAgICAg
ICAgICAgZnVuY3Rpb25fYXJncyA9IHsKKyAgICAgICAgICAgICAgICAnZnVuY05hbWUnOiBmdW5j
dGlvbl9uYW1lLAorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiAg
ICBtYWNybyglKGZ1bmNOYW1lKXMpIFxcIiAlIGZ1bmN0aW9uX2FyZ3MpCisgICAgICAgIHJldHVy
biAnXG4nLmpvaW4obGluZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5w
eSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVy
YXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyODc4ZDM2MTBiYzNk
MTM5N2RjMTE1ODNiNGQzOWI4MmY0MjZkODgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9p
bXBsZW1lbnRhdGlvbi5weQpAQCAtMCwwICsxLDkwIEBACisjIS91c3IvYmluL2VudiBweXRob24K
KyMKKyMgQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCByZQoraW1wb3J0IHN0cmluZworZnJvbSBzdHJp
bmcgaW1wb3J0IFRlbXBsYXRlCisKK2Zyb20gYnVpbHRpbnNfZ2VuZXJhdG9yIGltcG9ydCBCdWls
dGluc0dlbmVyYXRvcgorZnJvbSBidWlsdGluc19tb2RlbCBpbXBvcnQgRnJhbWV3b3JrLCBGcmFt
ZXdvcmtzCitmcm9tIGJ1aWx0aW5zX3RlbXBsYXRlcyBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3JU
ZW1wbGF0ZXMgYXMgVGVtcGxhdGVzCisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwn
KQorCisKK2NsYXNzIEJ1aWx0aW5zQ29tYmluZWRJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihCdWls
dGluc0dlbmVyYXRvcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZGVsKToKKyAgICAgICAg
QnVpbHRpbnNHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWwpCisKKyAgICBkZWYgb3V0cHV0
X2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gIiVzQnVpbHRpbnMuY3BwIiAlIHNlbGYu
bW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbmFtZXNwYWNlJykKKworICAgIGRlZiBnZW5lcmF0
ZV9vdXRwdXQoc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbmFtZXNwYWNl
Jzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCduYW1lc3BhY2UnKSwKKyAgICAgICAg
ICAgICdtYWNyb1ByZWZpeCc6IHNlbGYubW9kZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbWFjcm9f
cHJlZml4JyksCisgICAgICAgIH0KKworICAgICAgICBzZWN0aW9ucyA9IFtdCisgICAgICAgIHNl
Y3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2xpY2Vuc2UoKSkKKyAgICAgICAgc2VjdGlvbnMu
YXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5Eb05vdEVkaXRXYXJuaW5nKS5zdWJzdGl0dXRlKGFy
Z3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9oZWFkZXJfaW5jbHVk
ZXMoKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3Bh
Y2VUb3ApLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIGZvciBmdW5jdGlvbiBpbiBzZWxmLm1v
ZGVsKCkuYWxsX2Z1bmN0aW9ucygpOgorICAgICAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYu
Z2VuZXJhdGVfZW1iZWRkZWRfY29kZV9zdHJpbmdfc2VjdGlvbl9mb3JfZnVuY3Rpb24oZnVuY3Rp
b24pKQorICAgICAgICBpZiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrIGlzIEZyYW1ld29ya3MuSmF2
YVNjcmlwdENvcmU6CisgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxh
dGVzLkNvbWJpbmVkSlNDSW1wbGVtZW50YXRpb25TdGF0aWNNYWNyb3MpLnN1YnN0aXR1dGUoYXJn
cykpCisgICAgICAgIGVsaWYgc2VsZi5tb2RlbCgpLmZyYW1ld29yayBpcyBGcmFtZXdvcmtzLldl
YkNvcmU6CisgICAgICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkNv
bWJpbmVkV2ViQ29yZUltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9zKS5zdWJzdGl0dXRlKGFyZ3Mp
KQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZUJv
dHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkKKworICAgICAgICByZXR1cm4gIlxuXG4iLmpvaW4oc2Vj
dGlvbnMpCisKKyAgICBkZWYgZ2VuZXJhdGVfaGVhZGVyX2luY2x1ZGVzKHNlbGYpOgorICAgICAg
ICBoZWFkZXJfaW5jbHVkZXMgPSBbCisgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29yZSJdLAor
ICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAiYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJKYXZhU2NyaXB0Q29y
ZSIsICJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50
aW1lL0V4ZWN1dGFibGUuaCIpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIChbIkphdmFT
Y3JpcHRDb3JlIiwgIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3Jl
IiwgInJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oIiksCisgICAgICAgICAgICApLAorICAgICAgICAg
ICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVu
dGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAo
WyJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1l
L0pTQ0pTVmFsdWVJbmxpbmVzLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAoWyJK
YXZhU2NyaXB0Q29yZSIsICJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0
Q29yZSIsICJydW50aW1lL1ZNLmgiKSwKKyAgICAgICAgICAgICksCisgICAgICAgIF0KKworICAg
ICAgICByZXR1cm4gJ1xuJy5qb2luKHNlbGYuZ2VuZXJhdGVfaW5jbHVkZXNfZnJvbV9lbnRyaWVz
KGhlYWRlcl9pbmNsdWRlcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBh
cmF0ZV9oZWFkZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWIxZWI3ZDY3MWNhMTFjMzU4YTUxOTdkYWRhZGU3
OTUxOTBkMDAzMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weQpAQCAtMCww
ICsxLDE3NSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAx
NCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykg
MjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCBsb2dnaW5nCitp
bXBvcnQgcmUKK2ltcG9ydCBzdHJpbmcKK2Zyb20gc3RyaW5nIGltcG9ydCBUZW1wbGF0ZQorCitm
cm9tIGJ1aWx0aW5zX2dlbmVyYXRvciBpbXBvcnQgQnVpbHRpbnNHZW5lcmF0b3IKK2Zyb20gYnVp
bHRpbnNfdGVtcGxhdGVzIGltcG9ydCBCdWlsdGluc0dlbmVyYXRvclRlbXBsYXRlcyBhcyBUZW1w
bGF0ZXMKKworbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcpCisKKworY2xhc3MgQnVp
bHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvcihCdWlsdGluc0dlbmVyYXRvcik6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIG1vZGVsLCBvYmplY3QpOgorICAgICAgICBCdWlsdGluc0dlbmVyYXRv
ci5fX2luaXRfXyhzZWxmLCBtb2RlbCkKKyAgICAgICAgc2VsZi5vYmplY3QgPSBvYmplY3QKKwor
ICAgIGRlZiBvdXRwdXRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiAiJXNCdWlsdGlu
cy5oIiAlIEJ1aWx0aW5zR2VuZXJhdG9yLm1hbmdsZWROYW1lRm9yT2JqZWN0KHNlbGYub2JqZWN0
KQorCisgICAgZGVmIG1hY3JvX3ByZWZpeChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYubW9k
ZWwoKS5mcmFtZXdvcmsuc2V0dGluZygnbWFjcm9fcHJlZml4JykKKworICAgIGRlZiBnZW5lcmF0
ZV9vdXRwdXQoc2VsZik6CisgICAgICAgIGFyZ3MgPSB7CisgICAgICAgICAgICAnbmFtZXNwYWNl
Jzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCduYW1lc3BhY2UnKSwKKyAgICAgICAg
ICAgICdoZWFkZXJHdWFyZCc6IHNlbGYub3V0cHV0X2ZpbGVuYW1lKCkucmVwbGFjZSgnLicsICdf
JyksCisgICAgICAgICAgICAnbWFjcm9QcmVmaXgnOiBzZWxmLm1hY3JvX3ByZWZpeCgpLAorICAg
ICAgICAgICAgJ29iamVjdE5hbWUnOiBzZWxmLm9iamVjdC5vYmplY3RfbmFtZS51cHBlcigpLAor
ICAgICAgICB9CisKKyAgICAgICAgc2VjdGlvbnMgPSBbXQorICAgICAgICBzZWN0aW9ucy5hcHBl
bmQoc2VsZi5nZW5lcmF0ZV9saWNlbnNlKCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1w
bGF0ZShUZW1wbGF0ZXMuRG9Ob3RFZGl0V2FybmluZykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAg
ICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5IZWFkZXJJbmNsdWRlR3VhcmRU
b3ApLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVy
YXRlX2hlYWRlcl9pbmNsdWRlcygpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5l
cmF0ZV9mb3J3YXJkX2RlY2xhcmF0aW9ucygpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVt
cGxhdGUoVGVtcGxhdGVzLk5hbWVzcGFjZVRvcCkuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAg
c2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfc2VjdGlvbl9mb3Jfb2JqZWN0KHNlbGYub2Jq
ZWN0KSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfc2VjdGlvbl9mb3Jf
Y29kZV90YWJsZV9tYWNybygpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0
ZV9zZWN0aW9uX2Zvcl9jb2RlX25hbWVfbWFjcm8oKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5k
KFRlbXBsYXRlKFRlbXBsYXRlcy5TZXBhcmF0ZUhlYWRlclN0YXRpY01hY3Jvcykuc3Vic3RpdHV0
ZShhcmdzKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1l
c3BhY2VCb3R0b20pLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChU
ZW1wbGF0ZShUZW1wbGF0ZXMuSGVhZGVySW5jbHVkZUd1YXJkQm90dG9tKS5zdWJzdGl0dXRlKGFy
Z3MpKQorCisgICAgICAgIHJldHVybiAiXG5cbiIuam9pbihzZWN0aW9ucykKKworICAgIGRlZiBn
ZW5lcmF0ZV9mb3J3YXJkX2RlY2xhcmF0aW9ucyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIiIm5h
bWVzcGFjZSBKU0MgeworY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOworfSIiIgorCisgICAgZGVm
IGdlbmVyYXRlX2hlYWRlcl9pbmNsdWRlcyhzZWxmKToKKyAgICAgICAgaGVhZGVyX2luY2x1ZGVz
ID0gWworICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNj
cmlwdENvcmUiLCAiYnVpbHRpbnMvQnVpbHRpblV0aWxzLmgiKSwKKyAgICAgICAgICAgICksCisg
ICAgICAgIF0KKworICAgICAgICByZXR1cm4gJ1xuJy5qb2luKHNlbGYuZ2VuZXJhdGVfaW5jbHVk
ZXNfZnJvbV9lbnRyaWVzKGhlYWRlcl9pbmNsdWRlcykpCisKKyAgICBkZWYgZ2VuZXJhdGVfc2Vj
dGlvbl9mb3Jfb2JqZWN0KHNlbGYsIG9iamVjdCk6CisgICAgICAgIGxpbmVzID0gW10KKyAgICAg
ICAgbGluZXMuYXBwZW5kKCcvKiAlcyAqLycgJSBvYmplY3Qub2JqZWN0X25hbWUpCisgICAgICAg
IGxpbmVzLmV4dGVuZChzZWxmLmdlbmVyYXRlX2V4dGVybnNfZm9yX29iamVjdChvYmplY3QpKQor
ICAgICAgICBsaW5lcy5hcHBlbmQoIiIpCisgICAgICAgIGxpbmVzLmV4dGVuZChzZWxmLmdlbmVy
YXRlX21hY3Jvc19mb3Jfb2JqZWN0KG9iamVjdCkpCisgICAgICAgIGxpbmVzLmFwcGVuZCgiIikK
KyAgICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2VuZXJhdGVfZGVmaW5lc19mb3Jfb2JqZWN0KG9i
amVjdCkpCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCisKKyAgICBkZWYgZ2VuZXJh
dGVfZXh0ZXJuc19mb3Jfb2JqZWN0KHNlbGYsIG9iamVjdCk6CisgICAgICAgIGxpbmVzID0gW10K
KworICAgICAgICBmb3IgZnVuY3Rpb24gaW4gb2JqZWN0LmZ1bmN0aW9uczoKKyAgICAgICAgICAg
IGZ1bmN0aW9uX2FyZ3MgPSB7CisgICAgICAgICAgICAgICAgJ2NvZGVOYW1lJzogQnVpbHRpbnNH
ZW5lcmF0b3IubWFuZ2xlZE5hbWVGb3JGdW5jdGlvbihmdW5jdGlvbikgKyAnQ29kZScsCisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiIiJleHRlcm4gY29uc3QgY2hh
ciogc18lKGNvZGVOYW1lKXM7CitleHRlcm4gY29uc3QgaW50IHNfJShjb2RlTmFtZSlzTGVuZ3Ro
OworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzXyUoY29kZU5hbWUpc0NvbnN0
cnVjdEFiaWxpdHk7IiIiICUgZnVuY3Rpb25fYXJncykKKworICAgICAgICByZXR1cm4gbGluZXMK
KworICAgIGRlZiBnZW5lcmF0ZV9tYWNyb3NfZm9yX29iamVjdChzZWxmLCBvYmplY3QpOgorICAg
ICAgICBhcmdzID0geworICAgICAgICAgICAgJ21hY3JvUHJlZml4Jzogc2VsZi5tYWNyb19wcmVm
aXgoKSwKKyAgICAgICAgICAgICdvYmplY3RNYWNybyc6IG9iamVjdC5vYmplY3RfbmFtZS5yZXBs
YWNlKCcuJywgJ18nKS51cHBlcigpLAorICAgICAgICB9CisKKyAgICAgICAgbGluZXMgPSBbXQor
ICAgICAgICBsaW5lcy5hcHBlbmQoIiNkZWZpbmUgJShtYWNyb1ByZWZpeClzX0ZPUkVBQ0hfJShv
YmplY3RNYWNybylzX0JVSUxUSU5fREFUQShtYWNybykgXFwiICUgYXJncykKKyAgICAgICAgZm9y
IGZ1bmN0aW9uIGluIG9iamVjdC5mdW5jdGlvbnM6CisgICAgICAgICAgICBmdW5jdGlvbl9hcmdz
ID0geworICAgICAgICAgICAgICAgICdmdW5jTmFtZSc6IGZ1bmN0aW9uLmZ1bmN0aW9uX25hbWUs
CisgICAgICAgICAgICAgICAgJ21hbmdsZWROYW1lJzogQnVpbHRpbnNHZW5lcmF0b3IubWFuZ2xl
ZE5hbWVGb3JGdW5jdGlvbihmdW5jdGlvbiksCisgICAgICAgICAgICAgICAgJ3BhcmFtQ291bnQn
OiBsZW4oZnVuY3Rpb24ucGFyYW1ldGVycyksCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGxpbmVzLmFwcGVuZCgiICAgIG1hY3JvKCUoZnVuY05hbWUpcywgJShtYW5nbGVkTmFtZSlzLCAl
KHBhcmFtQ291bnQpZCkgXFwiICUgZnVuY3Rpb25fYXJncykKKyAgICAgICAgcmV0dXJuIGxpbmVz
CisKKyAgICBkZWYgZ2VuZXJhdGVfZGVmaW5lc19mb3Jfb2JqZWN0KHNlbGYsIG9iamVjdCk6Cisg
ICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgZm9yIGZ1bmN0aW9uIGluIG9iamVjdC5mdW5jdGlv
bnM6CisgICAgICAgICAgICBhcmdzID0geworICAgICAgICAgICAgICAgICdtYWNyb1ByZWZpeCc6
IHNlbGYubWFjcm9fcHJlZml4KCksCisgICAgICAgICAgICAgICAgJ29iamVjdE1hY3JvJzogb2Jq
ZWN0Lm9iamVjdF9uYW1lLnJlcGxhY2UoJy4nLCAnXycpLnVwcGVyKCksCisgICAgICAgICAgICAg
ICAgJ2Z1bmN0aW9uTWFjcm8nOiBmdW5jdGlvbi5mdW5jdGlvbl9uYW1lLnVwcGVyKCksCisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiNkZWZpbmUgJShtYWNyb1ByZWZp
eClzX0JVSUxUSU5fJShvYmplY3RNYWNybylzXyUoZnVuY3Rpb25NYWNybylzIDEiICUgYXJncykK
KworICAgICAgICByZXR1cm4gbGluZXMKKworICAgIGRlZiBnZW5lcmF0ZV9zZWN0aW9uX2Zvcl9j
b2RlX3RhYmxlX21hY3JvKHNlbGYpOgorICAgICAgICBhcmdzID0geworICAgICAgICAgICAgJ21h
Y3JvUHJlZml4Jzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdtYWNyb19wcmVmaXgn
KSwKKyAgICAgICAgICAgICdvYmplY3RNYWNybyc6IHNlbGYub2JqZWN0Lm9iamVjdF9uYW1lLnVw
cGVyKCksCisgICAgICAgIH0KKworICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFw
cGVuZCgiI2RlZmluZSAlKG1hY3JvUHJlZml4KXNfRk9SRUFDSF8lKG9iamVjdE1hY3JvKXNfQlVJ
TFRJTl9DT0RFKG1hY3JvKSBcXCIgJSBhcmdzKQorICAgICAgICBmb3IgZnVuY3Rpb24gaW4gc2Vs
Zi5vYmplY3QuZnVuY3Rpb25zOgorICAgICAgICAgICAgZnVuY3Rpb25fYXJncyA9IHsKKyAgICAg
ICAgICAgICAgICAnZnVuY05hbWUnOiBmdW5jdGlvbi5mdW5jdGlvbl9uYW1lLAorICAgICAgICAg
ICAgICAgICdjb2RlTmFtZSc6IEJ1aWx0aW5zR2VuZXJhdG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rp
b24oZnVuY3Rpb24pICsgJ0NvZGUnLAorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsaW5l
cy5hcHBlbmQoIiAgICBtYWNybyglKGNvZGVOYW1lKXMsICUoZnVuY05hbWUpcywgc18lKGNvZGVO
YW1lKXNMZW5ndGgpIFxcIiAlIGZ1bmN0aW9uX2FyZ3MpCisgICAgICAgIHJldHVybiAnXG4nLmpv
aW4obGluZXMpCisKKyAgICBkZWYgZ2VuZXJhdGVfc2VjdGlvbl9mb3JfY29kZV9uYW1lX21hY3Jv
KHNlbGYpOgorICAgICAgICBhcmdzID0geworICAgICAgICAgICAgJ21hY3JvUHJlZml4Jzogc2Vs
Zi5tYWNyb19wcmVmaXgoKSwKKyAgICAgICAgICAgICdvYmplY3RNYWNybyc6IHNlbGYub2JqZWN0
Lm9iamVjdF9uYW1lLnVwcGVyKCksCisgICAgICAgIH0KKworICAgICAgICBsaW5lcyA9IFtdCisg
ICAgICAgIGxpbmVzLmFwcGVuZCgiI2RlZmluZSAlKG1hY3JvUHJlZml4KXNfRk9SRUFDSF8lKG9i
amVjdE1hY3JvKXNfQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcXCIgJSBhcmdzKQorICAg
ICAgICB1bmlxdWVfbmFtZXMgPSBsaXN0KHNldChbZnVuY3Rpb24uZnVuY3Rpb25fbmFtZSBmb3Ig
ZnVuY3Rpb24gaW4gc2VsZi5vYmplY3QuZnVuY3Rpb25zXSkpCisgICAgICAgIHVuaXF1ZV9uYW1l
cy5zb3J0KCkKKyAgICAgICAgZm9yIGZ1bmN0aW9uX25hbWUgaW4gdW5pcXVlX25hbWVzOgorICAg
ICAgICAgICAgZnVuY3Rpb25fYXJncyA9IHsKKyAgICAgICAgICAgICAgICAnZnVuY05hbWUnOiBm
dW5jdGlvbl9uYW1lLAorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQo
IiAgICBtYWNybyglKGZ1bmNOYW1lKXMpIFxcIiAlIGZ1bmN0aW9uX2FyZ3MpCisgICAgICAgIHJl
dHVybiAnXG4nLmpvaW4obGluZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9pbXBsZW1lbnRhdGlv
bi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dl
bmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjMjI5MDRiNWNl
MDI1ZDc4NmVjOTMzNTEwNWVmOWJkNWNlZDY0NDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0
ZV9pbXBsZW1lbnRhdGlvbi5weQpAQCAtMCwwICsxLDk5IEBACisjIS91c3IvYmluL2VudiBweXRo
b24KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCByZQoraW1wb3J0IHN0cmluZworZnJvbSBz
dHJpbmcgaW1wb3J0IFRlbXBsYXRlCisKK2Zyb20gYnVpbHRpbnNfZ2VuZXJhdG9yIGltcG9ydCBC
dWlsdGluc0dlbmVyYXRvciwgV0tfbGNmaXJzdAorZnJvbSBidWlsdGluc19tb2RlbCBpbXBvcnQg
RnJhbWV3b3JrLCBGcmFtZXdvcmtzCitmcm9tIGJ1aWx0aW5zX3RlbXBsYXRlcyBpbXBvcnQgQnVp
bHRpbnNHZW5lcmF0b3JUZW1wbGF0ZXMgYXMgVGVtcGxhdGVzCisKK2xvZyA9IGxvZ2dpbmcuZ2V0
TG9nZ2VyKCdnbG9iYWwnKQorCisKK2NsYXNzIEJ1aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlv
bkdlbmVyYXRvcihCdWlsdGluc0dlbmVyYXRvcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1v
ZGVsLCBvYmplY3QpOgorICAgICAgICBCdWlsdGluc0dlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBt
b2RlbCkKKyAgICAgICAgc2VsZi5vYmplY3QgPSBvYmplY3QKKworICAgIGRlZiBvdXRwdXRfZmls
ZW5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiAiJXNCdWlsdGlucy5jcHAiICUgQnVpbHRpbnNH
ZW5lcmF0b3IubWFuZ2xlZE5hbWVGb3JPYmplY3Qoc2VsZi5vYmplY3QpCisKKyAgICBkZWYgbWFj
cm9fcHJlZml4KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5tb2RlbCgpLmZyYW1ld29yay5z
ZXR0aW5nKCdtYWNyb19wcmVmaXgnKQorCisgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToK
KyAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICduYW1lc3BhY2UnOiBzZWxmLm1vZGVsKCku
ZnJhbWV3b3JrLnNldHRpbmcoJ25hbWVzcGFjZScpLAorICAgICAgICAgICAgJ21hY3JvUHJlZml4
Jzogc2VsZi5tYWNyb19wcmVmaXgoKSwKKyAgICAgICAgICAgICdvYmplY3RNYWNybyc6IHNlbGYu
b2JqZWN0Lm9iamVjdF9uYW1lLnVwcGVyKCksCisgICAgICAgICAgICAnb2JqZWN0TmFtZUxDJzog
V0tfbGNmaXJzdChzZWxmLm9iamVjdC5vYmplY3RfbmFtZSksCisgICAgICAgIH0KKworICAgICAg
ICBzZWN0aW9ucyA9IFtdCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX2xp
Y2Vuc2UoKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5Eb05v
dEVkaXRXYXJuaW5nKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQo
c2VsZi5nZW5lcmF0ZV9oZWFkZXJfaW5jbHVkZXMoKSkKKyAgICAgICAgc2VjdGlvbnMuYXBwZW5k
KFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VUb3ApLnN1YnN0aXR1dGUoYXJncykpCisgICAg
ICAgIGZvciBmdW5jdGlvbiBpbiBzZWxmLm9iamVjdC5mdW5jdGlvbnM6CisgICAgICAgICAgICBz
ZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9lbWJlZGRlZF9jb2RlX3N0cmluZ19zZWN0aW9u
X2Zvcl9mdW5jdGlvbihmdW5jdGlvbikpCisgICAgICAgIGlmIHNlbGYubW9kZWwoKS5mcmFtZXdv
cmsgaXMgRnJhbWV3b3Jrcy5KYXZhU2NyaXB0Q29yZToKKyAgICAgICAgICAgIHNlY3Rpb25zLmFw
cGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuU2VwYXJhdGVKU0NJbXBsZW1lbnRhdGlvblN0YXRpY01h
Y3Jvcykuc3Vic3RpdHV0ZShhcmdzKSkKKyAgICAgICAgZWxpZiBzZWxmLm1vZGVsKCkuZnJhbWV3
b3JrIGlzIEZyYW1ld29ya3MuV2ViQ29yZToKKyAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChU
ZW1wbGF0ZShUZW1wbGF0ZXMuU2VwYXJhdGVXZWJDb3JlSW1wbGVtZW50YXRpb25TdGF0aWNNYWNy
b3MpLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShU
ZW1wbGF0ZXMuTmFtZXNwYWNlQm90dG9tKS5zdWJzdGl0dXRlKGFyZ3MpKQorCisgICAgICAgIHJl
dHVybiAiXG5cbiIuam9pbihzZWN0aW9ucykKKworICAgIGRlZiBnZW5lcmF0ZV9oZWFkZXJfaW5j
bHVkZXMoc2VsZik6CisgICAgICAgIGhlYWRlcl9pbmNsdWRlcyA9IFsKKyAgICAgICAgICAgIChb
IkphdmFTY3JpcHRDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJi
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaCIpLAorICAgICAgICAgICAgKSwKKyAgICAgICAg
ICAgIChbIkphdmFTY3JpcHRDb3JlIiwgIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkph
dmFTY3JpcHRDb3JlIiwgInJ1bnRpbWUvRXhlY3V0YWJsZS5oIiksCisgICAgICAgICAgICApLAor
ICAgICAgICAgICAgKFsiSmF2YVNjcmlwdENvcmUiLCAiV2ViQ29yZSJdLAorICAgICAgICAgICAg
ICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9KU0NlbGxJbmxpbmVzLmgiKSwKKyAgICAg
ICAgICAgICksCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJK
YXZhU2NyaXB0Q29yZSIsICJydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCIpLAorICAgICAgICAg
ICAgKSwKKyAgICAgICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFT
Y3JpcHRDb3JlIiwgInJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCIpLAorICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgIChbIkphdmFTY3JpcHRDb3JlIiwgIldlYkNvcmUiXSwKKyAgICAgICAg
ICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgInJ1bnRpbWUvVk0uaCIpLAorICAgICAgICAgICAg
KSwKKyAgICAgICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIldlYkNvcmUi
LCAiYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5oIiksCisgICAgICAgICAgICApLAor
ICAgICAgICBdCisKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihzZWxmLmdlbmVyYXRlX2luY2x1
ZGVzX2Zyb21fZW50cmllcyhoZWFkZXJfaW5jbHVkZXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVf
d3JhcHBlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0
aW5zX2dlbmVyYXRlX3NlcGFyYXRlX3dyYXBwZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFhODhjZjc2MjBj
ZGExMzcxODZiOTkxNjQzN2JjNmQwYjQ4MWQ5ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRl
X3dyYXBwZXIucHkKQEAgLTAsMCArMSw5NCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisj
IENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisK
K2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgcmUKK2ltcG9ydCBzdHJpbmcKK2Zyb20gc3RyaW5nIGlt
cG9ydCBUZW1wbGF0ZQorCitmcm9tIGJ1aWx0aW5zX2dlbmVyYXRvciBpbXBvcnQgQnVpbHRpbnNH
ZW5lcmF0b3IKK2Zyb20gYnVpbHRpbnNfdGVtcGxhdGVzIGltcG9ydCBCdWlsdGluc0dlbmVyYXRv
clRlbXBsYXRlcyBhcyBUZW1wbGF0ZXMKKworbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2Jh
bCcpCisKKworY2xhc3MgQnVpbHRpbnNTZXBhcmF0ZVdyYXBwZXJHZW5lcmF0b3IoQnVpbHRpbnNH
ZW5lcmF0b3IpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCwgb2JqZWN0KToKKyAgICAg
ICAgQnVpbHRpbnNHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWwpCisgICAgICAgIHNlbGYu
b2JqZWN0ID0gb2JqZWN0CisKKyAgICBkZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYpOgorICAgICAg
ICByZXR1cm4gIiVzQnVpbHRpbnNXcmFwcGVyLmgiICUgQnVpbHRpbnNHZW5lcmF0b3IubWFuZ2xl
ZE5hbWVGb3JPYmplY3Qoc2VsZi5vYmplY3QpCisKKyAgICBkZWYgbWFjcm9fcHJlZml4KHNlbGYp
OgorICAgICAgICByZXR1cm4gc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdtYWNyb19w
cmVmaXgnKQorCisgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKKyAgICAgICAgYXJncyA9
IHsKKyAgICAgICAgICAgICduYW1lc3BhY2UnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRp
bmcoJ25hbWVzcGFjZScpLAorICAgICAgICAgICAgJ2hlYWRlckd1YXJkJzogc2VsZi5vdXRwdXRf
ZmlsZW5hbWUoKS5yZXBsYWNlKCcuJywgJ18nKSwKKyAgICAgICAgICAgICdtYWNyb1ByZWZpeCc6
IHNlbGYubWFjcm9fcHJlZml4KCksCisgICAgICAgICAgICAnb2JqZWN0TmFtZSc6IHNlbGYub2Jq
ZWN0Lm9iamVjdF9uYW1lLAorICAgICAgICAgICAgJ29iamVjdE1hY3JvJzogc2VsZi5vYmplY3Qu
b2JqZWN0X25hbWUudXBwZXIoKSwKKyAgICAgICAgfQorCisgICAgICAgIHNlY3Rpb25zID0gW10K
KyAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfbGljZW5zZSgpKQorICAgICAg
ICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkRvTm90RWRpdFdhcm5pbmcpLnN1
YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0
ZXMuSGVhZGVySW5jbHVkZUd1YXJkVG9wKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBzZWN0
aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9oZWFkZXJfaW5jbHVkZXMoKSkKKyAgICAgICAgc2Vj
dGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VUb3ApLnN1YnN0aXR1dGUo
YXJncykpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuU2VwYXJh
dGVXcmFwcGVySGVhZGVyQm9pbGVycGxhdGUpLnN1YnN0aXR1dGUoYXJncykpCisgICAgICAgIHNl
Y3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlQm90dG9tKS5zdWJzdGl0
dXRlKGFyZ3MpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkhl
YWRlckluY2x1ZGVHdWFyZEJvdHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkKKworICAgICAgICByZXR1
cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMpCisKKyAgICBkZWYgZ2VuZXJhdGVfaGVhZGVyX2luY2x1
ZGVzKHNlbGYpOgorICAgICAgICBoZWFkZXJfaW5jbHVkZXMgPSBbCisgICAgICAgICAgICAoWyJX
ZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJXZWJDb3JlIiwgIiVzQnVpbHRpbnMuaCIgJSBz
ZWxmLm9iamVjdC5vYmplY3RfbmFtZSksCisgICAgICAgICAgICApLAorCisgICAgICAgICAgICAo
WyJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIiksCisgICAgICAgICAgICApLAorCisgICAg
ICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIs
ICJidWlsdGlucy9CdWlsdGluVXRpbHMuaCIpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAg
ICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVu
dGltZS9JZGVudGlmaWVyLmgiKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgICAgIChbIldl
YkNvcmUiXSwKKyAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgInJ1bnRpbWUvSlNG
dW5jdGlvbi5oIiksCisgICAgICAgICAgICApLAorICAgICAgICBdCisKKyAgICAgICAgcmV0dXJu
ICdcbicuam9pbihzZWxmLmdlbmVyYXRlX2luY2x1ZGVzX2Zyb21fZW50cmllcyhoZWFkZXJfaW5j
bHVkZXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRp
bnMvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
YnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdG9yLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4NDgzZTBjMjIzMTVm
NzdkYmFhOTc2ZDRiYWRjZjc3ZGUyZDNmMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0b3IucHkKQEAgLTAs
MCArMSwxNzEgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgKGMpIDIw
MTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMp
IDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGxvZ2dpbmcKK2lt
cG9ydCBvcy5wYXRoCitpbXBvcnQgcmUKK2Zyb20gc3RyaW5nIGltcG9ydCBUZW1wbGF0ZQoraW1w
b3J0IGpzb24KKworZnJvbSBidWlsdGluc19tb2RlbCBpbXBvcnQgQnVpbHRpbkZ1bmN0aW9uLCBC
dWlsdGluT2JqZWN0Citmcm9tIGJ1aWx0aW5zX3RlbXBsYXRlcyBpbXBvcnQgQnVpbHRpbnNHZW5l
cmF0b3JUZW1wbGF0ZXMgYXMgVGVtcGxhdGVzCisKK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdn
bG9iYWwnKQorCisjIFRoZXNlIG1hdGNoIFdLX2xjZmlyc3QgYW5kIFdLX3VjZmlyc3QgZGVmaW5l
ZCBpbiBDb2RlR2VuZXJhdG9yLnBtLgorZGVmIFdLX2xjZmlyc3Qoc3RyKToKKyAgICBzdHIgPSBz
dHJbOjFdLmxvd2VyKCkgKyBzdHJbMTpdCisgICAgc3RyID0gc3RyLnJlcGxhY2UoJ2hUTUwnLCAn
aHRtbCcpCisgICAgc3RyID0gc3RyLnJlcGxhY2UoJ3VSTCcsICd1cmwnKQorICAgIHN0ciA9IHN0
ci5yZXBsYWNlKCdqUycsICdqcycpCisgICAgc3RyID0gc3RyLnJlcGxhY2UoJ3hNTCcsICd4bWwn
KQorICAgIHN0ciA9IHN0ci5yZXBsYWNlKCd4U0xUJywgJ3hzbHQnKQorICAgIHN0ciA9IHN0ci5y
ZXBsYWNlKCdjU1MnLCAnY3NzJykKKyAgICByZXR1cm4gc3RyCisKK2RlZiBXS191Y2ZpcnN0KHN0
cik6CisgICAgc3RyID0gc3RyWzoxXS51cHBlcigpICsgc3RyWzE6XQorICAgIHN0ciA9IHN0ci5y
ZXBsYWNlKCdYbWwnLCAnWE1MJykKKyAgICBzdHIgPSBzdHIucmVwbGFjZSgnU3ZnJywgJ1NWRycp
CisgICAgcmV0dXJuIHN0cgorCitjbGFzcyBCdWlsdGluc0dlbmVyYXRvcjoKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgbW9kZWwpOgorICAgICAgICBzZWxmLl9tb2RlbCA9IG1vZGVsCisKKyAgICBk
ZWYgbW9kZWwoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9tb2RlbAorCisgICAgIyBUaGVz
ZSBtZXRob2RzIGFyZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMuCisKKyAgICBkZWYgZ2VuZXJh
dGVfb3V0cHV0KHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgb3V0cHV0X2ZpbGVuYW1l
KHNlbGYpOgorICAgICAgICBwYXNzCisKKworICAgICMgU2hhcmVkIGNvZGUgZ2VuZXJhdGlvbiBt
ZXRob2RzLgorICAgIGRlZiBnZW5lcmF0ZV9saWNlbnNlKHNlbGYpOgorICAgICAgICByYXdfbGlj
ZW5zZSA9IFRlbXBsYXRlKFRlbXBsYXRlcy5MaWNlbnNlVGV4dCkuc3Vic3RpdHV0ZShOb25lKQor
ICAgICAgICBjb3B5cmlnaHRzID0gc2VsZi5fbW9kZWwuY29weXJpZ2h0cygpCisgICAgICAgIGNv
cHlyaWdodHMuc29ydCgpCisKKyAgICAgICAgbGljZW5zZV9ibG9jayA9IFtdCisgICAgICAgIGxp
Y2Vuc2VfYmxvY2suYXBwZW5kKCIvKiIpCisgICAgICAgIGZvciBjb3B5cmlnaHQgaW4gY29weXJp
Z2h0czoKKyAgICAgICAgICAgIGxpY2Vuc2VfYmxvY2suYXBwZW5kKCIgKiBDb3B5cmlnaHQgKGMp
ICVzIiAlIGNvcHlyaWdodCkKKyAgICAgICAgaWYgbGVuKGNvcHlyaWdodHMpID4gMDoKKyAgICAg
ICAgICAgIGxpY2Vuc2VfYmxvY2suYXBwZW5kKCIgKiAiKQorCisgICAgICAgIGZvciBsaW5lIGlu
IHJhd19saWNlbnNlLnNwbGl0KCdcbicpOgorICAgICAgICAgICAgbGljZW5zZV9ibG9jay5hcHBl
bmQoIiAqICIgKyBsaW5lKQorCisgICAgICAgIGxpY2Vuc2VfYmxvY2suYXBwZW5kKCIgKi8iKQor
CisgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGljZW5zZV9ibG9jaykKKworICAgIGRlZiBnZW5l
cmF0ZV9pbmNsdWRlc19mcm9tX2VudHJpZXMoc2VsZiwgZW50cmllcyk6CisgICAgICAgIGluY2x1
ZGVzID0gc2V0KCkKKyAgICAgICAgZm9yIGVudHJ5IGluIGVudHJpZXM6CisgICAgICAgICAgICAo
YWxsb3dlZF9mcmFtZXdvcmtfbmFtZXMsIGRhdGEpID0gZW50cnkKKyAgICAgICAgICAgIChmcmFt
ZXdvcmtfbmFtZSwgaGVhZGVyX3BhdGgpID0gZGF0YQorCisgICAgICAgICAgICBpZiBzZWxmLm1v
ZGVsKCkuZnJhbWV3b3JrLm5hbWUgbm90IGluIGFsbG93ZWRfZnJhbWV3b3JrX25hbWVzOgorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBzZWxmLm1vZGVsKCkuZnJhbWV3
b3JrLm5hbWUgIT0gZnJhbWV3b3JrX25hbWU6CisgICAgICAgICAgICAgICAgaW5jbHVkZXMuYWRk
KCIjaW5jbHVkZSA8JXM+IiAlIGhlYWRlcl9wYXRoKQorICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICBpbmNsdWRlcy5hZGQoIiNpbmNsdWRlIFwiJXNcIiIgJSBvcy5wYXRoLmJhc2Vu
YW1lKGhlYWRlcl9wYXRoKSkKKworICAgICAgICBzb3J0ZWRfaW5jbHVkZXMgPSBzb3J0ZWQobGlz
dChpbmNsdWRlcykpCisgICAgICAgICMgQWx3YXlzIGluY2x1ZGUgY29uZmlnLmggYW5kIHRoZSBj
b3VudGVycGFydCBoZWFkZXIgYmVmb3JlIG90aGVyIGhlYWRlcnMuCisgICAgICAgIG5hbWUsIGV4
dCA9IG9zLnBhdGguc3BsaXRleHQoc2VsZi5vdXRwdXRfZmlsZW5hbWUoKSkKKyAgICAgICAgaWYg
ZXh0ICE9ICcuaCc6CisgICAgICAgICAgICBzb3J0ZWRfaW5jbHVkZXNbOjBdID0gWworICAgICAg
ICAgICAgICAgICIjaW5jbHVkZSBcImNvbmZpZy5oXCIiLAorICAgICAgICAgICAgICAgICIjaW5j
bHVkZSBcIiVzLmhcIiIgJSBuYW1lLAorICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAg
XQorCisgICAgICAgIHJldHVybiBzb3J0ZWRfaW5jbHVkZXMKKworICAgIGRlZiBnZW5lcmF0ZV9l
bWJlZGRlZF9jb2RlX3N0cmluZ19zZWN0aW9uX2Zvcl9mdW5jdGlvbihzZWxmLCBmdW5jdGlvbik6
CisgICAgICAgIHRleHQgPSBmdW5jdGlvbi5mdW5jdGlvbl9zb3VyY2UKKyAgICAgICAgIyBXcmFw
IGl0IGluIHBhcmVucyB0byBhdm9pZCBhZGRpbmcgdG8gZ2xvYmFsIHNjb3BlLgorICAgICAgICB0
ZXh0ID0gIihmdW5jdGlvbiAiICsgdGV4dFt0ZXh0LmluZGV4KCIoIik6XSArICIpIgorICAgICAg
ICBlbWJlZGRlZFNvdXJjZUxlbmd0aCA9IGxlbih0ZXh0KSArIDEgICMgRm9yIGV4dHJhIFxuLgor
ICAgICAgICAjIExhenkgd2F5IHRvIGVzY2FwZSBxdW90ZXMsIEkgdGhpbms/CisgICAgICAgIHRl
eHRMaW5lcyA9IGpzb24uZHVtcHModGV4dClbMTotMV0uc3BsaXQoIlxcbiIpCisgICAgICAgICMg
VGhpcyBsb29rcyBzY2FyeSBiZWNhdXNlIHdlIG5lZWQgdGhlIEpTIHNvdXJjZSBpdHNlbGYgdG8g
aGF2ZSBuZXdsaW5lcy4KKyAgICAgICAgZW1iZWRkZWRTb3VyY2UgPSAnXG4nLmpvaW4oWycgICAg
IiVzXFxuIiBcXCcgJSBsaW5lIGZvciBsaW5lIGluIHRleHRMaW5lc10pCisKKyAgICAgICAgY29u
c3RydWN0QWJpbGl0eSA9ICJDYW5ub3RDb25zdHJ1Y3QiCisgICAgICAgIGlmIGZ1bmN0aW9uLmlz
X2NvbnN0cnVjdG9yOgorICAgICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9ICJDYW5Db25zdHJ1
Y3QiCisKKyAgICAgICAgYXJncyA9IHsKKyAgICAgICAgICAgICdjb2RlTmFtZSc6IEJ1aWx0aW5z
R2VuZXJhdG9yLm1hbmdsZWROYW1lRm9yRnVuY3Rpb24oZnVuY3Rpb24pICsgJ0NvZGUnLAorICAg
ICAgICAgICAgJ2VtYmVkZGVkU291cmNlJzogZW1iZWRkZWRTb3VyY2UsCisgICAgICAgICAgICAn
ZW1iZWRkZWRTb3VyY2VMZW5ndGgnOiBlbWJlZGRlZFNvdXJjZUxlbmd0aCwKKyAgICAgICAgICAg
ICdjYW5Db25zdHJ1Y3QnOiBjb25zdHJ1Y3RBYmlsaXR5CisgICAgICAgIH0KKworICAgICAgICBs
aW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZCgiY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmls
aXR5IHNfJShjb2RlTmFtZSlzQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0
eTo6JShjYW5Db25zdHJ1Y3QpczsiICUgYXJncyk7CisgICAgICAgIGxpbmVzLmFwcGVuZCgiY29u
c3QgaW50IHNfJShjb2RlTmFtZSlzTGVuZ3RoID0gJShlbWJlZGRlZFNvdXJjZUxlbmd0aClkOyIg
JSBhcmdzKTsKKyAgICAgICAgbGluZXMuYXBwZW5kKCJjb25zdCBjaGFyKiBzXyUoY29kZU5hbWUp
cyA9XG4lKGVtYmVkZGVkU291cmNlKXNcbjsiICUgYXJncyk7CisgICAgICAgIHJldHVybiAnXG4n
LmpvaW4obGluZXMpCisKKyAgICAjIEhlbHBlciBtZXRob2RzLgorCisgICAgQHN0YXRpY21ldGhv
ZAorICAgIGRlZiBtYW5nbGVkTmFtZUZvck9iamVjdChvYmplY3QpOgorICAgICAgICBpZiBub3Qg
aXNpbnN0YW5jZShvYmplY3QsIEJ1aWx0aW5PYmplY3QpOgorICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCJJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBtYW5nbGVkTmFtZUZvck9iamVjdCgp
IikKKworICAgICAgICBkZWYgdG9DYW1lbChtYXRjaCk6CisgICAgICAgICAgICBzdHIgPSBtYXRj
aC5ncm91cCgwKQorICAgICAgICAgICAgcmV0dXJuIHN0clsxXS51cHBlcigpCisgICAgICAgIHJl
dHVybiByZS5zdWIocidcLlthLXpdJywgdG9DYW1lbCwgb2JqZWN0Lm9iamVjdF9uYW1lLCBmbGFn
cz1yZS5JR05PUkVDQVNFKQorCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIG1hbmdsZWRO
YW1lRm9yRnVuY3Rpb24oZnVuY3Rpb24pOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmdW5j
dGlvbiwgQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiSW52
YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gbWFuZ2xlZE5hbWVGb3JGdW5jdGlvbigpIikKKworICAg
ICAgICBmdW5jdGlvbl9uYW1lID0gV0tfdWNmaXJzdChmdW5jdGlvbi5mdW5jdGlvbl9uYW1lKQor
CisgICAgICAgIGRlZiB0b0NhbWVsKG1hdGNoKToKKyAgICAgICAgICAgIHN0ciA9IG1hdGNoLmdy
b3VwKDApCisgICAgICAgICAgICByZXR1cm4gc3RyWzFdLnVwcGVyKCkKKyAgICAgICAgZnVuY3Rp
b25fbmFtZSA9IHJlLnN1YihyJ1wuW2Etel0nLCB0b0NhbWVsLCBmdW5jdGlvbl9uYW1lLCBmbGFn
cz1yZS5JR05PUkVDQVNFKQorICAgICAgICBpZiBmdW5jdGlvbi5pc19jb25zdHJ1Y3RvcjoKKyAg
ICAgICAgICAgIGZ1bmN0aW9uX25hbWUgPSBmdW5jdGlvbl9uYW1lICsgIkNvbnN0cnVjdG9yIgor
CisgICAgICAgIG9iamVjdF9uYW1lID0gQnVpbHRpbnNHZW5lcmF0b3IubWFuZ2xlZE5hbWVGb3JP
YmplY3QoZnVuY3Rpb24ub2JqZWN0KQorICAgICAgICByZXR1cm4gV0tfbGNmaXJzdChvYmplY3Rf
bmFtZSArIGZ1bmN0aW9uX25hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy9idWlsdGlucy9idWlsdGluc19tb2RlbC5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX21vZGVsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1ZDRiZGU2
NGQ2YmE2Y2QxZDA3MzUzZDRmMmJkNWVhMTQ1MGFhM2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19tb2RlbC5weQpAQCAt
MCwwICsxLDIzMyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHJlCitpbXBvcnQg
b3MKKworbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcpCisKK19GUkFNRVdPUktfQ09O
RklHX01BUCA9IHsKKyAgICAiSmF2YVNjcmlwdENvcmUiOiB7CisgICAgICAgICJtYWNyb19wcmVm
aXgiOiAiSlNDIiwKKyAgICAgICAgIm5hbWVzcGFjZSI6ICJKU0MiLAorICAgIH0sCisgICAgIldl
YkNvcmUiOiB7CisgICAgICAgICJtYWNyb19wcmVmaXgiOiAiV0VCQ09SRSIsCisgICAgICAgICJu
YW1lc3BhY2UiOiAiV2ViQ29yZSIsCisgICAgfSwKK30KKworZnVuY3Rpb25IZWFkUmVnRXhwID0g
cmUuY29tcGlsZShyIig/OmZ1bmN0aW9ufGNvbnN0cnVjdG9yKVxzK1x3K1xzKlwoLio/XCkiLCBy
ZS5NVUxUSUxJTkUgfCByZS5TKQorZnVuY3Rpb25OYW1lUmVnRXhwID0gcmUuY29tcGlsZShyIig/
OmZ1bmN0aW9ufGNvbnN0cnVjdG9yKVxzKyhcdyspXHMqXCgiLCByZS5NVUxUSUxJTkUgfCByZS5T
KQorZnVuY3Rpb25Jc0NvbnN0cnVjdG9yUmVnRXhwID0gcmUuY29tcGlsZShyIl5jb25zdHJ1Y3Rv
ciIsIHJlLk1VTFRJTElORSB8IHJlLlMpCitmdW5jdGlvblBhcmFtZXRlckZpbmRlciA9IHJlLmNv
bXBpbGUociJeKD86ZnVuY3Rpb258Y29uc3RydWN0b3IpXHMrKD86XHcrKVxzKlwoKCg/OlxzKlx3
Kyk/XHMqKD86XHMqLFxzKlx3KykqKT9ccypcKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCisKK211
bHRpbGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9cKi4qP1wqXC8iLCByZS5NVUxU
SUxJTkUgfCByZS5TKQorc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAgPSByZS5jb21waWxlKHIiXC9c
Ly4qP1xuIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKKworCitjbGFzcyBQYXJzZUV4Y2VwdGlvbihF
eGNlcHRpb24pOgorICAgIHBhc3MKKworCitjbGFzcyBGcmFtZXdvcms6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIG5hbWUpOgorICAgICAgICBzZWxmLl9zZXR0aW5ncyA9IF9GUkFNRVdPUktfQ09O
RklHX01BUFtuYW1lXQorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisKKyAgICBkZWYgc2V0dGlu
ZyhzZWxmLCBrZXksIGRlZmF1bHQ9JycpOgorICAgICAgICByZXR1cm4gc2VsZi5fc2V0dGluZ3Mu
Z2V0KGtleSwgZGVmYXVsdCkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZnJvbVN0cmlu
ZyhmcmFtZXdvcmtTdHJpbmcpOgorICAgICAgICBpZiBmcmFtZXdvcmtTdHJpbmcgPT0gIkphdmFT
Y3JpcHRDb3JlIjoKKyAgICAgICAgICAgIHJldHVybiBGcmFtZXdvcmtzLkphdmFTY3JpcHRDb3Jl
CisKKyAgICAgICAgaWYgZnJhbWV3b3JrU3RyaW5nID09ICJXZWJDb3JlIjoKKyAgICAgICAgICAg
IHJldHVybiBGcmFtZXdvcmtzLldlYkNvcmUKKworICAgICAgICByYWlzZSBQYXJzZUV4Y2VwdGlv
bigiVW5rbm93biBmcmFtZXdvcms6ICVzIiAlIGZyYW1ld29ya1N0cmluZykKKworCitjbGFzcyBG
cmFtZXdvcmtzOgorICAgIEphdmFTY3JpcHRDb3JlID0gRnJhbWV3b3JrKCJKYXZhU2NyaXB0Q29y
ZSIpCisgICAgV2ViQ29yZSA9IEZyYW1ld29yaygiV2ViQ29yZSIpCisKKworY2xhc3MgQnVpbHRp
bk9iamVjdDoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb2JqZWN0X25hbWUsIGZ1bmN0aW9ucyk6
CisgICAgICAgIHNlbGYub2JqZWN0X25hbWUgPSBvYmplY3RfbmFtZQorICAgICAgICBzZWxmLmZ1
bmN0aW9ucyA9IGZ1bmN0aW9ucworICAgICAgICBzZWxmLmNvbGxlY3Rpb24gPSBOb25lICAjIFNl
dCBieSB0aGUgb3duaW5nIEJ1aWx0aW5zQ29sbGVjdGlvbgorCisgICAgICAgIGZvciBmdW5jdGlv
biBpbiBzZWxmLmZ1bmN0aW9uczoKKyAgICAgICAgICAgIGZ1bmN0aW9uLm9iamVjdCA9IHNlbGYK
KworCitjbGFzcyBCdWlsdGluRnVuY3Rpb246CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmN0
aW9uX25hbWUsIGZ1bmN0aW9uX3NvdXJjZSwgaXNfY29uc3RydWN0b3IsIHBhcmFtZXRlcnMpOgor
ICAgICAgICBzZWxmLmZ1bmN0aW9uX25hbWUgPSBmdW5jdGlvbl9uYW1lCisgICAgICAgIHNlbGYu
ZnVuY3Rpb25fc291cmNlID0gZnVuY3Rpb25fc291cmNlCisgICAgICAgIHNlbGYuaXNfY29uc3Ry
dWN0b3IgPSBpc19jb25zdHJ1Y3RvcgorICAgICAgICBzZWxmLnBhcmFtZXRlcnMgPSBwYXJhbWV0
ZXJzCisgICAgICAgIHNlbGYub2JqZWN0ID0gTm9uZSAgIyBTZXQgYnkgdGhlIG93bmluZyBCdWls
dGluT2JqZWN0CisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGZyb21TdHJpbmcoZnVuY3Rp
b25fc3RyaW5nKToKKyAgICAgICAgZnVuY3Rpb25fc291cmNlID0gbXVsdGlsaW5lQ29tbWVudFJl
Z0V4cC5zdWIoIiIsIGZ1bmN0aW9uX3N0cmluZykKKyAgICAgICAgZnVuY3Rpb25fbmFtZSA9IGZ1
bmN0aW9uTmFtZVJlZ0V4cC5maW5kYWxsKGZ1bmN0aW9uX3NvdXJjZSlbMF0KKyAgICAgICAgaXNf
Y29uc3RydWN0b3IgPSBmdW5jdGlvbklzQ29uc3RydWN0b3JSZWdFeHAubWF0Y2goZnVuY3Rpb25f
c291cmNlKSAhPSBOb25lCisgICAgICAgIHBhcmFtZXRlcnMgPSBbcy5zdHJpcCgpIGZvciBzIGlu
IGZ1bmN0aW9uUGFyYW1ldGVyRmluZGVyLmZpbmRhbGwoZnVuY3Rpb25fc291cmNlKVswXS5zcGxp
dCgnLCcpXQorICAgICAgICBpZiBsZW4ocGFyYW1ldGVyc1swXSkgPT0gMDoKKyAgICAgICAgICAg
IHBhcmFtZXRlcnMgPSBbXQorCisgICAgICAgIHJldHVybiBCdWlsdGluRnVuY3Rpb24oZnVuY3Rp
b25fbmFtZSwgZnVuY3Rpb25fc291cmNlLCBpc19jb25zdHJ1Y3RvciwgcGFyYW1ldGVycykKKwor
ICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBpbnRlcmZhY2UgPSAiJXMoJXMpIiAlIChz
ZWxmLmZ1bmN0aW9uX25hbWUsICcsICcuam9pbihzZWxmLnBhcmFtZXRlcnMpKQorICAgICAgICBp
ZiBzZWxmLmlzX2NvbnN0cnVjdG9yOgorICAgICAgICAgICAgaW50ZXJmYWNlID0gaW50ZXJmYWNl
ICsgIiBbQ29uc3RydWN0b3JdIgorCisgICAgICAgIHJldHVybiBpbnRlcmZhY2UKKworCitjbGFz
cyBCdWlsdGluc0NvbGxlY3Rpb246CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZyYW1ld29ya19u
YW1lKToKKyAgICAgICAgc2VsZi5fY29weXJpZ2h0X2xpbmVzID0gc2V0KCkKKyAgICAgICAgc2Vs
Zi5vYmplY3RzID0gW10KKyAgICAgICAgc2VsZi5mcmFtZXdvcmsgPSBGcmFtZXdvcmsuZnJvbVN0
cmluZyhmcmFtZXdvcmtfbmFtZSkKKyAgICAgICAgbG9nLmRlYnVnKCJDcmVhdGVkIG5ldyBCdWls
dGlucyBjb2xsZWN0aW9uLiIpCisKKyAgICBkZWYgcGFyc2VfYnVpbHRpbnNfZmlsZShzZWxmLCBm
aWxlbmFtZSwgdGV4dCk6CisgICAgICAgIGxvZy5kZWJ1ZygiUGFyc2luZyBidWlsdGlucyBmaWxl
OiAlcyIgJSBmaWxlbmFtZSkKKworICAgICAgICBwYXJzZWRfY29weXJpZ2h0cyA9IHNldChzZWxm
Ll9wYXJzZV9jb3B5cmlnaHRfbGluZXModGV4dCkpCisgICAgICAgIHNlbGYuX2NvcHlyaWdodF9s
aW5lcyA9IHNlbGYuX2NvcHlyaWdodF9saW5lcy51bmlvbihwYXJzZWRfY29weXJpZ2h0cykKKwor
ICAgICAgICBsb2cuZGVidWcoIkZvdW5kIGNvcHlyaWdodCBsaW5lczoiKQorICAgICAgICBmb3Ig
bGluZSBpbiBzZWxmLl9jb3B5cmlnaHRfbGluZXM6CisgICAgICAgICAgICBsb2cuZGVidWcobGlu
ZSkKKyAgICAgICAgbG9nLmRlYnVnKCIiKQorCisgICAgICAgIG9iamVjdF9uYW1lLCBleHQgPSBv
cy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoZmlsZW5hbWUpKQorICAgICAgICBsb2cu
ZGVidWcoIlBhcnNpbmcgb2JqZWN0OiAlcyIgJSBvYmplY3RfbmFtZSkKKworICAgICAgICBwYXJz
ZWRfZnVuY3Rpb25zID0gc2VsZi5fcGFyc2VfZnVuY3Rpb25zKHRleHQpCisgICAgICAgIGZvciBm
dW5jdGlvbiBpbiBwYXJzZWRfZnVuY3Rpb25zOgorICAgICAgICAgICAgZnVuY3Rpb24ub2JqZWN0
ID0gb2JqZWN0X25hbWUKKworICAgICAgICBsb2cuZGVidWcoIlBhcnNlZCBmdW5jdGlvbnM6IikK
KyAgICAgICAgZm9yIGZ1bmMgaW4gcGFyc2VkX2Z1bmN0aW9uczoKKyAgICAgICAgICAgIGxvZy5k
ZWJ1ZyhmdW5jKQorICAgICAgICBsb2cuZGVidWcoIiIpCisKKyAgICAgICAgbmV3X29iamVjdCA9
IEJ1aWx0aW5PYmplY3Qob2JqZWN0X25hbWUsIHBhcnNlZF9mdW5jdGlvbnMpCisgICAgICAgIG5l
d19vYmplY3QuY29sbGVjdGlvbiA9IHNlbGYKKyAgICAgICAgc2VsZi5vYmplY3RzLmFwcGVuZChu
ZXdfb2JqZWN0KQorCisgICAgZGVmIGNvcHlyaWdodHMoc2VsZik6CisgICAgICAgIG93bmVyX3Rv
X3llYXJzID0gZGljdCgpCisgICAgICAgIGNvcHlyaWdodFllYXJSZWdFeHAgPSByZS5jb21waWxl
KHIiKFxkezR9KVssIF17MCwyfSIpCisgICAgICAgIG93bmVyU3RhcnRSZWdFeHAgPSByZS5jb21w
aWxlKHIiW15cZCwgXSIpCisKKyAgICAgICAgIyBSZXR1cm5zIGRlZHVwbGljYXRlZCBjb3B5cmln
aHRzIGtleWVkIG9uIHRoZSBvd25lci4KKyAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5fY29weXJp
Z2h0X2xpbmVzOgorICAgICAgICAgICAgeWVhcnMgPSBzZXQoY29weXJpZ2h0WWVhclJlZ0V4cC5m
aW5kYWxsKGxpbmUpKQorICAgICAgICAgICAgb3duZXJJbmRleCA9IG93bmVyU3RhcnRSZWdFeHAu
c2VhcmNoKGxpbmUpLnN0YXJ0KCkKKyAgICAgICAgICAgIG93bmVyID0gbGluZVtvd25lckluZGV4
Ol0KKyAgICAgICAgICAgIGxvZy5kZWJ1ZygiRm91bmQgeWVhcnM6ICVzIGFuZCBvd25lcjogJXMi
ICUgKHllYXJzLCBvd25lcikpCisgICAgICAgICAgICBpZiBvd25lciBub3QgaW4gb3duZXJfdG9f
eWVhcnM6CisgICAgICAgICAgICAgICAgb3duZXJfdG9feWVhcnNbb3duZXJdID0gc2V0KCkKKwor
ICAgICAgICAgICAgb3duZXJfdG9feWVhcnNbb3duZXJdID0gb3duZXJfdG9feWVhcnNbb3duZXJd
LnVuaW9uKHllYXJzKQorCisgICAgICAgIHJlc3VsdCA9IFtdCisKKyAgICAgICAgZm9yIG93bmVy
LCB5ZWFycyBpbiBvd25lcl90b195ZWFycy5pdGVtcygpOgorICAgICAgICAgICAgc29ydGVkX3ll
YXJzID0gbGlzdCh5ZWFycykKKyAgICAgICAgICAgIHNvcnRlZF95ZWFycy5zb3J0KCkKKyAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoIiVzICVzIiAlICgnLCAnLmpvaW4oc29ydGVkX3llYXJzKSwg
b3duZXIpKQorCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBhbGxfZnVuY3Rpb25z
KHNlbGYpOgorICAgICAgICByZXN1bHQgPSBbXQorICAgICAgICBmb3Igb2JqZWN0IGluIHNlbGYu
b2JqZWN0czoKKyAgICAgICAgICAgIHJlc3VsdC5leHRlbmQob2JqZWN0LmZ1bmN0aW9ucykKKwor
ICAgICAgICByZXN1bHQuc29ydCgpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgICMgUHJp
dmF0ZSBtZXRob2RzLgorCisgICAgZGVmIF9wYXJzZV9jb3B5cmlnaHRfbGluZXMoc2VsZiwgdGV4
dCk6CisgICAgICAgIGxpY2Vuc2VCbG9jayA9IG11bHRpbGluZUNvbW1lbnRSZWdFeHAuZmluZGFs
bCh0ZXh0KVswXQorICAgICAgICBsaWNlbnNlQmxvY2sgPSBsaWNlbnNlQmxvY2tbOmxpY2Vuc2VC
bG9jay5pbmRleCgiUmVkaXN0cmlidXRpb24iKV0KKworICAgICAgICBjb3B5cmlnaHRMaW5lcyA9
IFtdCisgICAgICAgIGZvciBsaW5lIGluIGxpY2Vuc2VCbG9jay5zcGxpdCgiXG4iKToKKyAgICAg
ICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIi8qIiwgIiIpCisgICAgICAgICAgICBsaW5lID0g
bGluZS5yZXBsYWNlKCIqLyIsICIiKQorICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgi
KiIsICIiKQorICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiQ29weXJpZ2h0IiwgIiIp
CisgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJjb3B5cmlnaHQiLCAiIikKKyAgICAg
ICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIihDKSIsICIiKQorICAgICAgICAgICAgbGluZSA9
IGxpbmUucmVwbGFjZSgiKGMpIiwgIiIpCisgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgp
CisKKyAgICAgICAgICAgIGlmIGxlbihsaW5lKSA9PSAwOgorICAgICAgICAgICAgICAgIGNvbnRp
bnVlCisKKyAgICAgICAgICAgIGNvcHlyaWdodExpbmVzLmFwcGVuZChsaW5lKQorCisgICAgICAg
IHJldHVybiBjb3B5cmlnaHRMaW5lcworCisgICAgZGVmIF9wYXJzZV9mdW5jdGlvbnMoc2VsZiwg
dGV4dCk6CisgICAgICAgIHRleHQgPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiLyoqLyIs
IHNpbmdsZUxpbmVDb21tZW50UmVnRXhwLnN1YigiLy9cbiIsIHRleHQpKQorCisgICAgICAgIG1h
dGNoZXMgPSBbZnVuYyBmb3IgZnVuYyBpbiBmdW5jdGlvbkhlYWRSZWdFeHAuZmluZGl0ZXIodGV4
dCldCisgICAgICAgIGZ1bmN0aW9uQm91bmRzID0gW10KKyAgICAgICAgc3RhcnQgPSAwCisgICAg
ICAgIGVuZCA9IDAKKyAgICAgICAgZm9yIG1hdGNoIGluIG1hdGNoZXM6CisgICAgICAgICAgICBz
dGFydCA9IG1hdGNoLnN0YXJ0KCkKKyAgICAgICAgICAgIGlmIHN0YXJ0IDwgZW5kOgorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBlbmQgPSBtYXRjaC5lbmQoKQorICAgICAg
ICAgICAgd2hpbGUgdGV4dFtlbmRdICE9ICd7JzoKKyAgICAgICAgICAgICAgICBlbmQgPSBlbmQg
KyAxCisgICAgICAgICAgICBkZXB0aCA9IDEKKyAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKKyAg
ICAgICAgICAgIHdoaWxlIGRlcHRoID4gMDoKKyAgICAgICAgICAgICAgICBpZiB0ZXh0W2VuZF0g
PT0gJ3snOgorICAgICAgICAgICAgICAgICAgICBkZXB0aCA9IGRlcHRoICsgMQorICAgICAgICAg
ICAgICAgIGVsaWYgdGV4dFtlbmRdID09ICd9JzoKKyAgICAgICAgICAgICAgICAgICAgZGVwdGgg
PSBkZXB0aCAtIDEKKyAgICAgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCisgICAgICAgICAgICBm
dW5jdGlvbkJvdW5kcy5hcHBlbmQoKHN0YXJ0LCBlbmQpKQorCisgICAgICAgIGZ1bmN0aW9uU3Ry
aW5ncyA9IFt0ZXh0W3N0YXJ0OmVuZF0uc3RyaXAoKSBmb3IgKHN0YXJ0LCBlbmQpIGluIGZ1bmN0
aW9uQm91bmRzXQorICAgICAgICByZXR1cm4gbWFwKEJ1aWx0aW5GdW5jdGlvbi5mcm9tU3RyaW5n
LCBmdW5jdGlvblN0cmluZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjVl
ZGY2NTZlYTJjZWE0ZDBkNGYxZjY5MjVkMzRhOGUxMGFmM2Q4MwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRl
cy5weQpAQCAtMCwwICsxLDIxOSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHly
aWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENv
cHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIEJ1aWx0aW5zIGdlbmVyYXRvciB0
ZW1wbGF0ZXMsIHdoaWNoIGNhbiBiZSBmaWxsZWQgd2l0aCBzdHJpbmcuVGVtcGxhdGUuCisKKwor
Y2xhc3MgQnVpbHRpbnNHZW5lcmF0b3JUZW1wbGF0ZXM6CisKKyAgICBMaWNlbnNlVGV4dCA9ICgK
KyAgICAiIiJSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKK21vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworYXJlIG1ldDoKKzEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKworVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCitUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCitQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKK0JFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKK0NPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCitTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKK0lOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCitD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorIiIiKQorCisgICAgRG9Ob3RFZGl0V2FybmluZyA9ICgKKyAgICAiIiIvLyBETyBOT1Qg
RURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNj
cmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5IiIiKQorCisgICAgSGVhZGVy
SW5jbHVkZUd1YXJkVG9wID0gKAorICAgICIiIiNpZm5kZWYgJHtoZWFkZXJHdWFyZH0KKyNkZWZp
bmUgJHtoZWFkZXJHdWFyZH0iIiIpCisKKyAgICBIZWFkZXJJbmNsdWRlR3VhcmRCb3R0b20gPSAo
CisgICAgIiIiI2VuZGlmIC8vICR7aGVhZGVyR3VhcmR9CisiIiIpCisKKyAgICBOYW1lc3BhY2VU
b3AgPSAoCisgICAgIiIibmFtZXNwYWNlICR7bmFtZXNwYWNlfSB7IiIiKQorCisgICAgTmFtZXNw
YWNlQm90dG9tID0gKAorICAgICIiIn0gLy8gbmFtZXNwYWNlICR7bmFtZXNwYWNlfSIiIikKKwor
ICAgIENvbWJpbmVkSGVhZGVyU3RhdGljTWFjcm9zID0gKAorICAgICIiIiNkZWZpbmUgREVDTEFS
RV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50
KSBcXAorICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpT
Qzo6Vk0mKTsKKworJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NPREUoREVDTEFSRV9C
VUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCisKKyNk
ZWZpbmUgJHttYWNyb1ByZWZpeH1fQlVJTFRJTl9FWElTVFMob2JqZWN0LCBmdW5jKSBkZWZpbmVk
ICR7bWFjcm9QcmVmaXh9X0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMiIiIpCisKKyAg
ICBTZXBhcmF0ZUhlYWRlclN0YXRpY01hY3JvcyA9ICgKKyAgICAiIiIjZGVmaW5lIERFQ0xBUkVf
QlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkg
XFwKKyAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6
OlZNJik7CisKKyR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3ROYW1lfV9CVUlMVElOX0NP
REUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VO
RVJBVE9SCisKKyNkZWZpbmUgJHttYWNyb1ByZWZpeH1fQlVJTFRJTl8ke29iamVjdE5hbWV9X0VY
SVNUUyhvYmplY3QsIGZ1bmMpIGRlZmluZWQgJHttYWNyb1ByZWZpeH1fQlVJTFRJTl8gIyMgb2Jq
ZWN0ICMjIF8gIyMgZnVuYyIiIikKKworICAgIENvbWJpbmVkSlNDSW1wbGVtZW50YXRpb25TdGF0
aWNNYWNyb3MgPSAoCisgICAgIiIiCisjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihj
b2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAorSlNDOjpGdW5jdGlvbkV4
ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCit7XFwKKyAgICBy
ZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxp
bmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyBcCit9
Ciske21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5F
UkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCisiIiIpCisKKyAgICBTZXBh
cmF0ZUpTQ0ltcGxlbWVudGF0aW9uU3RhdGljTWFjcm9zID0gKAorICAgICIiIgorI2RlZmluZSBE
RUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRD
b3VudCkgXFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpT
Qzo6Vk0mIHZtKSBcXAore1xcCisgICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5j
b2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+
Y29kZU5hbWUjI1NvdXJjZSgpKTsgXAorfQorJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVj
dE1hY3JvfV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERF
RklORV9CVUlMVElOX0dFTkVSQVRPUgorIiIiKQorCisgICAgQ29tYmluZWRXZWJDb3JlSW1wbGVt
ZW50YXRpb25TdGF0aWNNYWNyb3MgPSAoCisgICAgICAgICIiIgorI2RlZmluZSBERUZJTkVfQlVJ
TFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwK
K0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZt
KSBcXAore1xcCisgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxK
U1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcXAorICAgIHJldHVybiBjbGllbnREYXRh
LT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMj
RXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtv
YmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCkpOyBcXAorfQorJHttYWNy
b1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQor
I3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgorIiIiKQorCisgICAgU2VwYXJhdGVXZWJD
b3JlSW1wbGVtZW50YXRpb25TdGF0aWNNYWNyb3MgPSAoCisgICAgICAgICIiIgorI2RlZmluZSBE
RUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRD
b3VudCkgXFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpT
Qzo6Vk0mIHZtKSBcXAore1xcCisgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0
aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcXAorICAgIHJldHVybiBj
bGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5j
b2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rp
b25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCkpOyBcXAor
fQorJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoREVG
SU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgor
IiIiKQorCisgICAgU2VwYXJhdGVXcmFwcGVySGVhZGVyQm9pbGVycGxhdGUgPSAoCisgICAgIiIi
Y2xhc3MgJHtvYmplY3ROYW1lfUJ1aWx0aW5zV3JhcHBlciA6IHByaXZhdGUgSlNDOjpXZWFrSGFu
ZGxlT3duZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0ICR7b2JqZWN0TmFtZX1CdWlsdGluc1dy
YXBwZXIoSlNDOjpWTSogdm0pCisgICAgICAgIDogbV92bSgqdm0pCisgICAgICAgICR7bWFjcm9Q
cmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJ
QUxJWkVfQlVJTFRJTl9OQU1FUykKKyNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9N
RU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UoSlND
OjptYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5n
dGgpKSkKKyAgICAgICAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlM
VElOX0NPREUoSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIElOSVRJ
QUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworICAgIHsKKyAgICB9CisKKyNkZWZpbmUgRVhQ
T1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFxcCisg
ICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBc
XAorICAgIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgY29uc3QgeyByZXR1
cm4gbV8jI25hbWUjI1NvdXJjZTsgfQorICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmpl
Y3RNYWNyb31fQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVm
IEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCisKKyAgICAke21hY3JvUHJlZml4fV9GT1JFQUNI
XyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fSURF
TlRJRklFUl9BQ0NFU1NPUikKKworICAgIHZvaWQgZXhwb3J0TmFtZXMoKTsKKworcHJpdmF0ZToK
KyAgICBKU0M6OlZNJiBtX3ZtOworCisgICAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVj
dE1hY3JvfV9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX05BTUVTKQorCisj
ZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUs
IGxlbmd0aCkgXFwKKyAgICBKU0M6OlNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJjZTtcXAorICAg
IEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhl
Y3V0YWJsZTsKKyAgICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxU
SU5fQ09ERShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9C
VUlMVElOX1NPVVJDRV9NRU1CRVJTCisKK307CisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhF
Q1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFxcCitpbmxpbmUgSlNDOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogJHtvYmplY3ROYW1lfUJ1aWx0aW5zV3JhcHBlcjo6bmFt
ZSMjRXhlY3V0YWJsZSgpIFxcCit7XFwKKyAgICBpZiAoIW1fIyNuYW1lIyNFeGVjdXRhYmxlKVxc
CisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUobV92bSwgbV8j
I25hbWUjI1NvdXJjZSwgZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCksIHNfIyNuYW1lIyNDb25z
dHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRhYmxlKTtcXAorICAgIHJldHVy
biBtXyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtcXAorfQorJHttYWNyb1ByZWZpeH1fRk9SRUFD
SF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMp
CisjdW5kZWYgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMKKworaW5saW5lIHZvaWQgJHtvYmpl
Y3ROYW1lfUJ1aWx0aW5zV3JhcHBlcjo6ZXhwb3J0TmFtZXMoKQoreworI2RlZmluZSBFWFBPUlRf
RlVOQ1RJT05fTkFNRShuYW1lKSBtX3ZtLnByb3BlcnR5TmFtZXMtPmFwcGVuZEV4dGVybmFsTmFt
ZShuYW1lIyNQdWJsaWNOYW1lKCksIG5hbWUjI1ByaXZhdGVOYW1lKCkpOworICAgICR7bWFjcm9Q
cmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9GVU5DVElPTl9OQU1FKEVYUE9S
VF9GVU5DVElPTl9OQU1FKQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTl9OQU1FCit9CisKK2NsYXNz
ICR7b2JqZWN0TmFtZX1CdWlsdGluRnVuY3Rpb25zIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCAk
e29iamVjdE5hbWV9QnVpbHRpbkZ1bmN0aW9ucyhKU0M6OlZNJiB2bSkgOiBtX3ZtKHZtKSB7IH0K
KworICAgIHZvaWQgaW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CisgICAgdm9pZCB2aXNpdChK
U0M6OlNsb3RWaXNpdG9yJik7CisKK3B1YmxpYzoKKyAgICBKU0M6OlZNJiBtX3ZtOworCisjZGVm
aW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhmdW5jdGlvbk5hbWUpIFxcCisgICAg
SlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU0Z1bmN0aW9uPiBtXyMjZnVuY3Rpb25OYW1lIyNGdW5j
dGlvbjsKKyAgICAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5f
RlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgREVD
TEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCit9OworCitpbmxpbmUgdm9pZCAke29iamVjdE5h
bWV9QnVpbHRpbkZ1bmN0aW9uczo6aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBs
ZW5ndGgpXFwKKyAgICBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbi5zZXQobV92bSwgJmdsb2Jh
bE9iamVjdCwgSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24obV92bSwgY29k
ZU5hbWUjI0dlbmVyYXRvcihtX3ZtKSwgJmdsb2JhbE9iamVjdCkpOworICAgICR7bWFjcm9QcmVm
aXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RFKEVYUE9SVF9GVU5DVElPTikK
KyN1bmRlZiBFWFBPUlRfRlVOQ1RJT04KK30KKworaW5saW5lIHZvaWQgJHtvYmplY3ROYW1lfUJ1
aWx0aW5GdW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisjZGVm
aW5lIFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFtZSMjRnVuY3Rp
b24pOworICAgICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9G
VU5DVElPTl9OQU1FKFZJU0lUX0ZVTkNUSU9OKQorI3VuZGVmIFZJU0lUX0ZVTkNUSU9OCit9Cisi
IiIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1q
cy1idWlsdGlucyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1
aWx0aW5zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZmY0MTg3M2RhMmI2NWE3NzEx
NGNmNWQ0MWU4N2E0YzBkMzA2MzdjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1
aWx0aW5zCisrKyAvZGV2L251bGwKQEAgLTEsMzQzICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9u
Ci0jIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0j
Ci0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0j
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0jIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSMgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0jIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSMgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgYXJncGFyc2UKLWltcG9ydCBmaWxlY21wCi1pbXBvcnQg
Zm5tYXRjaAotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzaHV0aWwKLWltcG9ydCBzeXMK
LWltcG9ydCBkYXRldGltZQotaW1wb3J0IGpzb24KLQotcGFyc2VyID0gYXJncGFyc2UuQXJndW1l
bnRQYXJzZXIoKQotcGFyc2VyLmFkZF9hcmd1bWVudCgnaW5wdXRfZmlsZScsIG5hcmdzPScqJywg
aGVscD0nSW5wdXQgSlMgZmlsZXMgd2hpY2ggYnVpbHRpbnMgZ2VuZXJhdGVkIGZyb20nKQotcGFy
c2VyLmFkZF9hcmd1bWVudCgnLS1pbnB1dC1kaXJlY3RvcnknLCBoZWxwPSdBbGwgSlMgZmlsZXMg
d2lsbCBiZSB1c2VkIGFzIGlucHV0IGZyb20gdGhpcyBkaXJlY3RvcnkuJykKLXBhcnNlci5hZGRf
YXJndW1lbnQoJy0tb3V0cHV0JywgaGVscD0ncGF0aCB0byBvdXRwdXQgY3BwIG9yIGggZmlsZScp
Ci1wYXJzZXIuYWRkX2FyZ3VtZW50KCctLXByZWZpeCcsIGRlZmF1bHQ9J0pTQycsIGhlbHA9J3By
ZWZpeCB1c2VkIGZvciBwdWJsaWMgbWFjcm9zJykKLXBhcnNlci5hZGRfYXJndW1lbnQoJy0tbmFt
ZXNwYWNlJywgZGVmYXVsdD0nSlNDJywgaGVscD0nQysrIG5hbWVzcGFjZScpCi1hcmdzID0gcGFy
c2VyLnBhcnNlX2FyZ3MoKQotCi1jb3B5cmlnaHRUZXh0ID0gIiIiICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi9cbgotIiIiCi0KLWdlbmVyYXRvclN0cmluZyA9ICIvKiBH
ZW5lcmF0ZWQgYnkgJXMgZG8gbm90IGhhbmQgZWRpdC4gKi9cbiIgJSBvcy5wYXRoLmJhc2VuYW1l
KF9fZmlsZV9fKQotCi1mdW5jdGlvbkhlYWRSZWdFeHAgPSByZS5jb21waWxlKHIiKD86ZnVuY3Rp
b258Y29uc3RydWN0b3IpXHMrXHcrXHMqXCguKj9cKSIsIHJlLk1VTFRJTElORSB8IHJlLlMpCi1m
dW5jdGlvbk5hbWVSZWdFeHAgPSByZS5jb21waWxlKHIiKD86ZnVuY3Rpb258Y29uc3RydWN0b3Ip
XHMrKFx3KylccypcKCIsIHJlLk1VTFRJTElORSB8IHJlLlMpCi1mdW5jdGlvbklzQ29uc3RydWN0
b3JSZWdFeHAgPSByZS5jb21waWxlKHIiXmNvbnN0cnVjdG9yIiwgcmUuTVVMVElMSU5FIHwgcmUu
UykKLWZ1bmN0aW9uUGFyYW1ldGVyRmluZGVyID0gcmUuY29tcGlsZShyIl4oPzpmdW5jdGlvbnxj
b25zdHJ1Y3RvcilccysoPzpcdyspXHMqXCgoKD86XHMqXHcrKT9ccyooPzpccyosXHMqXHcrKSop
P1xzKlwpIiwgcmUuTVVMVElMSU5FIHwgcmUuUykKLQotbXVsdGlsaW5lQ29tbWVudFJlZ0V4cCA9
IHJlLmNvbXBpbGUociJcL1wqLio/XCpcLyIsIHJlLk1VTFRJTElORSB8IHJlLlMpCi1zaW5nbGVM
aW5lQ29tbWVudFJlZ0V4cCA9IHJlLmNvbXBpbGUociJcL1wvLio/XG4iLCByZS5NVUxUSUxJTkUg
fCByZS5TKQotCi1kZWYgZ2V0Q29weXJpZ2h0KHNvdXJjZSk6Ci0gICAgY29weXJpZ2h0QmxvY2sg
PSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLmZpbmRhbGwoc291cmNlKVswXQotICAgIGNvcHlyaWdo
dEJsb2NrID0gY29weXJpZ2h0QmxvY2tbOmNvcHlyaWdodEJsb2NrLmluZGV4KCJSZWRpc3RyaWJ1
dGlvbiIpXQotICAgIGNvcHlSaWdodExpbmVzID0gW10KLQotICAgIGZvciBsaW5lIGluIGNvcHly
aWdodEJsb2NrLnNwbGl0KCJcbiIpOgotICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIvKiIs
ICIiKQotICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCIqLyIsICIiKQotICAgICAgICBsaW5l
ID0gbGluZS5yZXBsYWNlKCIqIiwgIiIpCi0gICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIkNv
cHlyaWdodCIsICIiKQotICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJjb3B5cmlnaHQiLCAi
IikKLSAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiKEMpIiwgIiIpCi0gICAgICAgIGxpbmUg
PSBsaW5lLnJlcGxhY2UoIihjKSIsICIiKQotICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCi0g
ICAgICAgIGlmIGxlbihsaW5lKSA9PSAwOgotICAgICAgICAgICAgY29udGludWUKLQotICAgICAg
ICBjb3B5UmlnaHRMaW5lcy5hcHBlbmQobGluZSkKLSAgICAKLSAgICByZXR1cm4gbGlzdChzZXQo
Y29weVJpZ2h0TGluZXMpKQotCi1jbGFzcyBGdW5jdGlvbihvYmplY3QpOgotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBuYW1lLCBzb3VyY2UsIGlzQ29uc3RydWN0b3IsIHBhcmFtZXRlcnMpOgotICAg
ICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYuc291cmNlID0gc291cmNlCi0gICAg
ICAgIHNlbGYuaXNDb25zdHJ1Y3RvciA9IGlzQ29uc3RydWN0b3IKLSAgICAgICAgc2VsZi5wYXJh
bWV0ZXJzID0gcGFyYW1ldGVycwotCi0gICAgZGVmIG1hbmdsZU5hbWUoc2VsZiwgb2JqZWN0KToK
LSAgICAgICAgcU5hbWUgPSBvYmplY3QgKyAiLiIgKyBzZWxmLm5hbWUKLSAgICAgICAgbWFuZ2xl
ZE5hbWUgPSAiIgotICAgICAgICBpID0gMAotICAgICAgICB3aGlsZSBpIDwgbGVuKHFOYW1lKToK
LSAgICAgICAgICAgIGlmIHFOYW1lW2ldID09ICcuJzoKLSAgICAgICAgICAgICAgICBtYW5nbGVk
TmFtZSA9IG1hbmdsZWROYW1lICsgcU5hbWVbaSArIDFdLnVwcGVyKCkKLSAgICAgICAgICAgICAg
ICBpID0gaSArIDEKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbWFuZ2xlZE5h
bWUgPSBtYW5nbGVkTmFtZSArIHFOYW1lW2ldCi0gICAgICAgICAgICBpID0gaSArIDEKLSAgICAg
ICAgaWYgc2VsZi5pc0NvbnN0cnVjdG9yOgotICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBtYW5n
bGVkTmFtZSArICJDb25zdHJ1Y3RvciIKLSAgICAgICAgcmV0dXJuIG1hbmdsZWROYW1lCi0KLWRl
ZiBnZXRGdW5jdGlvbnMoc291cmNlKToKLQotICAgIHNvdXJjZSA9IG11bHRpbGluZUNvbW1lbnRS
ZWdFeHAuc3ViKCIvKiovIiwgc2luZ2xlTGluZUNvbW1lbnRSZWdFeHAuc3ViKCIvL1xuIiwgc291
cmNlKSkKLQotICAgIG1hdGNoZXMgPSBbIGYgZm9yIGYgaW4gZnVuY3Rpb25IZWFkUmVnRXhwLmZp
bmRpdGVyKHNvdXJjZSldCi0gICAgZnVuY3Rpb25Cb3VuZHMgPSBbXQotICAgIHN0YXJ0ID0gMAot
ICAgIGVuZCA9IDAKLSAgICBmb3IgbWF0Y2ggaW4gbWF0Y2hlczoKLSAgICAgICAgc3RhcnQgPSBt
YXRjaC5zdGFydCgpCi0gICAgICAgIGlmIHN0YXJ0IDwgZW5kOgotICAgICAgICAgICAgY29udGlu
dWUKLSAgICAgICAgZW5kID0gbWF0Y2guZW5kKCkKLSAgICAgICAgd2hpbGUgc291cmNlW2VuZF0g
IT0gJ3snOgotICAgICAgICAgICAgZW5kID0gZW5kICsgMQotICAgICAgICBkZXB0aCA9IDEKLSAg
ICAgICAgZW5kID0gZW5kICsgMQotICAgICAgICB3aGlsZSBkZXB0aCA+IDA6Ci0gICAgICAgICAg
ICBpZiBzb3VyY2VbZW5kXSA9PSAneyc6Ci0gICAgICAgICAgICAgICAgZGVwdGggPSBkZXB0aCAr
IDEKLSAgICAgICAgICAgIGVsaWYgc291cmNlW2VuZF0gPT0gJ30nOgotICAgICAgICAgICAgICAg
IGRlcHRoID0gZGVwdGggLSAxCi0gICAgICAgICAgICBlbmQgPSBlbmQgKyAxCi0gICAgICAgIGZ1
bmN0aW9uQm91bmRzLmFwcGVuZCgoc3RhcnQsIGVuZCkpCi0KLSAgICBmdW5jdGlvbnMgPSBbc291
cmNlW3N0YXJ0OmVuZF0uc3RyaXAoKSBmb3IgKHN0YXJ0LCBlbmQpIGluIGZ1bmN0aW9uQm91bmRz
XQotICAgIHJlc3VsdCA9IFtdCi0gICAgZm9yIGZ1bmN0aW9uIGluIGZ1bmN0aW9uczoKLSAgICAg
ICAgZnVuY3Rpb24gPSBtdWx0aWxpbmVDb21tZW50UmVnRXhwLnN1YigiIiwgZnVuY3Rpb24pCi0g
ICAgICAgIGZ1bmN0aW9uTmFtZSA9IGZ1bmN0aW9uTmFtZVJlZ0V4cC5maW5kYWxsKGZ1bmN0aW9u
KVswXQotICAgICAgICBmdW5jdGlvbklzQ29uc3RydWN0b3IgPSBmdW5jdGlvbklzQ29uc3RydWN0
b3JSZWdFeHAubWF0Y2goZnVuY3Rpb24pICE9IE5vbmUKLSAgICAgICAgZnVuY3Rpb25QYXJhbWV0
ZXJzID0gZnVuY3Rpb25QYXJhbWV0ZXJGaW5kZXIuZmluZGFsbChmdW5jdGlvbilbMF0uc3BsaXQo
JywnKQotICAgICAgICBpZiBsZW4oZnVuY3Rpb25QYXJhbWV0ZXJzWzBdKSA9PSAwOgotICAgICAg
ICAgICAgZnVuY3Rpb25QYXJhbWV0ZXJzID0gW10KLQotICAgICAgICByZXN1bHQuYXBwZW5kKEZ1
bmN0aW9uKGZ1bmN0aW9uTmFtZSwgZnVuY3Rpb24sIGZ1bmN0aW9uSXNDb25zdHJ1Y3RvciwgZnVu
Y3Rpb25QYXJhbWV0ZXJzKSkKLSAgICByZXR1cm4gcmVzdWx0Ci0KLWRlZiB3cml0ZUluY2x1ZGVE
aXJlY3RpdmVzKHdyaXRlciwgaGVhZGVyTmFtZXMpOgotICAgIGZvciBoZWFkZXJOYW1lIGluIGhl
YWRlck5hbWVzOgotICAgICAgICB3cml0ZXIud3JpdGUoIiNpbmNsdWRlICIgKyBoZWFkZXJOYW1l
ICsgIlxuIikKLQotZGVmIGdlbmVyYXRlQ29kZShzb3VyY2UpOgotICAgIGlucHV0RmlsZSA9IG9w
ZW4oc291cmNlLCAiciIpCi0gICAgYmFzZU5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHNvdXJjZSku
cmVwbGFjZSgiLmpzIiwgIiIpCi0gICAgCi0gICAgc291cmNlID0gIiIKLSAgICBmb3IgbGluZSBp
biBpbnB1dEZpbGU6Ci0gICAgICAgIHNvdXJjZSA9IHNvdXJjZSArIGxpbmUKLSAgICAKLSAgICBp
ZiBzeXMucGxhdGZvcm0gPT0gImN5Z3dpbiI6Ci0gICAgICAgIHNvdXJjZSA9IHNvdXJjZS5yZXBs
YWNlKCJcclxuIiwgIlxuIikKLSAgICByZXR1cm4gKGJhc2VOYW1lLCBnZXRGdW5jdGlvbnMoc291
cmNlKSwgZ2V0Q29weXJpZ2h0KHNvdXJjZSkpCi0KLWJ1aWx0aW5zID0gW10KLWNvcHlyaWdodHMg
PSBbXQotKG91dHB1dF9iYXNlLCBfKSA9IG9zLnBhdGguc3BsaXRleHQoYXJncy5vdXRwdXQpCi0K
LWlmIGFyZ3MuaW5wdXRfZGlyZWN0b3J5OgotICAgIGZvciBmaWxlIGluIG9zLmxpc3RkaXIoYXJn
cy5pbnB1dF9kaXJlY3RvcnkpOgotICAgICAgICBhcmdzLmlucHV0X2ZpbGUuYXBwZW5kKG9zLnBh
dGguam9pbihhcmdzLmlucHV0X2RpcmVjdG9yeSwgZmlsZSkpCi0KLWZvciBmaWxlIGluIGFyZ3Mu
aW5wdXRfZmlsZToKLSAgICBpZiBmbm1hdGNoLmZubWF0Y2goZmlsZSwgJyouanMnKToKLSAgICAg
ICAgKGJhc2VOYW1lLCBmdW5jdGlvbnMsIG9iamVjdENvcHlyaWdodHMpID0gZ2VuZXJhdGVDb2Rl
KGZpbGUpCi0gICAgICAgIGNvcHlyaWdodHMuZXh0ZW5kKG9iamVjdENvcHlyaWdodHMpCi0gICAg
ICAgIGJ1aWx0aW5zLmFwcGVuZCgoYmFzZU5hbWUsIGZ1bmN0aW9ucykpCi1uYW1lc3BhY2UgPSBh
cmdzLm5hbWVzcGFjZQotbWFjcm9QcmVmaXggPSBhcmdzLnByZWZpeAotc2NvcGVOYW1lID0gb3Mu
cGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKGFyZ3Mub3V0cHV0KSlbMF0KLWluY2x1ZGVH
dWFyZCA9IHNjb3BlTmFtZSArICJfSCIKLWhlYWRlck5hbWUgPSBzY29wZU5hbWUgKyAiLmgiCi0K
LWhlYWRlckluY2x1ZGVzID0gWyJcIkJ1aWx0aW5VdGlscy5oXCIiXSBpZiBuYW1lc3BhY2UgPT0g
IkpTQyIgZWxzZSBbIjxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4iXQotY29udGVudEluY2x1ZGVz
ID0gWyJcIkJ1aWx0aW5FeGVjdXRhYmxlcy5oXCIiLCAiXCJFeGVjdXRhYmxlLmhcIiIsICJcIkpT
Q2VsbElubGluZXMuaFwiIiwgIlwiVk0uaFwiIl0gaWYgbmFtZXNwYWNlID09ICJKU0MiIGVsc2Ug
WyI8cnVudGltZS9FeGVjdXRhYmxlLmg+IiwgIjxydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaD4i
LCAiPHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4iLCAiPHJ1bnRpbWUvSlNDZWxsSW5saW5l
cy5oPiIsICI8cnVudGltZS9WTS5oPiIsICJcIldlYkNvcmVKU0NsaWVudERhdGEuaFwiIl0KLQot
Y29weXJpZ2h0cyA9IGxpc3Qoc2V0KGNvcHlyaWdodHMpKQotCi1jb3B5cmlnaHRCb2R5ID0gIiIK
LWZvciBjb3B5cmlnaHQgaW4gY29weXJpZ2h0czoKLSAgICBjb3B5cmlnaHRCb2R5ID0gY29weXJp
Z2h0Qm9keSArIiAqIENvcHlyaWdodCAoQykgIiArIGNvcHlyaWdodCArICJcbiIKLQotYnVpbHRp
bnNIZWFkZXIgPSBvcGVuKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsICJ3IikKLWJ1aWx0aW5zSW1w
bGVtZW50YXRpb24gPSBvcGVuKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIiwgInciKQotY29weXJp
Z2h0VGV4dCA9ICIvKlxuIiArIGNvcHlyaWdodEJvZHkgKyBjb3B5cmlnaHRUZXh0Ci1idWlsdGlu
c0hlYWRlci53cml0ZSgiIiIlcwotJXMKLQotI2lmbmRlZiAlcwotI2RlZmluZSAlcwotCi0iIiIg
JSAoZ2VuZXJhdG9yU3RyaW5nLCBjb3B5cmlnaHRUZXh0LCBpbmNsdWRlR3VhcmQsIGluY2x1ZGVH
dWFyZCkpCi0KLXdyaXRlSW5jbHVkZURpcmVjdGl2ZXMoYnVpbHRpbnNIZWFkZXIsIGhlYWRlcklu
Y2x1ZGVzKQotCi1idWlsdGluc0hlYWRlci53cml0ZSgiIiIKLW5hbWVzcGFjZSBKU0MgewotICAg
IGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKLX0KLQotbmFtZXNwYWNlICVzIHsKLQotIiIiICUg
bmFtZXNwYWNlKQotCi1jb2RlUmVmZXJlbmNlcyA9IFtdCi0KLWZvciAob2JqZWN0TmFtZSwgZnVu
Y3Rpb25zKSBpbiBidWlsdGluczoKLSAgICBwcmludCgiR2VuZXJhdGluZyBiaW5kaW5ncyBmb3Ig
dGhlICVzIGJ1aWx0aW4uIiAlIG9iamVjdE5hbWUpCi0gICAgYnVpbHRpbnNIZWFkZXIud3JpdGUo
Ii8qICVzIGZ1bmN0aW9ucyAqL1xuIiAlIG9iamVjdE5hbWUpCi0gICAgZm9yIGZ1bmN0aW9uIGlu
IGZ1bmN0aW9uczoKLSAgICAgICAgbmFtZSA9IGZ1bmN0aW9uLm5hbWUKLSAgICAgICAgbWFuZ2xl
ZE5hbWUgPSBmdW5jdGlvbi5tYW5nbGVOYW1lKG9iamVjdE5hbWUpCi0gICAgICAgIG1hbmdsZWRO
YW1lID0gbWFuZ2xlZE5hbWVbMF0ubG93ZXIoKSArIG1hbmdsZWROYW1lWzE6XSArICJDb2RlIgot
ICAgICAgICBjb2RlUmVmZXJlbmNlcy5hcHBlbmQoKG1hbmdsZWROYW1lLCBmdW5jdGlvbikpCi0g
ICAgICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJleHRlcm4gY29uc3QgY2hhciogc18lcztcbiIg
JSBtYW5nbGVkTmFtZSkKLSAgICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoImV4dGVybiBjb25z
dCBpbnQgc18lc0xlbmd0aDtcbiIgJSBtYW5nbGVkTmFtZSkKLSAgICAgICAgYnVpbHRpbnNIZWFk
ZXIud3JpdGUoImV4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc18lc0NvbnN0cnVj
dEFiaWxpdHk7XG4iICUgbWFuZ2xlZE5hbWUpCi0gICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIlxu
IikKLSAgICBidWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSAlc19GT1JFQUNIXyVzX0JVSUxU
SU4obWFjcm8pIFxcXG4iICUgKG1hY3JvUHJlZml4LCBvYmplY3ROYW1lLnJlcGxhY2UoIi4iLCAi
XyIpLnVwcGVyKCkpKQotICAgIGZvciBmdW5jdGlvbiBpbiBmdW5jdGlvbnM6Ci0gICAgICAgIG1h
bmdsZWROYW1lID0gZnVuY3Rpb24ubWFuZ2xlTmFtZShvYmplY3ROYW1lKQotICAgICAgICBidWls
dGluc0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVzLCAlcywgJWQpIFxcXG4iICUgKGZ1bmN0aW9u
Lm5hbWUsIG1hbmdsZWROYW1lLCBsZW4oZnVuY3Rpb24ucGFyYW1ldGVycykpKQotICAgIGJ1aWx0
aW5zSGVhZGVyLndyaXRlKCJcbiIpCi0gICAgZm9yIGZ1bmN0aW9uIGluIGZ1bmN0aW9uczoKLSAg
ICAgICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiNkZWZpbmUgJXNfQlVJTFRJTl8lcyAxXG4iICUg
KG1hY3JvUHJlZml4LCBmdW5jdGlvbi5tYW5nbGVOYW1lKG9iamVjdE5hbWUpLnVwcGVyKCkpKQot
ICAgIGJ1aWx0aW5zSGVhZGVyLndyaXRlKCJcblxuIikKLW5hbWVzID0gW10KLWJ1aWx0aW5zSGVh
ZGVyLndyaXRlKCIjZGVmaW5lICVzX0ZPUkVBQ0hfQlVJTFRJTihtYWNybylcXFxuIiAlIG1hY3Jv
UHJlZml4KQotZm9yIChjb2RlUmVmZXJlbmNlLCBmdW5jdGlvbikgaW4gY29kZVJlZmVyZW5jZXM6
Ci0gICAgYnVpbHRpbnNIZWFkZXIud3JpdGUoIiAgICBtYWNybyglcywgJXMsIHNfJXNMZW5ndGgp
IFxcXG4iICUgKGNvZGVSZWZlcmVuY2UsIGZ1bmN0aW9uLm5hbWUsIGNvZGVSZWZlcmVuY2UpKQot
ICAgIG5hbWVzLmFwcGVuZChmdW5jdGlvbi5uYW1lKQotCi1idWlsdGluc0hlYWRlci53cml0ZSgi
XG5cbiIpCi1idWlsdGluc0hlYWRlci53cml0ZSgiI2RlZmluZSAlc19GT1JFQUNIX0JVSUxUSU5f
RlVOQ1RJT05fTkFNRShtYWNybykgXFxcbiIgJSBtYWNyb1ByZWZpeCkKLWZvciBuYW1lIGluIHNv
cnRlZChzZXQobmFtZXMpKToKLSAgICBidWlsdGluc0hlYWRlci53cml0ZSgiICAgIG1hY3JvKCVz
KSBcXFxuIiAlIG5hbWUpCi1idWlsdGluc0hlYWRlci53cml0ZSgiIiIKLQotI2RlZmluZSBERUNM
QVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291
bnQpIFxcCi0gICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3Io
SlNDOjpWTSYpOwotCi0lc19GT1JFQUNIX0JVSUxUSU4oREVDTEFSRV9CVUlMVElOX0dFTkVSQVRP
UikKLSN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCi0KLSNkZWZpbmUgJXNfQlVJTFRJ
Tl9FWElTVFMobmFtZSkgZGVmaW5lZCAlc19CVUlMVElOXyAjIyBuYW1lCi0KLX0KLQotI2VuZGlm
IC8vICVzCi0KLSIiIiAlIChtYWNyb1ByZWZpeCwgbWFjcm9QcmVmaXgsIG1hY3JvUHJlZml4LCBp
bmNsdWRlR3VhcmQpKQotCi1idWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIiVzCi0lcwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICIlcyIKLQotIiIiICAlIChnZW5lcmF0
b3JTdHJpbmcsIGNvcHlyaWdodFRleHQsIGhlYWRlck5hbWUpKQotCi13cml0ZUluY2x1ZGVEaXJl
Y3RpdmVzKGJ1aWx0aW5zSW1wbGVtZW50YXRpb24sIGNvbnRlbnRJbmNsdWRlcykKLQotYnVpbHRp
bnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiIiIKLW5hbWVzcGFjZSAlcyB7Ci0KLSIiIiAgJSAobmFt
ZXNwYWNlKSkKLQotCi0KLWZvciAoY29kZVJlZmVyZW5jZSwgZnVuY3Rpb24pIGluIGNvZGVSZWZl
cmVuY2VzOgotICAgIHNvdXJjZSA9IGZ1bmN0aW9uLnNvdXJjZQotICAgIHNvdXJjZSA9ICIoZnVu
Y3Rpb24gIiArIHNvdXJjZVtzb3VyY2UuaW5kZXgoIigiKTpdICsgIikiCi0gICAgbGluZXMgPSBq
c29uLmR1bXBzKHNvdXJjZSlbMTotMV0uc3BsaXQoIlxcbiIpCi0gICAgc291cmNlTGVuZ3RoID0g
bGVuKHNvdXJjZSkKLSAgICBzb3VyY2UgPSAiIgotICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAg
ICAgICBzb3VyY2UgPSBzb3VyY2UgKyAoIiAgICBcIiVzXFxuXCIgXFxcbiIgJSBsaW5lKQotICAg
IGJ1aWx0aW5zSW1wbGVtZW50YXRpb24ud3JpdGUoImNvbnN0IGNoYXIqIHNfJXMgPVxuJXM7XG5c
biIgJSAoY29kZVJlZmVyZW5jZSwgc291cmNlKSkKLSAgICBidWlsdGluc0ltcGxlbWVudGF0aW9u
LndyaXRlKCJjb25zdCBpbnQgc18lc0xlbmd0aCA9ICVkO1xuXG4iICUgKGNvZGVSZWZlcmVuY2Us
IHNvdXJjZUxlbmd0aCArIDEpKSAjICsgMSBmb3IgXG4KLSAgICBjb25zdHJ1Y3RBYmlsaXR5ID0g
IkpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0IgotICAgIGlmIGZ1bmN0aW9u
LmlzQ29uc3RydWN0b3I6Ci0gICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSAiSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QiCi0gICAgYnVpbHRpbnNJbXBsZW1lbnRhdGlvbi53cml0
ZSgiY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfJXNDb25zdHJ1Y3RBYmlsaXR5ID0gJXM7
XG5cbiIgJSAoY29kZVJlZmVyZW5jZSwgY29uc3RydWN0QWJpbGl0eSkpICMgKyAxIGZvciBcbgot
Ci1idWlsdGluc0ltcGxlbWVudGF0aW9uLndyaXRlKCIiIgotI2RlZmluZSBERUZJTkVfQlVJTFRJ
Tl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKLUpT
Qzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBc
XAotIiIiKTsKLQotaWYgKG5hbWVzcGFjZSA9PSAiSlNDIik6Ci0gICAgYnVpbHRpbnNJbXBsZW1l
bnRhdGlvbi53cml0ZSgiIiJ7XFwKLSAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCkt
PmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygp
LT5jb2RlTmFtZSMjU291cmNlKCkpOyBcXAotIiIiKQotZWxzZToKLSAgICBidWlsdGluTmFtZSA9
IHNjb3BlTmFtZVswXS5sb3dlcigpICsgc2NvcGVOYW1lWzE6XQotICAgIGJ1aWx0aW5zSW1wbGVt
ZW50YXRpb24ud3JpdGUoIiIie1xcCi0gICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBz
dGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcXAotICAgIHJldHVy
biBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJXMoKS5jb2RlTmFtZSMjRXhlY3V0YWJs
ZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJXMoKS5jb2RlTmFt
ZSMjU291cmNlKCkpOyBcXAotIiIiJSAoYnVpbHRpbk5hbWUsIGJ1aWx0aW5OYW1lKSkKLQotYnVp
bHRpbnNJbXBsZW1lbnRhdGlvbi53cml0ZSgiIiJ9Ci0lc19GT1JFQUNIX0JVSUxUSU4oREVGSU5F
X0JVSUxUSU5fR0VORVJBVE9SKQotI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgotfQot
Ci0iIiIlIChtYWNyb1ByZWZpeCkpCi0KLWJ1aWx0aW5zSGVhZGVyLmNsb3NlKCkKLWJ1aWx0aW5z
SW1wbGVtZW50YXRpb24uY2xvc2UoKQotCi1pZiAobm90IG9zLnBhdGguZXhpc3RzKG91dHB1dF9i
YXNlICsgIi5oIikpIG9yIChub3QgZmlsZWNtcC5jbXAob3V0cHV0X2Jhc2UgKyAiLmgudG1wIiwg
b3V0cHV0X2Jhc2UgKyAiLmgiLCBzaGFsbG93PUZhbHNlKSk6Ci0gICAgaWYgKG9zLnBhdGguZXhp
c3RzKG91dHB1dF9iYXNlICsgIi5oIikpOgotICAgICAgICBvcy5yZW1vdmUob3V0cHV0X2Jhc2Ug
KyAiLmgiKQotICAgIG9zLnJlbmFtZShvdXRwdXRfYmFzZSArICIuaC50bXAiLCBvdXRwdXRfYmFz
ZSArICIuaCIpCi1lbHNlOgotICAgIG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIuaC50bXAiKQot
Ci1pZiAobm90IG9zLnBhdGguZXhpc3RzKG91dHB1dF9iYXNlICsgIi5jcHAiKSkgb3IgKG5vdCBm
aWxlY21wLmNtcChvdXRwdXRfYmFzZSArICIuY3BwLnRtcCIsIG91dHB1dF9iYXNlICsgIi5jcHAi
LCBzaGFsbG93PUZhbHNlKSk6Ci0gICAgaWYgKG9zLnBhdGguZXhpc3RzKG91dHB1dF9iYXNlICsg
Ii5jcHAiKSk6Ci0gICAgICAgIG9zLnJlbW92ZShvdXRwdXRfYmFzZSArICIuY3BwIikKLSAgICBv
cy5yZW5hbWUob3V0cHV0X2Jhc2UgKyAiLmNwcC50bXAiLCBvdXRwdXRfYmFzZSArICIuY3BwIikK
LWVsc2U6Ci0gICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5jcHAudG1wIikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDcwNzA5YjQ4MDgzODhlNjc4ZjNkYjIzODJmNDZhM2Q2MzMzOTA2ZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpz
LWJ1aWx0aW5zLnB5CkBAIC0wLDAgKzEsMTY0IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMK
KyMgQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KyMgVGhpcyBzY3JpcHQgZ2VuZXJhdGVzIEMrKyBiaW5kaW5ncyBmb3IgSmF2YVNjcmlwdCBidWls
dGlucy4KKyMgR2VuZXJhdG9ycyBmb3IgaW5kaXZpZHVhbCBmaWxlcyBhcmUgbG9jYXRlZCBpbiB0
aGUgYnVpbHRpbnMvIGRpcmVjdG9yeS4KKworaW1wb3J0IGZubWF0Y2gKK2ltcG9ydCBsb2dnaW5n
CitpbXBvcnQgb3B0cGFyc2UKK2ltcG9ydCBvcworCitsb2dnaW5nLmJhc2ljQ29uZmlnKGZvcm1h
dD0nJShsZXZlbG5hbWUpczogJShtZXNzYWdlKXMnLCBsZXZlbD1sb2dnaW5nLkVSUk9SKQorbG9n
ID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcpCisKK2Zyb20gbGF6eXdyaXRlciBpbXBvcnQg
TGF6eUZpbGVXcml0ZXIKKworaW1wb3J0IGJ1aWx0aW5zCitmcm9tIGJ1aWx0aW5zIGltcG9ydCAq
CisKKworZGVmIGdlbmVyYXRlX2JpbmRpbmdzX2Zvcl9idWlsdGluc19maWxlcyhidWlsdGluc19m
aWxlcz1bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0
X3BhdGg9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
Y2F0ZW5hdGVfb3V0cHV0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb21iaW5lZF9vdXRwdXQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZyYW1ld29ya19uYW1lPSIiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmb3JjZV9vdXRwdXQ9RmFsc2UpOgorCisgICAgZ2VuZXJhdG9y
cyA9IFtdCisKKyAgICBtb2RlbCA9IEJ1aWx0aW5zQ29sbGVjdGlvbihmcmFtZXdvcmtfbmFtZT1m
cmFtZXdvcmtfbmFtZSkKKworICAgIGZvciBmaWxlcGF0aCBpbiBidWlsdGluc19maWxlczoKKyAg
ICAgICAgd2l0aCBvcGVuKGZpbGVwYXRoLCAiciIpIGFzIGZpbGU6CisgICAgICAgICAgICBmaWxl
X3RleHQgPSBmaWxlLnJlYWQoKQorICAgICAgICAgICAgZmlsZV9uYW1lID0gb3MucGF0aC5iYXNl
bmFtZShmaWxlcGF0aCkKKworICAgICAgICAgICAgIyBJZiB0aGlzIGlzIGEgdGVzdCBmaWxlLCB0
aGVuIHJld3JpdGUgdGhlIGZpbGVuYW1lIHRvIHJlbW92ZSB0aGUKKyAgICAgICAgICAgICMgdGVz
dCBydW5uaW5nIG9wdGlvbnMgZW5jb2RlZCBpbnRvIHRoZSBmaWxlbmFtZS4KKyAgICAgICAgICAg
IGlmIGZpbGVfbmFtZS5zdGFydHN3aXRoKGZyYW1ld29ya19uYW1lKToKKyAgICAgICAgICAgICAg
ICAoXywgb2JqZWN0X25hbWUsIF8pID0gZmlsZV9uYW1lLnNwbGl0KCctJykKKyAgICAgICAgICAg
ICAgICBmaWxlX25hbWUgPSBvYmplY3RfbmFtZSArICcuanMnCisgICAgICAgICAgICBtb2RlbC5w
YXJzZV9idWlsdGluc19maWxlKGZpbGVfbmFtZSwgZmlsZV90ZXh0KQorCisgICAgaWYgY29tYmlu
ZWRfb3V0cHV0OgorICAgICAgICBsb2cuZGVidWcoIlVzaW5nIGdlbmVyYXRvciBzdHlsZTogY29t
YmluZWQgZmlsZXMgZm9yIGFsbCBidWlsdGlucy4iKQorICAgICAgICBnZW5lcmF0b3JzLmFwcGVu
ZChCdWlsdGluc0NvbWJpbmVkSGVhZGVyR2VuZXJhdG9yKG1vZGVsKSkKKyAgICAgICAgZ2VuZXJh
dG9ycy5hcHBlbmQoQnVpbHRpbnNDb21iaW5lZEltcGxlbWVudGF0aW9uR2VuZXJhdG9yKG1vZGVs
KSkKKyAgICBlbHNlOgorICAgICAgICBsb2cuZGVidWcoIlVzaW5nIGdlbmVyYXRvciBzdHlsZTog
c2luZ2xlIGZpbGVzIGZvciBlYWNoIGJ1aWx0aW4uIikKKyAgICAgICAgZm9yIG9iamVjdCBpbiBt
b2RlbC5vYmplY3RzOgorICAgICAgICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQoQnVpbHRpbnNTZXBh
cmF0ZUhlYWRlckdlbmVyYXRvcihtb2RlbCwgb2JqZWN0KSkKKyAgICAgICAgICAgIGdlbmVyYXRv
cnMuYXBwZW5kKEJ1aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihtb2RlbCwg
b2JqZWN0KSkKKworICAgICAgICAgICAgaWYgbW9kZWwuZnJhbWV3b3JrIGlzIEZyYW1ld29ya3Mu
V2ViQ29yZToKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3JzLmFwcGVuZChCdWlsdGluc1NlcGFy
YXRlV3JhcHBlckdlbmVyYXRvcihtb2RlbCwgb2JqZWN0KSkKKworICAgIGxvZy5kZWJ1ZygiIikK
KyAgICBsb2cuZGVidWcoIkdlbmVyYXRpbmcgYmluZGluZ3MgZm9yIGJ1aWx0aW5zLiIpCisKKyAg
ICB0ZXN0X3Jlc3VsdF9maWxlX2NvbnRlbnRzID0gW10KKworICAgIGZvciBnZW5lcmF0b3IgaW4g
Z2VuZXJhdG9yczoKKyAgICAgICAgb3V0cHV0X2ZpbGVwYXRoID0gb3MucGF0aC5qb2luKG91dHB1
dF9wYXRoLCBnZW5lcmF0b3Iub3V0cHV0X2ZpbGVuYW1lKCkpCisgICAgICAgIGxvZy5kZWJ1Zygi
R2VuZXJhdGluZyBvdXRwdXQgZmlsZTogJXMiICUgZ2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSgp
KQorICAgICAgICBvdXRwdXQgPSBnZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KCkKKworICAgICAg
ICBsb2cuZGVidWcoIi0tLSIpCisgICAgICAgIGxvZy5kZWJ1ZygiXG4iICsgb3V0cHV0KQorICAg
ICAgICBsb2cuZGVidWcoIi0tLSIpCisgICAgICAgIGlmIGNvbmNhdGVuYXRlX291dHB1dDoKKyAg
ICAgICAgICAgIHRlc3RfcmVzdWx0X2ZpbGVfY29udGVudHMuYXBwZW5kKCcjIyMgQmVnaW4gRmls
ZTogJXMnICUgZ2VuZXJhdG9yLm91dHB1dF9maWxlbmFtZSgpKQorICAgICAgICAgICAgdGVzdF9y
ZXN1bHRfZmlsZV9jb250ZW50cy5hcHBlbmQob3V0cHV0KQorICAgICAgICAgICAgdGVzdF9yZXN1
bHRfZmlsZV9jb250ZW50cy5hcHBlbmQoJyMjIyBFbmQgRmlsZTogJXMnICUgZ2VuZXJhdG9yLm91
dHB1dF9maWxlbmFtZSgpKQorICAgICAgICAgICAgdGVzdF9yZXN1bHRfZmlsZV9jb250ZW50cy5h
cHBlbmQoJycpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2cuZGVidWcoIldyaXRpbmcg
ZmlsZTogJXMiICUgb3V0cHV0X2ZpbGVwYXRoKQorICAgICAgICAgICAgb3V0cHV0X2ZpbGUgPSBM
YXp5RmlsZVdyaXRlcihvdXRwdXRfZmlsZXBhdGgsIGZvcmNlX291dHB1dCkKKyAgICAgICAgICAg
IG91dHB1dF9maWxlLndyaXRlKG91dHB1dCkKKyAgICAgICAgICAgIG91dHB1dF9maWxlLmNsb3Nl
KCkKKworICAgIGlmIGNvbmNhdGVuYXRlX291dHB1dDoKKyAgICAgICAgZmlsZW5hbWUgPSBvcy5w
YXRoLmpvaW4ob3MucGF0aC5iYXNlbmFtZShidWlsdGluc19maWxlc1swXSkgKyAnLXJlc3VsdCcp
CisgICAgICAgIG91dHB1dF9maWxlcGF0aCA9IG9zLnBhdGguam9pbihvdXRwdXRfcGF0aCwgZmls
ZW5hbWUpCisgICAgICAgIGxvZy5kZWJ1ZygiV3JpdGluZyBmaWxlOiAlcyIgJSBvdXRwdXRfZmls
ZXBhdGgpIAorICAgICAgICBvdXRwdXRfZmlsZSA9IExhenlGaWxlV3JpdGVyKG91dHB1dF9maWxl
cGF0aCwgZm9yY2Vfb3V0cHV0KQorICAgICAgICBvdXRwdXRfZmlsZS53cml0ZSgnXG4nLmpvaW4o
dGVzdF9yZXN1bHRfZmlsZV9jb250ZW50cykpCisgICAgICAgIG91dHB1dF9maWxlLmNsb3NlKCkK
KworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBhbGxvd2VkX2ZyYW1ld29ya19uYW1l
cyA9IFsnSmF2YVNjcmlwdENvcmUnLCAnV2ViQ29yZSddCisgICAgY2xpX3BhcnNlciA9IG9wdHBh
cnNlLk9wdGlvblBhcnNlcih1c2FnZT0idXNhZ2U6ICVwcm9nIFtvcHRpb25zXSBCdWlsdGluMS5q
cyBbLCBCdWlsdGluMi5qcywgLi4uXSIpCisgICAgY2xpX3BhcnNlci5hZGRfb3B0aW9uKCItaSIs
ICItLWlucHV0LWRpcmVjdG9yeSIsIGhlbHA9IklmIHNwZWNpZmllZCwgZ2VuZXJhdGVzIGJ1aWx0
aW5zIGZyb20gYWxsIEphdmFTY3JpcHQgZmlsZXMgaW4gdGhlIHNwZWNpZmllZCBkaXJlY3Rvcnkg
aW4gYWRkaXRpb24gdG8gc3BlY2lmaWMgZmlsZXMgcGFzc2VkIGFzIGFyZ3VtZW50cy4iKQorICAg
IGNsaV9wYXJzZXIuYWRkX29wdGlvbigiLW8iLCAiLS1vdXRwdXQtZGlyZWN0b3J5IiwgaGVscD0i
RGlyZWN0b3J5IHdoZXJlIGdlbmVyYXRlZCBmaWxlcyBzaG91bGQgYmUgd3JpdHRlbi4iKQorICAg
IGNsaV9wYXJzZXIuYWRkX29wdGlvbigiLS1mcmFtZXdvcmsiLCB0eXBlPSJjaG9pY2UiLCBjaG9p
Y2VzPWFsbG93ZWRfZnJhbWV3b3JrX25hbWVzLCBoZWxwPSJEZXN0aW5hdGlvbiBmcmFtZXdvcmsg
Zm9yIGdlbmVyYXRlZCBmaWxlcy4iKQorICAgIGNsaV9wYXJzZXIuYWRkX29wdGlvbigiLS1mb3Jj
ZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IkZvcmNlIG91dHB1dCBvZiBnZW5lcmF0ZWQg
c2NyaXB0cywgZXZlbiBpZiBub3RoaW5nIGNoYW5nZWQuIikKKyAgICBjbGlfcGFyc2VyLmFkZF9v
cHRpb24oIi0tY29tYmluZWQiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJQcm9kdWNlIG9u
ZSAuaC8uY3BwIGZpbGUgaW5zdGVhZCBvZiBwcm9kdWNpbmcgb25lIHBlciBidWlsdGluIG9iamVj
dC4iKQorICAgIGNsaV9wYXJzZXIuYWRkX29wdGlvbigiLXYiLCAiLS1kZWJ1ZyIsIGFjdGlvbj0i
c3RvcmVfdHJ1ZSIsIGhlbHA9IkxvZyBleHRyYSBvdXRwdXQgZm9yIGRlYnVnZ2luZyB0aGUgZ2Vu
ZXJhdG9yIGl0c2VsZi4iKQorICAgIGNsaV9wYXJzZXIuYWRkX29wdGlvbigiLXQiLCAiLS10ZXN0
IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iRW5hYmxlIHRlc3QgbW9kZS4iKQorCisgICAg
YXJnX29wdGlvbnMsIGFyZ192YWx1ZXMgPSBjbGlfcGFyc2VyLnBhcnNlX2FyZ3MoKQorICAgIGlm
IGxlbihhcmdfdmFsdWVzKSBpcyAwIGFuZCBub3QgYXJnX29wdGlvbnMuaW5wdXRfZGlyZWN0b3J5
OgorICAgICAgICByYWlzZSBQYXJzZUV4Y2VwdGlvbigiQXQgbGVhc3Qgb25lIGlucHV0IGZpbGUg
b3IgZGlyZWN0b3J5IGV4cGVjdGVkLiIpCisKKyAgICBpZiBub3QgYXJnX29wdGlvbnMub3V0cHV0
X2RpcmVjdG9yeToKKyAgICAgICAgcmFpc2UgUGFyc2VFeGNlcHRpb24oIk1pc3Npbmcgb3V0cHV0
IGRpcmVjdG9yeS4iKQorCisgICAgaWYgYXJnX29wdGlvbnMuZGVidWc6CisgICAgICAgIGxvZy5z
ZXRMZXZlbChsb2dnaW5nLkRFQlVHKQorCisgICAgaW5wdXRfZmlsZXBhdGhzID0gYXJnX3ZhbHVl
c1s6XQorICAgIGlmIGFyZ19vcHRpb25zLmlucHV0X2RpcmVjdG9yeToKKyAgICAgICAgZm9yIGZp
bGVwYXRoIGluIG9zLmxpc3RkaXIoYXJnX29wdGlvbnMuaW5wdXRfZGlyZWN0b3J5KToKKyAgICAg
ICAgICAgIGlucHV0X2ZpbGVwYXRocy5hcHBlbmQob3MucGF0aC5qb2luKGFyZ19vcHRpb25zLmlu
cHV0X2RpcmVjdG9yeSwgZmlsZXBhdGgpKQorCisgICAgaW5wdXRfZmlsZXBhdGhzID0gZmlsdGVy
KGxhbWJkYSBuYW1lOiBmbm1hdGNoLmZubWF0Y2gobmFtZSwgJyouanMnKSwgaW5wdXRfZmlsZXBh
dGhzKQorCisgICAgb3B0aW9ucyA9IHsKKyAgICAgICAgJ291dHB1dF9wYXRoJzogYXJnX29wdGlv
bnMub3V0cHV0X2RpcmVjdG9yeSwKKyAgICAgICAgJ2ZyYW1ld29ya19uYW1lJzogYXJnX29wdGlv
bnMuZnJhbWV3b3JrLAorICAgICAgICAnY29tYmluZWRfb3V0cHV0JzogYXJnX29wdGlvbnMuY29t
YmluZWQsCisgICAgICAgICdmb3JjZV9vdXRwdXQnOiBhcmdfb3B0aW9ucy5mb3JjZSwKKyAgICAg
ICAgJ2NvbmNhdGVuYXRlX291dHB1dCc6IGFyZ19vcHRpb25zLnRlc3QsCisgICAgfQorCisgICAg
bG9nLmRlYnVnKCJHZW5lcmF0aW5nIGNvZGUgZm9yIGJ1aWx0aW5zLiIpCisgICAgbG9nLmRlYnVn
KCJQYXJzZWQgb3B0aW9uczoiKQorICAgIGZvciBvcHRpb24sIHZhbHVlIGluIG9wdGlvbnMuaXRl
bXMoKToKKyAgICAgICAgbG9nLmRlYnVnKCIgICAgJXM6ICVzIiAlIChvcHRpb24sIHZhbHVlKSkK
KyAgICBsb2cuZGVidWcoIiIpCisgICAgbG9nLmRlYnVnKCJJbnB1dCBmaWxlczoiKQorICAgIGZv
ciBmaWxlcGF0aCBpbiBpbnB1dF9maWxlcGF0aHM6CisgICAgICAgIGxvZy5kZWJ1ZygiICAgICVz
IiAlIGZpbGVwYXRoKQorICAgIGxvZy5kZWJ1ZygiIikKKworICAgIHRyeToKKyAgICAgICAgZ2Vu
ZXJhdGVfYmluZGluZ3NfZm9yX2J1aWx0aW5zX2ZpbGVzKGJ1aWx0aW5zX2ZpbGVzPWlucHV0X2Zp
bGVwYXRocywgKipvcHRpb25zKQorICAgIGV4Y2VwdCBQYXJzZUV4Y2VwdGlvbiBhcyBlOgorICAg
ICAgICBpZiBhcmdfb3B0aW9ucy50ZXN0OgorICAgICAgICAgICAgbG9nLmVycm9yKGUubWVzc2Fn
ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlICAjIEZvcmNlIHRoZSBidWlsZCB0
byBmYWlsLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvbGF6eXdy
aXRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2xhenl3cml0ZXIucHkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjkzYTJjNjk3Y2FjYmQ3NzQxZmU5OThlZjE5MGViMWNkNmYyNDUzOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2xhenl3cml0ZXIucHkK
QEAgLTAsMCArMSw1OCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAo
YykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykg
MjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBBIHdyaXRlciB0aGF0IG9ubHkgdXBkYXRlcyBmaWxl
IGlmIGl0IGFjdHVhbGx5IGNoYW5nZWQuCisKKworY2xhc3MgTGF6eUZpbGVXcml0ZXI6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVwYXRoLCBmb3JjZV9vdXRwdXQpOgorICAgICAgICBzZWxm
Ll9maWxlcGF0aCA9IGZpbGVwYXRoCisgICAgICAgIHNlbGYuX291dHB1dCA9ICIiCisgICAgICAg
IHNlbGYuZm9yY2Vfb3V0cHV0ID0gZm9yY2Vfb3V0cHV0CisKKyAgICBkZWYgd3JpdGUoc2VsZiwg
dGV4dCk6CisgICAgICAgIHNlbGYuX291dHB1dCArPSB0ZXh0CisKKyAgICBkZWYgY2xvc2Uoc2Vs
Zik6CisgICAgICAgIHRleHRfY2hhbmdlZCA9IFRydWUKKyAgICAgICAgc2VsZi5fb3V0cHV0ID0g
c2VsZi5fb3V0cHV0LnJzdHJpcCgpICsgIlxuIgorCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IGlmIHNlbGYuZm9yY2Vfb3V0cHV0OgorICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAg
ICAgIHJlYWRfZmlsZSA9IG9wZW4oc2VsZi5fZmlsZXBhdGgsICJyIikKKyAgICAgICAgICAgIG9s
ZF90ZXh0ID0gcmVhZF9maWxlLnJlYWQoKQorICAgICAgICAgICAgcmVhZF9maWxlLmNsb3NlKCkK
KyAgICAgICAgICAgIHRleHRfY2hhbmdlZCA9IG9sZF90ZXh0ICE9IHNlbGYuX291dHB1dAorICAg
ICAgICBleGNlcHQ6CisgICAgICAgICAgICAjIElnbm9yZSwganVzdCBvdmVyd3JpdGUgYnkgZGVm
YXVsdAorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGlmIHRleHRfY2hhbmdlZCBvciBzZWxm
LmZvcmNlX291dHB1dDoKKyAgICAgICAgICAgIG91dF9maWxlID0gb3BlbihzZWxmLl9maWxlcGF0
aCwgInciKQorICAgICAgICAgICAgb3V0X2ZpbGUud3JpdGUoc2VsZi5fb3V0cHV0KQorICAgICAg
ICAgICAgb3V0X2ZpbGUuY2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNv
bWJpbmVkLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
SmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0
NWQ4MWNlYjllZDkwNjQyNTg0ZmEwYmI0NThkY2YwZGJhZGMzYTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0
Q29yZS1CdWlsdGluLlByb21pc2UtQ29tYmluZWQuanMKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBy
ZWplY3RQcm9taXNlKHByb21pc2UsIHJlYXNvbikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAg
ICB2YXIgcmVhY3Rpb25zID0gcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0aW9uczsKKyAgICBw
cm9taXNlLkBwcm9taXNlUmVzdWx0ID0gcmVhc29uOworICAgIHByb21pc2UuQHByb21pc2VGdWxm
aWxsUmVhY3Rpb25zID0gdW5kZWZpbmVkOworICAgIHByb21pc2UuQHByb21pc2VSZWplY3RSZWFj
dGlvbnMgPSB1bmRlZmluZWQ7CisgICAgcHJvbWlzZS5AcHJvbWlzZVN0YXRlID0gQHByb21pc2VS
ZWplY3RlZDsKKworICAgIEBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24ucHJvbWlzZVJlamVjdGVk
KHByb21pc2UsIHJlYXNvbiwgcmVhY3Rpb25zKTsKKworICAgIEB0cmlnZ2VyUHJvbWlzZVJlYWN0
aW9ucyhyZWFjdGlvbnMsIHJlYXNvbik7Cit9CisKK2Z1bmN0aW9uIGZ1bGZpbGxQcm9taXNlKHBy
b21pc2UsIHZhbHVlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciByZWFjdGlvbnMg
PSBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9uczsKKyAgICBwcm9taXNlLkBwcm9taXNl
UmVzdWx0ID0gdmFsdWU7CisgICAgcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlvbnMgPSB1
bmRlZmluZWQ7CisgICAgcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucyA9IHVuZGVmaW5l
ZDsKKyAgICBwcm9taXNlLkBwcm9taXNlU3RhdGUgPSBAcHJvbWlzZUZ1bGZpbGxlZDsKKworICAg
IEBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24ucHJvbWlzZUZ1bGZpbGxlZChwcm9taXNlLCB2YWx1
ZSwgcmVhY3Rpb25zKTsKKworICAgIEB0cmlnZ2VyUHJvbWlzZVJlYWN0aW9ucyhyZWFjdGlvbnMs
IHZhbHVlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRD
b3JlLUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDVkODFjZWI5ZWQ5
MDY0MjU4NGZhMGJiNDU4ZGNmMGRiYWRjM2EyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRp
bi5Qcm9taXNlLVNlcGFyYXRlLmpzCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rpb24gcmVqZWN0UHJvbWlz
ZShwcm9taXNlLCByZWFzb24pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIHJlYWN0
aW9ucyA9IHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnM7CisgICAgcHJvbWlzZS5AcHJv
bWlzZVJlc3VsdCA9IHJlYXNvbjsKKyAgICBwcm9taXNlLkBwcm9taXNlRnVsZmlsbFJlYWN0aW9u
cyA9IHVuZGVmaW5lZDsKKyAgICBwcm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25zID0gdW5k
ZWZpbmVkOworICAgIHByb21pc2UuQHByb21pc2VTdGF0ZSA9IEBwcm9taXNlUmVqZWN0ZWQ7CisK
KyAgICBASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLnByb21pc2VSZWplY3RlZChwcm9taXNlLCBy
ZWFzb24sIHJlYWN0aW9ucyk7CisKKyAgICBAdHJpZ2dlclByb21pc2VSZWFjdGlvbnMocmVhY3Rp
b25zLCByZWFzb24pOworfQorCitmdW5jdGlvbiBmdWxmaWxsUHJvbWlzZShwcm9taXNlLCB2YWx1
ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgcmVhY3Rpb25zID0gcHJvbWlzZS5A
cHJvbWlzZUZ1bGZpbGxSZWFjdGlvbnM7CisgICAgcHJvbWlzZS5AcHJvbWlzZVJlc3VsdCA9IHZh
bHVlOworICAgIHByb21pc2UuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zID0gdW5kZWZpbmVkOwor
ICAgIHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnMgPSB1bmRlZmluZWQ7CisgICAgcHJv
bWlzZS5AcHJvbWlzZVN0YXRlID0gQHByb21pc2VGdWxmaWxsZWQ7CisKKyAgICBASW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLnByb21pc2VGdWxmaWxsZWQocHJvbWlzZSwgdmFsdWUsIHJlYWN0aW9u
cyk7CisKKyAgICBAdHJpZ2dlclByb21pc2VSZWFjdGlvbnMocmVhY3Rpb25zLCB2YWx1ZSk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlu
cy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0
aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0NDhiOTgzMmI2NmE0YmRmMGZl
MmM0YmQ4NzAxMGY2MGFkNzJkZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3Rv
dHlwZS1Db21iaW5lZC5qcwpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKK2Z1bmN0aW9uIGV2ZXJ5KGNhbGxi
YWNrIC8qLCB0aGlzQXJnICovKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICh0aGlz
ID09PSBudWxsKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBl
LmV2ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIik7CisgICAgCisgICAgaWYg
KHRoaXMgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5
LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkIik7
CisgICAgCisgICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTsKKyAgICB2YXIgbGVuZ3RoID0g
QHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7CisKKyAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAi
ZnVuY3Rpb24iKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBl
LmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOworICAgIAorICAgIHZhciB0aGlz
QXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7Cisg
ICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAo
IShpIGluIGFycmF5KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIWNhbGxi
YWNrLkBjYWxsKHRoaXNBcmcsIGFycmF5W2ldLCBpLCBhcnJheSkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiBm
b3JFYWNoKGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKwor
ICAgIGlmICh0aGlzID09PSBudWxsKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJy
YXkucHJvdG90eXBlLmZvckVhY2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwiKTsK
KyAgICAKKyAgICBpZiAodGhpcyA9PT0gdW5kZWZpbmVkKQorICAgICAgICB0aHJvdyBuZXcgQFR5
cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmZvckVhY2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90
IGJlIHVuZGVmaW5lZCIpOworICAgIAorICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7Cisg
ICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpOworCisgICAgaWYgKHR5cGVv
ZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3Io
IkFycmF5LnByb3RvdHlwZS5mb3JFYWNoIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOwor
ICAgIAorICAgIHZhciB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNb
MV0gOiB1bmRlZmluZWQ7CisgICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkr
KykgeworICAgICAgICBpZiAoaSBpbiBhcnJheSkKKyAgICAgICAgICAgIGNhbGxiYWNrLkBjYWxs
KHRoaXNBcmcsIGFycmF5W2ldLCBpLCBhcnJheSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUt
QnVpbHRpbi5wcm90b3R5cGUtU2VwYXJhdGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1TZXBh
cmF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41NDQ4Yjk4MzJiNjZhNGJkZjBmZTJjNGJkODcwMTBmNjBhZDcy
ZGYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtU2VwYXJhdGUuanMK
QEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworCitmdW5jdGlvbiBldmVyeShjYWxsYmFjayAvKiwgdGhpc0FyZyAq
LykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAodGhpcyA9PT0gbnVsbCkKKyAgICAg
ICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0
aGF0IHx0aGlzfCBub3QgYmUgbnVsbCIpOworICAgIAorICAgIGlmICh0aGlzID09PSB1bmRlZmlu
ZWQpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZXZlcnkg
cmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZCIpOworICAgIAorICAgIHZhciBh
cnJheSA9IEBPYmplY3QodGhpcyk7CisgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5s
ZW5ndGgpOworCisgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikKKyAgICAg
ICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBt
dXN0IGJlIGEgZnVuY3Rpb24iKTsKKyAgICAKKyAgICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50cy5s
ZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkOworICAgIAorICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKCEoaSBpbiBhcnJheSkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKCFjYWxsYmFjay5AY2FsbCh0aGlzQXJn
LCBhcnJheVtpXSwgaSwgYXJyYXkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFjayAv
KiwgdGhpc0FyZyAqLykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAodGhpcyA9PT0g
bnVsbCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5mb3JF
YWNoIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIik7CisgICAgCisgICAgaWYgKHRo
aXMgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnBy
b3RvdHlwZS5mb3JFYWNoIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWQiKTsK
KyAgICAKKyAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMpOworICAgIHZhciBsZW5ndGggPSBA
dG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsKKworICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJm
dW5jdGlvbiIpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUu
Zm9yRWFjaCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKKyAgICAKKyAgICB2YXIgdGhp
c0FyZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkOwor
ICAgIAorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYg
KGkgaW4gYXJyYXkpCisgICAgICAgICAgICBjYWxsYmFjay5AY2FsbCh0aGlzQXJnLCBhcnJheVtp
XSwgaSwgYXJyYXkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rv
ci1Db21iaW5lZC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45ZThjMWI0NDk2Y2M1NDRmNDA3NzM5NTA0MmNmZDI0ZThhMzk0NjYxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2
YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpzCkBAIC0wLDAgKzEsMTEw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rp
b24gb2YoLyogaXRlbXMuLi4gKi8pCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIGxl
bmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7CisgICAgLy8gVE9ETzogTmVlZCBpc0NvbnN0cnVjdG9y
KHRoaXMpIGluc3RlYWQgb2YgdHlwZW9mICJmdW5jdGlvbiIgY2hlY2suCisgICAgdmFyIGFycmF5
ID0gdHlwZW9mIHRoaXMgPT09ICdmdW5jdGlvbicgPyBuZXcgdGhpcyhsZW5ndGgpIDogbmV3IEBB
cnJheShsZW5ndGgpOworICAgIGZvciAodmFyIGsgPSAwOyBrIDwgbGVuZ3RoOyArK2spCisgICAg
ICAgIEBwdXRCeVZhbERpcmVjdChhcnJheSwgaywgYXJndW1lbnRzW2tdKTsKKyAgICBhcnJheS5s
ZW5ndGggPSBsZW5ndGg7CisgICAgcmV0dXJuIGFycmF5OworfQorCitmdW5jdGlvbiBmcm9tKGl0
ZW1zIC8qLCBtYXBGbiwgdGhpc0FyZyAqLykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2
YXIgdGhpc09iaiA9IHRoaXM7CisKKyAgICB2YXIgbWFwRm4gPSBhcmd1bWVudHMubGVuZ3RoID4g
MSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDsKKworICAgIHZhciB0aGlzQXJnOworCisgICAg
aWYgKG1hcEZuICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgaWYgKHR5cGVvZiBtYXBGbiAhPT0g
ImZ1bmN0aW9uIikKKyAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5mcm9t
IHJlcXVpcmVzIHRoYXQgdGhlIHNlY29uZCBhcmd1bWVudCwgd2hlbiBwcm92aWRlZCwgYmUgYSBm
dW5jdGlvbiIpOworCisgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMikKKyAgICAgICAg
ICAgIHRoaXNBcmcgPSBhcmd1bWVudHNbMl07CisgICAgfQorCisgICAgaWYgKGl0ZW1zID09IG51
bGwpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5mcm9tIHJlcXVpcmVzIGFu
IGFycmF5LWxpa2Ugb2JqZWN0IC0gbm90IG51bGwgb3IgdW5kZWZpbmVkIik7CisKKyAgICB2YXIg
aXRlcmF0b3JNZXRob2QgPSBpdGVtc1tAc3ltYm9sSXRlcmF0b3JdOworICAgIGlmIChpdGVyYXRv
ck1ldGhvZCAhPSBudWxsKSB7CisgICAgICAgIGlmICh0eXBlb2YgaXRlcmF0b3JNZXRob2QgIT09
ICJmdW5jdGlvbiIpCisgICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJyYXkuZnJv
bSByZXF1aXJlcyB0aGF0IHRoZSBwcm9wZXJ0eSBvZiB0aGUgZmlyc3QgYXJndW1lbnQsIGl0ZW1z
W1N5bWJvbC5pdGVyYXRvcl0sIHdoZW4gZXhpc3RzLCBiZSBhIGZ1bmN0aW9uIik7CisKKyAgICAg
ICAgLy8gVE9ETzogTmVlZCBpc0NvbnN0cnVjdG9yKHRoaXNPYmopIGluc3RlYWQgb2YgdHlwZW9m
ICJmdW5jdGlvbiIgY2hlY2suCisgICAgICAgIHZhciByZXN1bHQgPSAodHlwZW9mIHRoaXNPYmog
PT09ICJmdW5jdGlvbiIpID8gQE9iamVjdChuZXcgdGhpc09iaigpKSA6IFtdOworCisgICAgICAg
IHZhciBrID0gMDsKKyAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JNZXRob2QuQGNhbGwo
aXRlbXMpOworCisgICAgICAgIC8vIFNpbmNlIGZvci1vZiBsb29wIG9uY2UgbW9yZSBsb29rcyB1
cCB0aGUgQEBpdGVyYXRvciBwcm9wZXJ0eSBvZiBhIGdpdmVuIGl0ZXJhYmxlLAorICAgICAgICAv
LyBpdCBjb3VsZCBiZSBvYnNlcnZhYmxlIGlmIHRoZSB1c2VyIGRlZmluZXMgYSBnZXR0ZXIgZm9y
IEBAaXRlcmF0b3IuCisgICAgICAgIC8vIFRvIGF2b2lkIHRoaXMgc2l0dWF0aW9uLCB3ZSBkZWZp
bmUgYSB3cmFwcGVyIG9iamVjdCB0aGF0IEBAaXRlcmF0b3IganVzdCByZXR1cm5zIGEgZ2l2ZW4g
aXRlcmF0b3IuCisgICAgICAgIHZhciB3cmFwcGVyID0geworICAgICAgICAgICAgW0BzeW1ib2xJ
dGVyYXRvcl0oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yOworICAgICAgICAg
ICAgfQorICAgICAgICB9OworCisgICAgICAgIGZvciAodmFyIHZhbHVlIG9mIHdyYXBwZXIpIHsK
KyAgICAgICAgICAgIGlmIChtYXBGbikKKyAgICAgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3Qo
cmVzdWx0LCBrLCB0aGlzQXJnID09PSB1bmRlZmluZWQgPyBtYXBGbih2YWx1ZSwgaykgOiBtYXBG
bi5AY2FsbCh0aGlzQXJnLCB2YWx1ZSwgaykpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHZhbHVlKTsKKyAgICAgICAgICAgIGsg
Kz0gMTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdC5sZW5ndGggPSBrOworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHZhciBhcnJheUxpa2UgPSBAT2JqZWN0KGl0ZW1z
KTsKKyAgICB2YXIgYXJyYXlMaWtlTGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5TGlrZS5sZW5ndGgp
OworCisgICAgLy8gVE9ETzogTmVlZCBpc0NvbnN0cnVjdG9yKHRoaXNPYmopIGluc3RlYWQgb2Yg
dHlwZW9mICJmdW5jdGlvbiIgY2hlY2suCisgICAgdmFyIHJlc3VsdCA9ICh0eXBlb2YgdGhpc09i
aiA9PT0gImZ1bmN0aW9uIikgPyBAT2JqZWN0KG5ldyB0aGlzT2JqKGFycmF5TGlrZUxlbmd0aCkp
IDogbmV3IEBBcnJheShhcnJheUxpa2VMZW5ndGgpOworCisgICAgdmFyIGsgPSAwOworICAgIHdo
aWxlIChrIDwgYXJyYXlMaWtlTGVuZ3RoKSB7CisgICAgICAgIHZhciB2YWx1ZSA9IGFycmF5TGlr
ZVtrXTsKKyAgICAgICAgaWYgKG1hcEZuKQorICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJl
c3VsdCwgaywgdGhpc0FyZyA9PT0gdW5kZWZpbmVkID8gbWFwRm4odmFsdWUsIGspIDogbWFwRm4u
QGNhbGwodGhpc0FyZywgdmFsdWUsIGspKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQHB1
dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywgdmFsdWUpOworICAgICAgICBrICs9IDE7CisgICAgfQor
CisgICAgcmVzdWx0Lmxlbmd0aCA9IGFycmF5TGlrZUxlbmd0aDsKKyAgICByZXR1cm4gcmVzdWx0
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFyYXRlLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvSmF2YVNjcmlwdENvcmUt
QnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFyYXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllOGMxYjQ0OTZjYzU0
NGY0MDc3Mzk1MDQyY2ZkMjRlOGEzOTQ2NjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9KYXZhU2NyaXB0Q29yZS1CdWlsdGlu
Q29uc3RydWN0b3ItU2VwYXJhdGUuanMKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBvZigvKiBpdGVtcy4uLiAq
LykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxl
bmd0aDsKKyAgICAvLyBUT0RPOiBOZWVkIGlzQ29uc3RydWN0b3IodGhpcykgaW5zdGVhZCBvZiB0
eXBlb2YgImZ1bmN0aW9uIiBjaGVjay4KKyAgICB2YXIgYXJyYXkgPSB0eXBlb2YgdGhpcyA9PT0g
J2Z1bmN0aW9uJyA/IG5ldyB0aGlzKGxlbmd0aCkgOiBuZXcgQEFycmF5KGxlbmd0aCk7CisgICAg
Zm9yICh2YXIgayA9IDA7IGsgPCBsZW5ndGg7ICsraykKKyAgICAgICAgQHB1dEJ5VmFsRGlyZWN0
KGFycmF5LCBrLCBhcmd1bWVudHNba10pOworICAgIGFycmF5Lmxlbmd0aCA9IGxlbmd0aDsKKyAg
ICByZXR1cm4gYXJyYXk7Cit9CisKK2Z1bmN0aW9uIGZyb20oaXRlbXMgLyosIG1hcEZuLCB0aGlz
QXJnICovKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHZhciB0aGlzT2JqID0gdGhpczsK
KworICAgIHZhciBtYXBGbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDog
dW5kZWZpbmVkOworCisgICAgdmFyIHRoaXNBcmc7CisKKyAgICBpZiAobWFwRm4gIT09IHVuZGVm
aW5lZCkgeworICAgICAgICBpZiAodHlwZW9mIG1hcEZuICE9PSAiZnVuY3Rpb24iKQorICAgICAg
ICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LmZyb20gcmVxdWlyZXMgdGhhdCB0aGUg
c2Vjb25kIGFyZ3VtZW50LCB3aGVuIHByb3ZpZGVkLCBiZSBhIGZ1bmN0aW9uIik7CisKKyAgICAg
ICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKQorICAgICAgICAgICAgdGhpc0FyZyA9IGFyZ3Vt
ZW50c1syXTsKKyAgICB9CisKKyAgICBpZiAoaXRlbXMgPT0gbnVsbCkKKyAgICAgICAgdGhyb3cg
bmV3IEBUeXBlRXJyb3IoIkFycmF5LmZyb20gcmVxdWlyZXMgYW4gYXJyYXktbGlrZSBvYmplY3Qg
LSBub3QgbnVsbCBvciB1bmRlZmluZWQiKTsKKworICAgIHZhciBpdGVyYXRvck1ldGhvZCA9IGl0
ZW1zW0BzeW1ib2xJdGVyYXRvcl07CisgICAgaWYgKGl0ZXJhdG9yTWV0aG9kICE9IG51bGwpIHsK
KyAgICAgICAgaWYgKHR5cGVvZiBpdGVyYXRvck1ldGhvZCAhPT0gImZ1bmN0aW9uIikKKyAgICAg
ICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5mcm9tIHJlcXVpcmVzIHRoYXQgdGhl
IHByb3BlcnR5IG9mIHRoZSBmaXJzdCBhcmd1bWVudCwgaXRlbXNbU3ltYm9sLml0ZXJhdG9yXSwg
d2hlbiBleGlzdHMsIGJlIGEgZnVuY3Rpb24iKTsKKworICAgICAgICAvLyBUT0RPOiBOZWVkIGlz
Q29uc3RydWN0b3IodGhpc09iaikgaW5zdGVhZCBvZiB0eXBlb2YgImZ1bmN0aW9uIiBjaGVjay4K
KyAgICAgICAgdmFyIHJlc3VsdCA9ICh0eXBlb2YgdGhpc09iaiA9PT0gImZ1bmN0aW9uIikgPyBA
T2JqZWN0KG5ldyB0aGlzT2JqKCkpIDogW107CisKKyAgICAgICAgdmFyIGsgPSAwOworICAgICAg
ICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvck1ldGhvZC5AY2FsbChpdGVtcyk7CisKKyAgICAgICAg
Ly8gU2luY2UgZm9yLW9mIGxvb3Agb25jZSBtb3JlIGxvb2tzIHVwIHRoZSBAQGl0ZXJhdG9yIHBy
b3BlcnR5IG9mIGEgZ2l2ZW4gaXRlcmFibGUsCisgICAgICAgIC8vIGl0IGNvdWxkIGJlIG9ic2Vy
dmFibGUgaWYgdGhlIHVzZXIgZGVmaW5lcyBhIGdldHRlciBmb3IgQEBpdGVyYXRvci4KKyAgICAg
ICAgLy8gVG8gYXZvaWQgdGhpcyBzaXR1YXRpb24sIHdlIGRlZmluZSBhIHdyYXBwZXIgb2JqZWN0
IHRoYXQgQEBpdGVyYXRvciBqdXN0IHJldHVybnMgYSBnaXZlbiBpdGVyYXRvci4KKyAgICAgICAg
dmFyIHdyYXBwZXIgPSB7CisgICAgICAgICAgICBbQHN5bWJvbEl0ZXJhdG9yXSgpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gaXRlcmF0b3I7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisK
KyAgICAgICAgZm9yICh2YXIgdmFsdWUgb2Ygd3JhcHBlcikgeworICAgICAgICAgICAgaWYgKG1h
cEZuKQorICAgICAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHRoaXNBcmcg
PT09IHVuZGVmaW5lZCA/IG1hcEZuKHZhbHVlLCBrKSA6IG1hcEZuLkBjYWxsKHRoaXNBcmcsIHZh
bHVlLCBrKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgQHB1dEJ5VmFsRGly
ZWN0KHJlc3VsdCwgaywgdmFsdWUpOworICAgICAgICAgICAgayArPSAxOworICAgICAgICB9CisK
KyAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IGs7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorCisgICAgdmFyIGFycmF5TGlrZSA9IEBPYmplY3QoaXRlbXMpOworICAgIHZhciBhcnJheUxp
a2VMZW5ndGggPSBAdG9MZW5ndGgoYXJyYXlMaWtlLmxlbmd0aCk7CisKKyAgICAvLyBUT0RPOiBO
ZWVkIGlzQ29uc3RydWN0b3IodGhpc09iaikgaW5zdGVhZCBvZiB0eXBlb2YgImZ1bmN0aW9uIiBj
aGVjay4KKyAgICB2YXIgcmVzdWx0ID0gKHR5cGVvZiB0aGlzT2JqID09PSAiZnVuY3Rpb24iKSA/
IEBPYmplY3QobmV3IHRoaXNPYmooYXJyYXlMaWtlTGVuZ3RoKSkgOiBuZXcgQEFycmF5KGFycmF5
TGlrZUxlbmd0aCk7CisKKyAgICB2YXIgayA9IDA7CisgICAgd2hpbGUgKGsgPCBhcnJheUxpa2VM
ZW5ndGgpIHsKKyAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlMaWtlW2tdOworICAgICAgICBpZiAo
bWFwRm4pCisgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB0aGlzQXJnID09
PSB1bmRlZmluZWQgPyBtYXBGbih2YWx1ZSwgaykgOiBtYXBGbi5AY2FsbCh0aGlzQXJnLCB2YWx1
ZSwgaykpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0
LCBrLCB2YWx1ZSk7CisgICAgICAgIGsgKz0gMTsKKyAgICB9CisKKyAgICByZXN1bHQubGVuZ3Ro
ID0gYXJyYXlMaWtlTGVuZ3RoOworICAgIHJldHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUd1YXJk
ZWRCdWlsdGluLVNlcGFyYXRlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40Njg4N2U3ZWRjYWQ2YjJhODdlZjVlNzgyOWQyOTNjZWYwMWUzNzIyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29y
ZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcwpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gQG9wdGlvbmFsPVNUUkVBTVNf
QVBJCisKK2Z1bmN0aW9uIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQoc3RyZWFtKQoreworICAgInVz
ZSBzdHJpY3QiOworCisgICAgcmV0dXJuICEhc3RyZWFtLkByZWFkZXI7Cit9CisKKworZnVuY3Rp
b24gY2FuY2VsUmVhZGFibGVTdHJlYW0oc3RyZWFtLCByZWFzb24pCit7CisgICAgInVzZSBzdHJp
Y3QiOworCisgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEByZWFkYWJsZVN0cmVhbUNsb3NlZCkK
KyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgIGlmIChzdHJlYW0uQHN0YXRl
ID09PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWpl
Y3Qoc3RyZWFtLkBzdG9yZWRFcnJvcik7CisgICAgc3RyZWFtLkBxdWV1ZSA9IFtdOworICAgIEBm
aW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTsKKyAgICByZXR1cm4gQHByb21pc2VJ
bnZva2VPck5vb3Aoc3RyZWFtLkB1bmRlcmx5aW5nU291cmNlLCAiY2FuY2VsIiwgW3JlYXNvbl0p
LnRoZW4oZnVuY3Rpb24oKSB7IH0pOworfQorCisKK2Z1bmN0aW9uIHByb21pc2VJbnZva2VPck5v
b3Aob2JqZWN0LCBrZXksIGFyZ3MpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdHJ5IHsK
KyAgICAgICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldOworICAgICAgICBpZiAodHlwZW9mIG1l
dGhvZCA9PT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZl
KCk7CisgICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9iamVjdCwgYXJncyk7Cisg
ICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTsKKyAgICB9CisgICAgY2F0Y2go
ZXJyb3IpIHsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTsKKyAgICB9Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlu
cy9XZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJDb3JlLUd1YXJkZWRJbnRlcm5h
bEJ1aWx0aW4tU2VwYXJhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGY1ZTdiM2I4NDFkNTEwYTI5ZjU3NmY5
NDM2MDk5ZThlMjc2MjY1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1T
ZXBhcmF0ZS5qcwpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IENh
bm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworLy8gQG9wdGlvbmFsPVNUUkVBTVNfQVBJCisvLyBAaW50ZXJuYWwK
KworZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbUxvY2tlZChzdHJlYW0pCit7CisgICAidXNlIHN0
cmljdCI7CisKKyAgICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjsKK30KKworCitmdW5jdGlvbiBj
YW5jZWxSZWFkYWJsZVN0cmVhbShzdHJlYW0sIHJlYXNvbikKK3sKKyAgICAidXNlIHN0cmljdCI7
CisKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xvc2VkKQorICAg
ICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09
IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChz
dHJlYW0uQHN0b3JlZEVycm9yKTsKKyAgICBzdHJlYW0uQHF1ZXVlID0gW107CisgICAgQGZpbmlz
aENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pOworICAgIHJldHVybiBAcHJvbWlzZUludm9r
ZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsICJjYW5jZWwiLCBbcmVhc29uXSkudGhl
bihmdW5jdGlvbigpIHsgfSk7Cit9CisKKworZnVuY3Rpb24gcHJvbWlzZUludm9rZU9yTm9vcChv
YmplY3QsIGtleSwgYXJncykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB0cnkgeworICAg
ICAgICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07CisgICAgICAgIGlmICh0eXBlb2YgbWV0aG9k
ID09PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsK
KyAgICAgICAgdmFyIHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBhcmdzKTsKKyAgICAg
ICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpOworICAgIH0KKyAgICBjYXRjaChlcnJv
cikgeworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpOworICAgIH0KK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dl
YkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45YmRjOGQzYjdlOWJlMjk4MGFmZGQ2YjYxMzhjMDQ4OGZlYjI2YTBm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMv
YnVpbHRpbnMvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzCkBAIC0wLDAgKzEs
NjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5j
dGlvbiBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKHN0cmVhbSkKK3sKKyAgICJ1c2Ugc3RyaWN0IjsK
KworICAgIHJldHVybiAhIXN0cmVhbS5AcmVhZGVyOworfQorCisKK2Z1bmN0aW9uIGNhbmNlbFJl
YWRhYmxlU3RyZWFtKHN0cmVhbSwgcmVhc29uKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAg
IGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQpCisgICAgICAgIHJl
dHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRh
YmxlU3RyZWFtRXJyb3JlZCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHN0cmVhbS5A
c3RvcmVkRXJyb3IpOworICAgIHN0cmVhbS5AcXVldWUgPSBbXTsKKyAgICBAZmluaXNoQ2xvc2lu
Z1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7CisgICAgcmV0dXJuIEBwcm9taXNlSW52b2tlT3JOb29w
KHN0cmVhbS5AdW5kZXJseWluZ1NvdXJjZSwgImNhbmNlbCIsIFtyZWFzb25dKS50aGVuKGZ1bmN0
aW9uKCkgeyB9KTsKK30KKworCitmdW5jdGlvbiBwcm9taXNlSW52b2tlT3JOb29wKG9iamVjdCwg
a2V5LCBhcmdzKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIHRyeSB7CisgICAgICAgIHZh
ciBtZXRob2QgPSBvYmplY3Rba2V5XTsKKyAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QgPT09ICJ1
bmRlZmluZWQiKQorICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOworICAgICAg
ICB2YXIgcmVzdWx0ID0gbWV0aG9kLkBhcHBseShvYmplY3QsIGFyZ3MpOworICAgICAgICByZXR1
cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7CisgICAgfQorICAgIGNhdGNoKGVycm9yKSB7Cisg
ICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7CisgICAgfQorfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvV2ViQ29yZS14
bWxDYXNpbmdUZXN0LVNlcGFyYXRlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
dGVzdHMvYnVpbHRpbnMvV2ViQ29yZS14bWxDYXNpbmdUZXN0LVNlcGFyYXRlLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmRlMzkzYmM1OTgxNDI4Mjg3ZTBmMDQzMTlkYjZlNDIwMmI1NWUyNjgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9XZWJD
b3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIEBvcHRpb25hbD1TVFJFQU1T
X0FQSQorLy8gQGludGVybmFsCisKK2Z1bmN0aW9uIHhtbENhc2luZ1Rlc3Qoc3RyZWFtKQorewor
ICAgInVzZSBzdHJpY3QiOworCisgICAgcmV0dXJuICEhc3RyZWFtLkByZWFkZXI7Cit9CisKKwor
ZnVuY3Rpb24gY3NzQ2FzaW5nVGVzdChzdHJlYW0sIHJlYXNvbikKK3sKKyAgICAidXNlIHN0cmlj
dCI7CisKKyAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xvc2VkKQor
ICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgaWYgKHN0cmVhbS5Ac3RhdGUg
PT09IEByZWFkYWJsZVN0cmVhbUVycm9yZWQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVj
dChzdHJlYW0uQHN0b3JlZEVycm9yKTsKKyAgICBzdHJlYW0uQHF1ZXVlID0gW107CisgICAgQGZp
bmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pOworICAgIHJldHVybiBAcHJvbWlzZUlu
dm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsICJjYW5jZWwiLCBbcmVhc29uXSku
dGhlbihmdW5jdGlvbigpIHsgfSk7Cit9CisKKworZnVuY3Rpb24gdXJsQ2FzaW5nVGVzdChvYmpl
Y3QsIGtleSwgYXJncykKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB0cnkgeworICAgICAg
ICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07CisgICAgICAgIGlmICh0eXBlb2YgbWV0aG9kID09
PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAg
ICAgICAgdmFyIHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBhcmdzKTsKKyAgICAgICAg
cmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpOworICAgIH0KKyAgICBjYXRjaChlcnJvcikg
eworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpOworICAgIH0KK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVj
dGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1Db21iaW5lZC5qcy1yZXN1bHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZh
U2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtQ29tYmluZWQuanMtcmVzdWx0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjczMmE4Yzg5ZjVhYTVkNmM5NTIzZGEwZTY0ODAxMWY1YmU5ODhkYmYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3Rl
ZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtQ29tYmluZWQuanMtcmVzdWx0CkBAIC0w
LDAgKzEsMTY4IEBACisjIyMgQmVnaW4gRmlsZTogSlNDQnVpbHRpbnMuaAorLyoKKyAqIENvcHly
aWdodCAoYykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICog
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNh
bGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0
aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWls
dGlucy5weQorCisjaWZuZGVmIEpTQ0J1aWx0aW5zX2gKKyNkZWZpbmUgSlNDQnVpbHRpbnNfaAor
CituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIFZNOwor
CitlbnVtIGNsYXNzIENvbnN0cnVjdEFiaWxpdHkgOiB1bnNpZ25lZDsKK30KKworbmFtZXNwYWNl
IEpTQyB7CisKKy8qIEJ1aWx0aW4uUHJvbWlzZSAqLworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfYnVp
bHRpblByb21pc2VSZWplY3RQcm9taXNlQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19idWlsdGlu
UHJvbWlzZVJlamVjdFByb21pc2VDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3Ry
dWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmls
aXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfYnVpbHRpblByb21pc2VGdWxmaWxsUHJvbWlzZUNv
ZGU7CitleHRlcm4gY29uc3QgaW50IHNfYnVpbHRpblByb21pc2VGdWxmaWxsUHJvbWlzZUNvZGVM
ZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblByb21p
c2VGdWxmaWxsUHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5OworCisjZGVmaW5lIEpTQ19GT1JF
QUNIX0JVSUxUSU5QUk9NSVNFX0JVSUxUSU5fREFUQShtYWNybykgXAorICAgIG1hY3JvKHJlamVj
dFByb21pc2UsIGJ1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZSwgMikgXAorICAgIG1hY3JvKGZ1
bGZpbGxQcm9taXNlLCBidWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNlLCAyKSBcCisKKyNkZWZp
bmUgSlNDX0JVSUxUSU5fQlVJTFRJTlBST01JU0VfUkVKRUNUUFJPTUlTRSAxCisjZGVmaW5lIEpT
Q19CVUlMVElOX0JVSUxUSU5QUk9NSVNFX0ZVTEZJTExQUk9NSVNFIDEKKworI2RlZmluZSBKU0Nf
Rk9SRUFDSF9CVUlMVElOX0NPREUobWFjcm8pIFwKKyAgICBtYWNybyhidWlsdGluUHJvbWlzZVJl
amVjdFByb21pc2VDb2RlLCByZWplY3RQcm9taXNlLCBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJv
bWlzZUNvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhidWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNl
Q29kZSwgZnVsZmlsbFByb21pc2UsIHNfYnVpbHRpblByb21pc2VGdWxmaWxsUHJvbWlzZUNvZGVM
ZW5ndGgpIFwKKworI2RlZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFj
cm8pIFwKKyAgICBtYWNybyhmdWxmaWxsUHJvbWlzZSkgXAorICAgIG1hY3JvKHJlamVjdFByb21p
c2UpIFwKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5j
dGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKKyAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSog
Y29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisKK0pTQ19GT1JFQUNIX0JVSUxUSU5fQ09E
RShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5F
UkFUT1IKKworI2RlZmluZSBKU0NfQlVJTFRJTl9FWElTVFMob2JqZWN0LCBmdW5jKSBkZWZpbmVk
IEpTQ19CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisKK30gLy8gbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy8gSlNDQnVpbHRpbnNfaAorCisjIyMgRW5kIEZpbGU6IEpTQ0J1aWx0aW5z
LmgKKworIyMjIEJlZ2luIEZpbGU6IEpTQ0J1aWx0aW5zLmNwcAorLyoKKyAqIENvcHlyaWdodCAo
YykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICog
CisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdl
bmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2Ny
aXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5w
eQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKKworI2lu
Y2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNp
bmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0
UHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5u
b3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19idWlsdGluUHJvbWlzZVJlamVjdFByb21pc2VDb2Rl
TGVuZ3RoID0gNDEzOworY29uc3QgY2hhciogc19idWlsdGluUHJvbWlzZVJlamVjdFByb21pc2VD
b2RlID0KKyAgICAiKGZ1bmN0aW9uIChwcm9taXNlLCByZWFzb24pXG4iIFwKKyAgICAie1xuIiBc
CisgICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdmFy
IHJlYWN0aW9ucyA9IHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnM7XG4iIFwKKyAgICAi
ICAgIHByb21pc2UuQHByb21pc2VSZXN1bHQgPSByZWFzb247XG4iIFwKKyAgICAiICAgIHByb21p
c2UuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zID0gdW5kZWZpbmVkO1xuIiBcCisgICAgIiAgICBw
cm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25zID0gdW5kZWZpbmVkO1xuIiBcCisgICAgIiAg
ICBwcm9taXNlLkBwcm9taXNlU3RhdGUgPSBAcHJvbWlzZVJlamVjdGVkO1xuIiBcCisgICAgIlxu
IiBcCisgICAgIiAgICBASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLnByb21pc2VSZWplY3RlZChw
cm9taXNlLCByZWFzb24sIHJlYWN0aW9ucyk7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIEB0
cmlnZ2VyUHJvbWlzZVJlYWN0aW9ucyhyZWFjdGlvbnMsIHJlYXNvbik7XG4iIFwKKyAgICAifSlc
biIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvbWlzZUZ1
bGZpbGxQcm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6
OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0aW5Qcm9taXNlRnVsZmlsbFByb21p
c2VDb2RlTGVuZ3RoID0gNDEyOworY29uc3QgY2hhciogc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQ
cm9taXNlQ29kZSA9CisgICAgIihmdW5jdGlvbiAocHJvbWlzZSwgdmFsdWUpXG4iIFwKKyAgICAi
e1xuIiBcCisgICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAorICAgICIg
ICAgdmFyIHJlYWN0aW9ucyA9IHByb21pc2UuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zO1xuIiBc
CisgICAgIiAgICBwcm9taXNlLkBwcm9taXNlUmVzdWx0ID0gdmFsdWU7XG4iIFwKKyAgICAiICAg
IHByb21pc2UuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zID0gdW5kZWZpbmVkO1xuIiBcCisgICAg
IiAgICBwcm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25zID0gdW5kZWZpbmVkO1xuIiBcCisg
ICAgIiAgICBwcm9taXNlLkBwcm9taXNlU3RhdGUgPSBAcHJvbWlzZUZ1bGZpbGxlZDtcbiIgXAor
ICAgICJcbiIgXAorICAgICIgICAgQEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5wcm9taXNlRnVs
ZmlsbGVkKHByb21pc2UsIHZhbHVlLCByZWFjdGlvbnMpO1xuIiBcCisgICAgIlxuIiBcCisgICAg
IiAgICBAdHJpZ2dlclByb21pc2VSZWFjdGlvbnMocmVhY3Rpb25zLCB2YWx1ZSk7XG4iIFwKKyAg
ICAifSlcbiIgXAorOworCisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVO
YW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCit7XAorICAgIHJldHVybiB2
bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwg
dm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IH0KK0pTQ19GT1JF
QUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5F
X0JVSUxUSU5fR0VORVJBVE9SCisKKworfSAvLyBuYW1lc3BhY2UgSlNDCisjIyMgRW5kIEZpbGU6
IEpTQ0J1aWx0aW5zLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNl
LVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3Rz
L2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0
ZS5qcy1yZXN1bHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjI3YmEyNGM1Y2MyOWU1ZTI5YjFkYjlmNTQ2MjVmZTBm
Mjk1MTgyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1T
ZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTAsMCArMSwxNjcgQEAKKyMjIyBCZWdpbiBGaWxlOiBCdWls
dGluUHJvbWlzZUJ1aWx0aW5zLmgKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5P
VCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZh
U2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lmbmRlZiBCdWls
dGluUHJvbWlzZUJ1aWx0aW5zX2gKKyNkZWZpbmUgQnVpbHRpblByb21pc2VCdWlsdGluc19oCisK
KworCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK30KKworbmFt
ZXNwYWNlIEpTQyB7CisKKy8qIEJ1aWx0aW4uUHJvbWlzZSAqLworZXh0ZXJuIGNvbnN0IGNoYXIq
IHNfYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNlQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19i
dWlsdGluUHJvbWlzZVJlamVjdFByb21pc2VDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6
Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm9taXNlUmVqZWN0UHJvbWlzZUNvZGVDb25zdHJ1
Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfYnVpbHRpblByb21pc2VGdWxmaWxsUHJv
bWlzZUNvZGU7CitleHRlcm4gY29uc3QgaW50IHNfYnVpbHRpblByb21pc2VGdWxmaWxsUHJvbWlz
ZUNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRp
blByb21pc2VGdWxmaWxsUHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5OworCisjZGVmaW5lIEpT
Q19GT1JFQUNIX0JVSUxUSU5fUFJPTUlTRV9CVUlMVElOX0RBVEEobWFjcm8pIFwKKyAgICBtYWNy
byhyZWplY3RQcm9taXNlLCBidWlsdGluUHJvbWlzZVJlamVjdFByb21pc2UsIDIpIFwKKyAgICBt
YWNybyhmdWxmaWxsUHJvbWlzZSwgYnVpbHRpblByb21pc2VGdWxmaWxsUHJvbWlzZSwgMikgXAor
CisjZGVmaW5lIEpTQ19CVUlMVElOX0JVSUxUSU5fUFJPTUlTRV9SRUpFQ1RQUk9NSVNFIDEKKyNk
ZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTl9QUk9NSVNFX0ZVTEZJTExQUk9NSVNFIDEKKworI2Rl
ZmluZSBKU0NfRk9SRUFDSF9CVUlMVElOLlBST01JU0VfQlVJTFRJTl9DT0RFKG1hY3JvKSBcCisg
ICAgbWFjcm8oYnVpbHRpblByb21pc2VSZWplY3RQcm9taXNlQ29kZSwgcmVqZWN0UHJvbWlzZSwg
c19idWlsdGluUHJvbWlzZVJlamVjdFByb21pc2VDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8oYnVp
bHRpblByb21pc2VGdWxmaWxsUHJvbWlzZUNvZGUsIGZ1bGZpbGxQcm9taXNlLCBzX2J1aWx0aW5Q
cm9taXNlRnVsZmlsbFByb21pc2VDb2RlTGVuZ3RoKSBcCisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hf
QlVJTFRJTi5QUk9NSVNFX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShtYWNybykgXAorICAgIG1hY3Jv
KGZ1bGZpbGxQcm9taXNlKSBcCisgICAgbWFjcm8ocmVqZWN0UHJvbWlzZSkgXAorCisjZGVmaW5l
IERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1l
bnRDb3VudCkgXAorICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJh
dG9yKEpTQzo6Vk0mKTsKKworSlNDX0ZPUkVBQ0hfQlVJTFRJTi5QUk9NSVNFX0JVSUxUSU5fQ09E
RShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5F
UkFUT1IKKworI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOLlBST01JU0VfRVhJU1RTKG9iamVj
dCwgZnVuYykgZGVmaW5lZCBKU0NfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVuYworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEJ1aWx0aW5Qcm9taXNlQnVpbHRpbnNfaAor
CisjIyMgRW5kIEZpbGU6IEJ1aWx0aW5Qcm9taXNlQnVpbHRpbnMuaAorCisjIyMgQmVnaW4gRmls
ZTogQnVpbHRpblByb21pc2VCdWlsdGlucy5jcHAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUg
WXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqIAorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisK
Ky8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQg
ZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ1aWx0aW5Qcm9taXNlQnVpbHRpbnMuaCIKKwor
I2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIK
KyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm9taXNlUmVq
ZWN0UHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpD
YW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19idWlsdGluUHJvbWlzZVJlamVjdFByb21pc2VD
b2RlTGVuZ3RoID0gNDEzOworY29uc3QgY2hhciogc19idWlsdGluUHJvbWlzZVJlamVjdFByb21p
c2VDb2RlID0KKyAgICAiKGZ1bmN0aW9uIChwcm9taXNlLCByZWFzb24pXG4iIFwKKyAgICAie1xu
IiBcCisgICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAg
dmFyIHJlYWN0aW9ucyA9IHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnM7XG4iIFwKKyAg
ICAiICAgIHByb21pc2UuQHByb21pc2VSZXN1bHQgPSByZWFzb247XG4iIFwKKyAgICAiICAgIHBy
b21pc2UuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zID0gdW5kZWZpbmVkO1xuIiBcCisgICAgIiAg
ICBwcm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25zID0gdW5kZWZpbmVkO1xuIiBcCisgICAg
IiAgICBwcm9taXNlLkBwcm9taXNlU3RhdGUgPSBAcHJvbWlzZVJlamVjdGVkO1xuIiBcCisgICAg
IlxuIiBcCisgICAgIiAgICBASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLnByb21pc2VSZWplY3Rl
ZChwcm9taXNlLCByZWFzb24sIHJlYWN0aW9ucyk7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAg
IEB0cmlnZ2VyUHJvbWlzZVJlYWN0aW9ucyhyZWFjdGlvbnMsIHJlYXNvbik7XG4iIFwKKyAgICAi
fSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvbWlz
ZUZ1bGZpbGxQcm9taXNlQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxp
dHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0aW5Qcm9taXNlRnVsZmlsbFBy
b21pc2VDb2RlTGVuZ3RoID0gNDEyOworY29uc3QgY2hhciogc19idWlsdGluUHJvbWlzZUZ1bGZp
bGxQcm9taXNlQ29kZSA9CisgICAgIihmdW5jdGlvbiAocHJvbWlzZSwgdmFsdWUpXG4iIFwKKyAg
ICAie1xuIiBcCisgICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAorICAg
ICIgICAgdmFyIHJlYWN0aW9ucyA9IHByb21pc2UuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zO1xu
IiBcCisgICAgIiAgICBwcm9taXNlLkBwcm9taXNlUmVzdWx0ID0gdmFsdWU7XG4iIFwKKyAgICAi
ICAgIHByb21pc2UuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zID0gdW5kZWZpbmVkO1xuIiBcCisg
ICAgIiAgICBwcm9taXNlLkBwcm9taXNlUmVqZWN0UmVhY3Rpb25zID0gdW5kZWZpbmVkO1xuIiBc
CisgICAgIiAgICBwcm9taXNlLkBwcm9taXNlU3RhdGUgPSBAcHJvbWlzZUZ1bGZpbGxlZDtcbiIg
XAorICAgICJcbiIgXAorICAgICIgICAgQEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5wcm9taXNl
RnVsZmlsbGVkKHByb21pc2UsIHZhbHVlLCByZWFjdGlvbnMpO1xuIiBcCisgICAgIlxuIiBcCisg
ICAgIiAgICBAdHJpZ2dlclByb21pc2VSZWFjdGlvbnMocmVhY3Rpb25zLCB2YWx1ZSk7XG4iIFwK
KyAgICAifSlcbiIgXAorOworCisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNv
ZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKK0pTQzo6RnVuY3Rpb25FeGVj
dXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCit7XAorICAgIHJldHVy
biB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2
bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IH0KK0pTQ19G
T1JFQUNIX0JVSUxUSU4uUFJPTUlTRV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJB
VE9SKQorI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgorCisKK30gLy8gbmFtZXNwYWNl
IEpTQworIyMjIEVuZCBGaWxlOiBCdWlsdGluUHJvbWlzZUJ1aWx0aW5zLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQv
SmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMtcmVzdWx0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNj
cmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMtcmVzdWx0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljk0ZjY3YzVhYzAxZGRhM2RiZjliMWQ5ZTc3OTgzOWZkNzg2M2M2YjUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3Rl
ZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1Db21iaW5lZC5qcy1yZXN1bHQKQEAg
LTAsMCArMSwxOTIgQEAKKyMjIyBCZWdpbiBGaWxlOiBKU0NCdWlsdGlucy5oCisvKgorICogQ29w
eXJpZ2h0IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoYykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
LgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRv
bWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlu
cyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1q
cy1idWlsdGlucy5weQorCisjaWZuZGVmIEpTQ0J1aWx0aW5zX2gKKyNkZWZpbmUgSlNDQnVpbHRp
bnNfaAorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNz
IFZNOworCitlbnVtIGNsYXNzIENvbnN0cnVjdEFiaWxpdHkgOiB1bnNpZ25lZDsKK30KKworbmFt
ZXNwYWNlIEpTQyB7CisKKy8qIEJ1aWx0aW4ucHJvdG90eXBlICovCitleHRlcm4gY29uc3QgY2hh
ciogc19idWlsdGluUHJvdG90eXBlRXZlcnlDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2J1aWx0
aW5Qcm90b3R5cGVFdmVyeUNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RB
YmlsaXR5IHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZUNvbnN0cnVjdEFiaWxpdHk7CitleHRl
cm4gY29uc3QgY2hhciogc19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGU7CitleHRlcm4gY29u
c3QgaW50IHNfYnVpbHRpblByb3RvdHlwZUZvckVhY2hDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0
IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZUNvbnN0
cnVjdEFiaWxpdHk7CisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTlBST1RPVFlQRV9CVUlM
VElOX0RBVEEobWFjcm8pIFwKKyAgICBtYWNybyhldmVyeSwgYnVpbHRpblByb3RvdHlwZUV2ZXJ5
LCAxKSBcCisgICAgbWFjcm8oZm9yRWFjaCwgYnVpbHRpblByb3RvdHlwZUZvckVhY2gsIDEpIFwK
KworI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOUFJPVE9UWVBFX0VWRVJZIDEKKyNkZWZpbmUg
SlNDX0JVSUxUSU5fQlVJTFRJTlBST1RPVFlQRV9GT1JFQUNIIDEKKworI2RlZmluZSBKU0NfRk9S
RUFDSF9CVUlMVElOX0NPREUobWFjcm8pIFwKKyAgICBtYWNybyhidWlsdGluUHJvdG90eXBlRXZl
cnlDb2RlLCBldmVyeSwgc19idWlsdGluUHJvdG90eXBlRXZlcnlDb2RlTGVuZ3RoKSBcCisgICAg
bWFjcm8oYnVpbHRpblByb3RvdHlwZUZvckVhY2hDb2RlLCBmb3JFYWNoLCBzX2J1aWx0aW5Qcm90
b3R5cGVGb3JFYWNoQ29kZUxlbmd0aCkgXAorCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5f
RlVOQ1RJT05fTkFNRShtYWNybykgXAorICAgIG1hY3JvKGV2ZXJ5KSBcCisgICAgbWFjcm8oZm9y
RWFjaCkgXAorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1
bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
KiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKworSlNDX0ZPUkVBQ0hfQlVJTFRJTl9D
T0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dF
TkVSQVRPUgorCisjZGVmaW5lIEpTQ19CVUlMVElOX0VYSVNUUyhvYmplY3QsIGZ1bmMpIGRlZmlu
ZWQgSlNDX0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBKU0NCdWlsdGluc19oCisKKyMjIyBFbmQgRmlsZTogSlNDQnVpbHRp
bnMuaAorCisjIyMgQmVnaW4gRmlsZTogSlNDQnVpbHRpbnMuY3BwCisvKgorICogQ29weXJpZ2h0
IChjKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoYykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICog
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNh
bGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0
aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWls
dGlucy5weQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIK
KworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGUu
aCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm90b3R5
cGVFdmVyeUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5u
b3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19idWlsdGluUHJvdG90eXBlRXZlcnlDb2RlTGVuZ3Ro
ID0gNzYyOworY29uc3QgY2hhciogc19idWlsdGluUHJvdG90eXBlRXZlcnlDb2RlID0KKyAgICAi
KGZ1bmN0aW9uIChjYWxsYmFjayApXG4iIFwKKyAgICAie1xuIiBcCisgICAgIiAgICBcInVzZSBz
dHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgaWYgKHRoaXMgPT09IG51bGwpXG4i
IFwKKyAgICAiICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LnByb3RvdHlwZS5l
dmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbFwiKTtcbiIgXAorICAgICIgICAg
XG4iIFwKKyAgICAiICAgIGlmICh0aGlzID09PSB1bmRlZmluZWQpXG4iIFwKKyAgICAiICAgICAg
ICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0
aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkXCIpO1xuIiBcCisgICAgIiAgICBcbiIgXAorICAg
ICIgICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTtcbiIgXAorICAgICIgICAgdmFyIGxlbmd0
aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICBp
ZiAodHlwZW9mIGNhbGxiYWNrICE9PSBcImZ1bmN0aW9uXCIpXG4iIFwKKyAgICAiICAgICAgICB0
aHJvdyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0
IGJlIGEgZnVuY3Rpb25cIik7XG4iIFwKKyAgICAiICAgIFxuIiBcCisgICAgIiAgICB2YXIgdGhp
c0FyZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xu
IiBcCisgICAgIiAgICBcbiIgXAorICAgICIgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7
IGkrKykge1xuIiBcCisgICAgIiAgICAgICAgaWYgKCEoaSBpbiBhcnJheSkpXG4iIFwKKyAgICAi
ICAgICAgICAgICAgY29udGludWU7XG4iIFwKKyAgICAiICAgICAgICBpZiAoIWNhbGxiYWNrLkBj
YWxsKHRoaXNBcmcsIGFycmF5W2ldLCBpLCBhcnJheSkpXG4iIFwKKyAgICAiICAgICAgICAgICAg
cmV0dXJuIGZhbHNlO1xuIiBcCisgICAgIiAgICB9XG4iIFwKKyAgICAiICAgIFxuIiBcCisgICAg
IiAgICByZXR1cm4gdHJ1ZTtcbiIgXAorICAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29u
c3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZUNvbnN0cnVjdEFiaWxp
dHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBz
X2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZUxlbmd0aCA9IDY5NDsKK2NvbnN0IGNoYXIqIHNf
YnVpbHRpblByb3RvdHlwZUZvckVhY2hDb2RlID0KKyAgICAiKGZ1bmN0aW9uIChjYWxsYmFjayAp
XG4iIFwKKyAgICAie1xuIiBcCisgICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJc
biIgXAorICAgICIgICAgaWYgKHRoaXMgPT09IG51bGwpXG4iIFwKKyAgICAiICAgICAgICB0aHJv
dyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LnByb3RvdHlwZS5mb3JFYWNoIHJlcXVpcmVzIHRoYXQg
fHRoaXN8IG5vdCBiZSBudWxsXCIpO1xuIiBcCisgICAgIiAgICBcbiIgXAorICAgICIgICAgaWYg
KHRoaXMgPT09IHVuZGVmaW5lZClcbiIgXAorICAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVy
cm9yKFwiQXJyYXkucHJvdG90eXBlLmZvckVhY2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJl
IHVuZGVmaW5lZFwiKTtcbiIgXAorICAgICIgICAgXG4iIFwKKyAgICAiICAgIHZhciBhcnJheSA9
IEBPYmplY3QodGhpcyk7XG4iIFwKKyAgICAiICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJy
YXkubGVuZ3RoKTtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgaWYgKHR5cGVvZiBjYWxsYmFj
ayAhPT0gXCJmdW5jdGlvblwiKVxuIiBcCisgICAgIiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoXCJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb25c
Iik7XG4iIFwKKyAgICAiICAgIFxuIiBcCisgICAgIiAgICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50
cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuIiBcCisgICAgIiAgICBc
biIgXAorICAgICIgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuIiBcCisg
ICAgIiAgICAgICAgaWYgKGkgaW4gYXJyYXkpXG4iIFwKKyAgICAiICAgICAgICAgICAgY2FsbGJh
Y2suQGNhbGwodGhpc0FyZywgYXJyYXlbaV0sIGksIGFycmF5KTtcbiIgXAorICAgICIgICAgfVxu
IiBcCisgICAgIn0pXG4iIFwKKzsKKworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRP
Uihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCitKU0M6OkZ1bmN0aW9u
RXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAore1wKKyAgICBy
ZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxp
bmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyB9CitK
U0NfRk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVm
IERFRklORV9CVUlMVElOX0dFTkVSQVRPUgorCisKK30gLy8gbmFtZXNwYWNlIEpTQworIyMjIEVu
ZCBGaWxlOiBKU0NCdWlsdGlucy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4u
cHJvdG90eXBlLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90
eXBlLVNlcGFyYXRlLmpzLXJlc3VsdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTM4M2Y0ZjdhYWY5MGNjODE0ZDQx
MThkZDJjZmNjNGY3ZDg2ZTY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRp
bi5wcm90b3R5cGUtU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0wLDAgKzEsMTkxIEBACisjIyMgQmVn
aW4gRmlsZTogQnVpbHRpblByb3RvdHlwZUJ1aWx0aW5zLmgKKy8qCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChjKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKiAKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
KiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkg
Z2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBz
Y3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5z
LnB5CisKKyNpZm5kZWYgQnVpbHRpblByb3RvdHlwZUJ1aWx0aW5zX2gKKyNkZWZpbmUgQnVpbHRp
blByb3RvdHlwZUJ1aWx0aW5zX2gKKworCisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRnVuY3Rp
b25FeGVjdXRhYmxlOworfQorCituYW1lc3BhY2UgSlNDIHsKKworLyogQnVpbHRpbi5wcm90b3R5
cGUgKi8KK2V4dGVybiBjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGU7Citl
eHRlcm4gY29uc3QgaW50IHNfYnVpbHRpblByb3RvdHlwZUV2ZXJ5Q29kZUxlbmd0aDsKK2V4dGVy
biBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluUHJvdG90eXBlRXZlcnlDb2Rl
Q29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm90b3R5cGVG
b3JFYWNoQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19idWlsdGluUHJvdG90eXBlRm9yRWFjaENv
ZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpblBy
b3RvdHlwZUZvckVhY2hDb2RlQ29uc3RydWN0QWJpbGl0eTsKKworI2RlZmluZSBKU0NfRk9SRUFD
SF9CVUlMVElOX1BST1RPVFlQRV9CVUlMVElOX0RBVEEobWFjcm8pIFwKKyAgICBtYWNybyhldmVy
eSwgYnVpbHRpblByb3RvdHlwZUV2ZXJ5LCAxKSBcCisgICAgbWFjcm8oZm9yRWFjaCwgYnVpbHRp
blByb3RvdHlwZUZvckVhY2gsIDEpIFwKKworI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOX1BS
T1RPVFlQRV9FVkVSWSAxCisjZGVmaW5lIEpTQ19CVUlMVElOX0JVSUxUSU5fUFJPVE9UWVBFX0ZP
UkVBQ0ggMQorCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU4uUFJPVE9UWVBFX0JVSUxUSU5f
Q09ERShtYWNybykgXAorICAgIG1hY3JvKGJ1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGUsIGV2ZXJ5
LCBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGVMZW5ndGgpIFwKKyAgICBtYWNybyhidWlsdGlu
UHJvdG90eXBlRm9yRWFjaENvZGUsIGZvckVhY2gsIHNfYnVpbHRpblByb3RvdHlwZUZvckVhY2hD
b2RlTGVuZ3RoKSBcCisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTi5QUk9UT1RZUEVfQlVJ
TFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcCisgICAgbWFjcm8oZXZlcnkpIFwKKyAgICBtYWNy
byhmb3JFYWNoKSBcCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFt
ZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCisgICAgSlNDOjpGdW5jdGlvbkV4ZWN1
dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCitKU0NfRk9SRUFDSF9CVUlM
VElOLlBST1RPVFlQRV9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1
bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fQlVJ
TFRJTi5QUk9UT1RZUEVfRVhJU1RTKG9iamVjdCwgZnVuYykgZGVmaW5lZCBKU0NfQlVJTFRJTl8g
IyMgb2JqZWN0ICMjIF8gIyMgZnVuYworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8v
IEJ1aWx0aW5Qcm90b3R5cGVCdWlsdGluc19oCisKKyMjIyBFbmQgRmlsZTogQnVpbHRpblByb3Rv
dHlwZUJ1aWx0aW5zLmgKKworIyMjIEJlZ2luIEZpbGU6IEJ1aWx0aW5Qcm90b3R5cGVCdWlsdGlu
cy5jcHAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4uCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElT
IEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxl
cyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJCdWlsdGluUHJvdG90eXBlQnVpbHRpbnMuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5F
eGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0NlbGxJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IEpT
Qzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Qcm90b3R5cGVFdmVyeUNvZGVDb25zdHJ1Y3RB
YmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBp
bnQgc19idWlsdGluUHJvdG90eXBlRXZlcnlDb2RlTGVuZ3RoID0gNzYyOworY29uc3QgY2hhciog
c19idWlsdGluUHJvdG90eXBlRXZlcnlDb2RlID0KKyAgICAiKGZ1bmN0aW9uIChjYWxsYmFjayAp
XG4iIFwKKyAgICAie1xuIiBcCisgICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJc
biIgXAorICAgICIgICAgaWYgKHRoaXMgPT09IG51bGwpXG4iIFwKKyAgICAiICAgICAgICB0aHJv
dyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0
aGlzfCBub3QgYmUgbnVsbFwiKTtcbiIgXAorICAgICIgICAgXG4iIFwKKyAgICAiICAgIGlmICh0
aGlzID09PSB1bmRlZmluZWQpXG4iIFwKKyAgICAiICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJv
cihcIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5k
ZWZpbmVkXCIpO1xuIiBcCisgICAgIiAgICBcbiIgXAorICAgICIgICAgdmFyIGFycmF5ID0gQE9i
amVjdCh0aGlzKTtcbiIgXAorICAgICIgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5s
ZW5ndGgpO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9
PSBcImZ1bmN0aW9uXCIpXG4iIFwKKyAgICAiICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihc
IkFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb25cIik7XG4i
IFwKKyAgICAiICAgIFxuIiBcCisgICAgIiAgICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50cy5sZW5n
dGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuIiBcCisgICAgIiAgICBcbiIgXAor
ICAgICIgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuIiBcCisgICAgIiAg
ICAgICAgaWYgKCEoaSBpbiBhcnJheSkpXG4iIFwKKyAgICAiICAgICAgICAgICAgY29udGludWU7
XG4iIFwKKyAgICAiICAgICAgICBpZiAoIWNhbGxiYWNrLkBjYWxsKHRoaXNBcmcsIGFycmF5W2ld
LCBpLCBhcnJheSkpXG4iIFwKKyAgICAiICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuIiBcCisg
ICAgIiAgICB9XG4iIFwKKyAgICAiICAgIFxuIiBcCisgICAgIiAgICByZXR1cm4gdHJ1ZTtcbiIg
XAorICAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0
aW5Qcm90b3R5cGVGb3JFYWNoQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFi
aWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2J1aWx0aW5Qcm90b3R5cGVGb3JF
YWNoQ29kZUxlbmd0aCA9IDY5NDsKK2NvbnN0IGNoYXIqIHNfYnVpbHRpblByb3RvdHlwZUZvckVh
Y2hDb2RlID0KKyAgICAiKGZ1bmN0aW9uIChjYWxsYmFjayApXG4iIFwKKyAgICAie1xuIiBcCisg
ICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgaWYgKHRo
aXMgPT09IG51bGwpXG4iIFwKKyAgICAiICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcihcIkFy
cmF5LnByb3RvdHlwZS5mb3JFYWNoIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsXCIp
O1xuIiBcCisgICAgIiAgICBcbiIgXAorICAgICIgICAgaWYgKHRoaXMgPT09IHVuZGVmaW5lZClc
biIgXAorICAgICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiQXJyYXkucHJvdG90eXBl
LmZvckVhY2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZFwiKTtcbiIgXAor
ICAgICIgICAgXG4iIFwKKyAgICAiICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7XG4iIFwK
KyAgICAiICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTtcbiIgXAorICAg
ICJcbiIgXAorICAgICIgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gXCJmdW5jdGlvblwiKVxu
IiBcCisgICAgIiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJBcnJheS5wcm90b3R5cGUu
Zm9yRWFjaCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb25cIik7XG4iIFwKKyAgICAiICAgIFxu
IiBcCisgICAgIiAgICB2YXIgdGhpc0FyZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1l
bnRzWzFdIDogdW5kZWZpbmVkO1xuIiBcCisgICAgIiAgICBcbiIgXAorICAgICIgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuIiBcCisgICAgIiAgICAgICAgaWYgKGkgaW4g
YXJyYXkpXG4iIFwKKyAgICAiICAgICAgICAgICAgY2FsbGJhY2suQGNhbGwodGhpc0FyZywgYXJy
YXlbaV0sIGksIGFycmF5KTtcbiIgXAorICAgICIgICAgfVxuIiBcCisgICAgIn0pXG4iIFwKKzsK
KworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25O
YW1lLCBhcmd1bWVudENvdW50KSBcCitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUj
I0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAore1wKKyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1
dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVj
dXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCkpOyB9CitKU0NfRk9SRUFDSF9CVUlMVElOLlBS
T1RPVFlQRV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERF
RklORV9CVUlMVElOX0dFTkVSQVRPUgorCisKK30gLy8gbmFtZXNwYWNlIEpTQworIyMjIEVuZCBG
aWxlOiBCdWlsdGluUHJvdG90eXBlQnVpbHRpbnMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29y
ZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmluZWQuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVp
bHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpzLXJlc3VsdApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzM3MTMzODVl
MTYyMTcwMDAyOGVlN2Q4MWEyMzAwYTc4MjJhZTZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlw
dENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpzLXJlc3VsdApAQCAtMCwwICsxLDIy
NCBAQAorIyMjIEJlZ2luIEZpbGU6IEpTQ0J1aWx0aW5zLmgKKy8qCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKwor
Ly8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBm
cm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaWZu
ZGVmIEpTQ0J1aWx0aW5zX2gKKyNkZWZpbmUgSlNDQnVpbHRpbnNfaAorCituYW1lc3BhY2UgSlND
IHsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2NsYXNzIFZNOworCitlbnVtIGNsYXNzIENv
bnN0cnVjdEFiaWxpdHkgOiB1bnNpZ25lZDsKK30KKworbmFtZXNwYWNlIEpTQyB7CisKKy8qIEJ1
aWx0aW5Db25zdHJ1Y3RvciAqLworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfYnVpbHRpbkNvbnN0cnVj
dG9yT2ZDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2J1aWx0aW5Db25zdHJ1Y3Rvck9mQ29kZUxl
bmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluQ29uc3Ry
dWN0b3JPZkNvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfYnVpbHRp
bkNvbnN0cnVjdG9yRnJvbUNvZGU7CitleHRlcm4gY29uc3QgaW50IHNfYnVpbHRpbkNvbnN0cnVj
dG9yRnJvbUNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNf
YnVpbHRpbkNvbnN0cnVjdG9yRnJvbUNvZGVDb25zdHJ1Y3RBYmlsaXR5OworCisjZGVmaW5lIEpT
Q19GT1JFQUNIX0JVSUxUSU5DT05TVFJVQ1RPUl9CVUlMVElOX0RBVEEobWFjcm8pIFwKKyAgICBt
YWNybyhvZiwgYnVpbHRpbkNvbnN0cnVjdG9yT2YsIDApIFwKKyAgICBtYWNybyhmcm9tLCBidWls
dGluQ29uc3RydWN0b3JGcm9tLCAxKSBcCisKKyNkZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTkNP
TlNUUlVDVE9SX09GIDEKKyNkZWZpbmUgSlNDX0JVSUxUSU5fQlVJTFRJTkNPTlNUUlVDVE9SX0ZS
T00gMQorCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShtYWNybykgXAorICAgIG1h
Y3JvKGJ1aWx0aW5Db25zdHJ1Y3Rvck9mQ29kZSwgb2YsIHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZD
b2RlTGVuZ3RoKSBcCisgICAgbWFjcm8oYnVpbHRpbkNvbnN0cnVjdG9yRnJvbUNvZGUsIGZyb20s
IHNfYnVpbHRpbkNvbnN0cnVjdG9yRnJvbUNvZGVMZW5ndGgpIFwKKworI2RlZmluZSBKU0NfRk9S
RUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFwKKyAgICBtYWNybyhmcm9tKSBcCisg
ICAgbWFjcm8ob2YpIFwKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVO
YW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKKyAgICBKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisKK0pTQ19GT1JFQUNIX0JV
SUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJ
TFRJTl9HRU5FUkFUT1IKKworI2RlZmluZSBKU0NfQlVJTFRJTl9FWElTVFMob2JqZWN0LCBmdW5j
KSBkZWZpbmVkIEpTQ19CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNDQnVpbHRpbnNfaAorCisjIyMgRW5kIEZpbGU6IEpT
Q0J1aWx0aW5zLmgKKworIyMjIEJlZ2luIEZpbGU6IEpTQ0J1aWx0aW5zLmNwcAorLyoKKyAqIENv
cHlyaWdodCAoYykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
KiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkg
Z2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBz
Y3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5z
LnB5CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgorCisj
aW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgor
I2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpbkNvbnN0cnVjdG9y
T2ZDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29u
c3RydWN0OworY29uc3QgaW50IHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2RlTGVuZ3RoID0gMjk0
OworY29uc3QgY2hhciogc19idWlsdGluQ29uc3RydWN0b3JPZkNvZGUgPQorICAgICIoZnVuY3Rp
b24gKClcbiIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisg
ICAgIlxuIiBcCisgICAgIiAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiIgXAor
ICAgICIgICAgLy9cbiIgXAorICAgICIgICAgdmFyIGFycmF5ID0gdHlwZW9mIHRoaXMgPT09ICdm
dW5jdGlvbicgPyBuZXcgdGhpcyhsZW5ndGgpIDogbmV3IEBBcnJheShsZW5ndGgpO1xuIiBcCisg
ICAgIiAgICBmb3IgKHZhciBrID0gMDsgayA8IGxlbmd0aDsgKytrKVxuIiBcCisgICAgIiAgICAg
ICAgQHB1dEJ5VmFsRGlyZWN0KGFycmF5LCBrLCBhcmd1bWVudHNba10pO1xuIiBcCisgICAgIiAg
ICBhcnJheS5sZW5ndGggPSBsZW5ndGg7XG4iIFwKKyAgICAiICAgIHJldHVybiBhcnJheTtcbiIg
XAorICAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0
aW5Db25zdHJ1Y3RvckZyb21Db2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJp
bGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfYnVpbHRpbkNvbnN0cnVjdG9yRnJv
bUNvZGVMZW5ndGggPSAyMDQ2OworY29uc3QgY2hhciogc19idWlsdGluQ29uc3RydWN0b3JGcm9t
Q29kZSA9CisgICAgIihmdW5jdGlvbiAoaXRlbXMgKVxuIiBcCisgICAgIntcbiIgXAorICAgICIg
ICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHZhciB0aGlzT2Jq
ID0gdGhpcztcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdmFyIG1hcEZuID0gYXJndW1lbnRz
Lmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4iIFwKKyAgICAiXG4iIFwK
KyAgICAiICAgIHZhciB0aGlzQXJnO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICBpZiAobWFw
Rm4gIT09IHVuZGVmaW5lZCkge1xuIiBcCisgICAgIiAgICAgICAgaWYgKHR5cGVvZiBtYXBGbiAh
PT0gXCJmdW5jdGlvblwiKVxuIiBcCisgICAgIiAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVy
cm9yKFwiQXJyYXkuZnJvbSByZXF1aXJlcyB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQsIHdoZW4g
cHJvdmlkZWQsIGJlIGEgZnVuY3Rpb25cIik7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgICAg
ICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpXG4iIFwKKyAgICAiICAgICAgICAgICAgdGhpc0Fy
ZyA9IGFyZ3VtZW50c1syXTtcbiIgXAorICAgICIgICAgfVxuIiBcCisgICAgIlxuIiBcCisgICAg
IiAgICBpZiAoaXRlbXMgPT0gbnVsbClcbiIgXAorICAgICIgICAgICAgIHRocm93IG5ldyBAVHlw
ZUVycm9yKFwiQXJyYXkuZnJvbSByZXF1aXJlcyBhbiBhcnJheS1saWtlIG9iamVjdCAtIG5vdCBu
dWxsIG9yIHVuZGVmaW5lZFwiKTtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdmFyIGl0ZXJh
dG9yTWV0aG9kID0gaXRlbXNbQHN5bWJvbEl0ZXJhdG9yXTtcbiIgXAorICAgICIgICAgaWYgKGl0
ZXJhdG9yTWV0aG9kICE9IG51bGwpIHtcbiIgXAorICAgICIgICAgICAgIGlmICh0eXBlb2YgaXRl
cmF0b3JNZXRob2QgIT09IFwiZnVuY3Rpb25cIilcbiIgXAorICAgICIgICAgICAgICAgICB0aHJv
dyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LmZyb20gcmVxdWlyZXMgdGhhdCB0aGUgcHJvcGVydHkg
b2YgdGhlIGZpcnN0IGFyZ3VtZW50LCBpdGVtc1tTeW1ib2wuaXRlcmF0b3JdLCB3aGVuIGV4aXN0
cywgYmUgYSBmdW5jdGlvblwiKTtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgICAgIC8vXG4i
IFwKKyAgICAiICAgICAgICB2YXIgcmVzdWx0ID0gKHR5cGVvZiB0aGlzT2JqID09PSBcImZ1bmN0
aW9uXCIpID8gQE9iamVjdChuZXcgdGhpc09iaigpKSA6IFtdO1xuIiBcCisgICAgIlxuIiBcCisg
ICAgIiAgICAgICAgdmFyIGsgPSAwO1xuIiBcCisgICAgIiAgICAgICAgdmFyIGl0ZXJhdG9yID0g
aXRlcmF0b3JNZXRob2QuQGNhbGwoaXRlbXMpO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICAg
ICAgLy9cbiIgXAorICAgICIgICAgICAgIC8vXG4iIFwKKyAgICAiICAgICAgICAvL1xuIiBcCisg
ICAgIiAgICAgICAgdmFyIHdyYXBwZXIgPSB7XG4iIFwKKyAgICAiICAgICAgICAgICAgW0BzeW1i
b2xJdGVyYXRvcl0oKSB7XG4iIFwKKyAgICAiICAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRv
cjtcbiIgXAorICAgICIgICAgICAgICAgICB9XG4iIFwKKyAgICAiICAgICAgICB9O1xuIiBcCisg
ICAgIlxuIiBcCisgICAgIiAgICAgICAgZm9yICh2YXIgdmFsdWUgb2Ygd3JhcHBlcikge1xuIiBc
CisgICAgIiAgICAgICAgICAgIGlmIChtYXBGbilcbiIgXAorICAgICIgICAgICAgICAgICAgICAg
QHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywgdGhpc0FyZyA9PT0gdW5kZWZpbmVkID8gbWFwRm4o
dmFsdWUsIGspIDogbWFwRm4uQGNhbGwodGhpc0FyZywgdmFsdWUsIGspKTtcbiIgXAorICAgICIg
ICAgICAgICAgICBlbHNlXG4iIFwKKyAgICAiICAgICAgICAgICAgICAgIEBwdXRCeVZhbERpcmVj
dChyZXN1bHQsIGssIHZhbHVlKTtcbiIgXAorICAgICIgICAgICAgICAgICBrICs9IDE7XG4iIFwK
KyAgICAiICAgICAgICB9XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgICAgICByZXN1bHQubGVu
Z3RoID0gaztcbiIgXAorICAgICIgICAgICAgIHJldHVybiByZXN1bHQ7XG4iIFwKKyAgICAiICAg
IH1cbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdmFyIGFycmF5TGlrZSA9IEBPYmplY3QoaXRl
bXMpO1xuIiBcCisgICAgIiAgICB2YXIgYXJyYXlMaWtlTGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5
TGlrZS5sZW5ndGgpO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICAvL1xuIiBcCisgICAgIiAg
ICB2YXIgcmVzdWx0ID0gKHR5cGVvZiB0aGlzT2JqID09PSBcImZ1bmN0aW9uXCIpID8gQE9iamVj
dChuZXcgdGhpc09iaihhcnJheUxpa2VMZW5ndGgpKSA6IG5ldyBAQXJyYXkoYXJyYXlMaWtlTGVu
Z3RoKTtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdmFyIGsgPSAwO1xuIiBcCisgICAgIiAg
ICB3aGlsZSAoayA8IGFycmF5TGlrZUxlbmd0aCkge1xuIiBcCisgICAgIiAgICAgICAgdmFyIHZh
bHVlID0gYXJyYXlMaWtlW2tdO1xuIiBcCisgICAgIiAgICAgICAgaWYgKG1hcEZuKVxuIiBcCisg
ICAgIiAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHRoaXNBcmcgPT09IHVu
ZGVmaW5lZCA/IG1hcEZuKHZhbHVlLCBrKSA6IG1hcEZuLkBjYWxsKHRoaXNBcmcsIHZhbHVlLCBr
KSk7XG4iIFwKKyAgICAiICAgICAgICBlbHNlXG4iIFwKKyAgICAiICAgICAgICAgICAgQHB1dEJ5
VmFsRGlyZWN0KHJlc3VsdCwgaywgdmFsdWUpO1xuIiBcCisgICAgIiAgICAgICAgayArPSAxO1xu
IiBcCisgICAgIiAgICB9XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHJlc3VsdC5sZW5ndGgg
PSBhcnJheUxpa2VMZW5ndGg7XG4iIFwKKyAgICAiICAgIHJldHVybiByZXN1bHQ7XG4iIFwKKyAg
ICAifSlcbiIgXAorOworCisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVO
YW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCit7XAorICAgIHJldHVybiB2
bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwg
dm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IH0KK0pTQ19GT1JF
QUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5F
X0JVSUxUSU5fR0VORVJBVE9SCisKKworfSAvLyBuYW1lc3BhY2UgSlNDCisjIyMgRW5kIEZpbGU6
IEpTQ0J1aWx0aW5zLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVj
dG9yLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1T
ZXBhcmF0ZS5qcy1yZXN1bHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODI2NmQwNWQ0MDBkNWQ3NjRiZjJkZDY3YzJi
ODY1YmNhNTc5ZDNiMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25z
dHJ1Y3Rvci1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTAsMCArMSwyMjMgQEAKKyMjIyBCZWdpbiBG
aWxlOiBCdWlsdGluQ29uc3RydWN0b3JCdWlsdGlucy5oCisvKgorICogQ29weXJpZ2h0IChjKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8v
IERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJv
bSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lmbmRl
ZiBCdWlsdGluQ29uc3RydWN0b3JCdWlsdGluc19oCisjZGVmaW5lIEJ1aWx0aW5Db25zdHJ1Y3Rv
ckJ1aWx0aW5zX2gKKworCisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRnVuY3Rpb25FeGVjdXRh
YmxlOworfQorCituYW1lc3BhY2UgSlNDIHsKKworLyogQnVpbHRpbkNvbnN0cnVjdG9yICovCitl
eHRlcm4gY29uc3QgY2hhciogc19idWlsdGluQ29uc3RydWN0b3JPZkNvZGU7CitleHRlcm4gY29u
c3QgaW50IHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpT
Qzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0aW5Db25zdHJ1Y3Rvck9mQ29kZUNvbnN0cnVjdEFi
aWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZTsK
K2V4dGVybiBjb25zdCBpbnQgc19idWlsdGluQ29uc3RydWN0b3JGcm9tQ29kZUxlbmd0aDsKK2V4
dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19idWlsdGluQ29uc3RydWN0b3JGcm9t
Q29kZUNvbnN0cnVjdEFiaWxpdHk7CisKKyNkZWZpbmUgSlNDX0ZPUkVBQ0hfQlVJTFRJTkNPTlNU
UlVDVE9SX0JVSUxUSU5fREFUQShtYWNybykgXAorICAgIG1hY3JvKG9mLCBidWlsdGluQ29uc3Ry
dWN0b3JPZiwgMCkgXAorICAgIG1hY3JvKGZyb20sIGJ1aWx0aW5Db25zdHJ1Y3RvckZyb20sIDEp
IFwKKworI2RlZmluZSBKU0NfQlVJTFRJTl9CVUlMVElOQ09OU1RSVUNUT1JfT0YgMQorI2RlZmlu
ZSBKU0NfQlVJTFRJTl9CVUlMVElOQ09OU1RSVUNUT1JfRlJPTSAxCisKKyNkZWZpbmUgSlNDX0ZP
UkVBQ0hfQlVJTFRJTkNPTlNUUlVDVE9SX0JVSUxUSU5fQ09ERShtYWNybykgXAorICAgIG1hY3Jv
KGJ1aWx0aW5Db25zdHJ1Y3Rvck9mQ29kZSwgb2YsIHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2Rl
TGVuZ3RoKSBcCisgICAgbWFjcm8oYnVpbHRpbkNvbnN0cnVjdG9yRnJvbUNvZGUsIGZyb20sIHNf
YnVpbHRpbkNvbnN0cnVjdG9yRnJvbUNvZGVMZW5ndGgpIFwKKworI2RlZmluZSBKU0NfRk9SRUFD
SF9CVUlMVElOQ09OU1RSVUNUT1JfQlVJTFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcCisgICAg
bWFjcm8oZnJvbSkgXAorICAgIG1hY3JvKG9mKSBcCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElO
X0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCisgICAg
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOwor
CitKU0NfRk9SRUFDSF9CVUlMVElOQ09OU1RSVUNUT1JfQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJ
TFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVm
aW5lIEpTQ19CVUlMVElOX0JVSUxUSU5DT05TVFJVQ1RPUl9FWElTVFMob2JqZWN0LCBmdW5jKSBk
ZWZpbmVkIEpTQ19CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisKK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gQnVpbHRpbkNvbnN0cnVjdG9yQnVpbHRpbnNfaAorCisjIyMg
RW5kIEZpbGU6IEJ1aWx0aW5Db25zdHJ1Y3RvckJ1aWx0aW5zLmgKKworIyMjIEJlZ2luIEZpbGU6
IEJ1aWx0aW5Db25zdHJ1Y3RvckJ1aWx0aW5zLmNwcAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBE
TyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20g
SmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJCdWlsdGluQ29uc3RydWN0b3JCdWlsdGlucy5oIgorCisj
aW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgor
I2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfYnVpbHRpbkNvbnN0cnVjdG9y
T2ZDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29u
c3RydWN0OworY29uc3QgaW50IHNfYnVpbHRpbkNvbnN0cnVjdG9yT2ZDb2RlTGVuZ3RoID0gMjk0
OworY29uc3QgY2hhciogc19idWlsdGluQ29uc3RydWN0b3JPZkNvZGUgPQorICAgICIoZnVuY3Rp
b24gKClcbiIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisg
ICAgIlxuIiBcCisgICAgIiAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiIgXAor
ICAgICIgICAgLy9cbiIgXAorICAgICIgICAgdmFyIGFycmF5ID0gdHlwZW9mIHRoaXMgPT09ICdm
dW5jdGlvbicgPyBuZXcgdGhpcyhsZW5ndGgpIDogbmV3IEBBcnJheShsZW5ndGgpO1xuIiBcCisg
ICAgIiAgICBmb3IgKHZhciBrID0gMDsgayA8IGxlbmd0aDsgKytrKVxuIiBcCisgICAgIiAgICAg
ICAgQHB1dEJ5VmFsRGlyZWN0KGFycmF5LCBrLCBhcmd1bWVudHNba10pO1xuIiBcCisgICAgIiAg
ICBhcnJheS5sZW5ndGggPSBsZW5ndGg7XG4iIFwKKyAgICAiICAgIHJldHVybiBhcnJheTtcbiIg
XAorICAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2J1aWx0
aW5Db25zdHJ1Y3RvckZyb21Db2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJp
bGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfYnVpbHRpbkNvbnN0cnVjdG9yRnJv
bUNvZGVMZW5ndGggPSAyMDQ2OworY29uc3QgY2hhciogc19idWlsdGluQ29uc3RydWN0b3JGcm9t
Q29kZSA9CisgICAgIihmdW5jdGlvbiAoaXRlbXMgKVxuIiBcCisgICAgIntcbiIgXAorICAgICIg
ICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHZhciB0aGlzT2Jq
ID0gdGhpcztcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdmFyIG1hcEZuID0gYXJndW1lbnRz
Lmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4iIFwKKyAgICAiXG4iIFwK
KyAgICAiICAgIHZhciB0aGlzQXJnO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICBpZiAobWFw
Rm4gIT09IHVuZGVmaW5lZCkge1xuIiBcCisgICAgIiAgICAgICAgaWYgKHR5cGVvZiBtYXBGbiAh
PT0gXCJmdW5jdGlvblwiKVxuIiBcCisgICAgIiAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVy
cm9yKFwiQXJyYXkuZnJvbSByZXF1aXJlcyB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQsIHdoZW4g
cHJvdmlkZWQsIGJlIGEgZnVuY3Rpb25cIik7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgICAg
ICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpXG4iIFwKKyAgICAiICAgICAgICAgICAgdGhpc0Fy
ZyA9IGFyZ3VtZW50c1syXTtcbiIgXAorICAgICIgICAgfVxuIiBcCisgICAgIlxuIiBcCisgICAg
IiAgICBpZiAoaXRlbXMgPT0gbnVsbClcbiIgXAorICAgICIgICAgICAgIHRocm93IG5ldyBAVHlw
ZUVycm9yKFwiQXJyYXkuZnJvbSByZXF1aXJlcyBhbiBhcnJheS1saWtlIG9iamVjdCAtIG5vdCBu
dWxsIG9yIHVuZGVmaW5lZFwiKTtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdmFyIGl0ZXJh
dG9yTWV0aG9kID0gaXRlbXNbQHN5bWJvbEl0ZXJhdG9yXTtcbiIgXAorICAgICIgICAgaWYgKGl0
ZXJhdG9yTWV0aG9kICE9IG51bGwpIHtcbiIgXAorICAgICIgICAgICAgIGlmICh0eXBlb2YgaXRl
cmF0b3JNZXRob2QgIT09IFwiZnVuY3Rpb25cIilcbiIgXAorICAgICIgICAgICAgICAgICB0aHJv
dyBuZXcgQFR5cGVFcnJvcihcIkFycmF5LmZyb20gcmVxdWlyZXMgdGhhdCB0aGUgcHJvcGVydHkg
b2YgdGhlIGZpcnN0IGFyZ3VtZW50LCBpdGVtc1tTeW1ib2wuaXRlcmF0b3JdLCB3aGVuIGV4aXN0
cywgYmUgYSBmdW5jdGlvblwiKTtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgICAgIC8vXG4i
IFwKKyAgICAiICAgICAgICB2YXIgcmVzdWx0ID0gKHR5cGVvZiB0aGlzT2JqID09PSBcImZ1bmN0
aW9uXCIpID8gQE9iamVjdChuZXcgdGhpc09iaigpKSA6IFtdO1xuIiBcCisgICAgIlxuIiBcCisg
ICAgIiAgICAgICAgdmFyIGsgPSAwO1xuIiBcCisgICAgIiAgICAgICAgdmFyIGl0ZXJhdG9yID0g
aXRlcmF0b3JNZXRob2QuQGNhbGwoaXRlbXMpO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICAg
ICAgLy9cbiIgXAorICAgICIgICAgICAgIC8vXG4iIFwKKyAgICAiICAgICAgICAvL1xuIiBcCisg
ICAgIiAgICAgICAgdmFyIHdyYXBwZXIgPSB7XG4iIFwKKyAgICAiICAgICAgICAgICAgW0BzeW1i
b2xJdGVyYXRvcl0oKSB7XG4iIFwKKyAgICAiICAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRv
cjtcbiIgXAorICAgICIgICAgICAgICAgICB9XG4iIFwKKyAgICAiICAgICAgICB9O1xuIiBcCisg
ICAgIlxuIiBcCisgICAgIiAgICAgICAgZm9yICh2YXIgdmFsdWUgb2Ygd3JhcHBlcikge1xuIiBc
CisgICAgIiAgICAgICAgICAgIGlmIChtYXBGbilcbiIgXAorICAgICIgICAgICAgICAgICAgICAg
QHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgaywgdGhpc0FyZyA9PT0gdW5kZWZpbmVkID8gbWFwRm4o
dmFsdWUsIGspIDogbWFwRm4uQGNhbGwodGhpc0FyZywgdmFsdWUsIGspKTtcbiIgXAorICAgICIg
ICAgICAgICAgICBlbHNlXG4iIFwKKyAgICAiICAgICAgICAgICAgICAgIEBwdXRCeVZhbERpcmVj
dChyZXN1bHQsIGssIHZhbHVlKTtcbiIgXAorICAgICIgICAgICAgICAgICBrICs9IDE7XG4iIFwK
KyAgICAiICAgICAgICB9XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgICAgICByZXN1bHQubGVu
Z3RoID0gaztcbiIgXAorICAgICIgICAgICAgIHJldHVybiByZXN1bHQ7XG4iIFwKKyAgICAiICAg
IH1cbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdmFyIGFycmF5TGlrZSA9IEBPYmplY3QoaXRl
bXMpO1xuIiBcCisgICAgIiAgICB2YXIgYXJyYXlMaWtlTGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5
TGlrZS5sZW5ndGgpO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICAvL1xuIiBcCisgICAgIiAg
ICB2YXIgcmVzdWx0ID0gKHR5cGVvZiB0aGlzT2JqID09PSBcImZ1bmN0aW9uXCIpID8gQE9iamVj
dChuZXcgdGhpc09iaihhcnJheUxpa2VMZW5ndGgpKSA6IG5ldyBAQXJyYXkoYXJyYXlMaWtlTGVu
Z3RoKTtcbiIgXAorICAgICJcbiIgXAorICAgICIgICAgdmFyIGsgPSAwO1xuIiBcCisgICAgIiAg
ICB3aGlsZSAoayA8IGFycmF5TGlrZUxlbmd0aCkge1xuIiBcCisgICAgIiAgICAgICAgdmFyIHZh
bHVlID0gYXJyYXlMaWtlW2tdO1xuIiBcCisgICAgIiAgICAgICAgaWYgKG1hcEZuKVxuIiBcCisg
ICAgIiAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHRoaXNBcmcgPT09IHVu
ZGVmaW5lZCA/IG1hcEZuKHZhbHVlLCBrKSA6IG1hcEZuLkBjYWxsKHRoaXNBcmcsIHZhbHVlLCBr
KSk7XG4iIFwKKyAgICAiICAgICAgICBlbHNlXG4iIFwKKyAgICAiICAgICAgICAgICAgQHB1dEJ5
VmFsRGlyZWN0KHJlc3VsdCwgaywgdmFsdWUpO1xuIiBcCisgICAgIiAgICAgICAgayArPSAxO1xu
IiBcCisgICAgIiAgICB9XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHJlc3VsdC5sZW5ndGgg
PSBhcnJheUxpa2VMZW5ndGg7XG4iIFwKKyAgICAiICAgIHJldHVybiByZXN1bHQ7XG4iIFwKKyAg
ICAifSlcbiIgXAorOworCisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVO
YW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCit7XAorICAgIHJldHVybiB2
bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwg
dm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IH0KK0pTQ19GT1JF
QUNIX0JVSUxUSU5DT05TVFJVQ1RPUl9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJB
VE9SKQorI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgorCisKK30gLy8gbmFtZXNwYWNl
IEpTQworIyMjIEVuZCBGaWxlOiBCdWlsdGluQ29uc3RydWN0b3JCdWlsdGlucy5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVj
dGVkL0phdmFTY3JpcHRDb3JlLU9wZXJhdGlvbnMuUHJvbWlzZS1Db21iaW5lZC5qcy1yZXN1bHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9K
YXZhU2NyaXB0Q29yZS1PcGVyYXRpb25zLlByb21pc2UtQ29tYmluZWQuanMtcmVzdWx0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMxNDUxMTExY2E3ZDY3NTVmZTI3NWEzOTQ0ZTc3MTY0MWIzYjlkZjYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9l
eHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1PcGVyYXRpb25zLlByb21pc2UtQ29tYmluZWQuanMtcmVz
dWx0CkBAIC0wLDAgKzEsNDE1IEBACisjIyMgQmVnaW4gRmlsZTogSlNDQnVpbHRpbnMuaAorLyoK
KyAqIENvcHlyaWdodCAoYykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+LgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBh
dXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWls
dGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0
ZS1qcy1idWlsdGlucy5weQorCisjaWZuZGVmIEpTQ0J1aWx0aW5zX2gKKyNkZWZpbmUgSlNDQnVp
bHRpbnNfaAorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK2Ns
YXNzIFZNOworCitlbnVtIGNsYXNzIENvbnN0cnVjdEFiaWxpdHkgOiB1bnNpZ25lZDsKK30KKwor
bmFtZXNwYWNlIEpTQyB7CisKKy8qIE9wZXJhdGlvbnMuUHJvbWlzZSAqLworZXh0ZXJuIGNvbnN0
IGNoYXIqIHNfb3BlcmF0aW9uc1Byb21pc2VJc1Byb21pc2VDb2RlOworZXh0ZXJuIGNvbnN0IGlu
dCBzX29wZXJhdGlvbnNQcm9taXNlSXNQcm9taXNlQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBK
U0M6OkNvbnN0cnVjdEFiaWxpdHkgc19vcGVyYXRpb25zUHJvbWlzZUlzUHJvbWlzZUNvZGVDb25z
dHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfb3BlcmF0aW9uc1Byb21pc2VOZXdQ
cm9taXNlUmVhY3Rpb25Db2RlOworZXh0ZXJuIGNvbnN0IGludCBzX29wZXJhdGlvbnNQcm9taXNl
TmV3UHJvbWlzZVJlYWN0aW9uQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVj
dEFiaWxpdHkgc19vcGVyYXRpb25zUHJvbWlzZU5ld1Byb21pc2VSZWFjdGlvbkNvZGVDb25zdHJ1
Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfb3BlcmF0aW9uc1Byb21pc2VOZXdQcm9t
aXNlQ2FwYWJpbGl0eUNvZGU7CitleHRlcm4gY29uc3QgaW50IHNfb3BlcmF0aW9uc1Byb21pc2VO
ZXdQcm9taXNlQ2FwYWJpbGl0eUNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1
Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VOZXdQcm9taXNlQ2FwYWJpbGl0eUNvZGVDb25z
dHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfb3BlcmF0aW9uc1Byb21pc2VUcmln
Z2VyUHJvbWlzZVJlYWN0aW9uc0NvZGU7CitleHRlcm4gY29uc3QgaW50IHNfb3BlcmF0aW9uc1By
b21pc2VUcmlnZ2VyUHJvbWlzZVJlYWN0aW9uc0NvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlND
OjpDb25zdHJ1Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VUcmlnZ2VyUHJvbWlzZVJlYWN0
aW9uc0NvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfb3BlcmF0aW9u
c1Byb21pc2VSZWplY3RQcm9taXNlQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19vcGVyYXRpb25z
UHJvbWlzZVJlamVjdFByb21pc2VDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3Ry
dWN0QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9taXNlUmVqZWN0UHJvbWlzZUNvZGVDb25zdHJ1Y3RB
YmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfb3BlcmF0aW9uc1Byb21pc2VGdWxmaWxsUHJv
bWlzZUNvZGU7CitleHRlcm4gY29uc3QgaW50IHNfb3BlcmF0aW9uc1Byb21pc2VGdWxmaWxsUHJv
bWlzZUNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfb3Bl
cmF0aW9uc1Byb21pc2VGdWxmaWxsUHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJu
IGNvbnN0IGNoYXIqIHNfb3BlcmF0aW9uc1Byb21pc2VDcmVhdGVSZXNvbHZpbmdGdW5jdGlvbnND
b2RlOworZXh0ZXJuIGNvbnN0IGludCBzX29wZXJhdGlvbnNQcm9taXNlQ3JlYXRlUmVzb2x2aW5n
RnVuY3Rpb25zQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkg
c19vcGVyYXRpb25zUHJvbWlzZUNyZWF0ZVJlc29sdmluZ0Z1bmN0aW9uc0NvZGVDb25zdHJ1Y3RB
YmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfb3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVh
Y3Rpb25Kb2JDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX29wZXJhdGlvbnNQcm9taXNlUHJvbWlz
ZVJlYWN0aW9uSm9iQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxp
dHkgc19vcGVyYXRpb25zUHJvbWlzZVByb21pc2VSZWFjdGlvbkpvYkNvZGVDb25zdHJ1Y3RBYmls
aXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfb3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVzb2x2
ZVRoZW5hYmxlSm9iQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19vcGVyYXRpb25zUHJvbWlzZVBy
b21pc2VSZXNvbHZlVGhlbmFibGVKb2JDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29u
c3RydWN0QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJlc29sdmVUaGVuYWJsZUpv
YkNvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfb3BlcmF0aW9uc1By
b21pc2VJbml0aWFsaXplUHJvbWlzZUNvZGU7CitleHRlcm4gY29uc3QgaW50IHNfb3BlcmF0aW9u
c1Byb21pc2VJbml0aWFsaXplUHJvbWlzZUNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpD
b25zdHJ1Y3RBYmlsaXR5IHNfb3BlcmF0aW9uc1Byb21pc2VJbml0aWFsaXplUHJvbWlzZUNvZGVD
b25zdHJ1Y3RBYmlsaXR5OworCisjZGVmaW5lIEpTQ19GT1JFQUNIX09QRVJBVElPTlNQUk9NSVNF
X0JVSUxUSU5fREFUQShtYWNybykgXAorICAgIG1hY3JvKGlzUHJvbWlzZSwgb3BlcmF0aW9uc1By
b21pc2VJc1Byb21pc2UsIDEpIFwKKyAgICBtYWNybyhuZXdQcm9taXNlUmVhY3Rpb24sIG9wZXJh
dGlvbnNQcm9taXNlTmV3UHJvbWlzZVJlYWN0aW9uLCAyKSBcCisgICAgbWFjcm8obmV3UHJvbWlz
ZUNhcGFiaWxpdHksIG9wZXJhdGlvbnNQcm9taXNlTmV3UHJvbWlzZUNhcGFiaWxpdHksIDEpIFwK
KyAgICBtYWNybyh0cmlnZ2VyUHJvbWlzZVJlYWN0aW9ucywgb3BlcmF0aW9uc1Byb21pc2VUcmln
Z2VyUHJvbWlzZVJlYWN0aW9ucywgMikgXAorICAgIG1hY3JvKHJlamVjdFByb21pc2UsIG9wZXJh
dGlvbnNQcm9taXNlUmVqZWN0UHJvbWlzZSwgMikgXAorICAgIG1hY3JvKGZ1bGZpbGxQcm9taXNl
LCBvcGVyYXRpb25zUHJvbWlzZUZ1bGZpbGxQcm9taXNlLCAyKSBcCisgICAgbWFjcm8oY3JlYXRl
UmVzb2x2aW5nRnVuY3Rpb25zLCBvcGVyYXRpb25zUHJvbWlzZUNyZWF0ZVJlc29sdmluZ0Z1bmN0
aW9ucywgMSkgXAorICAgIG1hY3JvKHByb21pc2VSZWFjdGlvbkpvYiwgb3BlcmF0aW9uc1Byb21p
c2VQcm9taXNlUmVhY3Rpb25Kb2IsIDIpIFwKKyAgICBtYWNybyhwcm9taXNlUmVzb2x2ZVRoZW5h
YmxlSm9iLCBvcGVyYXRpb25zUHJvbWlzZVByb21pc2VSZXNvbHZlVGhlbmFibGVKb2IsIDMpIFwK
KyAgICBtYWNybyhpbml0aWFsaXplUHJvbWlzZSwgb3BlcmF0aW9uc1Byb21pc2VJbml0aWFsaXpl
UHJvbWlzZSwgMSkgXAorCisjZGVmaW5lIEpTQ19CVUlMVElOX09QRVJBVElPTlNQUk9NSVNFX0lT
UFJPTUlTRSAxCisjZGVmaW5lIEpTQ19CVUlMVElOX09QRVJBVElPTlNQUk9NSVNFX05FV1BST01J
U0VSRUFDVElPTiAxCisjZGVmaW5lIEpTQ19CVUlMVElOX09QRVJBVElPTlNQUk9NSVNFX05FV1BS
T01JU0VDQVBBQklMSVRZIDEKKyNkZWZpbmUgSlNDX0JVSUxUSU5fT1BFUkFUSU9OU1BST01JU0Vf
VFJJR0dFUlBST01JU0VSRUFDVElPTlMgMQorI2RlZmluZSBKU0NfQlVJTFRJTl9PUEVSQVRJT05T
UFJPTUlTRV9SRUpFQ1RQUk9NSVNFIDEKKyNkZWZpbmUgSlNDX0JVSUxUSU5fT1BFUkFUSU9OU1BS
T01JU0VfRlVMRklMTFBST01JU0UgMQorI2RlZmluZSBKU0NfQlVJTFRJTl9PUEVSQVRJT05TUFJP
TUlTRV9DUkVBVEVSRVNPTFZJTkdGVU5DVElPTlMgMQorI2RlZmluZSBKU0NfQlVJTFRJTl9PUEVS
QVRJT05TUFJPTUlTRV9QUk9NSVNFUkVBQ1RJT05KT0IgMQorI2RlZmluZSBKU0NfQlVJTFRJTl9P
UEVSQVRJT05TUFJPTUlTRV9QUk9NSVNFUkVTT0xWRVRIRU5BQkxFSk9CIDEKKyNkZWZpbmUgSlND
X0JVSUxUSU5fT1BFUkFUSU9OU1BST01JU0VfSU5JVElBTElaRVBST01JU0UgMQorCisjZGVmaW5l
IEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShtYWNybykgXAorICAgIG1hY3JvKG9wZXJhdGlvbnNQ
cm9taXNlSXNQcm9taXNlQ29kZSwgaXNQcm9taXNlLCBzX29wZXJhdGlvbnNQcm9taXNlSXNQcm9t
aXNlQ29kZUxlbmd0aCkgXAorICAgIG1hY3JvKG9wZXJhdGlvbnNQcm9taXNlTmV3UHJvbWlzZVJl
YWN0aW9uQ29kZSwgbmV3UHJvbWlzZVJlYWN0aW9uLCBzX29wZXJhdGlvbnNQcm9taXNlTmV3UHJv
bWlzZVJlYWN0aW9uQ29kZUxlbmd0aCkgXAorICAgIG1hY3JvKG9wZXJhdGlvbnNQcm9taXNlTmV3
UHJvbWlzZUNhcGFiaWxpdHlDb2RlLCBuZXdQcm9taXNlQ2FwYWJpbGl0eSwgc19vcGVyYXRpb25z
UHJvbWlzZU5ld1Byb21pc2VDYXBhYmlsaXR5Q29kZUxlbmd0aCkgXAorICAgIG1hY3JvKG9wZXJh
dGlvbnNQcm9taXNlVHJpZ2dlclByb21pc2VSZWFjdGlvbnNDb2RlLCB0cmlnZ2VyUHJvbWlzZVJl
YWN0aW9ucywgc19vcGVyYXRpb25zUHJvbWlzZVRyaWdnZXJQcm9taXNlUmVhY3Rpb25zQ29kZUxl
bmd0aCkgXAorICAgIG1hY3JvKG9wZXJhdGlvbnNQcm9taXNlUmVqZWN0UHJvbWlzZUNvZGUsIHJl
amVjdFByb21pc2UsIHNfb3BlcmF0aW9uc1Byb21pc2VSZWplY3RQcm9taXNlQ29kZUxlbmd0aCkg
XAorICAgIG1hY3JvKG9wZXJhdGlvbnNQcm9taXNlRnVsZmlsbFByb21pc2VDb2RlLCBmdWxmaWxs
UHJvbWlzZSwgc19vcGVyYXRpb25zUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZUxlbmd0aCkgXAor
ICAgIG1hY3JvKG9wZXJhdGlvbnNQcm9taXNlQ3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zQ29kZSwg
Y3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zLCBzX29wZXJhdGlvbnNQcm9taXNlQ3JlYXRlUmVzb2x2
aW5nRnVuY3Rpb25zQ29kZUxlbmd0aCkgXAorICAgIG1hY3JvKG9wZXJhdGlvbnNQcm9taXNlUHJv
bWlzZVJlYWN0aW9uSm9iQ29kZSwgcHJvbWlzZVJlYWN0aW9uSm9iLCBzX29wZXJhdGlvbnNQcm9t
aXNlUHJvbWlzZVJlYWN0aW9uSm9iQ29kZUxlbmd0aCkgXAorICAgIG1hY3JvKG9wZXJhdGlvbnNQ
cm9taXNlUHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYkNvZGUsIHByb21pc2VSZXNvbHZlVGhlbmFi
bGVKb2IsIHNfb3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZUxl
bmd0aCkgXAorICAgIG1hY3JvKG9wZXJhdGlvbnNQcm9taXNlSW5pdGlhbGl6ZVByb21pc2VDb2Rl
LCBpbml0aWFsaXplUHJvbWlzZSwgc19vcGVyYXRpb25zUHJvbWlzZUluaXRpYWxpemVQcm9taXNl
Q29kZUxlbmd0aCkgXAorCisjZGVmaW5lIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFN
RShtYWNybykgXAorICAgIG1hY3JvKGNyZWF0ZVJlc29sdmluZ0Z1bmN0aW9ucykgXAorICAgIG1h
Y3JvKGZ1bGZpbGxQcm9taXNlKSBcCisgICAgbWFjcm8oaW5pdGlhbGl6ZVByb21pc2UpIFwKKyAg
ICBtYWNybyhpc1Byb21pc2UpIFwKKyAgICBtYWNybyhuZXdQcm9taXNlQ2FwYWJpbGl0eSkgXAor
ICAgIG1hY3JvKG5ld1Byb21pc2VSZWFjdGlvbikgXAorICAgIG1hY3JvKHByb21pc2VSZWFjdGlv
bkpvYikgXAorICAgIG1hY3JvKHByb21pc2VSZXNvbHZlVGhlbmFibGVKb2IpIFwKKyAgICBtYWNy
byhyZWplY3RQcm9taXNlKSBcCisgICAgbWFjcm8odHJpZ2dlclByb21pc2VSZWFjdGlvbnMpIFwK
KworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5h
bWUsIGFyZ3VtZW50Q291bnQpIFwKKyAgICBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5h
bWUjI0dlbmVyYXRvcihKU0M6OlZNJik7CisKK0pTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShERUNM
QVJFX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IK
KworI2RlZmluZSBKU0NfQlVJTFRJTl9FWElTVFMob2JqZWN0LCBmdW5jKSBkZWZpbmVkIEpTQ19C
VUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gSlNDQnVpbHRpbnNfaAorCisjIyMgRW5kIEZpbGU6IEpTQ0J1aWx0aW5zLmgKKwor
IyMjIEJlZ2luIEZpbGU6IEpTQ0J1aWx0aW5zLmNwcAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAx
NSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8K
KworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRl
ZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKKworI2luY2x1ZGUg
IkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRl
ICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9taXNlSXNQcm9taXNl
Q29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0
cnVjdDsKK2NvbnN0IGludCBzX29wZXJhdGlvbnNQcm9taXNlSXNQcm9taXNlQ29kZUxlbmd0aCA9
IDE1ODsKK2NvbnN0IGNoYXIqIHNfb3BlcmF0aW9uc1Byb21pc2VJc1Byb21pc2VDb2RlID0KKyAg
ICIoZnVuY3Rpb24gKHByb21pc2UpXG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAgXCJ1c2Ugc3Ry
aWN0XCI7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICByZXR1cm4gQGlzT2JqZWN0KHByb21pc2Up
ICYmICEhcHJvbWlzZS5AcHJvbWlzZVN0YXRlO1xuIiBcCisgICAifSlcbiIgXAorOworCitjb25z
dCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19vcGVyYXRpb25zUHJvbWlzZU5ld1Byb21pc2VSZWFj
dGlvbkNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RD
b25zdHJ1Y3Q7Citjb25zdCBpbnQgc19vcGVyYXRpb25zUHJvbWlzZU5ld1Byb21pc2VSZWFjdGlv
bkNvZGVMZW5ndGggPSAyMjA7Citjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQcm9taXNlTmV3UHJv
bWlzZVJlYWN0aW9uQ29kZSA9CisgICAiKGZ1bmN0aW9uIChjYXBhYmlsaXR5LCBoYW5kbGVyKVxu
IiBcCisgICAie1xuIiBcCisgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwK
KyAgICIgICAgcmV0dXJuIHtcbiIgXAorICAgIiAgICAgICAgQGNhcGFiaWxpdGllczogY2FwYWJp
bGl0eSxcbiIgXAorICAgIiAgICAgICAgQGhhbmRsZXI6IGhhbmRsZXJcbiIgXAorICAgIiAgICB9
O1xuIiBcCisgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19v
cGVyYXRpb25zUHJvbWlzZU5ld1Byb21pc2VDYXBhYmlsaXR5Q29kZUNvbnN0cnVjdEFiaWxpdHkg
PSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX29w
ZXJhdGlvbnNQcm9taXNlTmV3UHJvbWlzZUNhcGFiaWxpdHlDb2RlTGVuZ3RoID0gMTQyNzsKK2Nv
bnN0IGNoYXIqIHNfb3BlcmF0aW9uc1Byb21pc2VOZXdQcm9taXNlQ2FwYWJpbGl0eUNvZGUgPQor
ICAgIihmdW5jdGlvbiAoY29uc3RydWN0b3IpXG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAgXCJ1
c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICAvL1xuIiBcCisgICAiICAgIGlm
ICh0eXBlb2YgY29uc3RydWN0b3IgIT09IFwiZnVuY3Rpb25cIilcbiIgXAorICAgIiAgICAgICAg
dGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJwcm9taXNlIGNhcGFiaWxpdHkgcmVxdWlyZXMgYSBjb25z
dHJ1Y3RvciBmdW5jdGlvblwiKTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHZhciBwcm9taXNl
Q2FwYWJpbGl0eSA9IHtcbiIgXAorICAgIiAgICAgICAgQHByb21pc2U6IHVuZGVmaW5lZCxcbiIg
XAorICAgIiAgICAgICAgQHJlc29sdmU6IHVuZGVmaW5lZCxcbiIgXAorICAgIiAgICAgICAgQHJl
amVjdDogdW5kZWZpbmVkXG4iIFwKKyAgICIgICAgfTtcbiIgXAorICAgIlxuIiBcCisgICAiICAg
IGZ1bmN0aW9uIGV4ZWN1dG9yKHJlc29sdmUsIHJlamVjdClcbiIgXAorICAgIiAgICB7XG4iIFwK
KyAgICIgICAgICAgIGlmIChwcm9taXNlQ2FwYWJpbGl0eS5AcmVzb2x2ZSAhPT0gdW5kZWZpbmVk
KVxuIiBcCisgICAiICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJyZXNvbHZlIGZ1
bmN0aW9uIGlzIGFscmVhZHkgc2V0XCIpO1xuIiBcCisgICAiICAgICAgICBpZiAocHJvbWlzZUNh
cGFiaWxpdHkuQHJlamVjdCAhPT0gdW5kZWZpbmVkKVxuIiBcCisgICAiICAgICAgICAgICAgdGhy
b3cgbmV3IEBUeXBlRXJyb3IoXCJyZWplY3QgZnVuY3Rpb24gaXMgYWxyZWFkeSBzZXRcIik7XG4i
IFwKKyAgICJcbiIgXAorICAgIiAgICAgICAgcHJvbWlzZUNhcGFiaWxpdHkuQHJlc29sdmUgPSBy
ZXNvbHZlO1xuIiBcCisgICAiICAgICAgICBwcm9taXNlQ2FwYWJpbGl0eS5AcmVqZWN0ID0gcmVq
ZWN0O1xuIiBcCisgICAiICAgIH1cbiIgXAorICAgIlxuIiBcCisgICAiICAgIHZhciBwcm9taXNl
ID0gbmV3IGNvbnN0cnVjdG9yKGV4ZWN1dG9yKTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIGlm
ICh0eXBlb2YgcHJvbWlzZUNhcGFiaWxpdHkuQHJlc29sdmUgIT09IFwiZnVuY3Rpb25cIilcbiIg
XAorICAgIiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJleGVjdXRvciBkaWQgbm90IHRh
a2UgYSByZXNvbHZlIGZ1bmN0aW9uXCIpO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgaWYgKHR5
cGVvZiBwcm9taXNlQ2FwYWJpbGl0eS5AcmVqZWN0ICE9PSBcImZ1bmN0aW9uXCIpXG4iIFwKKyAg
ICIgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKFwiZXhlY3V0b3IgZGlkIG5vdCB0YWtlIGEg
cmVqZWN0IGZ1bmN0aW9uXCIpO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgcHJvbWlzZUNhcGFi
aWxpdHkuQHByb21pc2UgPSBwcm9taXNlO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgcmV0dXJu
IHByb21pc2VDYXBhYmlsaXR5O1xuIiBcCisgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNv
bnN0cnVjdEFiaWxpdHkgc19vcGVyYXRpb25zUHJvbWlzZVRyaWdnZXJQcm9taXNlUmVhY3Rpb25z
Q29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0
cnVjdDsKK2NvbnN0IGludCBzX29wZXJhdGlvbnNQcm9taXNlVHJpZ2dlclByb21pc2VSZWFjdGlv
bnNDb2RlTGVuZ3RoID0gMjY5OworY29uc3QgY2hhciogc19vcGVyYXRpb25zUHJvbWlzZVRyaWdn
ZXJQcm9taXNlUmVhY3Rpb25zQ29kZSA9CisgICAiKGZ1bmN0aW9uIChyZWFjdGlvbnMsIGFyZ3Vt
ZW50KVxuIiBcCisgICAie1xuIiBcCisgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAi
XG4iIFwKKyAgICIgICAgZm9yICh2YXIgaW5kZXggPSAwLCBsZW5ndGggPSByZWFjdGlvbnMubGVu
Z3RoOyBpbmRleCA8IGxlbmd0aDsgKytpbmRleClcbiIgXAorICAgIiAgICAgICAgQGVucXVldWVK
b2IoQHByb21pc2VSZWFjdGlvbkpvYiwgW3JlYWN0aW9uc1tpbmRleF0sIGFyZ3VtZW50XSk7XG4i
IFwKKyAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJh
dGlvbnNQcm9taXNlUmVqZWN0UHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25z
dHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19vcGVyYXRpb25zUHJv
bWlzZVJlamVjdFByb21pc2VDb2RlTGVuZ3RoID0gNTQxOworY29uc3QgY2hhciogc19vcGVyYXRp
b25zUHJvbWlzZVJlamVjdFByb21pc2VDb2RlID0KKyAgICIoZnVuY3Rpb24gKHByb21pc2UsIHJl
YXNvbilcbiIgXAorICAgIntcbiIgXAorICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAg
IlxuIiBcCisgICAiICAgIHZhciByZWFjdGlvbnMgPSBwcm9taXNlLkBwcm9taXNlUmVqZWN0UmVh
Y3Rpb25zO1xuIiBcCisgICAiICAgIHByb21pc2UuQHByb21pc2VSZXN1bHQgPSByZWFzb247XG4i
IFwKKyAgICIgICAgcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxSZWFjdGlvbnMgPSB1bmRlZmluZWQ7
XG4iIFwKKyAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlamVjdFJlYWN0aW9ucyA9IHVuZGVmaW5l
ZDtcbiIgXAorICAgIiAgICBwcm9taXNlLkBwcm9taXNlU3RhdGUgPSBAcHJvbWlzZVJlamVjdGVk
O1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgQEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5wcm9t
aXNlUmVqZWN0ZWQocHJvbWlzZSwgcmVhc29uLCByZWFjdGlvbnMpO1xuIiBcCisgICAiXG4iIFwK
KyAgICIgICAgQHRyaWdnZXJQcm9taXNlUmVhY3Rpb25zKHJlYWN0aW9ucywgcmVhc29uKTtcbiIg
XAorICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfb3BlcmF0
aW9uc1Byb21pc2VGdWxmaWxsUHJvbWlzZUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25z
dHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc19vcGVyYXRpb25zUHJv
bWlzZUZ1bGZpbGxQcm9taXNlQ29kZUxlbmd0aCA9IDU0MDsKK2NvbnN0IGNoYXIqIHNfb3BlcmF0
aW9uc1Byb21pc2VGdWxmaWxsUHJvbWlzZUNvZGUgPQorICAgIihmdW5jdGlvbiAocHJvbWlzZSwg
dmFsdWUpXG4iIFwKKyAgICJ7XG4iIFwKKyAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAg
ICJcbiIgXAorICAgIiAgICB2YXIgcmVhY3Rpb25zID0gcHJvbWlzZS5AcHJvbWlzZUZ1bGZpbGxS
ZWFjdGlvbnM7XG4iIFwKKyAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVJlc3VsdCA9IHZhbHVlO1xu
IiBcCisgICAiICAgIHByb21pc2UuQHByb21pc2VGdWxmaWxsUmVhY3Rpb25zID0gdW5kZWZpbmVk
O1xuIiBcCisgICAiICAgIHByb21pc2UuQHByb21pc2VSZWplY3RSZWFjdGlvbnMgPSB1bmRlZmlu
ZWQ7XG4iIFwKKyAgICIgICAgcHJvbWlzZS5AcHJvbWlzZVN0YXRlID0gQHByb21pc2VGdWxmaWxs
ZWQ7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICBASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLnBy
b21pc2VGdWxmaWxsZWQocHJvbWlzZSwgdmFsdWUsIHJlYWN0aW9ucyk7XG4iIFwKKyAgICJcbiIg
XAorICAgIiAgICBAdHJpZ2dlclByb21pc2VSZWFjdGlvbnMocmVhY3Rpb25zLCB2YWx1ZSk7XG4i
IFwKKyAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJh
dGlvbnNQcm9taXNlQ3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zQ29kZUNvbnN0cnVjdEFiaWxpdHkg
PSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX29w
ZXJhdGlvbnNQcm9taXNlQ3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zQ29kZUxlbmd0aCA9IDE0Njg7
Citjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQcm9taXNlQ3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25z
Q29kZSA9CisgICAiKGZ1bmN0aW9uIChwcm9taXNlKVxuIiBcCisgICAie1xuIiBcCisgICAiICAg
IFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdmFyIGFscmVhZHlSZXNv
bHZlZCA9IGZhbHNlO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdmFyIHJlc29sdmUgPSBmdW5j
dGlvbiAocmVzb2x1dGlvbikge1xuIiBcCisgICAiICAgICAgICBpZiAoYWxyZWFkeVJlc29sdmVk
KVxuIiBcCisgICAiICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiIgXAorICAgIiAgICAg
ICAgYWxyZWFkeVJlc29sdmVkID0gdHJ1ZTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgICAgICBp
ZiAocmVzb2x1dGlvbiA9PT0gcHJvbWlzZSlcbiIgXAorICAgIiAgICAgICAgICAgIHJldHVybiBA
cmVqZWN0UHJvbWlzZShwcm9taXNlLCBuZXcgQFR5cGVFcnJvcihcIlJlc29sdmUgYSBwcm9taXNl
IHdpdGggaXRzZWxmXCIpKTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgICAgICBpZiAoIUBpc09i
amVjdChyZXNvbHV0aW9uKSlcbiIgXAorICAgIiAgICAgICAgICAgIHJldHVybiBAZnVsZmlsbFBy
b21pc2UocHJvbWlzZSwgcmVzb2x1dGlvbik7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICAgICAg
dmFyIHRoZW47XG4iIFwKKyAgICIgICAgICAgIHRyeSB7XG4iIFwKKyAgICIgICAgICAgICAgICB0
aGVuID0gcmVzb2x1dGlvbi50aGVuO1xuIiBcCisgICAiICAgICAgICB9IGNhdGNoIChlcnJvcikg
e1xuIiBcCisgICAiICAgICAgICAgICAgcmV0dXJuIEByZWplY3RQcm9taXNlKHByb21pc2UsIGVy
cm9yKTtcbiIgXAorICAgIiAgICAgICAgfVxuIiBcCisgICAiXG4iIFwKKyAgICIgICAgICAgIGlm
ICh0eXBlb2YgdGhlbiAhPT0gJ2Z1bmN0aW9uJylcbiIgXAorICAgIiAgICAgICAgICAgIHJldHVy
biBAZnVsZmlsbFByb21pc2UocHJvbWlzZSwgcmVzb2x1dGlvbik7XG4iIFwKKyAgICJcbiIgXAor
ICAgIiAgICAgICAgQGVucXVldWVKb2IoQHByb21pc2VSZXNvbHZlVGhlbmFibGVKb2IsIFtwcm9t
aXNlLCByZXNvbHV0aW9uLCB0aGVuXSk7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICAgICAgcmV0
dXJuIHVuZGVmaW5lZDtcbiIgXAorICAgIiAgICB9O1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAg
dmFyIHJlamVjdCA9IGZ1bmN0aW9uIChyZWFzb24pIHtcbiIgXAorICAgIiAgICAgICAgaWYgKGFs
cmVhZHlSZXNvbHZlZClcbiIgXAorICAgIiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4i
IFwKKyAgICIgICAgICAgIGFscmVhZHlSZXNvbHZlZCA9IHRydWU7XG4iIFwKKyAgICJcbiIgXAor
ICAgIiAgICAgICAgcmV0dXJuIEByZWplY3RQcm9taXNlKHByb21pc2UsIHJlYXNvbik7XG4iIFwK
KyAgICIgICAgfTtcbiIgXAorICAgIlxuIiBcCisgICAiICAgIHJldHVybiB7XG4iIFwKKyAgICIg
ICAgICAgIEByZXNvbHZlOiByZXNvbHZlLFxuIiBcCisgICAiICAgICAgICBAcmVqZWN0OiByZWpl
Y3RcbiIgXAorICAgIiAgICB9O1xuIiBcCisgICAifSlcbiIgXAorOworCitjb25zdCBKU0M6OkNv
bnN0cnVjdEFiaWxpdHkgc19vcGVyYXRpb25zUHJvbWlzZVByb21pc2VSZWFjdGlvbkpvYkNvZGVD
b25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7
Citjb25zdCBpbnQgc19vcGVyYXRpb25zUHJvbWlzZVByb21pc2VSZWFjdGlvbkpvYkNvZGVMZW5n
dGggPSA0OTM7Citjb25zdCBjaGFyKiBzX29wZXJhdGlvbnNQcm9taXNlUHJvbWlzZVJlYWN0aW9u
Sm9iQ29kZSA9CisgICAiKGZ1bmN0aW9uIChyZWFjdGlvbiwgYXJndW1lbnQpXG4iIFwKKyAgICJ7
XG4iIFwKKyAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICB2
YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSByZWFjdGlvbi5AY2FwYWJpbGl0aWVzO1xuIiBcCisgICAi
XG4iIFwKKyAgICIgICAgdmFyIHJlc3VsdDtcbiIgXAorICAgIiAgICB0cnkge1xuIiBcCisgICAi
ICAgICAgICByZXN1bHQgPSByZWFjdGlvbi5AaGFuZGxlci5AY2FsbCh1bmRlZmluZWQsIGFyZ3Vt
ZW50KTtcbiIgXAorICAgIiAgICB9IGNhdGNoIChlcnJvcikge1xuIiBcCisgICAiICAgICAgICBy
ZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHJlamVjdC5AY2FsbCh1bmRlZmluZWQsIGVycm9yKTtc
biIgXAorICAgIiAgICB9XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICByZXR1cm4gcHJvbWlzZUNh
cGFiaWxpdHkuQHJlc29sdmUuQGNhbGwodW5kZWZpbmVkLCByZXN1bHQpO1xuIiBcCisgICAifSlc
biIgXAorOworCitjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc19vcGVyYXRpb25zUHJvbWlz
ZVByb21pc2VSZXNvbHZlVGhlbmFibGVKb2JDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29u
c3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfb3BlcmF0aW9uc1By
b21pc2VQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZUxlbmd0aCA9IDQ1MzsKK2NvbnN0IGNo
YXIqIHNfb3BlcmF0aW9uc1Byb21pc2VQcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iQ29kZSA9Cisg
ICAiKGZ1bmN0aW9uIChwcm9taXNlVG9SZXNvbHZlLCB0aGVuYWJsZSwgdGhlbilcbiIgXAorICAg
IntcbiIgXAorICAgIiAgICBcInVzZSBzdHJpY3RcIjtcbiIgXAorICAgIlxuIiBcCisgICAiICAg
IHZhciByZXNvbHZpbmdGdW5jdGlvbnMgPSBAY3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zKHByb21p
c2VUb1Jlc29sdmUpO1xuIiBcCisgICAiXG4iIFwKKyAgICIgICAgdHJ5IHtcbiIgXAorICAgIiAg
ICAgICAgcmV0dXJuIHRoZW4uQGNhbGwodGhlbmFibGUsIHJlc29sdmluZ0Z1bmN0aW9ucy5AcmVz
b2x2ZSwgcmVzb2x2aW5nRnVuY3Rpb25zLkByZWplY3QpO1xuIiBcCisgICAiICAgIH0gY2F0Y2gg
KGVycm9yKSB7XG4iIFwKKyAgICIgICAgICAgIHJldHVybiByZXNvbHZpbmdGdW5jdGlvbnMuQHJl
amVjdC5AY2FsbCh1bmRlZmluZWQsIGVycm9yKTtcbiIgXAorICAgIiAgICB9XG4iIFwKKyAgICJ9
KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX29wZXJhdGlvbnNQcm9t
aXNlSW5pdGlhbGl6ZVByb21pc2VDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0
QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OworY29uc3QgaW50IHNfb3BlcmF0aW9uc1Byb21pc2VJ
bml0aWFsaXplUHJvbWlzZUNvZGVMZW5ndGggPSA3MzE7Citjb25zdCBjaGFyKiBzX29wZXJhdGlv
bnNQcm9taXNlSW5pdGlhbGl6ZVByb21pc2VDb2RlID0KKyAgICIoZnVuY3Rpb24gKGV4ZWN1dG9y
KVxuIiBcCisgICAie1xuIiBcCisgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAiXG4i
IFwKKyAgICIgICAgaWYgKHR5cGVvZiBleGVjdXRvciAhPT0gJ2Z1bmN0aW9uJylcbiIgXAorICAg
IiAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoXCJQcm9taXNlIGNvbnN0cnVjdG9yIHRha2Vz
IGEgZnVuY3Rpb24gYXJndW1lbnRcIik7XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICB0aGlzLkBw
cm9taXNlU3RhdGUgPSBAcHJvbWlzZVBlbmRpbmc7XG4iIFwKKyAgICIgICAgdGhpcy5AcHJvbWlz
ZUZ1bGZpbGxSZWFjdGlvbnMgPSBbXTtcbiIgXAorICAgIiAgICB0aGlzLkBwcm9taXNlUmVqZWN0
UmVhY3Rpb25zID0gW107XG4iIFwKKyAgICJcbiIgXAorICAgIiAgICB2YXIgcmVzb2x2aW5nRnVu
Y3Rpb25zID0gQGNyZWF0ZVJlc29sdmluZ0Z1bmN0aW9ucyh0aGlzKTtcbiIgXAorICAgIiAgICB0
cnkge1xuIiBcCisgICAiICAgICAgICBleGVjdXRvcihyZXNvbHZpbmdGdW5jdGlvbnMuQHJlc29s
dmUsIHJlc29sdmluZ0Z1bmN0aW9ucy5AcmVqZWN0KTtcbiIgXAorICAgIiAgICB9IGNhdGNoIChl
cnJvcikge1xuIiBcCisgICAiICAgICAgICByZXR1cm4gcmVzb2x2aW5nRnVuY3Rpb25zLkByZWpl
Y3QuQGNhbGwodW5kZWZpbmVkLCBlcnJvcik7XG4iIFwKKyAgICIgICAgfVxuIiBcCisgICAiXG4i
IFwKKyAgICIgICAgcmV0dXJuIHRoaXM7XG4iIFwKKyAgICJ9KVxuIiBcCis7CisKKworI2RlZmlu
ZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1l
bnRDb3VudCkgXAorSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3Io
SlNDOjpWTSYgdm0pIFwKK3tcCisgICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5j
b2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+
Y29kZU5hbWUjI1NvdXJjZSgpKTsgfQorSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9C
VUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKKworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKyMjIyBFbmQgRmlsZTogSlNDQnVpbHRpbnMuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3Rl
ZC9XZWJDb3JlLUd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRl
ZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1YTIxZDQ2NTY4NjZmZThm
NzM3ZjE4MzA3YjEyNjI0YTc0NDgyYWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRC
dWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMCwwICsxLDMxOCBAQAorIyMjIEJlZ2luIEZp
bGU6IEd1YXJkZWRCdWlsdGluQnVpbHRpbnMuaAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBD
YW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBO
T1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2
YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgR3Vh
cmRlZEJ1aWx0aW5CdWlsdGluc19oCisjZGVmaW5lIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNfaAor
CisjaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+CisKK25hbWVzcGFjZSBKU0Mgewor
Y2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8q
IEd1YXJkZWRCdWlsdGluICovCitleHRlcm4gY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpbklz
UmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2d1YXJkZWRCdWls
dGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpD
b25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29k
ZUNvbnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpbkNh
bmNlbFJlYWRhYmxlU3RyZWFtQ29kZTsKK2V4dGVybiBjb25zdCBpbnQgc19ndWFyZGVkQnVpbHRp
bkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUxlbmd0aDsKK2V4dGVybiBjb25zdCBKU0M6OkNvbnN0
cnVjdEFiaWxpdHkgc19ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUNvbnN0
cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19ndWFyZGVkQnVpbHRpblByb21pc2VJ
bnZva2VPck5vb3BDb2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2d1YXJkZWRCdWlsdGluUHJvbWlz
ZUludm9rZU9yTm9vcENvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmls
aXR5IHNfZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUNvbnN0cnVjdEFiaWxp
dHk7CisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fREFU
QShtYWNybykgXAorICAgIG1hY3JvKGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIGd1YXJkZWRCdWls
dGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZCwgMSkgXAorICAgIG1hY3JvKGNhbmNlbFJlYWRhYmxl
U3RyZWFtLCBndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtLCAyKSBcCisgICAgbWFj
cm8ocHJvbWlzZUludm9rZU9yTm9vcCwgZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29w
LCAzKSBcCisKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX0dVQVJERURCVUlMVElOX0lTUkVBREFC
TEVTVFJFQU1MT0NLRUQgMQorI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fR1VBUkRFREJVSUxUSU5f
Q0FOQ0VMUkVBREFCTEVTVFJFQU0gMQorI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fR1VBUkRFREJV
SUxUSU5fUFJPTUlTRUlOVk9LRU9STk9PUCAxCisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX0dV
QVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShtYWNybykgXAorICAgIG1hY3JvKGd1YXJkZWRCdWls
dGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGUsIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIHNf
Z3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUxlbmd0aCkgXAorICAgIG1h
Y3JvKGd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlLCBjYW5jZWxSZWFkYWJs
ZVN0cmVhbSwgc19ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUxlbmd0aCkg
XAorICAgIG1hY3JvKGd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGUsIHByb21p
c2VJbnZva2VPck5vb3AsIHNfZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUxl
bmd0aCkgXAorCisjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElO
X0ZVTkNUSU9OX05BTUUobWFjcm8pIFwKKyAgICBtYWNybyhjYW5jZWxSZWFkYWJsZVN0cmVhbSkg
XAorICAgIG1hY3JvKGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQpIFwKKyAgICBtYWNybyhwcm9taXNl
SW52b2tlT3JOb29wKSBcCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2Rl
TmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCisgICAgSlNDOjpGdW5jdGlvbkV4
ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYpOworCitXRUJDT1JFX0ZPUkVB
Q0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1Ip
CisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIFdFQkNPUkVfQlVJ
TFRJTl9HVUFSREVEQlVJTFRJTl9FWElTVFMob2JqZWN0LCBmdW5jKSBkZWZpbmVkIFdFQkNPUkVf
QlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVuYworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zX2gKKworIyMjIEVuZCBGaWxlOiBH
dWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmgKKworIyMjIEJlZ2luIEZpbGU6IEd1YXJkZWRCdWlsdGlu
QnVpbHRpbnMuY3BwCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IENhbm9uIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklM
RS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZv
cgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkd1YXJkZWRCdWlsdGluQnVpbHRpbnMuaCIKKworI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVu
dERhdGEuaCIKKyNpbmNsdWRlIDxydW50aW1lL0V4ZWN1dGFibGUuaD4KKyNpbmNsdWRlIDxydW50
aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NlbGxJbmxpbmVz
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVu
dGltZS9WTS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0
QWJpbGl0eSBzX2d1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGVDb25zdHJ1
Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25z
dCBpbnQgc19ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlTGVuZ3RoID0g
NzE7Citjb25zdCBjaGFyKiBzX2d1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENv
ZGUgPQorICAgICIoZnVuY3Rpb24gKHN0cmVhbSlcbiIgXAorICAgICJ7XG4iIFwKKyAgICAiICAg
XCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHJldHVybiAhIXN0cmVh
bS5AcmVhZGVyO1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RB
YmlsaXR5IHNfZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGVDb25zdHJ1Y3RB
YmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBp
bnQgc19ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUxlbmd0aCA9IDQwMjsK
K2NvbnN0IGNoYXIqIHNfZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGUgPQor
ICAgICIoZnVuY3Rpb24gKHN0cmVhbSwgcmVhc29uKVxuIiBcCisgICAgIntcbiIgXAorICAgICIg
ICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIGlmIChzdHJlYW0u
QHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQpXG4iIFwKKyAgICAiICAgICAgICByZXR1
cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4iIFwKKyAgICAiICAgIGlmIChzdHJlYW0uQHN0YXRlID09
PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKVxuIiBcCisgICAgIiAgICAgICAgcmV0dXJuIFByb21p
c2UucmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpO1xuIiBcCisgICAgIiAgICBzdHJlYW0uQHF1
ZXVlID0gW107XG4iIFwKKyAgICAiICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3Ry
ZWFtKTtcbiIgXAorICAgICIgICAgcmV0dXJuIEBwcm9taXNlSW52b2tlT3JOb29wKHN0cmVhbS5A
dW5kZXJseWluZ1NvdXJjZSwgXCJjYW5jZWxcIiwgW3JlYXNvbl0pLnRoZW4oZnVuY3Rpb24oKSB7
IH0pO1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5
IHNfZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUNvbnN0cnVjdEFiaWxpdHkg
PSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2d1
YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGVMZW5ndGggPSAzMzg7Citjb25zdCBj
aGFyKiBzX2d1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGUgPQorICAgICIoZnVu
Y3Rpb24gKG9iamVjdCwga2V5LCBhcmdzKVxuIiBcCisgICAgIntcbiIgXAorICAgICIgICAgXCJ1
c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHRyeSB7XG4iIFwKKyAgICAi
ICAgICAgICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07XG4iIFwKKyAgICAiICAgICAgICBpZiAo
dHlwZW9mIG1ldGhvZCA9PT0gXCJ1bmRlZmluZWRcIilcbiIgXAorICAgICIgICAgICAgICAgICBy
ZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4iIFwKKyAgICAiICAgICAgICB2YXIgcmVzdWx0ID0g
bWV0aG9kLkBhcHBseShvYmplY3QsIGFyZ3MpO1xuIiBcCisgICAgIiAgICAgICAgcmV0dXJuIFBy
b21pc2UucmVzb2x2ZShyZXN1bHQpO1xuIiBcCisgICAgIiAgICB9XG4iIFwKKyAgICAiICAgIGNh
dGNoKGVycm9yKSB7XG4iIFwKKyAgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJy
b3IpO1xuIiBcCisgICAgIiAgICB9XG4iIFwKKyAgICAifSlcbiIgXAorOworCisKKyNkZWZpbmUg
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50
Q291bnQpIFwKK0pTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpT
Qzo6Vk0mIHZtKSBcCit7XAorICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGlj
X2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXAorICAgIHJldHVybiBjbGll
bnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVO
YW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMo
KS5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpKTsgXAorfQorV0VC
Q09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9H
RU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCisKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorIyMjIEVuZCBGaWxlOiBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmNwcAor
CisjIyMgQmVnaW4gRmlsZTogR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIuaAorLyoKKyAq
IENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2Fs
bHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRo
ZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0
aW5zLnB5CisKKyNpZm5kZWYgR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAorI2RlZmlu
ZSBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9oCisKKyNpbmNsdWRlICJHdWFyZGVkQnVp
bHRpbkJ1aWx0aW5zLmgiCisjaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+CisjaW5j
bHVkZSA8Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaD4KKyNpbmNsdWRlIDxy
dW50aW1lL0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBl
ciA6IHByaXZhdGUgSlNDOjpXZWFrSGFuZGxlT3duZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0
IEd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyKEpTQzo6Vk0qIHZtKQorICAgICAgICA6IG1f
dm0oKnZtKQorICAgICAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9G
VU5DVElPTl9OQU1FKElOSVRJQUxJWkVfQlVJTFRJTl9OQU1FUykKKyNkZWZpbmUgSU5JVElBTEla
RV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1f
IyNuYW1lIyNTb3VyY2UoSlNDOjptYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRl
cmFsKHNfIyNuYW1lLCBsZW5ndGgpKSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURC
VUlMVElOX0JVSUxUSU5fQ09ERShJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisj
dW5kZWYgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCisgICAgeworICAgIH0KKwor
I2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxl
bmd0aCkgXAorICAgIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1
dGFibGUoKTsgXAorICAgIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgY29u
c3QgeyByZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQorICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFS
REVEQlVJTFRJTl9CVUlMVElOX0NPREUoRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5k
ZWYgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMKKworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFS
REVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJ
RVJfQUNDRVNTT1IpCisKKyAgICB2b2lkIGV4cG9ydE5hbWVzKCk7CisKK3ByaXZhdGU6CisgICAg
SlNDOjpWTSYgbV92bTsKKworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlM
VElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX05BTUVTKQorCisjZGVmaW5lIERFQ0xB
UkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAor
ICAgIEpTQzo6U291cmNlQ29kZSBtXyMjbmFtZSMjU291cmNlO1wKKyAgICBKU0M6OldlYWs8SlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4gbV8jI25hbWUjI0V4ZWN1dGFibGU7CisgICAg
V0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxU
SU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJT
CisKK307CisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rp
b25OYW1lLCBsZW5ndGgpIFwKK2lubGluZSBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tc
CisgICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVj
dXRhYmxlID0gSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6
Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUobV92bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25O
YW1lIyNQdWJsaWNOYW1lKCksIHNfIyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1f
IyNuYW1lIyNFeGVjdXRhYmxlKTtcCisgICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdl
dCgpO1wKK30KK1dFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVG
SU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJM
RVMKKworaW5saW5lIHZvaWQgR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXI6OmV4cG9ydE5h
bWVzKCkKK3sKKyNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9OX05BTUUobmFtZSkgbV92bS5wcm9wZXJ0
eU5hbWVzLT5hcHBlbmRFeHRlcm5hbE5hbWUobmFtZSMjUHVibGljTmFtZSgpLCBuYW1lIyNQcml2
YXRlTmFtZSgpKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9G
VU5DVElPTl9OQU1FKEVYUE9SVF9GVU5DVElPTl9OQU1FKQorI3VuZGVmIEVYUE9SVF9GVU5DVElP
Tl9OQU1FCit9CisKK2NsYXNzIEd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9ucyB7CitwdWJs
aWM6CisgICAgZXhwbGljaXQgR3VhcmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zKEpTQzo6Vk0m
IHZtKSA6IG1fdm0odm0pIHsgfQorCisgICAgdm9pZCBpbml0KEpTQzo6SlNHbG9iYWxPYmplY3Qm
KTsKKyAgICB2b2lkIHZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImKTsKKworcHVibGljOgorICAgIEpT
Qzo6Vk0mIG1fdm07CisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKGZ1
bmN0aW9uTmFtZSkgXAorICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNGdW5jdGlvbj4gbV8j
I2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb247CisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlM
VElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMp
CisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCit9OworCitpbmxpbmUgdm9p
ZCBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnM6OmluaXQoSlNDOjpKU0dsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQoreworI2RlZmluZSBFWFBPUlRfRlVOQ1RJT04oY29kZU5hbWUsIGZ1
bmN0aW9uTmFtZSwgbGVuZ3RoKVwKKyAgICBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbi5zZXQo
bV92bSwgJmdsb2JhbE9iamVjdCwgSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rp
b24obV92bSwgY29kZU5hbWUjI0dlbmVyYXRvcihtX3ZtKSwgJmdsb2JhbE9iamVjdCkpOworICAg
IFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoRVhQT1JUX0ZVTkNU
SU9OKQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTgorfQorCitpbmxpbmUgdm9pZCBHdWFyZGVkQnVp
bHRpbkJ1aWx0aW5GdW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7
CisjZGVmaW5lIFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFtZSMj
RnVuY3Rpb24pOworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZV
TkNUSU9OX05BTUUoVklTSVRfRlVOQ1RJT04pCisjdW5kZWYgVklTSVRfRlVOQ1RJT04KK30KKwor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHdWFyZGVkQnVpbHRpbkJ1aWx0
aW5zV3JhcHBlcl9oCisKKyMjIyBFbmQgRmlsZTogR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBw
ZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpz
LXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4
cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzQ4YTFjZmM0NDg0YWVmM2Y3NjBlODc5NDY2ZWZiYWI5NjZlNTBmNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1y
ZXN1bHQKQEAgLTAsMCArMSwzMTggQEAKKyMjIyBCZWdpbiBGaWxlOiBHdWFyZGVkSW50ZXJuYWxC
dWlsdGluQnVpbHRpbnMuaAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBOT1QgRURJVCBUSElT
IEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxl
cyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpZm5kZWYgR3VhcmRlZEludGVybmFs
QnVpbHRpbkJ1aWx0aW5zX2gKKyNkZWZpbmUgR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5z
X2gKKworI2luY2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oPgorCituYW1lc3BhY2UgSlND
IHsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CisvKiBHdWFyZGVkSW50ZXJuYWxCdWlsdGluICovCitleHRlcm4gY29uc3QgY2hhciogc19ndWFy
ZGVkSW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGU7CitleHRlcm4gY29u
c3QgaW50IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2Rl
TGVuZ3RoOworZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRJbnRl
cm5hbEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUNvbnN0cnVjdEFiaWxpdHk7Citl
eHRlcm4gY29uc3QgY2hhciogc19ndWFyZGVkSW50ZXJuYWxCdWlsdGluQ2FuY2VsUmVhZGFibGVT
dHJlYW1Db2RlOworZXh0ZXJuIGNvbnN0IGludCBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5j
ZWxSZWFkYWJsZVN0cmVhbUNvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RB
YmlsaXR5IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUNv
bnN0cnVjdEFiaWxpdHk7CitleHRlcm4gY29uc3QgY2hhciogc19ndWFyZGVkSW50ZXJuYWxCdWls
dGluUHJvbWlzZUludm9rZU9yTm9vcENvZGU7CitleHRlcm4gY29uc3QgaW50IHNfZ3VhcmRlZElu
dGVybmFsQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlTGVuZ3RoOworZXh0ZXJuIGNvbnN0
IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Qcm9taXNlSW52
b2tlT3JOb29wQ29kZUNvbnN0cnVjdEFiaWxpdHk7CisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNI
X0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9EQVRBKG1hY3JvKSBcCisgICAgbWFjcm8o
aXNSZWFkYWJsZVN0cmVhbUxvY2tlZCwgZ3VhcmRlZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVT
dHJlYW1Mb2NrZWQsIDEpIFwKKyAgICBtYWNybyhjYW5jZWxSZWFkYWJsZVN0cmVhbSwgZ3VhcmRl
ZEludGVybmFsQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtLCAyKSBcCisgICAgbWFjcm8ocHJv
bWlzZUludm9rZU9yTm9vcCwgZ3VhcmRlZEludGVybmFsQnVpbHRpblByb21pc2VJbnZva2VPck5v
b3AsIDMpIFwKKworI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fR1VBUkRFRElOVEVSTkFMQlVJTFRJ
Tl9JU1JFQURBQkxFU1RSRUFNTE9DS0VEIDEKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX0dVQVJE
RURJTlRFUk5BTEJVSUxUSU5fQ0FOQ0VMUkVBREFCTEVTVFJFQU0gMQorI2RlZmluZSBXRUJDT1JF
X0JVSUxUSU5fR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9QUk9NSVNFSU5WT0tFT1JOT09QIDEKKwor
I2RlZmluZSBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0NP
REUobWFjcm8pIFwKKyAgICBtYWNybyhndWFyZGVkSW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0
cmVhbUxvY2tlZENvZGUsIGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQsIHNfZ3VhcmRlZEludGVybmFs
QnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlTGVuZ3RoKSBcCisgICAgbWFjcm8oZ3Vh
cmRlZEludGVybmFsQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZSwgY2FuY2VsUmVhZGFi
bGVTdHJlYW0sIHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29k
ZUxlbmd0aCkgXAorICAgIG1hY3JvKGd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Qcm9taXNlSW52b2tl
T3JOb29wQ29kZSwgcHJvbWlzZUludm9rZU9yTm9vcCwgc19ndWFyZGVkSW50ZXJuYWxCdWlsdGlu
UHJvbWlzZUludm9rZU9yTm9vcENvZGVMZW5ndGgpIFwKKworI2RlZmluZSBXRUJDT1JFX0ZPUkVB
Q0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUobWFjcm8pIFwK
KyAgICBtYWNybyhjYW5jZWxSZWFkYWJsZVN0cmVhbSkgXAorICAgIG1hY3JvKGlzUmVhZGFibGVT
dHJlYW1Mb2NrZWQpIFwKKyAgICBtYWNybyhwcm9taXNlSW52b2tlT3JOb29wKSBcCisKKyNkZWZp
bmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1
bWVudENvdW50KSBcCisgICAgSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5l
cmF0b3IoSlNDOjpWTSYpOworCitXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJ
Tl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKKyN1bmRlZiBERUNMQVJF
X0JVSUxUSU5fR0VORVJBVE9SCisKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX0dVQVJERURJTlRF
Uk5BTEJVSUxUSU5fRVhJU1RTKG9iamVjdCwgZnVuYykgZGVmaW5lZCBXRUJDT1JFX0JVSUxUSU5f
ICMjIG9iamVjdCAjIyBfICMjIGZ1bmMKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zX2gKKworIyMjIEVuZCBGaWxlOiBH
dWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnMuaAorCisjIyMgQmVnaW4gRmlsZTogR3VhcmRl
ZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zLmNwcAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBD
YW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiAKKyAqLworCisvLyBETyBO
T1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2
YVNjcmlwdCBmaWxlcyBmb3IKKy8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnMuaCIKKwor
I2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlIDxydW50aW1lL0V4ZWN1
dGFibGUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisjaW5jbHVk
ZSA8cnVudGltZS9KU0NlbGxJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9TdHJ1Y3R1cmVJ
bmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9WTS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5J
c1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVj
dEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX2d1YXJkZWRJbnRlcm5hbEJ1
aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUxlbmd0aCA9IDcxOworY29uc3QgY2hhciog
c19ndWFyZGVkSW50ZXJuYWxCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGUgPQorICAg
ICIoZnVuY3Rpb24gKHN0cmVhbSlcbiIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgXCJ1c2Ugc3Ry
aWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAiICAgIHJldHVybiAhIXN0cmVhbS5AcmVhZGVy
O1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNf
Z3VhcmRlZEludGVybmFsQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZUNvbnN0cnVjdEFi
aWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGlu
dCBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGVMZW5ndGgg
PSA0MDI7Citjb25zdCBjaGFyKiBzX2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5DYW5jZWxSZWFkYWJs
ZVN0cmVhbUNvZGUgPQorICAgICIoZnVuY3Rpb24gKHN0cmVhbSwgcmVhc29uKVxuIiBcCisgICAg
IntcbiIgXAorICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwKKyAgICAiXG4iIFwKKyAgICAi
ICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1DbG9zZWQpXG4iIFwKKyAg
ICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4iIFwKKyAgICAiICAgIGlmIChz
dHJlYW0uQHN0YXRlID09PSBAcmVhZGFibGVTdHJlYW1FcnJvcmVkKVxuIiBcCisgICAgIiAgICAg
ICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpO1xuIiBcCisgICAg
IiAgICBzdHJlYW0uQHF1ZXVlID0gW107XG4iIFwKKyAgICAiICAgIEBmaW5pc2hDbG9zaW5nUmVh
ZGFibGVTdHJlYW0oc3RyZWFtKTtcbiIgXAorICAgICIgICAgcmV0dXJuIEBwcm9taXNlSW52b2tl
T3JOb29wKHN0cmVhbS5AdW5kZXJseWluZ1NvdXJjZSwgXCJjYW5jZWxcIiwgW3JlYXNvbl0pLnRo
ZW4oZnVuY3Rpb24oKSB7IH0pO1xuIiBcCisgICAgIn0pXG4iIFwKKzsKKworY29uc3QgSlNDOjpD
b25zdHJ1Y3RBYmlsaXR5IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpblByb21pc2VJbnZva2VPck5v
b3BDb2RlQ29uc3RydWN0QWJpbGl0eSA9IEpTQzo6Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29u
c3RydWN0OworY29uc3QgaW50IHNfZ3VhcmRlZEludGVybmFsQnVpbHRpblByb21pc2VJbnZva2VP
ck5vb3BDb2RlTGVuZ3RoID0gMzM4OworY29uc3QgY2hhciogc19ndWFyZGVkSW50ZXJuYWxCdWls
dGluUHJvbWlzZUludm9rZU9yTm9vcENvZGUgPQorICAgICIoZnVuY3Rpb24gKG9iamVjdCwga2V5
LCBhcmdzKVxuIiBcCisgICAgIntcbiIgXAorICAgICIgICAgXCJ1c2Ugc3RyaWN0XCI7XG4iIFwK
KyAgICAiXG4iIFwKKyAgICAiICAgIHRyeSB7XG4iIFwKKyAgICAiICAgICAgICB2YXIgbWV0aG9k
ID0gb2JqZWN0W2tleV07XG4iIFwKKyAgICAiICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0g
XCJ1bmRlZmluZWRcIilcbiIgXAorICAgICIgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNv
bHZlKCk7XG4iIFwKKyAgICAiICAgICAgICB2YXIgcmVzdWx0ID0gbWV0aG9kLkBhcHBseShvYmpl
Y3QsIGFyZ3MpO1xuIiBcCisgICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1
bHQpO1xuIiBcCisgICAgIiAgICB9XG4iIFwKKyAgICAiICAgIGNhdGNoKGVycm9yKSB7XG4iIFwK
KyAgICAiICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuIiBcCisgICAgIiAg
ICB9XG4iIFwKKyAgICAifSlcbiIgXAorOworCisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VO
RVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKK0pTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCit7XAor
ICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERh
dGEqPih2bS5jbGllbnREYXRhKTsgXAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVu
Y3Rpb25zKCkuZ3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1
dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmd1YXJkZWRJ
bnRlcm5hbEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSk7IFwKK30KK1dFQkNP
UkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJ
TFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCisKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorIyMjIEVuZCBGaWxlOiBHdWFyZGVkSW50ZXJuYWxCdWlsdGlu
QnVpbHRpbnMuY3BwCisKKyMjIyBCZWdpbiBGaWxlOiBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVp
bHRpbnNXcmFwcGVyLmgKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ2Fub24gSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBG
SUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFTY3JpcHQgZmlsZXMg
Zm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaWZuZGVmIEd1YXJkZWRJbnRlcm5hbEJ1
aWx0aW5CdWlsdGluc1dyYXBwZXJfaAorI2RlZmluZSBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVp
bHRpbnNXcmFwcGVyX2gKKworI2luY2x1ZGUgIkd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlu
cy5oIgorI2luY2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oPgorI2luY2x1ZGUgPGJ5dGVj
b2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg+CisjaW5jbHVkZSA8cnVudGltZS9JZGVu
dGlmaWVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0Z1bmN0aW9uLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlciA6
IHByaXZhdGUgSlNDOjpXZWFrSGFuZGxlT3duZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IEd1
YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIoSlNDOjpWTSogdm0pCisgICAgICAg
IDogbV92bSgqdm0pCisgICAgICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlM
VElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX0JVSUxUSU5fTkFNRVMpCisjZGVm
aW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUs
IGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKEpTQzo6bWFrZVNvdXJjZShTdHJpbmdJbXBsOjpj
cmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFtZSwgbGVuZ3RoKSkpCisgICAgICAgIFdFQkNPUkVfRk9S
RUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShJTklUSUFMSVpFX0JVSUxU
SU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1C
RVJTCisgICAgeworICAgIH0KKworI2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhu
YW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorICAgIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXAorICAgIGNvbnN0IEpTQzo6U291cmNlQ29k
ZSYgbmFtZSMjU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWUjI1NvdXJjZTsgfQorICAg
IFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShFWFBP
U0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxF
UworCisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9G
VU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKQorCisgICAg
dm9pZCBleHBvcnROYW1lcygpOworCitwcml2YXRlOgorICAgIEpTQzo6Vk0mIG1fdm07CisKKyAg
ICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9O
X05BTUUoREVDTEFSRV9CVUlMVElOX05BTUVTKQorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9T
T1VSQ0VfTUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAorICAgIEpTQzo6U291
cmNlQ29kZSBtXyMjbmFtZSMjU291cmNlO1wKKyAgICBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZT4gbV8jI25hbWUjI0V4ZWN1dGFibGU7CisgICAgV0VCQ09SRV9GT1JF
QUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9T
T1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKKwor
fTsKKworI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5h
bWUsIGxlbmd0aCkgXAoraW5saW5lIEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEd1
YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4ZWN1dGFibGUoKSBc
Cit7XAorICAgIGlmICghbV8jI25hbWUjI0V4ZWN1dGFibGUpXAorICAgICAgICBtXyMjbmFtZSMj
RXhlY3V0YWJsZSA9IEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPihK
U0M6OmNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fdm0sIG1fIyNuYW1lIyNTb3VyY2UsIGZ1bmN0
aW9uTmFtZSMjUHVibGljTmFtZSgpLCBzXyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0eSksIHRoaXMs
ICZtXyMjbmFtZSMjRXhlY3V0YWJsZSk7XAorICAgIHJldHVybiBtXyMjbmFtZSMjRXhlY3V0YWJs
ZS5nZXQoKTtcCit9CitXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlM
VElOX0NPREUoREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgREVGSU5FX0JVSUxU
SU5fRVhFQ1VUQUJMRVMKKworaW5saW5lIHZvaWQgR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0
aW5zV3JhcHBlcjo6ZXhwb3J0TmFtZXMoKQoreworI2RlZmluZSBFWFBPUlRfRlVOQ1RJT05fTkFN
RShuYW1lKSBtX3ZtLnByb3BlcnR5TmFtZXMtPmFwcGVuZEV4dGVybmFsTmFtZShuYW1lIyNQdWJs
aWNOYW1lKCksIG5hbWUjI1ByaXZhdGVOYW1lKCkpOworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFS
REVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShFWFBPUlRfRlVOQ1RJT05f
TkFNRSkKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT05fTkFNRQorfQorCitjbGFzcyBHdWFyZGVkSW50
ZXJuYWxCdWlsdGluQnVpbHRpbkZ1bmN0aW9ucyB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgR3Vh
cmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnMoSlNDOjpWTSYgdm0pIDogbV92bSh2
bSkgeyB9CisKKyAgICB2b2lkIGluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYpOworICAgIHZvaWQg
dmlzaXQoSlNDOjpTbG90VmlzaXRvciYpOworCitwdWJsaWM6CisgICAgSlNDOjpWTSYgbV92bTsK
KworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMoZnVuY3Rpb25OYW1lKSBc
CisgICAgSlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU0Z1bmN0aW9uPiBtXyMjZnVuY3Rpb25OYW1l
IyNGdW5jdGlvbjsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9C
VUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3Vu
ZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworfTsKKworaW5saW5lIHZvaWQgR3Vh
cmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnM6OmluaXQoSlNDOjpKU0dsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQoreworI2RlZmluZSBFWFBPUlRfRlVOQ1RJT04oY29kZU5hbWUs
IGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKVwKKyAgICBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbi5z
ZXQobV92bSwgJmdsb2JhbE9iamVjdCwgSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVu
Y3Rpb24obV92bSwgY29kZU5hbWUjI0dlbmVyYXRvcihtX3ZtKSwgJmdsb2JhbE9iamVjdCkpOwor
ICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShF
WFBPUlRfRlVOQ1RJT04pCisjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OCit9CisKK2lubGluZSB2b2lk
IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zOjp2aXNpdChKU0M6OlNsb3RW
aXNpdG9yJiB2aXNpdG9yKQoreworI2RlZmluZSBWSVNJVF9GVU5DVElPTihuYW1lKSB2aXNpdG9y
LmFwcGVuZCgmbV8jI25hbWUjI0Z1bmN0aW9uKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRF
RElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoVklTSVRfRlVOQ1RJT04pCisj
dW5kZWYgVklTSVRfRlVOQ1RJT04KK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyX2gKKworIyMjIEVu
ZCBGaWxlOiBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVk
L1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLVVuZ3Vh
cmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4ZWUyZGFiYmFjOWMx
YTZiNjU5YWIxMzJiMGE2YzQ3MWU2M2U0NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLVVuZ3Vh
cmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0wLDAgKzEsMzE4IEBACisjIyMgQmVn
aW4gRmlsZTogVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmgKKy8qCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKwor
Ly8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBm
cm9tIEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaWZu
ZGVmIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc19oCisjZGVmaW5lIFVuZ3VhcmRlZEJ1aWx0aW5C
dWlsdGluc19oCisKKyNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4KKworbmFtZXNw
YWNlIEpTQyB7CitjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Cit9CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworLyogVW5ndWFyZGVkQnVpbHRpbiAqLworZXh0ZXJuIGNvbnN0IGNoYXIqIHNfdW5n
dWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlOworZXh0ZXJuIGNvbnN0IGlu
dCBzX3VuZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUxlbmd0aDsKK2V4
dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc191bmd1YXJkZWRCdWlsdGluSXNSZWFk
YWJsZVN0cmVhbUxvY2tlZENvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIq
IHNfdW5ndWFyZGVkQnVpbHRpbkNhbmNlbFJlYWRhYmxlU3RyZWFtQ29kZTsKK2V4dGVybiBjb25z
dCBpbnQgc191bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlTGVuZ3RoOwor
ZXh0ZXJuIGNvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3VuZ3VhcmRlZEJ1aWx0aW5DYW5j
ZWxSZWFkYWJsZVN0cmVhbUNvZGVDb25zdHJ1Y3RBYmlsaXR5OworZXh0ZXJuIGNvbnN0IGNoYXIq
IHNfdW5ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2RlOworZXh0ZXJuIGNvbnN0
IGludCBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wQ29kZUxlbmd0aDsKK2V4
dGVybiBjb25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc191bmd1YXJkZWRCdWlsdGluUHJvbWlz
ZUludm9rZU9yTm9vcENvZGVDb25zdHJ1Y3RBYmlsaXR5OworCisjZGVmaW5lIFdFQkNPUkVfRk9S
RUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fREFUQShtYWNybykgXAorICAgIG1hY3JvKGlz
UmVhZGFibGVTdHJlYW1Mb2NrZWQsIHVuZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9j
a2VkLCAxKSBcCisgICAgbWFjcm8oY2FuY2VsUmVhZGFibGVTdHJlYW0sIHVuZ3VhcmRlZEJ1aWx0
aW5DYW5jZWxSZWFkYWJsZVN0cmVhbSwgMikgXAorICAgIG1hY3JvKHByb21pc2VJbnZva2VPck5v
b3AsIHVuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tlT3JOb29wLCAzKSBcCisKKyNkZWZpbmUg
V0VCQ09SRV9CVUlMVElOX1VOR1VBUkRFREJVSUxUSU5fSVNSRUFEQUJMRVNUUkVBTUxPQ0tFRCAx
CisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9VTkdVQVJERURCVUlMVElOX0NBTkNFTFJFQURBQkxF
U1RSRUFNIDEKKyNkZWZpbmUgV0VCQ09SRV9CVUlMVElOX1VOR1VBUkRFREJVSUxUSU5fUFJPTUlT
RUlOVk9LRU9STk9PUCAxCisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxU
SU5fQlVJTFRJTl9DT0RFKG1hY3JvKSBcCisgICAgbWFjcm8odW5ndWFyZGVkQnVpbHRpbklzUmVh
ZGFibGVTdHJlYW1Mb2NrZWRDb2RlLCBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkLCBzX3VuZ3VhcmRl
ZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZUxlbmd0aCkgXAorICAgIG1hY3JvKHVu
Z3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGUsIGNhbmNlbFJlYWRhYmxlU3Ry
ZWFtLCBzX3VuZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFkYWJsZVN0cmVhbUNvZGVMZW5ndGgpIFwK
KyAgICBtYWNybyh1bmd1YXJkZWRCdWlsdGluUHJvbWlzZUludm9rZU9yTm9vcENvZGUsIHByb21p
c2VJbnZva2VPck5vb3AsIHNfdW5ndWFyZGVkQnVpbHRpblByb21pc2VJbnZva2VPck5vb3BDb2Rl
TGVuZ3RoKSBcCisKKyNkZWZpbmUgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJ
TFRJTl9GVU5DVElPTl9OQU1FKG1hY3JvKSBcCisgICAgbWFjcm8oY2FuY2VsUmVhZGFibGVTdHJl
YW0pIFwKKyAgICBtYWNybyhpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKSBcCisgICAgbWFjcm8ocHJv
bWlzZUludm9rZU9yTm9vcCkgXAorCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9HRU5FUkFUT1Io
Y29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAorICAgIEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKKworV0VCQ09SRV9G
T1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKERFQ0xBUkVfQlVJTFRJTl9HRU5F
UkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUgorCisjZGVmaW5lIFdFQkNP
UkVfQlVJTFRJTl9VTkdVQVJERURCVUlMVElOX0VYSVNUUyhvYmplY3QsIGZ1bmMpIGRlZmluZWQg
V0VCQ09SRV9CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc19oCisKKyMjIyBF
bmQgRmlsZTogVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmgKKworIyMjIEJlZ2luIEZpbGU6IFVu
Z3VhcmRlZEJ1aWx0aW5CdWlsdGlucy5jcHAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ2Fu
b24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8gRE8gTk9U
IEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIEphdmFT
Y3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmgiCisKKyNpbmNsdWRl
ICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSA8cnVudGltZS9FeGVjdXRhYmxlLmg+
CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRp
bWUvSlNDZWxsSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5o
PgorI2luY2x1ZGUgPHJ1bnRpbWUvVk0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25z
dCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc191bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVh
bUxvY2tlZENvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5u
b3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc191bmd1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVh
bUxvY2tlZENvZGVMZW5ndGggPSA3MTsKK2NvbnN0IGNoYXIqIHNfdW5ndWFyZGVkQnVpbHRpbklz
UmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlID0KKyAgICAiKGZ1bmN0aW9uIChzdHJlYW0pXG4iIFwK
KyAgICAie1xuIiBcCisgICAgIiAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBcCisg
ICAgIiAgICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjtcbiIgXAorICAgICJ9KVxuIiBcCis7CisK
K2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3VuZ3VhcmRlZEJ1aWx0aW5DYW5jZWxSZWFk
YWJsZVN0cmVhbUNvZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpD
YW5ub3RDb25zdHJ1Y3Q7Citjb25zdCBpbnQgc191bmd1YXJkZWRCdWlsdGluQ2FuY2VsUmVhZGFi
bGVTdHJlYW1Db2RlTGVuZ3RoID0gNDAyOworY29uc3QgY2hhciogc191bmd1YXJkZWRCdWlsdGlu
Q2FuY2VsUmVhZGFibGVTdHJlYW1Db2RlID0KKyAgICAiKGZ1bmN0aW9uIChzdHJlYW0sIHJlYXNv
bilcbiIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAg
IlxuIiBcCisgICAgIiAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xv
c2VkKVxuIiBcCisgICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuIiBcCisg
ICAgIiAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZClcbiIg
XAorICAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChzdHJlYW0uQHN0b3JlZEVycm9y
KTtcbiIgXAorICAgICIgICAgc3RyZWFtLkBxdWV1ZSA9IFtdO1xuIiBcCisgICAgIiAgICBAZmlu
aXNoQ2xvc2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7XG4iIFwKKyAgICAiICAgIHJldHVybiBA
cHJvbWlzZUludm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsIFwiY2FuY2VsXCIs
IFtyZWFzb25dKS50aGVuKGZ1bmN0aW9uKCkgeyB9KTtcbiIgXAorICAgICJ9KVxuIiBcCis7CisK
K2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52
b2tlT3JOb29wQ29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNh
bm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX3VuZ3VhcmRlZEJ1aWx0aW5Qcm9taXNlSW52b2tl
T3JOb29wQ29kZUxlbmd0aCA9IDMzODsKK2NvbnN0IGNoYXIqIHNfdW5ndWFyZGVkQnVpbHRpblBy
b21pc2VJbnZva2VPck5vb3BDb2RlID0KKyAgICAiKGZ1bmN0aW9uIChvYmplY3QsIGtleSwgYXJn
cylcbiIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAg
IlxuIiBcCisgICAgIiAgICB0cnkge1xuIiBcCisgICAgIiAgICAgICAgdmFyIG1ldGhvZCA9IG9i
amVjdFtrZXldO1xuIiBcCisgICAgIiAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QgPT09IFwidW5k
ZWZpbmVkXCIpXG4iIFwKKyAgICAiICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgp
O1xuIiBcCisgICAgIiAgICAgICAgdmFyIHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBh
cmdzKTtcbiIgXAorICAgICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtc
biIgXAorICAgICIgICAgfVxuIiBcCisgICAgIiAgICBjYXRjaChlcnJvcikge1xuIiBcCisgICAg
IiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiIgXAorICAgICIgICAgfVxu
IiBcCisgICAgIn0pXG4iIFwKKzsKKworCisjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRP
Uihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCitKU0M6OkZ1bmN0aW9u
RXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAore1wKKyAgICBK
U1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4o
dm0uY2xpZW50RGF0YSk7IFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9u
cygpLnVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxp
bmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS51bmd1YXJkZWRCdWlsdGluQnVp
bHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCkpOyBcCit9CitXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFS
REVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQorI3VuZGVm
IERFRklORV9CVUlMVElOX0dFTkVSQVRPUgorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyMj
IyBFbmQgRmlsZTogVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmNwcAorCisjIyMgQmVnaW4gRmls
ZTogVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlci5oCisvKgorICogQ29weXJpZ2h0IChj
KSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisK
Ky8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQg
ZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lm
bmRlZiBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyX2gKKyNkZWZpbmUgVW5ndWFyZGVk
QnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9oCisKKyNpbmNsdWRlICJVbmd1YXJkZWRCdWlsdGluQnVp
bHRpbnMuaCIKKyNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4KKyNpbmNsdWRlIDxi
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUv
SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIgOiBw
cml2YXRlIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBVbmd1
YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyKEpTQzo6Vk0qIHZtKQorICAgICAgICA6IG1fdm0o
KnZtKQorICAgICAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZV
TkNUSU9OX05BTUUoSU5JVElBTElaRV9CVUlMVElOX05BTUVTKQorI2RlZmluZSBJTklUSUFMSVpF
X0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpICwgbV8j
I25hbWUjI1NvdXJjZShKU0M6Om1ha2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVy
YWwoc18jI25hbWUsIGxlbmd0aCkpKQorICAgICAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVE
QlVJTFRJTl9CVUlMVElOX0NPREUoSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQor
I3VuZGVmIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworICAgIHsKKyAgICB9CisK
KyNkZWZpbmUgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBs
ZW5ndGgpIFwKKyAgICBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVj
dXRhYmxlKCk7IFwKKyAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNTb3VyY2U7IH0KKyAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5H
VUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisj
dW5kZWYgRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMKKworICAgIFdFQkNPUkVfRk9SRUFDSF9V
TkdVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fSURF
TlRJRklFUl9BQ0NFU1NPUikKKworICAgIHZvaWQgZXhwb3J0TmFtZXMoKTsKKworcHJpdmF0ZToK
KyAgICBKU0M6OlZNJiBtX3ZtOworCisgICAgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxU
SU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FUykKKworI2RlZmlu
ZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5n
dGgpIFwKKyAgICBKU0M6OlNvdXJjZUNvZGUgbV8jI25hbWUjI1NvdXJjZTtcCisgICAgSlNDOjpX
ZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVjdXRhYmxl
OworICAgIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShERUNM
QVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJD
RV9NRU1CRVJTCisKK307CisKKyNkZWZpbmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFt
ZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKK2lubGluZSBKU0M6OlVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyOjpuYW1lIyNFeGVjdXRh
YmxlKCkgXAore1wKKyAgICBpZiAoIW1fIyNuYW1lIyNFeGVjdXRhYmxlKVwKKyAgICAgICAgbV8j
I25hbWUjI0V4ZWN1dGFibGUgPSBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZT4oSlNDOjpjcmVhdGVCdWlsdGluRXhlY3V0YWJsZShtX3ZtLCBtXyMjbmFtZSMjU291cmNl
LCBmdW5jdGlvbk5hbWUjI1B1YmxpY05hbWUoKSwgc18jI25hbWUjI0NvbnN0cnVjdEFiaWxpdHkp
LCB0aGlzLCAmbV8jI25hbWUjI0V4ZWN1dGFibGUpO1wKKyAgICByZXR1cm4gbV8jI25hbWUjI0V4
ZWN1dGFibGUuZ2V0KCk7XAorfQorV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJ
TFRJTl9DT0RFKERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIERFRklORV9CVUlM
VElOX0VYRUNVVEFCTEVTCisKK2lubGluZSB2b2lkIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dy
YXBwZXI6OmV4cG9ydE5hbWVzKCkKK3sKKyNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9OX05BTUUobmFt
ZSkgbV92bS5wcm9wZXJ0eU5hbWVzLT5hcHBlbmRFeHRlcm5hbE5hbWUobmFtZSMjUHVibGljTmFt
ZSgpLCBuYW1lIyNQcml2YXRlTmFtZSgpKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVE
QlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoRVhQT1JUX0ZVTkNUSU9OX05BTUUpCisjdW5k
ZWYgRVhQT1JUX0ZVTkNUSU9OX05BTUUKK30KKworY2xhc3MgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0
aW5GdW5jdGlvbnMgeworcHVibGljOgorICAgIGV4cGxpY2l0IFVuZ3VhcmRlZEJ1aWx0aW5CdWls
dGluRnVuY3Rpb25zKEpTQzo6Vk0mIHZtKSA6IG1fdm0odm0pIHsgfQorCisgICAgdm9pZCBpbml0
KEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKKyAgICB2b2lkIHZpc2l0KEpTQzo6U2xvdFZpc2l0b3Im
KTsKKworcHVibGljOgorICAgIEpTQzo6Vk0mIG1fdm07CisKKyNkZWZpbmUgREVDTEFSRV9CVUlM
VElOX1NPVVJDRV9NRU1CRVJTKGZ1bmN0aW9uTmFtZSkgXAorICAgIEpTQzo6V3JpdGVCYXJyaWVy
PEpTQzo6SlNGdW5jdGlvbj4gbV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb247CisgICAgV0VCQ09S
RV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVf
QlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01F
TUJFUlMKK307CisKK2lubGluZSB2b2lkIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25z
Ojppbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyNkZWZpbmUgRVhQ
T1JUX0ZVTkNUSU9OKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aClcCisgICAgbV8jI2Z1
bmN0aW9uTmFtZSMjRnVuY3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmplY3QsIEpTQzo6SlNGdW5j
dGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKG1fdm0sIGNvZGVOYW1lIyNHZW5lcmF0b3IobV92
bSksICZnbG9iYWxPYmplY3QpKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJ
Tl9CVUlMVElOX0NPREUoRVhQT1JUX0ZVTkNUSU9OKQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTgor
fQorCitpbmxpbmUgdm9pZCBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9uczo6dmlzaXQo
SlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyNkZWZpbmUgVklTSVRfRlVOQ1RJT04obmFt
ZSkgdmlzaXRvci5hcHBlbmQoJm1fIyNuYW1lIyNGdW5jdGlvbik7CisgICAgV0VCQ09SRV9GT1JF
QUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKFZJU0lUX0ZVTkNUSU9O
KQorI3VuZGVmIFZJU0lUX0ZVTkNUSU9OCit9CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9oCisKKyMjIyBFbmQg
RmlsZTogVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlci5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3Jl
LXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS14bWxDYXNpbmdUZXN0LVNl
cGFyYXRlLmpzLXJlc3VsdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjhmYzZmYzZmYmY4NWVkZDdiOGQzYzg4ZWM2
ZDIyNjY3ZTFlNzdkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS14bWxDYXNpbmdUZXN0LVNlcGFy
YXRlLmpzLXJlc3VsdApAQCAtMCwwICsxLDMxOCBAQAorIyMjIEJlZ2luIEZpbGU6IHhtbENhc2lu
Z1Rlc3RCdWlsdGlucy5oCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IENhbm9uIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMg
RklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVz
IGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkKKworI2lmbmRlZiB4bWxDYXNpbmdUZXN0QnVp
bHRpbnNfaAorI2RlZmluZSB4bWxDYXNpbmdUZXN0QnVpbHRpbnNfaAorCisjaW5jbHVkZSA8YnVp
bHRpbnMvQnVpbHRpblV0aWxzLmg+CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRnVuY3Rpb25F
eGVjdXRhYmxlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8qIHhtbENhc2luZ1Rlc3Qg
Ki8KK2V4dGVybiBjb25zdCBjaGFyKiBzX3htbENhc2luZ1Rlc3RYTUxDYXNpbmdUZXN0Q29kZTsK
K2V4dGVybiBjb25zdCBpbnQgc194bWxDYXNpbmdUZXN0WE1MQ2FzaW5nVGVzdENvZGVMZW5ndGg7
CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfeG1sQ2FzaW5nVGVzdFhNTENh
c2luZ1Rlc3RDb2RlQ29uc3RydWN0QWJpbGl0eTsKK2V4dGVybiBjb25zdCBjaGFyKiBzX3htbENh
c2luZ1Rlc3RDc3NDYXNpbmdUZXN0Q29kZTsKK2V4dGVybiBjb25zdCBpbnQgc194bWxDYXNpbmdU
ZXN0Q3NzQ2FzaW5nVGVzdENvZGVMZW5ndGg7CitleHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RB
YmlsaXR5IHNfeG1sQ2FzaW5nVGVzdENzc0Nhc2luZ1Rlc3RDb2RlQ29uc3RydWN0QWJpbGl0eTsK
K2V4dGVybiBjb25zdCBjaGFyKiBzX3htbENhc2luZ1Rlc3RVcmxDYXNpbmdUZXN0Q29kZTsKK2V4
dGVybiBjb25zdCBpbnQgc194bWxDYXNpbmdUZXN0VXJsQ2FzaW5nVGVzdENvZGVMZW5ndGg7Citl
eHRlcm4gY29uc3QgSlNDOjpDb25zdHJ1Y3RBYmlsaXR5IHNfeG1sQ2FzaW5nVGVzdFVybENhc2lu
Z1Rlc3RDb2RlQ29uc3RydWN0QWJpbGl0eTsKKworI2RlZmluZSBXRUJDT1JFX0ZPUkVBQ0hfWE1M
Q0FTSU5HVEVTVF9CVUlMVElOX0RBVEEobWFjcm8pIFwKKyAgICBtYWNybyh4bWxDYXNpbmdUZXN0
LCB4bWxDYXNpbmdUZXN0WE1MQ2FzaW5nVGVzdCwgMSkgXAorICAgIG1hY3JvKGNzc0Nhc2luZ1Rl
c3QsIHhtbENhc2luZ1Rlc3RDc3NDYXNpbmdUZXN0LCAyKSBcCisgICAgbWFjcm8odXJsQ2FzaW5n
VGVzdCwgeG1sQ2FzaW5nVGVzdFVybENhc2luZ1Rlc3QsIDMpIFwKKworI2RlZmluZSBXRUJDT1JF
X0JVSUxUSU5fWE1MQ0FTSU5HVEVTVF9YTUxDQVNJTkdURVNUIDEKKyNkZWZpbmUgV0VCQ09SRV9C
VUlMVElOX1hNTENBU0lOR1RFU1RfQ1NTQ0FTSU5HVEVTVCAxCisjZGVmaW5lIFdFQkNPUkVfQlVJ
TFRJTl9YTUxDQVNJTkdURVNUX1VSTENBU0lOR1RFU1QgMQorCisjZGVmaW5lIFdFQkNPUkVfRk9S
RUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fQ09ERShtYWNybykgXAorICAgIG1hY3JvKHhtbENh
c2luZ1Rlc3RYTUxDYXNpbmdUZXN0Q29kZSwgeG1sQ2FzaW5nVGVzdCwgc194bWxDYXNpbmdUZXN0
WE1MQ2FzaW5nVGVzdENvZGVMZW5ndGgpIFwKKyAgICBtYWNybyh4bWxDYXNpbmdUZXN0Q3NzQ2Fz
aW5nVGVzdENvZGUsIGNzc0Nhc2luZ1Rlc3QsIHNfeG1sQ2FzaW5nVGVzdENzc0Nhc2luZ1Rlc3RD
b2RlTGVuZ3RoKSBcCisgICAgbWFjcm8oeG1sQ2FzaW5nVGVzdFVybENhc2luZ1Rlc3RDb2RlLCB1
cmxDYXNpbmdUZXN0LCBzX3htbENhc2luZ1Rlc3RVcmxDYXNpbmdUZXN0Q29kZUxlbmd0aCkgXAor
CisjZGVmaW5lIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fRlVOQ1RJT05f
TkFNRShtYWNybykgXAorICAgIG1hY3JvKGNzc0Nhc2luZ1Rlc3QpIFwKKyAgICBtYWNybyh1cmxD
YXNpbmdUZXN0KSBcCisgICAgbWFjcm8oeG1sQ2FzaW5nVGVzdCkgXAorCisjZGVmaW5lIERFQ0xB
UkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3Vu
dCkgXAorICAgIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpT
Qzo6Vk0mKTsKKworV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKERF
Q0xBUkVfQlVJTFRJTl9HRU5FUkFUT1IpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRP
UgorCisjZGVmaW5lIFdFQkNPUkVfQlVJTFRJTl9YTUxDQVNJTkdURVNUX0VYSVNUUyhvYmplY3Qs
IGZ1bmMpIGRlZmluZWQgV0VCQ09SRV9CVUlMVElOXyAjIyBvYmplY3QgIyMgXyAjIyBmdW5jCisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIHhtbENhc2luZ1Rlc3RCdWlsdGlu
c19oCisKKyMjIyBFbmQgRmlsZTogeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zLmgKKworIyMjIEJlZ2lu
IEZpbGU6IHhtbENhc2luZ1Rlc3RCdWlsdGlucy5jcHAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIw
MTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogCisgKi8KKworLy8g
RE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9t
IEphdmFTY3JpcHQgZmlsZXMgZm9yCisvLyBidWlsdGlucyBieSB0aGUgc2NyaXB0OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAieG1sQ2FzaW5nVGVzdEJ1aWx0aW5zLmgiCisKKyNpbmNs
dWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSA8cnVudGltZS9FeGVjdXRhYmxl
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1
bnRpbWUvSlNDZWxsSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvU3RydWN0dXJlSW5saW5l
cy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVk0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
b25zdCBKU0M6OkNvbnN0cnVjdEFiaWxpdHkgc194bWxDYXNpbmdUZXN0WE1MQ2FzaW5nVGVzdENv
ZGVDb25zdHJ1Y3RBYmlsaXR5ID0gSlNDOjpDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1
Y3Q7Citjb25zdCBpbnQgc194bWxDYXNpbmdUZXN0WE1MQ2FzaW5nVGVzdENvZGVMZW5ndGggPSA3
MTsKK2NvbnN0IGNoYXIqIHNfeG1sQ2FzaW5nVGVzdFhNTENhc2luZ1Rlc3RDb2RlID0KKyAgICAi
KGZ1bmN0aW9uIChzdHJlYW0pXG4iIFwKKyAgICAie1xuIiBcCisgICAgIiAgIFwidXNlIHN0cmlj
dFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICByZXR1cm4gISFzdHJlYW0uQHJlYWRlcjtc
biIgXAorICAgICJ9KVxuIiBcCis7CisKK2NvbnN0IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3ht
bENhc2luZ1Rlc3RDc3NDYXNpbmdUZXN0Q29kZUNvbnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0
cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKK2NvbnN0IGludCBzX3htbENhc2luZ1Rlc3RD
c3NDYXNpbmdUZXN0Q29kZUxlbmd0aCA9IDQwMjsKK2NvbnN0IGNoYXIqIHNfeG1sQ2FzaW5nVGVz
dENzc0Nhc2luZ1Rlc3RDb2RlID0KKyAgICAiKGZ1bmN0aW9uIChzdHJlYW0sIHJlYXNvbilcbiIg
XAorICAgICJ7XG4iIFwKKyAgICAiICAgIFwidXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBc
CisgICAgIiAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtQ2xvc2VkKVxu
IiBcCisgICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuIiBcCisgICAgIiAg
ICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHJlYWRhYmxlU3RyZWFtRXJyb3JlZClcbiIgXAorICAg
ICIgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChzdHJlYW0uQHN0b3JlZEVycm9yKTtcbiIg
XAorICAgICIgICAgc3RyZWFtLkBxdWV1ZSA9IFtdO1xuIiBcCisgICAgIiAgICBAZmluaXNoQ2xv
c2luZ1JlYWRhYmxlU3RyZWFtKHN0cmVhbSk7XG4iIFwKKyAgICAiICAgIHJldHVybiBAcHJvbWlz
ZUludm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsIFwiY2FuY2VsXCIsIFtyZWFz
b25dKS50aGVuKGZ1bmN0aW9uKCkgeyB9KTtcbiIgXAorICAgICJ9KVxuIiBcCis7CisKK2NvbnN0
IEpTQzo6Q29uc3RydWN0QWJpbGl0eSBzX3htbENhc2luZ1Rlc3RVcmxDYXNpbmdUZXN0Q29kZUNv
bnN0cnVjdEFiaWxpdHkgPSBKU0M6OkNvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsK
K2NvbnN0IGludCBzX3htbENhc2luZ1Rlc3RVcmxDYXNpbmdUZXN0Q29kZUxlbmd0aCA9IDMzODsK
K2NvbnN0IGNoYXIqIHNfeG1sQ2FzaW5nVGVzdFVybENhc2luZ1Rlc3RDb2RlID0KKyAgICAiKGZ1
bmN0aW9uIChvYmplY3QsIGtleSwgYXJncylcbiIgXAorICAgICJ7XG4iIFwKKyAgICAiICAgIFwi
dXNlIHN0cmljdFwiO1xuIiBcCisgICAgIlxuIiBcCisgICAgIiAgICB0cnkge1xuIiBcCisgICAg
IiAgICAgICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldO1xuIiBcCisgICAgIiAgICAgICAgaWYg
KHR5cGVvZiBtZXRob2QgPT09IFwidW5kZWZpbmVkXCIpXG4iIFwKKyAgICAiICAgICAgICAgICAg
cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuIiBcCisgICAgIiAgICAgICAgdmFyIHJlc3VsdCA9
IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBhcmdzKTtcbiIgXAorICAgICIgICAgICAgIHJldHVybiBQ
cm9taXNlLnJlc29sdmUocmVzdWx0KTtcbiIgXAorICAgICIgICAgfVxuIiBcCisgICAgIiAgICBj
YXRjaChlcnJvcikge1xuIiBcCisgICAgIiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVy
cm9yKTtcbiIgXAorICAgICIgICAgfVxuIiBcCisgICAgIn0pXG4iIFwKKzsKKworCisjZGVmaW5l
IERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVu
dENvdW50KSBcCitKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihK
U0M6OlZNJiB2bSkgXAore1wKKyAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFwKKyAgICByZXR1cm4gY2xp
ZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLnhtbENhc2luZ1Rlc3RCdWlsdGlucygpLmNvZGVO
YW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMo
KS54bWxDYXNpbmdUZXN0QnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCkpOyBcCit9CitXRUJD
T1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VO
RVJBVE9SKQorI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgorCisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKyMjIyBFbmQgRmlsZTogeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zLmNwcAorCisj
IyMgQmVnaW4gRmlsZTogeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlci5oCisvKgorICogQ29w
eXJpZ2h0IChjKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
IAorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBn
ZW5lcmF0ZWQgZnJvbSBKYXZhU2NyaXB0IGZpbGVzIGZvcgorLy8gYnVpbHRpbnMgYnkgdGhlIHNj
cmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMu
cHkKKworI2lmbmRlZiB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyX2gKKyNkZWZpbmUgeG1s
Q2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcl9oCisKKyNpbmNsdWRlICJ4bWxDYXNpbmdUZXN0QnVp
bHRpbnMuaCIKKyNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4KKyNpbmNsdWRlIDxi
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUv
SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXIgOiBwcml2
YXRlIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCB4bWxDYXNp
bmdUZXN0QnVpbHRpbnNXcmFwcGVyKEpTQzo6Vk0qIHZtKQorICAgICAgICA6IG1fdm0oKnZtKQor
ICAgICAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0ZVTkNUSU9OX05B
TUUoSU5JVElBTElaRV9CVUlMVElOX05BTUVTKQorI2RlZmluZSBJTklUSUFMSVpFX0JVSUxUSU5f
U09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpICwgbV8jI25hbWUjI1Nv
dXJjZShKU0M6Om1ha2VTb3VyY2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc18jI25h
bWUsIGxlbmd0aCkpKQorICAgICAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlM
VElOX0NPREUoSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIElOSVRJ
QUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworICAgIHsKKyAgICB9CisKKyNkZWZpbmUgRVhQ
T1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKKyAg
ICBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFwK
KyAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJu
IG1fIyNuYW1lIyNTb3VyY2U7IH0KKyAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9C
VUlMVElOX0NPREUoRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCisjdW5kZWYgRVhQT1NFX0JV
SUxUSU5fRVhFQ1VUQUJMRVMKKworICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JV
SUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUikK
KworICAgIHZvaWQgZXhwb3J0TmFtZXMoKTsKKworcHJpdmF0ZToKKyAgICBKU0M6OlZNJiBtX3Zt
OworCisgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9GVU5DVElPTl9O
QU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FUykKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09V
UkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKKyAgICBKU0M6OlNvdXJj
ZUNvZGUgbV8jI25hbWUjI1NvdXJjZTtcCisgICAgSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVjdXRhYmxlOworICAgIFdFQkNPUkVfRk9SRUFD
SF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJF
UlMpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCisKK307CisKKyNkZWZp
bmUgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgp
IFwKK2lubGluZSBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB4bWxDYXNpbmdUZXN0
QnVpbHRpbnNXcmFwcGVyOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAore1wKKyAgICBpZiAoIW1fIyNu
YW1lIyNFeGVjdXRhYmxlKVwKKyAgICAgICAgbV8jI25hbWUjI0V4ZWN1dGFibGUgPSBKU0M6Oldl
YWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4oSlNDOjpjcmVhdGVCdWlsdGluRXhl
Y3V0YWJsZShtX3ZtLCBtXyMjbmFtZSMjU291cmNlLCBmdW5jdGlvbk5hbWUjI1B1YmxpY05hbWUo
KSwgc18jI25hbWUjI0NvbnN0cnVjdEFiaWxpdHkpLCB0aGlzLCAmbV8jI25hbWUjI0V4ZWN1dGFi
bGUpO1wKKyAgICByZXR1cm4gbV8jI25hbWUjI0V4ZWN1dGFibGUuZ2V0KCk7XAorfQorV0VCQ09S
RV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0VYRUNV
VEFCTEVTKQorI3VuZGVmIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTCisKK2lubGluZSB2b2lk
IHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXI6OmV4cG9ydE5hbWVzKCkKK3sKKyNkZWZpbmUg
RVhQT1JUX0ZVTkNUSU9OX05BTUUobmFtZSkgbV92bS5wcm9wZXJ0eU5hbWVzLT5hcHBlbmRFeHRl
cm5hbE5hbWUobmFtZSMjUHVibGljTmFtZSgpLCBuYW1lIyNQcml2YXRlTmFtZSgpKTsKKyAgICBX
RUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoRVhQT1JU
X0ZVTkNUSU9OX05BTUUpCisjdW5kZWYgRVhQT1JUX0ZVTkNUSU9OX05BTUUKK30KKworY2xhc3Mg
eG1sQ2FzaW5nVGVzdEJ1aWx0aW5GdW5jdGlvbnMgeworcHVibGljOgorICAgIGV4cGxpY2l0IHht
bENhc2luZ1Rlc3RCdWlsdGluRnVuY3Rpb25zKEpTQzo6Vk0mIHZtKSA6IG1fdm0odm0pIHsgfQor
CisgICAgdm9pZCBpbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKKyAgICB2b2lkIHZpc2l0KEpT
Qzo6U2xvdFZpc2l0b3ImKTsKKworcHVibGljOgorICAgIEpTQzo6Vk0mIG1fdm07CisKKyNkZWZp
bmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKGZ1bmN0aW9uTmFtZSkgXAorICAgIEpT
Qzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNGdW5jdGlvbj4gbV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rp
b247CisgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9GVU5DVElPTl9O
QU1FKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBERUNMQVJFX0JVSUxU
SU5fU09VUkNFX01FTUJFUlMKK307CisKK2lubGluZSB2b2lkIHhtbENhc2luZ1Rlc3RCdWlsdGlu
RnVuY3Rpb25zOjppbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyNk
ZWZpbmUgRVhQT1JUX0ZVTkNUSU9OKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aClcCisg
ICAgbV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmplY3QsIEpT
Qzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKG1fdm0sIGNvZGVOYW1lIyNHZW5l
cmF0b3IobV92bSksICZnbG9iYWxPYmplY3QpKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FT
SU5HVEVTVF9CVUlMVElOX0NPREUoRVhQT1JUX0ZVTkNUSU9OKQorI3VuZGVmIEVYUE9SVF9GVU5D
VElPTgorfQorCitpbmxpbmUgdm9pZCB4bWxDYXNpbmdUZXN0QnVpbHRpbkZ1bmN0aW9uczo6dmlz
aXQoSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyNkZWZpbmUgVklTSVRfRlVOQ1RJT04o
bmFtZSkgdmlzaXRvci5hcHBlbmQoJm1fIyNuYW1lIyNGdW5jdGlvbik7CisgICAgV0VCQ09SRV9G
T1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9GVU5DVElPTl9OQU1FKFZJU0lUX0ZVTkNUSU9O
KQorI3VuZGVmIFZJU0lUX0ZVTkNUSU9OCit9CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8geG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcl9oCisKKyMjIyBFbmQgRmls
ZTogeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvVXBkYXRlQ29udGVudHMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVXBk
YXRlQ29udGVudHMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyZjk1MzJjYjZm
YjBhYmFmNTIwZGFlMDQ4NThhYzkyYTRmYzYyNDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1VwZGF0ZUNvbnRlbnRz
LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotIyEvdXNyL2Jpbi9weXRob24KLQot
IyBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotIyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBwdXRlciwgSW5jLiAoIkFwcGxl
Iikgbm9yIHRoZSBuYW1lcyBvZgotIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotIyAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQotIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotIyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
Ci0jIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAotIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKLSMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHN5cwotaW1wb3J0IG9zCi0KLWFzc2VydChsZW4o
c3lzLmFyZ3YpID09IDMpCi0KLWNvbXAgPSBzeXMuYXJndlsxXQotZmlsZW5hbWUgPSBzeXMuYXJn
dlsyXQotCi10ID0gRmFsc2UKLQotaWYgb3MucGF0aC5pc2ZpbGUoZmlsZW5hbWUpOgotICAgIGYg
PSBvcGVuKGZpbGVuYW1lLCAncicpCi0gICAgY29tcGFyYXRvciA9IGYucmVhZCgpCi0gICAgZi5j
bG9zZSgpCi0gICAgdCA9IFRydWUKLQotaWYgKG5vdCB0IG9yIGNvbXAgIT0gY29tcGFyYXRvcik6
Ci0gICAgZiA9IG9wZW4oZmlsZW5hbWUsICd3JykKLSAgICBmLndyaXRlKGNvbXApCi0gICAgZi5j
bG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuY3BwCmluZGV4IDczZWJlNDc5OTM1ZmNhNzQwOWZkOTMyZjg4OWI2NTg0YmU1
OGI2MTQuLjgxNmI0YTVkMzBiNTIwYjVkMWRmZWFlYWIyZjkzOTRjNjhiZGMwYTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMu
Y3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
Y3JlYXRlRXhlY3V0YWJsZUludGVybmFsKFZNJiwgY29uc3QgU291cmNlQ29kCiBCdWlsdGluRXhl
Y3V0YWJsZXM6OkJ1aWx0aW5FeGVjdXRhYmxlcyhWTSYgdm0pCiAgICAgOiBtX3ZtKHZtKQogI2Rl
ZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1l
LCBsZW5ndGgpICwgbV8jI25hbWUjI1NvdXJjZShtYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0
ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpKSkKLSAgICBKU0NfRk9SRUFDSF9CVUlMVElO
KElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyAgICBKU0NfRk9SRUFDSF9CVUlM
VElOX0NPREUoSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQogI3VuZGVmIEVYUE9T
RV9CVUlMVElOX1NUUklOR1MKIHsKIH0KQEAgLTEzMiw3ICsxMzIsNyBAQCBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpuYW1lIyNFeGVjdXRhYmxlKCkgXAog
ICAgICAgICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9IFdlYWs8VW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU+KGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKG1fIyNuYW1lIyNTb3VyY2UsIG1fdm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCksIHNf
IyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRhYmxlKTtc
CiAgICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKIH0KLUpTQ19GT1JFQUNI
X0JVSUxUSU4oREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCitKU0NfRk9SRUFDSF9CVUlMVElO
X0NPREUoREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCiAjdW5kZWYgRVhQT1NFX0JVSUxUSU5f
U09VUkNFUwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbkV4ZWN1dGFibGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmgKaW5kZXggNmE5ODMyMTdhMGE4ODQ1N2VmMDk4ZmJjYjk1MTIzZDU5
YTUyNTE3NS4uZWM4ZDU3NzA0Yjg3YzU4NGE5MzZkZGU0MTdkNjI5Zjg1N2IzNjU3MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMu
aApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
bmFtZSMjRXhlY3V0YWJsZSgpOyBcCiBjb25zdCBTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSB7
IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CiAgICAgCi0gICAgSlNDX0ZPUkVBQ0hfQlVJTFRJ
TihFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0NP
REUoRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCiAjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU09V
UkNFUwogCiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZURlZmF1bHRDb25z
dHJ1Y3RvcihDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwpAQCAtNjIs
NyArNjIsNyBAQCBwcml2YXRlOgogI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJF
UlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXAogICAgIFNvdXJjZUNvZGUgbV8jI25hbWUj
I1NvdXJjZTsgXAogICAgIFdlYWs8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IG1fIyNuYW1l
IyNFeGVjdXRhYmxlOwotICAgIEpTQ19GT1JFQUNIX0JVSUxUSU4oREVDTEFSRV9CVUlMVElOX1NP
VVJDRV9NRU1CRVJTKQorICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxU
SU5fU09VUkNFX01FTUJFUlMpCiAjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJT
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFi
bGUgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKaW5kZXggNmZhNzhj
ZWEyODczOGMwZjE3NDUxNDdmMDQ5NzNhY2I2Y2E4MzZkOC4uYTIyNWNiZTY3ZDgwZGFhMmZkM2U5
OGYxOTA1MmVjMDk4MThkMjNmOCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Ny
ZWF0ZV9oYXNoX3RhYmxlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90
YWJsZQpAQCAtMzE5LDcgKzMxOSw3IEBAIHN1YiBvdXRwdXQoKSB7CiAgICAgICAgIGlmICgkdmFs
dWVzWyRpXXsidHlwZSJ9IGVxICJGdW5jdGlvbiIpICB7CiAgICAgICAgICAgICBteSAkdGFibGVI
ZWFkID0gJG5hbWU7CiAgICAgICAgICAgICAkdGFibGVIZWFkID1+IHMvVGFibGUkLy87Ci0gICAg
ICAgICAgICBwcmludCAiICNpZiBKU0NfQlVJTFRJTl9FWElTVFMoIiAuIHVjKCR0YWJsZUhlYWQg
LiAka2V5KSAuIilcbiI7CisgICAgICAgICAgICBwcmludCAiICNpZiBKU0NfQlVJTFRJTl9FWElT
VFMoIiAuIHVjKCR0YWJsZUhlYWQpIC4gIiwgIiAuIHVjKCRrZXkpIC4iKVxuIjsKICAgICAgICAg
ICAgIHByaW50ICIgICB7IFwiJGtleVwiLCAoKCRhdHRyc1skaV0pICYgfkZ1bmN0aW9uKSB8IEJ1
aWx0aW4sICRpbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PEJ1aWx0aW5HZW5lcmF0
b3I+KCIgLiAkdGFibGVIZWFkIC4gdWNmaXJzdCgka2V5KSAuICJDb2RlR2VuZXJhdG9yKSwgKGlu
dHB0cl90KSRzZWNvbmRWYWx1ZSB9IH0sXG4iOwogICAgICAgICAgICAgcHJpbnQgIiAjZWxzZVxu
IgogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDE1NGI3NTA0MGM2NDQ1ZTRiMDFh
NTQ0NjI3ZjNkNmY5MTJlMjA4OTYuLjJmNmIxYzYzNTkyMzExYmMwZjY2ZjYzY2U3ZmMzMmM1Yjg0
MzdiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC04MjEsMTQgKzgyMSwxMCBAQCBzZXQoV2Vi
Q29yZV9JRExfRklMRVMKICAgICAke1dlYkNvcmVfU1ZHX0lETF9GSUxFU30KICkKIAotaWYgKFdJ
TjMyKQotICAgIGlmIChJTlRFUk5BTF9CVUlMRCkKLSAgICAgICAgc2V0KEphdmFTY3JpcHRDb3Jl
X1NDUklQVFNfRElSICIke0NNQUtFX0JJTkFSWV9ESVJ9Ly4uL2luY2x1ZGUvcHJpdmF0ZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzIikKLSAgICBlbHNlICgpCi0gICAgICAgIHNldChKYXZhU2NyaXB0
Q29yZV9TQ1JJUFRTX0RJUiAiJHtERVJJVkVEX1NPVVJDRVNfRElSfS9Gb3J3YXJkaW5nSGVhZGVy
cy9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzIikKLSAgICBlbmRpZiAoKQoraWYgKFdJTjMyIEFORCBJ
TlRFUk5BTF9CVUlMRCkKKyAgICBzZXQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIgIiR7Q01B
S0VfQklOQVJZX0RJUn0vLi4vaW5jbHVkZS9wcml2YXRlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMi
KQogZWxzZSAoKQotICAgIHNldChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUiAiJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L1NjcmlwdHMiKQorICAgIHNldChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJ
UiAiJHtERVJJVkVEX1NPVVJDRVNfRElSfS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzIikKIGVuZGlmICgpCiAKIHNldChXZWJDb3JlX1NPVVJDRVMKQEAgLTMzNjIsMTkg
KzMzNTgsNiBAQCBzZXQoV09SS0VSR0xPQkFMU0NPUEVfQ09OU1RSVUNUT1JTX0ZJTEUgJHtERVJJ
VkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1dvcmtlckdsbwogc2V0KERFRElDQVRFRFdPUktFUkdM
T0JBTFNDT1BFX0NPTlNUUlVDVE9SU19GSUxFICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElS
fS9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwpCiBzZXQoSURMX0FU
VFJJQlVURVNfRklMRSAke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0
ZXMudHh0KQogCi1zZXQoV0VCQ09SRV9KU19CVUlMVElOUwotICAgICR7V0VCQ09SRV9ESVJ9L01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmpzCi0gICAgJHtXRUJDT1JFX0RJUn0vTW9k
dWxlcy9zdHJlYW1zL0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kuanMKLSAgICAke1dFQkNPUkVf
RElSfS9Nb2R1bGVzL3N0cmVhbXMvQ291bnRRdWV1aW5nU3RyYXRlZ3kuanMKLSAgICAke1dFQkNP
UkVfRElSfS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMKLSAgICAke1dFQkNPUkVf
RElSfS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmpzCi0gICAgJHtX
RUJDT1JFX0RJUn0vTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCi0g
ICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmpz
Ci0gICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9zdHJlYW1zL1N0cmVhbUludGVybmFscy5qcwot
ICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5qcwotICAg
ICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbUludGVybmFscy5q
cwotKQotCiBXRUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNfSUZfRVhJU1RTKCkKIAogIyBHZW5l
cmF0ZSBJbnNwZWN0b3JPdmVybGF5UGFnZS5oCkBAIC0zNTk5LDIyICszNTgyLDUxIEBAIEdFTkVS
QVRFX0JJTkRJTkdTKFdlYkNvcmVUZXN0U3VwcG9ydF9TT1VSQ0VTCiAgICAgJHtBRERJVElPTkFM
X0JJTkRJTkdTX0RFUEVOREVOQ0lFU30pCiAKICMgV2ViQ29yZSBKUyBCdWlsdGlucwotZm9yZWFj
aCAoX2J1aWx0aW5qcyAke1dFQkNPUkVfSlNfQlVJTFRJTlN9KQotICAgIGdldF9maWxlbmFtZV9j
b21wb25lbnQoX25hbWUgJHtfYnVpbHRpbmpzfSBOQU1FX1dFKQorCitzZXQoV2ViQ29yZV9CVUlM
VElOU19TT1VSQ0VTCisgICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YURldmljZXMuanMKKyAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3N0cmVhbXMvQnl0ZUxlbmd0
aFF1ZXVpbmdTdHJhdGVneS5qcworICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3RyZWFtcy9D
b3VudFF1ZXVpbmdTdHJhdGVneS5qcworICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbS5qcworICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuanMKKyAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMKKyAgICAke1dFQkNPUkVfRElSfS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuanMKKyAgICAke1dFQkNPUkVfRElSfS9N
b2R1bGVzL3N0cmVhbXMvU3RyZWFtSW50ZXJuYWxzLmpzCisgICAgJHtXRUJDT1JFX0RJUn0vTW9k
dWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzCispCisKK3NldChCVUlMVElOU19HRU5FUkFU
T1JfU0NSSVBUUworICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5zLnB5
CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnNfZ2VuZXJhdG9yLnB5
CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnNfbW9kZWwucHkKKyAg
ICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGluc190ZW1wbGF0ZXMucHkKKyAg
ICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5l
ZF9oZWFkZXIucHkKKyAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGluc19n
ZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weQorICAgICR7SmF2YVNjcmlwdENvcmVf
U0NSSVBUU19ESVJ9L2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weQorICAgICR7
SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2lt
cGxlbWVudGF0aW9uLnB5CisgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRp
bnNfZ2VuZXJhdGVfc2VwYXJhdGVfd3JhcHBlci5weQorICAgICR7SmF2YVNjcmlwdENvcmVfU0NS
SVBUU19ESVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5CisgICAgJHtKYXZhU2NyaXB0Q29yZV9T
Q1JJUFRTX0RJUn0vbGF6eXdyaXRlci5weQorKQorCitmb3JlYWNoIChfYnVpbHRpblNvdXJjZSAk
e1dlYkNvcmVfQlVJTFRJTlNfU09VUkNFU30pCisgICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChf
b2JqZWN0TmFtZSAke19idWlsdGluU291cmNlfSBOQU1FX1dFKQogICAgIGFkZF9jdXN0b21fY29t
bWFuZCgKLSAgICAgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS8ke19u
YW1lfUJ1aWx0aW5zV3JhcHBlci5oICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS8ke19u
YW1lfUJ1aWx0aW5zLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9LyR7X25hbWV9QnVp
bHRpbnMuY3BwCi0gICAgICAgIE1BSU5fREVQRU5ERU5DWSAke1dFQkNPUkVfRElSfS9nZW5lcmF0
ZS1qcy1idWlsdGlucwotICAgICAgICBERVBFTkRTICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVJ9L2dlbmVyYXRlLWpzLWJ1aWx0aW5zCi0gICAgICAgIERFUEVORFMgJHtfYnVpbHRpbmpzfQot
ICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7Q01BS0VfQ1VSUkVOVF9TT1VS
Q0VfRElSfS9nZW5lcmF0ZS1qcy1idWlsdGlucyAtLWlucHV0ICR7X2J1aWx0aW5qc30gLS1vdXRw
dXRfZGlyICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfSAtLWdlbmVyYXRlX2pzX2J1aWx0
aW5zX3BhdGggJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0KKyAgICAgICAgT1VUUFVUICR7
REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS8ke19vYmplY3ROYW1lfUJ1aWx0aW5zLmNwcAor
ICAgICAgICAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9LyR7X29iamVjdE5h
bWV9QnVpbHRpbnMuaAorICAgICAgICAgICAgICAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9LyR7X29iamVjdE5hbWV9QnVpbHRpbnNXcmFwcGVyLmggCisgICAgICAgIE1BSU5fREVQRU5E
RU5DWSAke19idWlsdGluU291cmNlfQorICAgICAgICBERVBFTkRTICR7QlVJTFRJTlNfR0VORVJB
VE9SX1NDUklQVFN9CisgICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgLS1mcmFtZXdv
cmsgV2ViQ29yZSAtLW91dHB1dC1kaXJlY3RvcnkgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9ICR7X2J1aWx0aW5Tb3VyY2V9CiAgICAgICAgIFZFUkJBVElNKQogICAgIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwotICAgICAgICAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0v
JHtfbmFtZX1CdWlsdGlucy5oCi0gICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElS
fS8ke19uYW1lfUJ1aWx0aW5zV3JhcHBlci5oCisgICAgICAgICR7REVSSVZFRF9TT1VSQ0VTX1dF
QkNPUkVfRElSfS8ke19vYmplY3ROYW1lfUJ1aWx0aW5zLmgKKyAgICAgICAgJHtERVJJVkVEX1NP
VVJDRVNfV0VCQ09SRV9ESVJ9LyR7X29iamVjdE5hbWV9QnVpbHRpbnNXcmFwcGVyLmgKICAgICAp
Ci0gICAgQUREX1NPVVJDRV9XRUJDT1JFX0RFUklWRURfREVQRU5ERU5DSUVTKCR7V0VCQ09SRV9E
SVJ9L2JpbmRpbmdzL2pzL1dlYkNvcmVKU0J1aWx0aW5zLmNwcCAke19uYW1lfUJ1aWx0aW5zLmNw
cCkKKyAgICBBRERfU09VUkNFX1dFQkNPUkVfREVSSVZFRF9ERVBFTkRFTkNJRVMoJHtXRUJDT1JF
X0RJUn0vYmluZGluZ3MvanMvV2ViQ29yZUpTQnVpbHRpbnMuY3BwICR7X29iamVjdE5hbWV9QnVp
bHRpbnMuY3BwKQogZW5kZm9yZWFjaCAoKQogCisKIEFERF9TT1VSQ0VfV0VCQ09SRV9ERVJJVkVE
X0RFUEVOREVOQ0lFUygke1dFQkNPUkVfRElSfS9odG1sL0hUTUxUcmVlQnVpbGRlci5jcHAgTWF0
aE1MTmFtZXMuY3BwKQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDZjMTQ0
YmY0MDU0ZGRhYTgyYWRhYTJjYjI4YjJmZDU5ZWFkODEzYjQuLmIxYzM1OTkwMmQyYjQzYzg3OWFi
ZTJkODYyNGEzZTAwODUxOWNhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAt
Nzk3LDcgKzc5Nyw2IEBAIGFsbCA6IFwKICAgICAkKFdPUktFUkdMT0JBTFNDT1BFX0NPTlNUUlVD
VE9SU19GSUxFKSBcCiAgICAgJChKU19ET01fSEVBREVSUykgXAogICAgICQoV0VCX0RPTV9IRUFE
RVJTKSBcCi0gICAgJChXRUJDT1JFX0pTX0JVSUxUSU5TKSBcCiAgICAgXAogICAgIENTU0dyYW1t
YXIuY3BwIFwKICAgICBDU1NQcm9wZXJ0eU5hbWVzLmNwcCBcCkBAIC0xMjU2LDcgKzEyNTUsNyBA
QCBXZWJSZXBsYXlJbnB1dHMuaCA6ICQoSU5QVVRfR0VORVJBVE9SX1NQRUNJRklDQVRJT05TKSAk
KElOUFVUX0dFTkVSQVRPUl9TQ1JJUFRTKQogCiAjIFdlYkNvcmUgSlMgQnVpbHRpbnMKIAotV0VC
Q09SRV9KU19CVUlMVElOUyA9IFwKK1dlYkNvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmpzIFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvc3RyZWFtcy9CeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmpzIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvc3RyZWFtcy9Db3VudFF1ZXVpbmdTdHJhdGVneS5qcyBcCkBA
IC0xMjY5LDEwICsxMjY4LDMxIEBAIFdFQkNPUkVfSlNfQlVJTFRJTlMgPSBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1JbnRlcm5hbHMuanMgXAogIwogCi1h
bGwgOiAkKFdFQkNPUkVfSlNfQlVJTFRJTlM6JS5qcz0lQnVpbHRpbnMuY3BwKQorQlVJTFRJTlNf
R0VORVJBVE9SX1NDUklQVFMgPSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikv
YnVpbHRpbnMucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5z
X2dlbmVyYXRvci5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRp
bnNfbW9kZWwucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5z
X3RlbXBsYXRlcy5weSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRp
bnNfZ2VuZXJhdGVfY29tYmluZWRfaGVhZGVyLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1ND
UklQVFNfRElSKS9idWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weSBc
CisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnNfZ2VuZXJhdGVfc2Vw
YXJhdGVfaGVhZGVyLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9idWls
dGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weSBcCisgICAgJChKYXZhU2Ny
aXB0Q29yZV9TQ1JJUFRTX0RJUikvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfd3JhcHBlci5w
eSBcCisgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvZ2VuZXJhdGUtanMtYnVpbHRp
bnMucHkgXAorICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2xhenl3cml0ZXIucHkg
XAorIworCisjIEFkZGluZy9yZW1vdmluZyBzY3JpcHRzIHNob3VsZCB0cmlnZ2VyIHJlZ2VuZXJh
dGlvbiwgYnV0IGNoYW5naW5nIHdoaWNoIGJ1aWx0aW5zIGFyZQorIyBnZW5lcmF0ZWQgc2hvdWxk
IG5vdCBhZmZlY3Qgb3RoZXIgYnVpbHRpbnMgd2hlbiBub3QgcGFzc2luZyAnLS1jb21iaW5lZCcg
dG8gdGhlIGdlbmVyYXRvci4KKworLlBIT05ZOiBmb3JjZQorV2ViQ29yZV9CVUlMVElOU19ERVBF
TkRFTkNJRVNfTElTVCA6ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL1VwZGF0ZUNvbnRl
bnRzLnB5IGZvcmNlCisJJChQWVRIT04pICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL1Vw
ZGF0ZUNvbnRlbnRzLnB5ICckKEJVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTKScgJEAKKworJUJ1
aWx0aW5zLmg6ICUuanMgJChCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUykgV2ViQ29yZV9CVUlM
VElOU19ERVBFTkRFTkNJRVNfTElTVAorCSQoUFlUSE9OKSAkKEphdmFTY3JpcHRDb3JlX1NDUklQ
VFNfRElSKS9nZW5lcmF0ZS1qcy1idWlsdGlucy5weSAtLW91dHB1dC1kaXJlY3RvcnkgLiAtLWZy
YW1ld29yayBXZWJDb3JlICQ8CiAKLSVCdWlsdGlucy5jcHA6ICUuanMKLQkkKFBZVEhPTikgJChX
ZWJDb3JlKS9nZW5lcmF0ZS1qcy1idWlsdGlucyAtLWlucHV0ICQ8IC0tZ2VuZXJhdGVfanNfYnVp
bHRpbnNfcGF0aCAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKQorYWxsIDogJChub3RkaXIg
JChXZWJDb3JlX0JVSUxUSU5TX1NPVVJDRVM6JS5qcz0lQnVpbHRpbnMuaCkpCiAKICMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0OTI1M2Q0MTBhOTljZTE5MWNhMDQ2YjJmZGZmNDA4
MzE4ZmZhMTYwLi5lNWM1NWQ0Y2E0NDNhYzdhN2ZmMDVmMjM0MWIxOWE5ZGEzYTNmYTU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xMTQ5LDcgKzExNDksNyBAQAogCQkyRDUwMDJGODFCNTZENzgxMDAyMEFBRjcgLyogRE9NUGF0
aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDUw
MDJGNzFCNTZENzgxMDAyMEFBRjcgLyogRE9NUGF0aC5jcHAgKi87IH07CiAJCTJENTAwMkZCMUI1
NkQ3OTkwMDIwQUFGNyAvKiBQYXRoVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENTAwMkY5MUI1NkQ3OTkwMDIwQUFGNyAvKiBQYXRo
VXRpbGl0aWVzLmNwcCAqLzsgfTsKIAkJMkQ1MDAyRkMxQjU2RDc5OTAwMjBBQUY3IC8qIFBhdGhV
dGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJENTAwMkZBMUI1NkQ3OTkwMDIwQUFGNyAvKiBQYXRoVXRpbGl0aWVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMkQ1MDM2NjgxQkNERERDNDAw
RTIwQkIzIC8qIEdlc3R1cmVFdmVudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkQ1MDM2NjcxQkNERERDNDAwRTIwQkIzIC8qIEdlc3R1cmVFdmVu
dHMuY3BwICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCTJENTAzNjY4
MUJDREREQzQwMEUyMEJCMyAvKiBHZXN0dXJlRXZlbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENTAzNjY3MUJDREREQzQwMEUyMEJCMyAvKiBH
ZXN0dXJlRXZlbnRzLmNwcCAqLzsgfTsKIAkJMkQ1NjQ2QjAxQjhGODQ5MzAwM0M0OTk0IC8qIERp
Y3Rpb25hcnlQb3B1cEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJENTY0NkFGMUI4Rjg0OTMwMDNDNDk5NCAvKiBEaWN0aW9uYXJ5UG9wdXBJbmZv
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQ1
OEQ4NTUxQTE1RjY1RjAwQTVGNzI2IC8qIERhdGFEZXRlY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENThEODUzMUExNUY2NUYwMEE1RjcyNiAv
KiBEYXRhRGV0ZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMkQ1OEQ4NTYxQTE1RjY1RjAwQTVGNzI2IC8qIERhdGFEZXRlY3Rpb24ubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDU4RDg1NDFB
MTVGNjVGMDBBNUY3MjYgLyogRGF0YURldGVjdGlvbi5tbSAqLzsgfTsKQEAgLTU1MTIsOCArNTUx
Miw4IEBACiAJCUJDNzc5RTE3MUJCMjI3Q0EwMENBQThCRiAvKiBTdHlsZUN1c3RvbVByb3BlcnR5
RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3
NzlFMTUxQkIyMjZBMjAwQ0FBOEJGIC8qIFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM3RDhGRUYxQkQw
M0I2NDAwRkZFNTQwIC8qIENTU1Vuc2V0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3RDhGRUQxQkQwM0I2NDAwRkZFNTQwIC8qIENTU1Vu
c2V0VmFsdWUuY3BwICovOyB9OwogCQlCQzdEOEZGMDFCRDAzQjY0MDBGRkU1NDAgLyogQ1NTVW5z
ZXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM3RDhGRUUxQkQwM0I2NDAwRkZFNTQwIC8qIENTU1Vuc2V0VmFsdWUuaCAqLzsgfTsKLQkJQkM3
RDhGRjMxQkQxQTQ3OTAwRkZFNTQwIC8qIENTU1JldmVydFZhbHVlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0Q4RkYxMUJEMUE0NzkwMEZGRTU0
MCAvKiBDU1NSZXZlcnRWYWx1ZS5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsg
fTsgfTsKLQkJQkM3RDhGRjQxQkQxQTQ3OTAwRkZFNTQwIC8qIENTU1JldmVydFZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdEOEZGMjFCRDFB
NDc5MDBGRkU1NDAgLyogQ1NTUmV2ZXJ0VmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFH
UyA9ICgpOyB9OyB9OworCQlCQzdEOEZGMzFCRDFBNDc5MDBGRkU1NDAgLyogQ1NTUmV2ZXJ0VmFs
dWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3
RDhGRjExQkQxQTQ3OTAwRkZFNTQwIC8qIENTU1JldmVydFZhbHVlLmNwcCAqLzsgfTsKKwkJQkM3
RDhGRjQxQkQxQTQ3OTAwRkZFNTQwIC8qIENTU1JldmVydFZhbHVlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdEOEZGMjFCRDFBNDc5MDBGRkU1NDAg
LyogQ1NTUmV2ZXJ0VmFsdWUuaCAqLzsgfTsKIAkJQkM3RjQ0QTgwQjlFMzI0RTAwQTlEMDgxIC8q
IEltYWdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDN0Y0NEE3MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9ic2VydmVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM3RkE2MjAwRDFG
MENCRDAwREIyMkE5IC8qIExpdmVOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdGQTYxRTBEMUYwQ0JEMDBEQjIyQTkgLyogTGl2ZU5v
ZGVMaXN0LmNwcCAqLzsgfTsKIAkJQkM3RkE2MjEwRDFGMENCRDAwREIyMkE5IC8qIExpdmVOb2Rl
TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3
RkE2MUYwRDFGMENCRDAwREIyMkE5IC8qIExpdmVOb2RlTGlzdC5oICovOyB9OwpAQCAtMTEzNjUs
NyArMTEzNjUsNiBAQAogCQk5OENFNDMyNTEyOUUwMEJEMDA1ODIxREMgLyogTGlua0xvYWRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMaW5rTG9hZGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOThDRTQzMjkxMjlFMDBFNTAwNTgyMURDIC8q
IExpbmtMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlua0xvYWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OEVCMUY5NDEzMTNGRTA1MDBEMEUx
RUEgLyogTm90SW1wbGVtZW50ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Tm90SW1wbGVtZW50ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTkwOEIwRUMx
QkNBQ0YxRjAwRUQwRjY1IC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5z
Y3JpcHQucHl0aG9uOyBwYXRoID0gImdlbmVyYXRlLWpzLWJ1aWx0aW5zIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRUQxQkNBQ0Y5MTAwRUQwRjY1IC8qIEJ5dGVMZW5ndGhR
dWV1aW5nU3RyYXRlZ3kuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGgg
PSBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5OTA4QjBFRTFCQ0FDRjkxMDBFRDBGNjUgLyogQ291bnRRdWV1aW5nU3RyYXRlZ3kuanMg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBDb3VudFF1ZXVpbmdTdHJh
dGVneS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRUYxQkNBQ0Y5MTAw
RUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFtLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2Ny
aXB0OyBwYXRoID0gUmVhZGFibGVTdHJlYW0uanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMTM5NCw2ICsxMTM5Myw3IEBACiAJCTk5MDhCMTAwMUJDQUQwN0QwMEVEMEY2NSAvKiBS
ZWFkYWJsZVN0cmVhbVJlYWRlckJ1aWx0aW5zV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZWFkYWJsZVN0cmVhbVJlYWRlckJ1aWx0aW5zV3JhcHBlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTIwMzk4MDE4Qjk1QkM2MDBCMzlBRjkgLyogVXNl
cklucHV0QnJpZGdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVz
ZXJJbnB1dEJyaWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MjAzOTgx
MThCOTVCQzYwMEIzOUFGOSAvKiBVc2VySW5wdXRCcmlkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVXNlcklucHV0QnJpZGdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk5OTRFNUQ4MUJEODQzQTMwMEYyRDgzNSAvKiBNZWRpYURldmljZXMuanMgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBNZWRpYURldmljZXMuanM7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5QzdDQ0IyMThDNjYzRTQwMDMyRTQxMyAvKiBNZW1v
aXplZERPTVJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vaXpl
ZERPTVJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUM3Q0NCNDE4QzZC
ODk5MDAzMkU0MTMgLyogTWVtb2l6ZWRET01SZXN1bHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVtb2l6ZWRET01SZXN1bHQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5OUNDMEIzODE4QkU5ODQ5MDA2Q0VCQ0MgLyogQWxsUmVwbGF5SW5wdXRz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbFJlcGxheUlucHV0cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUwNDMsNiArMTUwNDMsNyBAQAogCQkJCTVF
QTcyNUNEMUFDQUJDRDkwMEVBRDE3QiAvKiBNZWRpYURldmljZXMuY3BwICovLAogCQkJCTVFQTcy
NUNFMUFDQUJDRDkwMEVBRDE3QiAvKiBNZWRpYURldmljZXMuaCAqLywKIAkJCQk1RUE3MjVDRjFB
Q0FCQ0Q5MDBFQUQxN0IgLyogTWVkaWFEZXZpY2VzLmlkbCAqLywKKwkJCQk5OTk0RTVEODFCRDg0
M0EzMDBGMkQ4MzUgLyogTWVkaWFEZXZpY2VzLmpzICovLAogCQkJCTA3Mzk0RUM3MUJBQjJDQ0Qw
MEJFOTlDRCAvKiBNZWRpYURldmljZXNSZXF1ZXN0LmNwcCAqLywKIAkJCQkwNzM5NEVDOTFCQUIy
Q0Q3MDBCRTk5Q0QgLyogTWVkaWFEZXZpY2VzUmVxdWVzdC5oICovLAogCQkJCTA3QzU5QjY1MTdG
Nzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5jcHAgKi8sCkBAIC0xNTM2MSw3ICsx
NTM2Miw2IEBACiAJCTA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBXZWJLaXQgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTk5MDhCMEVDMUJDQUNGMUYw
MEVEMEY2NSAvKiBnZW5lcmF0ZS1qcy1idWlsdGlucyAqLywKIAkJCQk2NUM5N0FGMjA4RUE5MDg4
MDBBQ0QyNzMgLyogY29uZmlnLmggKi8sCiAJCQkJRURFQzk4MDIwQUVEN0UxNzAwNTkxMzdGIC8q
IFdlYkNvcmVQcmVmaXguaCAqLywKIAkJCQk5MzA3MDYxMzA5RTBDQTgyMDBCMTdGRTQgLyogRGVy
aXZlZFNvdXJjZXMubWFrZSAqLywKQEAgLTE3MjY5LDkgKzE3MjY5LDkgQEAKIAkJCQkxQTE0MTRC
NDEzQTBGMDUwMDAxOTk5NkMgLyogV2ViS2l0Rm9udEZhbWlseU5hbWVzLmggKi8sCiAJCQkJOTlD
QzBCNjgxOEJFQTFGRjAwNkNFQkNDIC8qIFdlYlJlcGxheUlucHV0cy5jcHAgKi8sCiAJCQkJOTlD
QzBCNjkxOEJFQTFGRjAwNkNFQkNDIC8qIFdlYlJlcGxheUlucHV0cy5oICovLAorCQkJCTk5MDhC
MEY5MUJDQUQwN0QwMEVEMEY3NSAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmNwcCAqLywKIAkJ
CQk5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTggLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oICov
LAogCQkJCTlCMDNEODA3MUJCMzExMEQwMEI3NjRFOCAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5z
V3JhcHBlci5oICovLAotCQkJCTk5MDhCMEY5MUJDQUQwN0QwMEVEMEY3NSAvKiBXcml0YWJsZVN0
cmVhbUJ1aWx0aW5zLmNwcCAqLywKIAkJCQk5OTA4QjBGRDFCQ0FEMDdEMDBFRDBGNzUgLyogV3Jp
dGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5jcHAgKi8sCiAJCQkJOUIwM0Q4MDYxQkIzMTEw
RDAwQjc2NEU5IC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLywKIAkJCQk5
QjAzRDgwNzFCQjMxMTBEMDBCNzY0RUEgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlu
c1dyYXBwZXIuaCAqLywKQEAgLTI5MTQxLDYgKzI5MTQxLDcgQEAKIAkJCQk5NzQ2QUYyNjE0RjRE
REU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGQjYyNTJFMThERTFCMTUwMEEwN0MwNSAvKiBHZW9tZXRyeVV0aWxpdGllcy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0NkM4M0VGRDFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkQ1MDM2NjgxQkNERERDNDAwRTIwQkIzIC8qIEdlc3R1
cmVFdmVudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJBRkZDODMwRDAwQTVDMTAwMzAwNzRE
IC8qIEdseXBoUGFnZU1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzUzQzYwODBEQTU2QzU3
MDAyMUVCNUQgLyogR3JhZGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1M0M2MEIwREE1
NkNGMTAwMjFFQjVEIC8qIEdyYWRpZW50Q0cuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTc2OSw3
ICsyOTc3MCw2IEBACiAJCQkJMDcwNTg1MzMxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFj
a0NvbnN0cmFpbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MDU4NTM1MTdGREU2RDkwMDVG
MkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUUxMDc0MDBEMEU3N0JEQzAwMDMzQUYyNCAvKiBKU01lc3NhZ2VDaGFubmVsLmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCTBGRUYyMENFMUJENEEyNDEwMDEyOEU1RCAvKiBMZW5ndGhTaXplLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUUxQTVGOTlCMEU3RUFBMjUwMEFGODVFQSAvKiBKU01lc3NhZ2VD
aGFubmVsQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc1NzkzRUM4MEQwQ0U3MkQwMDdG
QzBBQyAvKiBKU01lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTBCN0U3MjEw
NDVGQUIwMDBEODIyNEYgLyogSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0zMDE4Miw2ICszMDE4Miw3IEBACiAJCQkJNTFCMjQxN0IwRDkzMUYzRjAwRTgzRjVDIC8q
IExlZ2FjeVdlYkFyY2hpdmVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0U2NUJFQTBFQUNE
RjE2MDA3RTQ1MzMgLyogTGVuZ3RoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU1NUY0OTdBMTUx
Qjg4ODAwMEJCNjdEQiAvKiBMZW5ndGhGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MEZFRjIwQ0UxQkQ0QTI0MTAwMTI4RTVEIC8qIExlbmd0aFNpemUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRkZCNjk4Q0MxODMzRUUwRDAwMTU4QTMxIC8qIExpbmVCcmVha2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTg5QjVFQUExMTFFODAwM0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5nLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZGQjY5OENGMTgzNDAyQkIwMDE1OEEzMSAvKiBMaW5lSW5mby5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTMwNTEzLDcgKzMwNTE0LDYgQEAKIAkJCQlEMzAyNzU0OTEy
QTVGRTg0MDA0QkQ4MjggLyogUmVuZGVyRGV0YWlsc01hcmtlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5QjMyQ0RBQTEzREY3RkE5MDBGMzREMTMgLyogUmVuZGVyZWRQb3NpdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFNDNBMDIzRDE3RUIzNzEzMDA0Q0REMjUgLyogUmVuZGVyRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwRkVGMjBEMDFCRDRBNjRGMDAxMjhFNUQgLyogUmVu
ZGVyU3R5bGVDb25zdGFudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1QjdBNTQxMEY2NUQ3
QTAwMzc2MzAyIC8qIFJlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4RUE3M0MzMEExOTAwRTMwMEE4RUY1RiAvKiBSZW5kZXJGaWVsZHNldC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwNjZDNzczMDBBQjYwM0ZEMDAyMzhDQzQgLyogUmVuZGVyRmlsZVVwbG9hZENv
bnRyb2wuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDU4NSw2ICszMDU4NSw3IEBACiAJCQkJQUIy
NDdBNkMwQUZENjM4MzAwM0ZBNUZEIC8qIFJlbmRlclNsaWRlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkzMTk1NUE4NjE2MEQxOTkwMDA4NTgwMjUgLyogUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4QzhGQUQwRERDRDMxQjAwQjU5MkY0IC8qIFJlbmRl
clN0eWxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRUYyMEQwMUJENEE2NEYwMDEyOEU1RCAv
KiBSZW5kZXJTdHlsZUNvbnN0YW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjRFNTcxNzEz
MTMyNzYyMDBDRjg1QUYgLyogUmVuZGVyU1ZHQWxsSW5PbmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThERjRBRUMwOTgwQzQyQzAwNTI5ODFCIC8qIFJlbmRlclRhYmxlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTZFRDg3OEM0MTQ3NDkzRjQwMDRDMzU5NyAvKiBSZW5kZXJUYWJsZUNhcHRpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDkwMCw3ICszMDkwMSw2IEBACiAJCQkJMjREOTEyQjcx
M0NBOUE2OTAwRDIxOTE1IC8qIFNWR0FsdEdseXBoSXRlbUVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQjIyMjc5NzYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuZ2xlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyMjI3OTc5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlQ29sb3JF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTJENTAzNjY4MUJDREREQzQwMEUyMEJCMyAv
KiBHZXN0dXJlRXZlbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzNjJDN0I5MTNBQzZGMUEw
MDM0NEJFQiAvKiBTVkdBbmltYXRlZEFuZ2xlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzMUEz
MDg4MTNCOEY5NzgwMDc3OTFFNCAvKiBTVkdBbmltYXRlZEJvb2xlYW4uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDNBNjI1RjkxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmNwcAppbmRleCAxN2UyN2JjNmQ5NmY1ZDBlN2FlN2ZmMTg0N2YwNjRhNTkzMDc0YWNk
Li5iZGRjMjBjZmU2Mjc2ZDU2YmNjY2Q5OTcxYzQ2YjVmZDI5NTg3OGVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTk2LDE5ICs5Niwx
OSBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0RPTVdp
bmRvd1NoZWxsKiBzaGVsbCkKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKFwKICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5G
dW5jdGlvbnMoKS5yZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zKCkubmFtZSMjUHJpdmF0
ZU5hbWUoKSwgXAogICAgICAgICAgICAgbV9wcml2YXRlRnVuY3Rpb25zLnJlYWRhYmxlU3RyZWFt
SW50ZXJuYWxzKCkubV8jI25hbWUjI0Z1bmN0aW9uLmdldCgpICwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5KSwKLSAgICAgICAgV0VCQ09SRVJFQURBQkxFU1RSRUFNSU5URVJOQUxTX0ZPUkVBQ0hfQlVJ
TFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfR0xPQkFMX1NUQVRJQykKKyAgICAgICAgV0VCQ09S
RV9GT1JFQUNIX1JFQURBQkxFU1RSRUFNSU5URVJOQUxTX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShE
RUNMQVJFX0dMT0JBTF9TVEFUSUMpCiAjdW5kZWYgREVDTEFSRV9HTE9CQUxfU1RBVElDCiAjZGVm
aW5lIERFQ0xBUkVfR0xPQkFMX1NUQVRJQyhuYW1lKVwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKFwKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50
RGF0YSktPmJ1aWx0aW5GdW5jdGlvbnMoKS5zdHJlYW1JbnRlcm5hbHNCdWlsdGlucygpLm5hbWUj
I1ByaXZhdGVOYW1lKCksIFwKICAgICAgICAgICAgIG1fcHJpdmF0ZUZ1bmN0aW9ucy5zdHJlYW1J
bnRlcm5hbHMoKS5tXyMjbmFtZSMjRnVuY3Rpb24uZ2V0KCkgLCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpLAotICAgICAgICBXRUJDT1JFU1RSRUFNSU5URVJOQUxTX0ZPUkVBQ0hfQlVJTFRJTl9GVU5D
VElPTl9OQU1FKERFQ0xBUkVfR0xPQkFMX1NUQVRJQykKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNI
X1NUUkVBTUlOVEVSTkFMU19CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9HTE9CQUxfU1RB
VElDKQogI3VuZGVmIERFQ0xBUkVfR0xPQkFMX1NUQVRJQwogI2RlZmluZSBERUNMQVJFX0dMT0JB
TF9TVEFUSUMobmFtZSlcCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhcCiAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluRnVu
Y3Rpb25zKCkud3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucygpLm5hbWUjI1ByaXZhdGVO
YW1lKCksIFwKICAgICAgICAgICAgIG1fcHJpdmF0ZUZ1bmN0aW9ucy53cml0YWJsZVN0cmVhbUlu
dGVybmFscygpLm1fIyNuYW1lIyNGdW5jdGlvbi5nZXQoKSAsIERvbnREZWxldGUgfCBSZWFkT25s
eSksCi0gICAgICAgIFdFQkNPUkVXUklUQUJMRVNUUkVBTUlOVEVSTkFMU19GT1JFQUNIX0JVSUxU
SU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0dMT0JBTF9TVEFUSUMpCisgICAgICAgIFdFQkNPUkVf
Rk9SRUFDSF9XUklUQUJMRVNUUkVBTUlOVEVSTkFMU19CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVD
TEFSRV9HTE9CQUxfU1RBVElDKQogI3VuZGVmIERFQ0xBUkVfR0xPQkFMX1NUQVRJQwogI2VuZGlm
CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2dlbmVyYXRlLWpzLWJ1aWx0aW5z
IGIvU291cmNlL1dlYkNvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDYxZGQ2NDJlN2NhMmY4OWE3OGUxZDFhNTAzZDhiOTc4MmI0MDQ0ODAuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMKKysrIC9kZXYvbnVsbApAQCAtMSwxODEgKzAsMCBAQAot
IyEvdXNyL2Jpbi9weXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0Ogot
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotIyBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotIyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSMgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotIyBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotaW1wb3J0IGFyZ3BhcnNlCi1pbXBv
cnQgZmlsZWNtcAotaW1wb3J0IG9zCi1pbXBvcnQgc3VicHJvY2VzcwotCi1mcm9tIHN0cmluZyBp
bXBvcnQgVGVtcGxhdGUKLQotCi1wYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCi1w
YXJzZXIuYWRkX2FyZ3VtZW50KCctLW91dHB1dF9kaXInLCBkZWZhdWx0PScnLCBoZWxwPSdvdXRw
dXQgZGlyZWN0b3J5JykKLXBhcnNlci5hZGRfYXJndW1lbnQoJy0taW5wdXQnLCBoZWxwPSdwYXRo
IHRvIGlucHV0IEpTIGZpbGUnKQotcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1nZW5lcmF0ZV9qc19i
dWlsdGluc19wYXRoJywgaGVscD0ncGF0aCB0byBkaXJlY3RvcnkgY29udGFpbmluZyBKYXZhU2Ny
aXB0Q29yZVwncyBnZW5lcmF0ZS1qcy1idWlsdGlucycpCi0KLWFyZ3MgPSBwYXJzZXIucGFyc2Vf
YXJncygpCi1maWxlbmFtZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShhcmdz
LmlucHV0KSlbMF0KLQotIyBnZW5lcmF0ZSBKUyBidWlsdGlucwotbmFtZXNwYWNlID0gIldlYkNv
cmUiCi1wcmVmaXggPSAiV0VCQ09SRSIgKyBmaWxlbmFtZS51cHBlcigpCi1vdXRwdXQgPSBvcy5w
YXRoLmpvaW4oYXJncy5vdXRwdXRfZGlyLCBmaWxlbmFtZSArICJCdWlsdGlucyIpCi1qc2NfZ2Vu
ZXJhdGVfYnVpbHRpbl9zY3JpcHQgPSBvcy5wYXRoLmpvaW4oYXJncy5nZW5lcmF0ZV9qc19idWls
dGluc19wYXRoLCAiZ2VuZXJhdGUtanMtYnVpbHRpbnMiKQotCi1zdWJwcm9jZXNzLmNhbGwoWyJw
eXRob24iLCBqc2NfZ2VuZXJhdGVfYnVpbHRpbl9zY3JpcHQsICItLW91dHB1dCIsIG91dHB1dCwg
Ii0tbmFtZXNwYWNlIiwgbmFtZXNwYWNlLCAiLS1wcmVmaXgiLCBwcmVmaXgsIGFyZ3MuaW5wdXRd
LCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCi0KLSMgZ2VuZXJhdGUgSlMgYnVpbHRpbnMgd3Jh
cHBlcgotb3V0cHV0X2Jhc2UgPSBvdXRwdXQgKyAiV3JhcHBlciIKLQotYnVpbHRpbnNXcmFwcGVy
SGVhZGVyID0gb3BlbihvdXRwdXRfYmFzZSArICIuaC50bXAiLCAidyIpCi0KLWJ1aWx0aW5zV3Jh
cHBlckhlYWRlci53cml0ZShUZW1wbGF0ZSgKLSIiIgotLyogR2VuZXJhdGVkIGJ5IGdlbmVyYXRl
LWpzLWJ1aWx0aW5zIGRvIG5vdCBoYW5kIGVkaXQuICovCi0KLS8qCi0gKgotICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqICBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0x
MzAxICBVU0EKLSAqLwotCi0jaWZuZGVmICR7RmlsZW5hbWV9QnVpbHRpbnNXcmFwcGVyX2gKLSNk
ZWZpbmUgJHtGaWxlbmFtZX1CdWlsdGluc1dyYXBwZXJfaAotCi0jaW5jbHVkZSAiJHtGaWxlbmFt
ZX1CdWlsdGlucy5oIgotI2luY2x1ZGUgPGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmg+Ci0jaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+Ci0jaW5jbHVkZSA8cnVu
dGltZS9JZGVudGlmaWVyLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU0Z1bmN0aW9uLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgJHtGaWxlbmFtZX1CdWlsdGluc1dyYXBwZXIgOiBw
cml2YXRlIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCAke0Zp
bGVuYW1lfUJ1aWx0aW5zV3JhcHBlcihKU0M6OlZNKiB2bSkKLSAgICAgICAgOiBtX3ZtKCp2bSkK
LSAgICAgICAgJHtQcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJ
WkVfQlVJTFRJTl9OQU1FUykKLSNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1C
RVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UoSlNDOjpt
YWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgp
KSkKLSAgICAgICAgJHtQcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTihJTklUSUFMSVpFX0JVSUxUSU5f
U09VUkNFX01FTUJFUlMpCi0jdW5kZWYgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJT
Ci0gICAgewotICAgIH0KLQotI2RlZmluZSBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUyhuYW1l
LCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXFwKLSAgICBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFxcCi0gICAgY29uc3QgSlNDOjpTb3VyY2VDb2Rl
JiBuYW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9Ci0gICAg
JHtQcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTihFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUykKLSN1
bmRlZiBFWFBPU0VfQlVJTFRJTl9FWEVDVVRBQkxFUwotCi0gICAgJHtQcmVmaXh9X0ZPUkVBQ0hf
QlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09S
KQotCi0gICAgdm9pZCBleHBvcnROYW1lcygpOwotCi1wcml2YXRlOgotICAgIEpTQzo6Vk0mIG1f
dm07Ci0KLSAgICAke1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFS
RV9CVUlMVElOX05BTUVTKQotCi0jZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVS
UyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXFwKLSAgICBKU0M6OlNvdXJjZUNvZGUgbV8j
I25hbWUjI1NvdXJjZTtcXAotICAgIEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKLSAgICAke1ByZWZpeH1fRk9SRUFDSF9CVUlM
VElOKERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKLSN1bmRlZiBERUNMQVJFX0JVSUxU
SU5fU09VUkNFX01FTUJFUlMKLQotfTsKLQotI2RlZmluZSBERUZJTkVfQlVJTFRJTl9FWEVDVVRB
QkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXFwKLWlubGluZSBKU0M6OlVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiAke0ZpbGVuYW1lfUJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhl
Y3V0YWJsZSgpIFxcCi17XFwKLSAgICBpZiAoIW1fIyNuYW1lIyNFeGVjdXRhYmxlKVxcCi0gICAg
ICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU+KEpTQzo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUobV92bSwgbV8jI25hbWUj
I1NvdXJjZSwgZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCksIHNfIyNuYW1lIyNDb25zdHJ1Y3RB
YmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRhYmxlKTtcXAotICAgIHJldHVybiBtXyMj
bmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtcXAotfQotJHtQcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTihE
RUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKLSN1bmRlZiBERUZJTkVfQlVJTFRJTl9FWEVDVVRB
QkxFUwotCi1pbmxpbmUgdm9pZCAke0ZpbGVuYW1lfUJ1aWx0aW5zV3JhcHBlcjo6ZXhwb3J0TmFt
ZXMoKQotewotI2RlZmluZSBFWFBPUlRfRlVOQ1RJT05fTkFNRShuYW1lKSBtX3ZtLnByb3BlcnR5
TmFtZXMtPmFwcGVuZEV4dGVybmFsTmFtZShuYW1lIyNQdWJsaWNOYW1lKCksIG5hbWUjI1ByaXZh
dGVOYW1lKCkpOwotICAgICR7UHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShF
WFBPUlRfRlVOQ1RJT05fTkFNRSkKLSN1bmRlZiBFWFBPUlRfRlVOQ1RJT05fTkFNRQotfQotCi1j
bGFzcyAke0ZpbGVuYW1lfUJ1aWx0aW5GdW5jdGlvbnMgewotcHVibGljOgotICAgIGV4cGxpY2l0
ICR7RmlsZW5hbWV9QnVpbHRpbkZ1bmN0aW9ucyhKU0M6OlZNJiB2bSkgOiBtX3ZtKHZtKSB7IH0K
LQotICAgIHZvaWQgaW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0Jik7Ci0gICAgdm9pZCB2aXNpdChK
U0M6OlNsb3RWaXNpdG9yJik7Ci0KLXB1YmxpYzoKLSAgICBKU0M6OlZNJiBtX3ZtOwotCi0jZGVm
aW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhmdW5jdGlvbk5hbWUpIFxcCi0gICAg
SlNDOjpXcml0ZUJhcnJpZXI8SlNDOjpKU0Z1bmN0aW9uPiBtXyMjZnVuY3Rpb25OYW1lIyNGdW5j
dGlvbjsKLSAgICAke1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFS
RV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQotI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0Vf
TUVNQkVSUwotfTsKLQotaW5saW5lIHZvaWQgJHtGaWxlbmFtZX1CdWlsdGluRnVuY3Rpb25zOjpp
bml0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSNkZWZpbmUgRVhQT1JU
X0ZVTkNUSU9OKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aClcXAotICAgIG1fIyNmdW5j
dGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rp
b246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihtX3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0p
LCAmZ2xvYmFsT2JqZWN0KSk7Ci0gICAgJHtQcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTihFWFBPUlRf
RlVOQ1RJT04pCi0jdW5kZWYgRVhQT1JUX0ZVTkNUSU9OCi19Ci0KLWlubGluZSB2b2lkICR7Rmls
ZW5hbWV9QnVpbHRpbkZ1bmN0aW9uczo6dmlzaXQoSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikK
LXsKLSNkZWZpbmUgVklTSVRfRlVOQ1RJT04obmFtZSkgdmlzaXRvci5hcHBlbmQoJm1fIyNuYW1l
IyNGdW5jdGlvbik7Ci0gICAgJHtQcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1F
KFZJU0lUX0ZVTkNUSU9OKQotI3VuZGVmIFZJU0lUX0ZVTkNUSU9OCi19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vICR7RmlsZW5hbWV9QnVpbHRpbnNXcmFwcGVyX2gKLSIi
Iikuc3Vic3RpdHV0ZShkaWN0KEZpbGVuYW1lPWZpbGVuYW1lLCBQcmVmaXg9cHJlZml4KSkpCi0K
LWJ1aWx0aW5zV3JhcHBlckhlYWRlci5jbG9zZSgpCi0KLWlmIChub3Qgb3MucGF0aC5leGlzdHMo
b3V0cHV0X2Jhc2UgKyAiLmgiKSkgb3IgKG5vdCBmaWxlY21wLmNtcChvdXRwdXRfYmFzZSArICIu
aC50bXAiLCBvdXRwdXRfYmFzZSArICIuaCIsIHNoYWxsb3c9RmFsc2UpKToKLSAgICBpZiAob3Mu
cGF0aC5leGlzdHMob3V0cHV0X2Jhc2UgKyAiLmgiKSk6Ci0gICAgICAgIG9zLnJlbW92ZShvdXRw
dXRfYmFzZSArICIuaCIpCi0gICAgb3MucmVuYW1lKG91dHB1dF9iYXNlICsgIi5oLnRtcCIsIG91
dHB1dF9iYXNlICsgIi5oIikKLWVsc2U6Ci0gICAgb3MucmVtb3ZlKG91dHB1dF9iYXNlICsgIi5o
LnRtcCIpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggZjU5NjQyZjllNDJjMzFhNzczODlhOTcwN2EyOGJmZmM4ZWUxYzVhOC4uYjk0M2M4ZWUwZmFh
YzY3YjIyN2M4M2I1YWQxYTU3N2JhZTQxMTRhMiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTEwLTIxICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFJlc3RydWN0dXJlIGdlbmVyYXRl
LWpzLWJpbmRpbmdzIHNjcmlwdCB0byBiZSBtb2R1bGFyIGFuZCB0ZXN0YWJsZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5OTI5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgc3R1YiBzaGVsbCBz
Y3JpcHQgYW5kIGJhc2ljIHdlYmtpdHB5IHN1cHBvcnQgZm9yIHJ1bm5pbmcgYnVpbHRpbnMKKyAg
ICAgICAgZ2VuZXJhdG9yIHRlc3RzLgorCisgICAgICAgICogU2NyaXB0cy9ydW4tYnVpbHRpbnMt
Z2VuZXJhdG9yLXRlc3RzOiBBZGRlZC4KKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvY29kZWdlbi9fX2luaXRfXy5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9jb2RlZ2VuL21haW4ucHk6IEFkZGVkLgorCisgICAgICAgICAgICBUaGUgb25s
eSBpbnRlcmVzdGluZyBkaWZmZXJlbmNlIGhlcmUgZnJvbSB0aGUgaW5zcGVjdG9yIHByb3RvY29s
CisgICAgICAgICAgICBnZW5lcmF0b3IgZXF1aXZhbGVudCBpcyB0aGF0IHRoaXMgaW1wbGVtZW50
YXRpb24gZGVjb2RlcyB0aGUgdGFyZ2V0CisgICAgICAgICAgICBmcmFtZXdvcmsgYW5kIG91dHB1
dCBtb2RlIChjb21iaW5lZCBvciBzZXBhcmF0ZSkgZnJvbSB0aGUgdGVzdCdzIGZpbGUgbmFtZS4K
KworICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3JUZXN0cyk6CisgICAgICAgIChCdWlsdGluc0dl
bmVyYXRvclRlc3RzLl9faW5pdF9fKToKKyAgICAgICAgKEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHMu
Z2VuZXJhdGVfZnJvbV9qc19idWlsdGlucyk6CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvclRl
c3RzLndyaXRlX2Vycm9yX2ZpbGUpOgorICAgICAgICAoQnVpbHRpbnNHZW5lcmF0b3JUZXN0cy5k
ZXRlY3RfY2hhbmdlcyk6CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvclRlc3RzLnJ1bl90ZXN0
cyk6CisgICAgICAgIChCdWlsdGluc0dlbmVyYXRvclRlc3RzLm1haW4pOgorCiAyMDE1LTEwLTIx
ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgRmFpbHVyZXMgaW4g
UHV0U3RhY2tTaW5raW5nUGhhc2Ugc2hvdWxkIGJlIGxlc3Mgc2V2ZXJlCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3J1bi1idWlsdGlucy1nZW5lcmF0b3ItdGVzdHMgYi9Ub29scy9TY3JpcHRz
L3J1bi1idWlsdGlucy1nZW5lcmF0b3ItdGVzdHMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM5OGM3OGNhMTBlYzU5
NzYyNjYxMmM4NTU1M2FiZDFhNGU2ZmJkNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Njcmlw
dHMvcnVuLWJ1aWx0aW5zLWdlbmVyYXRvci10ZXN0cwpAQCAtMCwwICsxLDQyIEBACisjIS91c3Iv
YmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2lt
cG9ydCBzeXMKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZXhlY3V0aXZlCisK
K2RlZiBtYWluKGFyZ3YpOgorICAgICIiIlJ1bnMgdGhlIEpTIGJ1aWx0aW5zIGNvZGUgZ2VuZXJh
dG9yIG9uIHRlc3QgaW5wdXQgZmlsZXMgYW5kIGNvbXBhcmVzCisgICAgdGhlIHJlc3VsdHMgd2l0
aCByZWZlcmVuY2UgZmlsZXMuCisKKyAgICBPcHRpb25zOgorICAgICAgIC0tcmVzZXQtcmVzdWx0
czogT3ZlcndyaXRlcyB0aGUgcmVmZXJlbmNlIGZpbGVzIHdpdGggdGhlIGdlbmVyYXRlZCByZXN1
bHRzLgorCisgICAgIiIiCisgICAgcmVzZXRfcmVzdWx0cyA9ICItLXJlc2V0LXJlc3VsdHMiIGlu
IGFyZ3YKKworICAgIGZyb20gd2Via2l0cHkuY29kZWdlbi5tYWluIGltcG9ydCBCdWlsdGluc0dl
bmVyYXRvclRlc3RzCisgICAgcmV0dXJuIEJ1aWx0aW5zR2VuZXJhdG9yVGVzdHMocmVzZXRfcmVz
dWx0cywgZXhlY3V0aXZlLkV4ZWN1dGl2ZSgpKS5tYWluKCkKKworaWYgX19uYW1lX18gPT0gJ19f
bWFpbl9fJzoKKyAgICBzeXMuZXhpdChtYWluKHN5cy5hcmd2KSkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29kZWdlbi9fX2luaXRfXy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29kZWdlbi9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjY1YmVlNWJiNzdlOTZlYmM3
Y2Q5YzQ3NjQwNjkwZmJkYThhYzE5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb2RlZ2VuL19faW5pdF9fLnB5CkBAIC0wLDAgKzEgQEAKKyMgUmVxdWlyZWQgZm9y
IFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZSBmaWxlcwpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb2RlZ2VuL21haW4ucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvZGVnZW4vbWFpbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDM5NmRiOWEzOGJlMGYw
N2JlMTg2M2I4OGFlZDQxZWRmOTdkOTY5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb2RlZ2VuL21haW4ucHkKQEAgLTAsMCArMSwxNDQgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUyAiQVMKKyMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECisjIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQorIyBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgSE9M
REVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IG9zCitp
bXBvcnQgb3MucGF0aAoraW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworaW1wb3J0IHRlbXBmaWxl
Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uZGV0ZWN0aW9uIGltcG9ydCBkZXRl
Y3Rfc2NtX3N5c3RlbQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBv
cnQgU2NyaXB0RXJyb3IKKworCitjbGFzcyBCdWlsdGluc0dlbmVyYXRvclRlc3RzOgorCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHJlc2V0X3Jlc3VsdHMsIGV4ZWN1dGl2ZSk6CisgICAgICAgIHNl
bGYucmVzZXRfcmVzdWx0cyA9IHJlc2V0X3Jlc3VsdHMKKyAgICAgICAgc2VsZi5leGVjdXRpdmUg
PSBleGVjdXRpdmUKKworICAgIGRlZiBnZW5lcmF0ZV9mcm9tX2pzX2J1aWx0aW5zKHNlbGYsIGJ1
aWx0aW5zX2ZpbGUsIG91dHB1dF9kaXJlY3RvcnksIGZyYW1ld29ya19uYW1lPSIiLCBjb21iaW5l
ZF9vdXRwdXRzPUZhbHNlKToKKyAgICAgICAgY21kID0gWydweXRob24nLAorICAgICAgICAgICAg
ICAgJ0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRpbnMucHknLAorICAg
ICAgICAgICAgICAgJy0tb3V0cHV0LWRpcmVjdG9yeScsIG91dHB1dF9kaXJlY3RvcnksCisgICAg
ICAgICAgICAgICAnLS1mb3JjZScsCisgICAgICAgICAgICAgICAnLS1mcmFtZXdvcmsnLCBmcmFt
ZXdvcmtfbmFtZSwKKyAgICAgICAgICAgICAgICctLXRlc3QnXQorCisgICAgICAgIGlmIGNvbWJp
bmVkX291dHB1dHM6CisgICAgICAgICAgICBjbWQuYXBwZW5kKCctLWNvbWJpbmVkJykKKworICAg
ICAgICBjbWQuYXBwZW5kKGJ1aWx0aW5zX2ZpbGUpCisKKyAgICAgICAgZXhpdF9jb2RlID0gMAor
ICAgICAgICB0cnk6CisgICAgICAgICAgICBzdGRlcnJfb3V0cHV0ID0gc2VsZi5leGVjdXRpdmUu
cnVuX2NvbW1hbmQoY21kKQorICAgICAgICAgICAgaWYgc3RkZXJyX291dHB1dDoKKyAgICAgICAg
ICAgICAgICBzZWxmLndyaXRlX2Vycm9yX2ZpbGUoYnVpbHRpbnNfZmlsZSwgb3V0cHV0X2RpcmVj
dG9yeSwgc3RkZXJyX291dHB1dCkKKyAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgorICAg
ICAgICAgICAgcHJpbnQgZS5vdXRwdXQKKyAgICAgICAgICAgIGV4aXRfY29kZSA9IGUuZXhpdF9j
b2RlCisgICAgICAgIHJldHVybiBleGl0X2NvZGUKKworICAgIGRlZiB3cml0ZV9lcnJvcl9maWxl
KHNlbGYsIGlucHV0X2ZpbGVwYXRoLCBvdXRwdXRfZGlyZWN0b3J5LCBlcnJvcl9vdXRwdXQpOgor
ICAgICAgICBvdXRwdXRfZmlsZXBhdGggPSBvcy5wYXRoLmpvaW4ob3V0cHV0X2RpcmVjdG9yeSwg
b3MucGF0aC5iYXNlbmFtZShpbnB1dF9maWxlcGF0aCkgKyAnLWVycm9yJykKKworICAgICAgICB3
aXRoIG9wZW4ob3V0cHV0X2ZpbGVwYXRoLCAidyIpIGFzIG91dHB1dF9maWxlOgorICAgICAgICAg
ICAgb3V0cHV0X2ZpbGUud3JpdGUoZXJyb3Jfb3V0cHV0KQorCisgICAgZGVmIGRldGVjdF9jaGFu
Z2VzKHNlbGYsIHdvcmtfZGlyZWN0b3J5LCByZWZlcmVuY2VfZGlyZWN0b3J5KToKKyAgICAgICAg
Y2hhbmdlc19mb3VuZCA9IEZhbHNlCisgICAgICAgIGZvciBvdXRwdXRfZmlsZSBpbiBvcy5saXN0
ZGlyKHdvcmtfZGlyZWN0b3J5KToKKyAgICAgICAgICAgIGNtZCA9IFsnZGlmZicsCisgICAgICAg
ICAgICAgICAgICAgJy11JywKKyAgICAgICAgICAgICAgICAgICAnLU4nLAorICAgICAgICAgICAg
ICAgICAgIG9zLnBhdGguam9pbihyZWZlcmVuY2VfZGlyZWN0b3J5LCBvdXRwdXRfZmlsZSksCisg
ICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHdvcmtfZGlyZWN0b3J5LCBvdXRwdXRfZmls
ZSldCisKKyAgICAgICAgICAgIGV4aXRfY29kZSA9IDAKKyAgICAgICAgICAgIHRyeToKKyAgICAg
ICAgICAgICAgICBvdXRwdXQgPSBzZWxmLmV4ZWN1dGl2ZS5ydW5fY29tbWFuZChjbWQpCisgICAg
ICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IsIGU6CisgICAgICAgICAgICAgICAgb3V0cHV0ID0g
ZS5vdXRwdXQKKyAgICAgICAgICAgICAgICBleGl0X2NvZGUgPSBlLmV4aXRfY29kZQorCisgICAg
ICAgICAgICBpZiBleGl0X2NvZGUgb3Igb3V0cHV0OgorICAgICAgICAgICAgICAgIHByaW50ICdG
QUlMOiAlcycgJSBvdXRwdXRfZmlsZQorICAgICAgICAgICAgICAgIHByaW50IG91dHB1dAorICAg
ICAgICAgICAgICAgIGNoYW5nZXNfZm91bmQgPSBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIHByaW50ICdQQVNTOiAlcycgJSBvdXRwdXRfZmlsZQorICAgICAgICByZXR1
cm4gY2hhbmdlc19mb3VuZAorCisgICAgZGVmIHJ1bl90ZXN0cyhzZWxmLCBpbnB1dF9kaXJlY3Rv
cnksIHJlZmVyZW5jZV9kaXJlY3RvcnkpOgorICAgICAgICB3b3JrX2RpcmVjdG9yeSA9IHJlZmVy
ZW5jZV9kaXJlY3RvcnkKKworICAgICAgICBwYXNzZWQgPSBUcnVlCisgICAgICAgIGZvciBpbnB1
dF9maWxlIGluIG9zLmxpc3RkaXIoaW5wdXRfZGlyZWN0b3J5KToKKyAgICAgICAgICAgICh0ZXN0
X25hbWUsIGV4dGVuc2lvbikgPSBvcy5wYXRoLnNwbGl0ZXh0KGlucHV0X2ZpbGUpCisgICAgICAg
ICAgICBpZiBleHRlbnNpb24gIT0gJy5qcyc6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAg
ICAgICAgICAgICMgR2VuZXJhdGUgb3V0cHV0IGludG8gdGhlIHdvcmsgZGlyZWN0b3J5IChlaXRo
ZXIgdGhlIGdpdmVuIG9uZSBvciBhCisgICAgICAgICAgICAjIHRlbXAgb25lIGlmIG5vdCByZXNl
dF9yZXN1bHRzIGlzIHBlcmZvcm1lZCkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLnJlc2V0X3Jl
c3VsdHM6CisgICAgICAgICAgICAgICAgd29ya19kaXJlY3RvcnkgPSB0ZW1wZmlsZS5ta2R0ZW1w
KCkKKworICAgICAgICAgICAgKGZyYW1ld29ya19uYW1lLCB0ZXN0X2Nhc2UsIG91dHB1dF9tb2Rl
KSA9IHRlc3RfbmFtZS5zcGxpdCgnLScpCisgICAgICAgICAgICBpZiBub3QgZnJhbWV3b3JrX25h
bWUgb3Igbm90IG91dHB1dF9tb2RlIG9yIG5vdCB0ZXN0X2Nhc2U6CisgICAgICAgICAgICAgICAg
cHJpbnQgIkludmFsaWQgdGVzdCBjYXNlIG5hbWU6IHNob3VsZCBiZSBGcmFtZXdvcmstVGVzdENh
c2VOYW1lLU91dHB1dE1vZGUuanMiCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAg
ICAgICAgY29tYmluZWRfb3V0cHV0cyA9IG91dHB1dF9tb2RlID09ICJDb21iaW5lZCIKKyAgICAg
ICAgICAgIGlmIHNlbGYuZ2VuZXJhdGVfZnJvbV9qc19idWlsdGlucyhvcy5wYXRoLmpvaW4oaW5w
dXRfZGlyZWN0b3J5LCBpbnB1dF9maWxlKSwgd29ya19kaXJlY3RvcnksIGZyYW1ld29ya19uYW1l
PWZyYW1ld29ya19uYW1lLCBjb21iaW5lZF9vdXRwdXRzPWNvbWJpbmVkX291dHB1dHMpOgorICAg
ICAgICAgICAgICAgIHBhc3NlZCA9IEZhbHNlCisKKyAgICAgICAgICAgIGlmIHNlbGYucmVzZXRf
cmVzdWx0czoKKyAgICAgICAgICAgICAgICBwcmludCAiUmVzZXQgcmVzdWx0cyBmb3IgdGVzdDog
JXMiICUgKGlucHV0X2ZpbGUpCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAg
ICAgIyBEZXRlY3QgY2hhbmdlcworICAgICAgICAgICAgaWYgc2VsZi5kZXRlY3RfY2hhbmdlcyh3
b3JrX2RpcmVjdG9yeSwgcmVmZXJlbmNlX2RpcmVjdG9yeSk6CisgICAgICAgICAgICAgICAgcGFz
c2VkID0gRmFsc2UKKyAgICAgICAgICAgIHNodXRpbC5ybXRyZWUod29ya19kaXJlY3RvcnkpCisK
KyAgICAgICAgcmV0dXJuIHBhc3NlZAorCisgICAgZGVmIG1haW4oc2VsZik6CisgICAgICAgIGN1
cnJlbnRfc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0ob3MuY3VyZGlyKQorICAgICAgICBvcy5jaGRp
cihvcy5wYXRoLmpvaW4oY3VycmVudF9zY20uY2hlY2tvdXRfcm9vdCwgJ1NvdXJjZScpKQorCisg
ICAgICAgIGFsbF90ZXN0c19wYXNzZWQgPSBUcnVlCisKKyAgICAgICAgaW5wdXRfZGlyZWN0b3J5
ID0gb3MucGF0aC5qb2luKCdKYXZhU2NyaXB0Q29yZScsICdTY3JpcHRzJywgJ3Rlc3RzJywgJ2J1
aWx0aW5zJykKKyAgICAgICAgcmVmZXJlbmNlX2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbignSmF2
YVNjcmlwdENvcmUnLCAnU2NyaXB0cycsICd0ZXN0cycsICdidWlsdGlucycsICdleHBlY3RlZCcp
CisgICAgICAgIGlmIG5vdCBzZWxmLnJ1bl90ZXN0cyhpbnB1dF9kaXJlY3RvcnksIHJlZmVyZW5j
ZV9kaXJlY3RvcnkpOgorICAgICAgICAgICAgYWxsX3Rlc3RzX3Bhc3NlZCA9IEZhbHNlCisKKyAg
ICAgICAgcHJpbnQgJycKKyAgICAgICAgaWYgYWxsX3Rlc3RzX3Bhc3NlZDoKKyAgICAgICAgICAg
IHByaW50ICdBbGwgdGVzdHMgUEFTUyEnCisgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgcHJpbnQgJ1NvbWUgdGVzdHMgRkFJTCEgKFRvIHVwZGF0ZSB0aGUg
cmVmZXJlbmNlIGZpbGVzLCBleGVjdXRlICJydW4tYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzIC0t
cmVzZXQtcmVzdWx0cyIpJworICAgICAgICAgICAgcmV0dXJuIC0xCg==
</data>
<flag name="review"
          id="288869"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>